Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rhSpz-00Baqk-Aw for pgsql-hackers@arkaria.postgresql.org; Tue, 05 Mar 2024 11:20:00 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1rhSpx-00G3Dq-T8 for pgsql-hackers@arkaria.postgresql.org; Tue, 05 Mar 2024 11:19:58 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rhSpw-00G3Cz-SD for pgsql-hackers@lists.postgresql.org; Tue, 05 Mar 2024 11:19:58 +0000 Received: from mail-yw1-x112b.google.com ([2607:f8b0:4864:20::112b]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1rhSpt-002xUE-48 for pgsql-hackers@postgresql.org; Tue, 05 Mar 2024 11:19:56 +0000 Received: by mail-yw1-x112b.google.com with SMTP id 00721157ae682-6089b64f4eeso49003697b3.2 for ; Tue, 05 Mar 2024 03:19:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1709637593; x=1710242393; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=CcTTf5FVBNqhm35B4Z2wS0Uc25xs9qVb3LfuO/iOM20=; b=X7uQ0XYHl/BFtgrFEEEzrqTd91LVS7gGkWnBgOu9Nwh+4QTY7pEUAFgSUfL83Vv4Zj atwX/aZ38wvYSP9IGwl8J/hR6BVb/Te+8tkD2v7x/G+iQ+G6FncIk6cnzFk1tNfgnjh7 zA4bksF//rKgn9yi7kamW9brm7SXfWDIFPjfRYxEUdQSCcGAMM/WxTlITUVK10sxxRSb 8OpxImm+qnXTIE9aujBjs2Al9spoWLzvtUOnNNnRQMCC7EPajkhrgtr22YUqd6mUEGhD lY/zc3fEhRX+0fJrR8GKOGUwAE/kBWcO2bO91Bn571p2SZP4uwNrN1tODwPrrr3IDCxY YFFQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709637593; x=1710242393; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=CcTTf5FVBNqhm35B4Z2wS0Uc25xs9qVb3LfuO/iOM20=; b=GM+mBlMasnMIDXMceO8YUcRhPqsbUC2HKXzkWFTDJ+eUDo9BhUUwG7pSH1FGz21Y65 Oe/IUWCyId7DlTjktsumeuZ6qDc9vq/8H/Ubelxv3iWSBT2+9vQHAnMXmPkw16udiOdi /Toni82M9RvpGgYmnYlVMfv+3l7Rb93CzpYEK6FFzVeHKai5hO8L6g4FwTYCNGVyJ8J9 PJAkFg0XQGHXlT88oneB+9FA3toLmgAKW441PnCc1rcrk99blWcTMofSIFiA7x4a6rON 13j+nYfglfCwS2dvi4qzaBZsKoylvM7zzXSPrM9+VNsF2b3//v11ocGob3kLAc6Q0jIj D12Q== X-Gm-Message-State: AOJu0Yz5RLTNrDEiC7sT8/Nxo1JJ1YpRX8H+ge1TmYGGvIfu5kiezYfX bvIeDv6jbbLbsVpElFUhqf+XRsKDCbcH1ERu3CV9WZq4tlmrwZNDa2eJtlE0WSVQ1LHlba8XHpr CIvLno7lAXAubptv0iqFKrZlluQA= X-Google-Smtp-Source: AGHT+IEmcId8Dqp0trRNZrtwvk3fQVQV5HGz2yrVcsMqN9QgEKVi2LmdZJYF2JfeL7MpJOPXPrDL1XqwENnMH9plUlo= X-Received: by 2002:a25:3fc4:0:b0:dc6:dd45:bd1c with SMTP id m187-20020a253fc4000000b00dc6dd45bd1cmr9149209yba.52.1709637593578; Tue, 05 Mar 2024 03:19:53 -0800 (PST) MIME-Version: 1.0 References: <87il22cj51.fsf@163.com> In-Reply-To: From: Richard Guo Date: Tue, 5 Mar 2024 19:19:41 +0800 Message-ID: Subject: Re: Eager aggregation, take 3 To: Andy Fan Cc: PostgreSQL-development , pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="00000000000075de670612e805e8" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000075de670612e805e8 Content-Type: multipart/alternative; boundary="00000000000075de650612e805e6" --00000000000075de650612e805e6 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Mar 5, 2024 at 2:47=E2=80=AFPM Richard Guo = wrote: > This needs a rebase after dbbca2cf29. I also revised the commit message > for 0007 and fixed a typo in 0009. > Here is another rebase, mainly to make the test cases more stable by adding ORDER BY clauses to the test queries. Also fixed more typos in passing. Thanks Richard --00000000000075de650612e805e6 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable

On Tue, Mar 5, 2024 at 2:47=E2=80=AFPM Ri= chard Guo <guofenglinux@gmail.= com> wrote:
<= div dir=3D"ltr">
This needs a rebase after d= bbca2cf29.=C2=A0 I also revised the commit message
for 0007 and fixed a = typo in 0009.

Here is ano= ther rebase, mainly to make the test cases more stable by
adding ORDER B= Y clauses to the test queries.=C2=A0 Also fixed more typos in
passing.
Thanks
Richard
--00000000000075de650612e805e6-- --00000000000075de670612e805e8 Content-Type: application/octet-stream; name="v3-0001-Introduce-RelInfoList-structure.patch" Content-Disposition: attachment; filename="v3-0001-Introduce-RelInfoList-structure.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lte9z8bs0 RnJvbSA0NGFjYTc2OWI5OTNkOGQyZTA4ODJlNjQ5NGZkOGZkNWU1ODNiM2RlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4K RGF0ZTogTW9uLCAxOSBGZWIgMjAyNCAxNToxNjo1MSArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjMg MS85XSBJbnRyb2R1Y2UgUmVsSW5mb0xpc3Qgc3RydWN0dXJlCgpUaGlzIGNvbW1pdCBpbnRyb2R1 Y2VzIHRoZSBSZWxJbmZvTGlzdCBzdHJ1Y3R1cmUsIHdoaWNoIGVuY2Fwc3VsYXRlcwpib3RoIGEg bGlzdCBhbmQgYSBoYXNoIHRhYmxlLCBzbyB0aGF0IHdlIGNhbiBsZXZlcmFnZSB0aGUgaGFzaCB0 YWJsZSBmb3IKZmFzdGVyIGxvb2t1cHMgbm90IG9ubHkgZm9yIGpvaW4gcmVsYXRpb25zIGJ1dCBh bHNvIGZvciB1cHBlciByZWxhdGlvbnMuCi0tLQogY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdy ZXNfZmR3LmMgICAgfCAgIDMgKy0KIHNyYy9iYWNrZW5kL29wdGltaXplci9nZXFvL2dlcW9fZXZh bC5jIHwgIDIwICstLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvYWxscGF0aHMuYyAgfCAg IDcgKy0KIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5tYWluLmMgIHwgICA1ICstCiBz cmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9yZWxub2RlLmMgICB8IDE2NCArKysrKysrKysrKysr Ky0tLS0tLS0tLS0tCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaCAgICAgICAgICB8ICAz MSArKystLQogNiBmaWxlcyBjaGFuZ2VkLCAxMzMgaW5zZXJ0aW9ucygrKSwgOTcgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMgYi9j b250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYwppbmRleCAxNDJkY2ZjOTk1Li5mNDZm YzYwNGI0IDEwMDY0NAotLS0gYS9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYwor KysgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYwpAQCAtNjA2OSw3ICs2MDY5 LDggQEAgZm9yZWlnbl9qb2luX29rKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpqb2lu cmVsLCBKb2luVHlwZSBqb2ludHlwZSwKIAkgKi8KIAlBc3NlcnQoZnBpbmZvLT5yZWxhdGlvbl9p bmRleCA9PSAwKTsJLyogc2hvdWxkbid0IGJlIHNldCB5ZXQgKi8KIAlmcGluZm8tPnJlbGF0aW9u X2luZGV4ID0KLQkJbGlzdF9sZW5ndGgocm9vdC0+cGFyc2UtPnJ0YWJsZSkgKyBsaXN0X2xlbmd0 aChyb290LT5qb2luX3JlbF9saXN0KTsKKwkJbGlzdF9sZW5ndGgocm9vdC0+cGFyc2UtPnJ0YWJs ZSkgKworCQlsaXN0X2xlbmd0aChyb290LT5qb2luX3JlbF9saXN0LT5pdGVtcyk7CiAKIAlyZXR1 cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9nZXFvL2dlcW9f ZXZhbC5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL2dlcW8vZ2Vxb19ldmFsLmMKaW5kZXggZDJm N2Y0ZTVmMy4uMTE0MTE1Njg5OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL2dl cW8vZ2Vxb19ldmFsLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL2dlcW8vZ2Vxb19ldmFs LmMKQEAgLTg1LDE4ICs4NSwxOCBAQCBnZXFvX2V2YWwoUGxhbm5lckluZm8gKnJvb3QsIEdlbmUg KnRvdXIsIGludCBudW1fZ2VuZSkKIAkgKiB0cnVuY2F0aW5nIHRoZSBsaXN0IHRvIGl0cyBvcmln aW5hbCBsZW5ndGguICBOT1RFIHRoaXMgYXNzdW1lcyB0aGF0IGFueQogCSAqIGFkZGVkIGVudHJp ZXMgYXJlIGFwcGVuZGVkIGF0IHRoZSBlbmQhCiAJICoKLQkgKiBXZSBhbHNvIG11c3QgdGFrZSBj YXJlIG5vdCB0byBtZXNzIHVwIHRoZSBvdXRlciBqb2luX3JlbF9oYXNoLCBpZiB0aGVyZQotCSAq IGlzIG9uZS4gIFdlIGNhbiBkbyB0aGlzIGJ5IGp1c3QgdGVtcG9yYXJpbHkgc2V0dGluZyB0aGUg bGluayB0byBOVUxMLgotCSAqIChJZiB3ZSBhcmUgZGVhbGluZyB3aXRoIGVub3VnaCBqb2luIHJl bHMsIHdoaWNoIHdlIHZlcnkgbGlrZWx5IGFyZSwgYQotCSAqIG5ldyBoYXNoIHRhYmxlIHdpbGwg Z2V0IGJ1aWx0IGFuZCB1c2VkIGxvY2FsbHkuKQorCSAqIFdlIGFsc28gbXVzdCB0YWtlIGNhcmUg bm90IHRvIG1lc3MgdXAgdGhlIG91dGVyIGpvaW5fcmVsX2xpc3QtPmhhc2gsIGlmCisJICogdGhl cmUgaXMgb25lLiAgV2UgY2FuIGRvIHRoaXMgYnkganVzdCB0ZW1wb3JhcmlseSBzZXR0aW5nIHRo ZSBsaW5rIHRvCisJICogTlVMTC4gIChJZiB3ZSBhcmUgZGVhbGluZyB3aXRoIGVub3VnaCBqb2lu IHJlbHMsIHdoaWNoIHdlIHZlcnkgbGlrZWx5CisJICogYXJlLCBhIG5ldyBoYXNoIHRhYmxlIHdp bGwgZ2V0IGJ1aWx0IGFuZCB1c2VkIGxvY2FsbHkuKQogCSAqCiAJICogam9pbl9yZWxfbGV2ZWxb XSBzaG91bGRuJ3QgYmUgaW4gdXNlLCBzbyBqdXN0IEFzc2VydCBpdCBpc24ndC4KIAkgKi8KLQlz YXZlbGVuZ3RoID0gbGlzdF9sZW5ndGgocm9vdC0+am9pbl9yZWxfbGlzdCk7Ci0Jc2F2ZWhhc2gg PSByb290LT5qb2luX3JlbF9oYXNoOworCXNhdmVsZW5ndGggPSBsaXN0X2xlbmd0aChyb290LT5q b2luX3JlbF9saXN0LT5pdGVtcyk7CisJc2F2ZWhhc2ggPSByb290LT5qb2luX3JlbF9saXN0LT5o YXNoOwogCUFzc2VydChyb290LT5qb2luX3JlbF9sZXZlbCA9PSBOVUxMKTsKIAotCXJvb3QtPmpv aW5fcmVsX2hhc2ggPSBOVUxMOworCXJvb3QtPmpvaW5fcmVsX2xpc3QtPmhhc2ggPSBOVUxMOwog CiAJLyogY29uc3RydWN0IHRoZSBiZXN0IHBhdGggZm9yIHRoZSBnaXZlbiBjb21iaW5hdGlvbiBv ZiByZWxhdGlvbnMgKi8KIAlqb2lucmVsID0gZ2ltbWVfdHJlZShyb290LCB0b3VyLCBudW1fZ2Vu ZSk7CkBAIC0xMjEsOSArMTIxLDkgQEAgZ2Vxb19ldmFsKFBsYW5uZXJJbmZvICpyb290LCBHZW5l ICp0b3VyLCBpbnQgbnVtX2dlbmUpCiAJICogUmVzdG9yZSBqb2luX3JlbF9saXN0IHRvIGl0cyBm b3JtZXIgc3RhdGUsIGFuZCBwdXQgYmFjayBvcmlnaW5hbAogCSAqIGhhc2h0YWJsZSBpZiBhbnku CiAJICovCi0Jcm9vdC0+am9pbl9yZWxfbGlzdCA9IGxpc3RfdHJ1bmNhdGUocm9vdC0+am9pbl9y ZWxfbGlzdCwKLQkJCQkJCQkJCQlzYXZlbGVuZ3RoKTsKLQlyb290LT5qb2luX3JlbF9oYXNoID0g c2F2ZWhhc2g7CisJcm9vdC0+am9pbl9yZWxfbGlzdC0+aXRlbXMgPSBsaXN0X3RydW5jYXRlKHJv b3QtPmpvaW5fcmVsX2xpc3QtPml0ZW1zLAorCQkJCQkJCQkJCQkgICBzYXZlbGVuZ3RoKTsKKwly b290LT5qb2luX3JlbF9saXN0LT5oYXNoID0gc2F2ZWhhc2g7CiAKIAkvKiByZWxlYXNlIGFsbCB0 aGUgbWVtb3J5IGFjcXVpcmVkIHdpdGhpbiBnaW1tZV90cmVlICovCiAJTWVtb3J5Q29udGV4dFN3 aXRjaFRvKG9sZGN4dCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9h bGxwYXRocy5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvYWxscGF0aHMuYwppbmRleCAw Yjk4ZjA4NTZlLi5mOGE1ZmJjYjBhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv cGF0aC9hbGxwYXRocy5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2FsbHBhdGhz LmMKQEAgLTM0MTAsOSArMzQxMCwxMCBAQCBtYWtlX3JlbF9mcm9tX2pvaW5saXN0KFBsYW5uZXJJ bmZvICpyb290LCBMaXN0ICpqb2lubGlzdCkKICAqIG5lZWRlZCBmb3IgdGhlc2UgcGF0aHMgbmVl ZCBoYXZlIGJlZW4gaW5zdGFudGlhdGVkLgogICoKICAqIE5vdGUgdG8gcGx1Z2luIGF1dGhvcnM6 IHRoZSBmdW5jdGlvbnMgaW52b2tlZCBkdXJpbmcgc3RhbmRhcmRfam9pbl9zZWFyY2goKQotICog bW9kaWZ5IHJvb3QtPmpvaW5fcmVsX2xpc3QgYW5kIHJvb3QtPmpvaW5fcmVsX2hhc2guICBJZiB5 b3Ugd2FudCB0byBkbyBtb3JlCi0gKiB0aGFuIG9uZSBqb2luLW9yZGVyIHNlYXJjaCwgeW91J2xs IHByb2JhYmx5IG5lZWQgdG8gc2F2ZSBhbmQgcmVzdG9yZSB0aGUKLSAqIG9yaWdpbmFsIHN0YXRl cyBvZiB0aG9zZSBkYXRhIHN0cnVjdHVyZXMuICBTZWUgZ2Vxb19ldmFsKCkgZm9yIGFuIGV4YW1w bGUuCisgKiBtb2RpZnkgcm9vdC0+am9pbl9yZWxfbGlzdC0+aXRlbXMgYW5kIHJvb3QtPmpvaW5f cmVsX2xpc3QtPmhhc2guICBJZiB5b3UKKyAqIHdhbnQgdG8gZG8gbW9yZSB0aGFuIG9uZSBqb2lu LW9yZGVyIHNlYXJjaCwgeW91J2xsIHByb2JhYmx5IG5lZWQgdG8gc2F2ZSBhbmQKKyAqIHJlc3Rv cmUgdGhlIG9yaWdpbmFsIHN0YXRlcyBvZiB0aG9zZSBkYXRhIHN0cnVjdHVyZXMuICBTZWUgZ2Vx b19ldmFsKCkgZm9yCisgKiBhbiBleGFtcGxlLgogICovCiBSZWxPcHRJbmZvICoKIHN0YW5kYXJk X2pvaW5fc2VhcmNoKFBsYW5uZXJJbmZvICpyb290LCBpbnQgbGV2ZWxzX25lZWRlZCwgTGlzdCAq aW5pdGlhbF9yZWxzKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxh bm1haW4uYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5tYWluLmMKaW5kZXggMDc1 ZDM2YzdlYy4uZWI3OGUzNzMxNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3Bs YW4vcGxhbm1haW4uYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubWFpbi5j CkBAIC02NCw4ICs2NCw5IEBAIHF1ZXJ5X3BsYW5uZXIoUGxhbm5lckluZm8gKnJvb3QsCiAJICog Tk9URTogYXBwZW5kX3JlbF9saXN0IHdhcyBzZXQgdXAgYnkgc3VicXVlcnlfcGxhbm5lciwgc28g ZG8gbm90IHRvdWNoCiAJICogaGVyZS4KIAkgKi8KLQlyb290LT5qb2luX3JlbF9saXN0ID0gTklM OwotCXJvb3QtPmpvaW5fcmVsX2hhc2ggPSBOVUxMOworCXJvb3QtPmpvaW5fcmVsX2xpc3QgPSBt YWtlTm9kZShSZWxJbmZvTGlzdCk7CisJcm9vdC0+am9pbl9yZWxfbGlzdC0+aXRlbXMgPSBOSUw7 CisJcm9vdC0+am9pbl9yZWxfbGlzdC0+aGFzaCA9IE5VTEw7CiAJcm9vdC0+am9pbl9yZWxfbGV2 ZWwgPSBOVUxMOwogCXJvb3QtPmpvaW5fY3VyX2xldmVsID0gMDsKIAlyb290LT5jYW5vbl9wYXRo a2V5cyA9IE5JTDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3JlbG5v ZGUuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3JlbG5vZGUuYwppbmRleCBlNWY0MDYy YmZiLi45ZTI1NzUwYWNkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9y ZWxub2RlLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcmVsbm9kZS5jCkBAIC0z NSwxMSArMzUsMTUgQEAKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKIAogCi10eXBlZGVm IHN0cnVjdCBKb2luSGFzaEVudHJ5CisvKgorICogQW4gZW50cnkgb2YgYSBoYXNoIHRhYmxlIHRo YXQgd2UgdXNlIHRvIG1ha2UgbG9va3VwIGZvciBSZWxPcHRJbmZvCisgKiBzdHJ1Y3R1cmVzIG1v cmUgZWZmaWNpZW50LgorICovCit0eXBlZGVmIHN0cnVjdCBSZWxJbmZvRW50cnkKIHsKLQlSZWxp ZHMJCWpvaW5fcmVsaWRzOwkvKiBoYXNoIGtleSAtLS0gTVVTVCBCRSBGSVJTVCAqLwotCVJlbE9w dEluZm8gKmpvaW5fcmVsOwotfSBKb2luSGFzaEVudHJ5OworCVJlbGlkcwkJcmVsaWRzOwkJCS8q IGhhc2gga2V5IC0tLSBNVVNUIEJFIEZJUlNUICovCisJUmVsT3B0SW5mbyAqcmVsOworfSBSZWxJ bmZvRW50cnk7CiAKIHN0YXRpYyB2b2lkIGJ1aWxkX2pvaW5yZWxfdGxpc3QoUGxhbm5lckluZm8g KnJvb3QsIFJlbE9wdEluZm8gKmpvaW5yZWwsCiAJCQkJCQkJCVJlbE9wdEluZm8gKmlucHV0X3Jl bCwKQEAgLTQ3MiwxMSArNDc2LDExIEBAIGZpbmRfYmFzZV9yZWxfaWdub3JlX2pvaW4oUGxhbm5l ckluZm8gKnJvb3QsIGludCByZWxpZCkKIH0KIAogLyoKLSAqIGJ1aWxkX2pvaW5fcmVsX2hhc2gK LSAqCSAgQ29uc3RydWN0IHRoZSBhdXhpbGlhcnkgaGFzaCB0YWJsZSBmb3Igam9pbiByZWxhdGlv bnMuCisgKiBidWlsZF9yZWxfaGFzaAorICoJICBDb25zdHJ1Y3QgdGhlIGF1eGlsaWFyeSBoYXNo IHRhYmxlIGZvciByZWxhdGlvbnMuCiAgKi8KIHN0YXRpYyB2b2lkCi1idWlsZF9qb2luX3JlbF9o YXNoKFBsYW5uZXJJbmZvICpyb290KQorYnVpbGRfcmVsX2hhc2goUmVsSW5mb0xpc3QgKmxpc3Qp CiB7CiAJSFRBQgkgICAqaGFzaHRhYjsKIAlIQVNIQ1RMCQloYXNoX2N0bDsKQEAgLTQ4NCw0NyAr NDg4LDQ5IEBAIGJ1aWxkX2pvaW5fcmVsX2hhc2goUGxhbm5lckluZm8gKnJvb3QpCiAKIAkvKiBD cmVhdGUgdGhlIGhhc2ggdGFibGUgKi8KIAloYXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKFJlbGlk cyk7Ci0JaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKEpvaW5IYXNoRW50cnkpOworCWhhc2hf Y3RsLmVudHJ5c2l6ZSA9IHNpemVvZihSZWxJbmZvRW50cnkpOwogCWhhc2hfY3RsLmhhc2ggPSBi aXRtYXBfaGFzaDsKIAloYXNoX2N0bC5tYXRjaCA9IGJpdG1hcF9tYXRjaDsKIAloYXNoX2N0bC5o Y3h0ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7Ci0JaGFzaHRhYiA9IGhhc2hfY3JlYXRlKCJKb2lu UmVsSGFzaFRhYmxlIiwKKwloYXNodGFiID0gaGFzaF9jcmVhdGUoIlJlbEhhc2hUYWJsZSIsCiAJ CQkJCQkgIDI1NkwsCiAJCQkJCQkgICZoYXNoX2N0bCwKIAkJCQkJCSAgSEFTSF9FTEVNIHwgSEFT SF9GVU5DVElPTiB8IEhBU0hfQ09NUEFSRSB8IEhBU0hfQ09OVEVYVCk7CiAKLQkvKiBJbnNlcnQg YWxsIHRoZSBhbHJlYWR5LWV4aXN0aW5nIGpvaW5yZWxzICovCi0JZm9yZWFjaChsLCByb290LT5q b2luX3JlbF9saXN0KQorCS8qIEluc2VydCBhbGwgdGhlIGFscmVhZHktZXhpc3RpbmcgcmVsYXRp b25zICovCisJZm9yZWFjaChsLCBsaXN0LT5pdGVtcykKIAl7CiAJCVJlbE9wdEluZm8gKnJlbCA9 IChSZWxPcHRJbmZvICopIGxmaXJzdChsKTsKLQkJSm9pbkhhc2hFbnRyeSAqaGVudHJ5OworCQlS ZWxJbmZvRW50cnkgKmhlbnRyeTsKIAkJYm9vbAkJZm91bmQ7CiAKLQkJaGVudHJ5ID0gKEpvaW5I YXNoRW50cnkgKikgaGFzaF9zZWFyY2goaGFzaHRhYiwKLQkJCQkJCQkJCQkJICAgJihyZWwtPnJl bGlkcyksCi0JCQkJCQkJCQkJCSAgIEhBU0hfRU5URVIsCi0JCQkJCQkJCQkJCSAgICZmb3VuZCk7 CisJCWhlbnRyeSA9IChSZWxJbmZvRW50cnkgKikgaGFzaF9zZWFyY2goaGFzaHRhYiwKKwkJCQkJ CQkJCQkJICAmKHJlbC0+cmVsaWRzKSwKKwkJCQkJCQkJCQkJICBIQVNIX0VOVEVSLAorCQkJCQkJ CQkJCQkgICZmb3VuZCk7CiAJCUFzc2VydCghZm91bmQpOwotCQloZW50cnktPmpvaW5fcmVsID0g cmVsOworCQloZW50cnktPnJlbCA9IHJlbDsKIAl9CiAKLQlyb290LT5qb2luX3JlbF9oYXNoID0g aGFzaHRhYjsKKwlsaXN0LT5oYXNoID0gaGFzaHRhYjsKIH0KIAogLyoKLSAqIGZpbmRfam9pbl9y ZWwKLSAqCSAgUmV0dXJucyByZWxhdGlvbiBlbnRyeSBjb3JyZXNwb25kaW5nIHRvICdyZWxpZHMn IChhIHNldCBvZiBSVCBpbmRleGVzKSwKLSAqCSAgb3IgTlVMTCBpZiBub25lIGV4aXN0cy4gIFRo aXMgaXMgZm9yIGpvaW4gcmVsYXRpb25zLgorICogZmluZF9yZWxfaW5mbworICoJICBGaW5kIGFu IFJlbE9wdEluZm8gZW50cnkuCiAgKi8KLVJlbE9wdEluZm8gKgotZmluZF9qb2luX3JlbChQbGFu bmVySW5mbyAqcm9vdCwgUmVsaWRzIHJlbGlkcykKK3N0YXRpYyBSZWxPcHRJbmZvICoKK2ZpbmRf cmVsX2luZm8oUmVsSW5mb0xpc3QgKmxpc3QsIFJlbGlkcyByZWxpZHMpCiB7CisJaWYgKGxpc3Qg PT0gTlVMTCkKKwkJcmV0dXJuIE5VTEw7CisKIAkvKgogCSAqIFN3aXRjaCB0byB1c2luZyBoYXNo IGxvb2t1cCB3aGVuIGxpc3QgZ3Jvd3MgInRvbyBsb25nIi4gIFRoZSB0aHJlc2hvbGQKIAkgKiBp cyBhcmJpdHJhcnkgYW5kIGlzIGtub3duIG9ubHkgaGVyZS4KIAkgKi8KLQlpZiAoIXJvb3QtPmpv aW5fcmVsX2hhc2ggJiYgbGlzdF9sZW5ndGgocm9vdC0+am9pbl9yZWxfbGlzdCkgPiAzMikKLQkJ YnVpbGRfam9pbl9yZWxfaGFzaChyb290KTsKKwlpZiAoIWxpc3QtPmhhc2ggJiYgbGlzdF9sZW5n dGgobGlzdC0+aXRlbXMpID4gMzIpCisJCWJ1aWxkX3JlbF9oYXNoKGxpc3QpOwogCiAJLyoKIAkg KiBVc2UgZWl0aGVyIGhhc2h0YWJsZSBsb29rdXAgb3IgbGluZWFyIHNlYXJjaCwgYXMgYXBwcm9w cmlhdGUuCkBAIC01MzQsMjMgKzU0MCwyMyBAQCBmaW5kX2pvaW5fcmVsKFBsYW5uZXJJbmZvICpy b290LCBSZWxpZHMgcmVsaWRzKQogCSAqIHNvIHdvdWxkIGZvcmNlIHJlbGlkcyBvdXQgb2YgYSBy ZWdpc3RlciBhbmQgdGh1cyBwcm9iYWJseSBzbG93IGRvd24gdGhlCiAJICogbGlzdC1zZWFyY2gg Y2FzZS4KIAkgKi8KLQlpZiAocm9vdC0+am9pbl9yZWxfaGFzaCkKKwlpZiAobGlzdC0+aGFzaCkK IAl7CiAJCVJlbGlkcwkJaGFzaGtleSA9IHJlbGlkczsKLQkJSm9pbkhhc2hFbnRyeSAqaGVudHJ5 OworCQlSZWxJbmZvRW50cnkgKmhlbnRyeTsKIAotCQloZW50cnkgPSAoSm9pbkhhc2hFbnRyeSAq KSBoYXNoX3NlYXJjaChyb290LT5qb2luX3JlbF9oYXNoLAotCQkJCQkJCQkJCQkgICAmaGFzaGtl eSwKLQkJCQkJCQkJCQkJICAgSEFTSF9GSU5ELAotCQkJCQkJCQkJCQkgICBOVUxMKTsKKwkJaGVu dHJ5ID0gKFJlbEluZm9FbnRyeSAqKSBoYXNoX3NlYXJjaChsaXN0LT5oYXNoLAorCQkJCQkJCQkJ CQkgICZoYXNoa2V5LAorCQkJCQkJCQkJCQkgIEhBU0hfRklORCwKKwkJCQkJCQkJCQkJICBOVUxM KTsKIAkJaWYgKGhlbnRyeSkKLQkJCXJldHVybiBoZW50cnktPmpvaW5fcmVsOworCQkJcmV0dXJu IGhlbnRyeS0+cmVsOwogCX0KIAllbHNlCiAJewogCQlMaXN0Q2VsbCAgICpsOwogCi0JCWZvcmVh Y2gobCwgcm9vdC0+am9pbl9yZWxfbGlzdCkKKwkJZm9yZWFjaChsLCBsaXN0LT5pdGVtcykKIAkJ ewogCQkJUmVsT3B0SW5mbyAqcmVsID0gKFJlbE9wdEluZm8gKikgbGZpcnN0KGwpOwogCkBAIC01 NjIsNiArNTY4LDU0IEBAIGZpbmRfam9pbl9yZWwoUGxhbm5lckluZm8gKnJvb3QsIFJlbGlkcyBy ZWxpZHMpCiAJcmV0dXJuIE5VTEw7CiB9CiAKKy8qCisgKiBmaW5kX2pvaW5fcmVsCisgKgkgIFJl dHVybnMgcmVsYXRpb24gZW50cnkgY29ycmVzcG9uZGluZyB0byAncmVsaWRzJyAoYSBzZXQgb2Yg UlQgaW5kZXhlcyksCisgKgkgIG9yIE5VTEwgaWYgbm9uZSBleGlzdHMuICBUaGlzIGlzIGZvciBq b2luIHJlbGF0aW9ucy4KKyAqLworUmVsT3B0SW5mbyAqCitmaW5kX2pvaW5fcmVsKFBsYW5uZXJJ bmZvICpyb290LCBSZWxpZHMgcmVsaWRzKQoreworCXJldHVybiBmaW5kX3JlbF9pbmZvKHJvb3Qt PmpvaW5fcmVsX2xpc3QsIHJlbGlkcyk7Cit9CisKKy8qCisgKiBhZGRfcmVsX2luZm8KKyAqCQlB ZGQgZ2l2ZW4gcmVsYXRpb24gdG8gdGhlIGdpdmVuIGxpc3QuIEFsc28gYWRkIGl0IHRvIHRoZSBh dXhpbGlhcnkKKyAqCQloYXNodGFibGUgaWYgdGhlcmUgaXMgb25lLgorICovCitzdGF0aWMgdm9p ZAorYWRkX3JlbF9pbmZvKFJlbEluZm9MaXN0ICpsaXN0LCBSZWxPcHRJbmZvICpyZWwpCit7CisJ LyogR0VRTyByZXF1aXJlcyB1cyB0byBhcHBlbmQgdGhlIG5ldyByZWxhdGlvbiB0byB0aGUgZW5k IG9mIHRoZSBsaXN0ISAqLworCWxpc3QtPml0ZW1zID0gbGFwcGVuZChsaXN0LT5pdGVtcywgcmVs KTsKKworCS8qIHN0b3JlIGl0IGludG8gdGhlIGF1eGlsaWFyeSBoYXNodGFibGUgaWYgdGhlcmUg aXMgb25lLiAqLworCWlmIChsaXN0LT5oYXNoKQorCXsKKwkJUmVsSW5mb0VudHJ5ICpoZW50cnk7 CisJCWJvb2wJCWZvdW5kOworCisJCWhlbnRyeSA9IChSZWxJbmZvRW50cnkgKikgaGFzaF9zZWFy Y2gobGlzdC0+aGFzaCwKKwkJCQkJCQkJCQkJICAmKHJlbC0+cmVsaWRzKSwKKwkJCQkJCQkJCQkJ ICBIQVNIX0VOVEVSLAorCQkJCQkJCQkJCQkgICZmb3VuZCk7CisJCUFzc2VydCghZm91bmQpOwor CQloZW50cnktPnJlbCA9IHJlbDsKKwl9Cit9CisKKy8qCisgKiBhZGRfam9pbl9yZWwKKyAqCQlB ZGQgZ2l2ZW4gam9pbiByZWxhdGlvbiB0byB0aGUgbGlzdCBvZiBqb2luIHJlbGF0aW9ucyBpbiB0 aGUgZ2l2ZW4KKyAqCQlQbGFubmVySW5mby4KKyAqLworc3RhdGljIHZvaWQKK2FkZF9qb2luX3Jl bChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqam9pbnJlbCkKK3sKKwlhZGRfcmVsX2lu Zm8ocm9vdC0+am9pbl9yZWxfbGlzdCwgam9pbnJlbCk7Cit9CisKIC8qCiAgKiBzZXRfZm9yZWln bl9yZWxfcHJvcGVydGllcwogICoJCVNldCB1cCBmb3JlaWduLWpvaW4gZmllbGRzIGlmIG91dGVy IGFuZCBpbm5lciByZWxhdGlvbiBhcmUgZm9yZWlnbgpAQCAtNjExLDMyICs2NjUsNiBAQCBzZXRf Zm9yZWlnbl9yZWxfcHJvcGVydGllcyhSZWxPcHRJbmZvICpqb2lucmVsLCBSZWxPcHRJbmZvICpv dXRlcl9yZWwsCiAJfQogfQogCi0vKgotICogYWRkX2pvaW5fcmVsCi0gKgkJQWRkIGdpdmVuIGpv aW4gcmVsYXRpb24gdG8gdGhlIGxpc3Qgb2Ygam9pbiByZWxhdGlvbnMgaW4gdGhlIGdpdmVuCi0g KgkJUGxhbm5lckluZm8uIEFsc28gYWRkIGl0IHRvIHRoZSBhdXhpbGlhcnkgaGFzaHRhYmxlIGlm IHRoZXJlIGlzIG9uZS4KLSAqLwotc3RhdGljIHZvaWQKLWFkZF9qb2luX3JlbChQbGFubmVySW5m byAqcm9vdCwgUmVsT3B0SW5mbyAqam9pbnJlbCkKLXsKLQkvKiBHRVFPIHJlcXVpcmVzIHVzIHRv IGFwcGVuZCB0aGUgbmV3IGpvaW5yZWwgdG8gdGhlIGVuZCBvZiB0aGUgbGlzdCEgKi8KLQlyb290 LT5qb2luX3JlbF9saXN0ID0gbGFwcGVuZChyb290LT5qb2luX3JlbF9saXN0LCBqb2lucmVsKTsK LQotCS8qIHN0b3JlIGl0IGludG8gdGhlIGF1eGlsaWFyeSBoYXNodGFibGUgaWYgdGhlcmUgaXMg b25lLiAqLwotCWlmIChyb290LT5qb2luX3JlbF9oYXNoKQotCXsKLQkJSm9pbkhhc2hFbnRyeSAq aGVudHJ5OwotCQlib29sCQlmb3VuZDsKLQotCQloZW50cnkgPSAoSm9pbkhhc2hFbnRyeSAqKSBo YXNoX3NlYXJjaChyb290LT5qb2luX3JlbF9oYXNoLAotCQkJCQkJCQkJCQkgICAmKGpvaW5yZWwt PnJlbGlkcyksCi0JCQkJCQkJCQkJCSAgIEhBU0hfRU5URVIsCi0JCQkJCQkJCQkJCSAgICZmb3Vu ZCk7Ci0JCUFzc2VydCghZm91bmQpOwotCQloZW50cnktPmpvaW5fcmVsID0gam9pbnJlbDsKLQl9 Ci19Ci0KIC8qCiAgKiBidWlsZF9qb2luX3JlbAogICoJICBSZXR1cm5zIHJlbGF0aW9uIGVudHJ5 IGNvcnJlc3BvbmRpbmcgdG8gdGhlIHVuaW9uIG9mIHR3byBnaXZlbiByZWxzLApAQCAtMTQ2Miwy MiArMTQ5MCwxNCBAQCBzdWJidWlsZF9qb2lucmVsX2pvaW5saXN0KFJlbE9wdEluZm8gKmpvaW5y ZWwsCiBSZWxPcHRJbmZvICoKIGZldGNoX3VwcGVyX3JlbChQbGFubmVySW5mbyAqcm9vdCwgVXBw ZXJSZWxhdGlvbktpbmQga2luZCwgUmVsaWRzIHJlbGlkcykKIHsKKwlSZWxJbmZvTGlzdCAqbGlz dCA9ICZyb290LT51cHBlcl9yZWxzW2tpbmRdOwogCVJlbE9wdEluZm8gKnVwcGVycmVsOwotCUxp c3RDZWxsICAgKmxjOwotCi0JLyoKLQkgKiBGb3IgdGhlIG1vbWVudCwgb3VyIGluZGV4aW5nIGRh dGEgc3RydWN0dXJlIGlzIGp1c3QgYSBMaXN0IGZvciBlYWNoCi0JICogcmVsYXRpb24ga2luZC4g IElmIHdlIGV2ZXIgZ2V0IHNvIG1hbnkgb2Ygb25lIGtpbmQgdGhhdCB0aGlzIHN0b3BzCi0JICog d29ya2luZyB3ZWxsLCB3ZSBjYW4gaW1wcm92ZSBpdC4gIE5vIGNvZGUgb3V0c2lkZSB0aGlzIGZ1 bmN0aW9uIHNob3VsZAotCSAqIGFzc3VtZSBhbnl0aGluZyBhYm91dCBob3cgdG8gZmluZCBhIHBh cnRpY3VsYXIgdXBwZXJyZWwuCi0JICovCiAKIAkvKiBJZiB3ZSBhbHJlYWR5IG1hZGUgdGhpcyB1 cHBlcnJlbCBmb3IgdGhlIHF1ZXJ5LCByZXR1cm4gaXQgKi8KLQlmb3JlYWNoKGxjLCByb290LT51 cHBlcl9yZWxzW2tpbmRdKQorCWlmIChsaXN0KQogCXsKLQkJdXBwZXJyZWwgPSAoUmVsT3B0SW5m byAqKSBsZmlyc3QobGMpOwotCi0JCWlmIChibXNfZXF1YWwodXBwZXJyZWwtPnJlbGlkcywgcmVs aWRzKSkKKwkJdXBwZXJyZWwgPSBmaW5kX3JlbF9pbmZvKGxpc3QsIHJlbGlkcyk7CisJCWlmICh1 cHBlcnJlbCkKIAkJCXJldHVybiB1cHBlcnJlbDsKIAl9CiAKQEAgLTE0OTYsNyArMTUxNiw3IEBA IGZldGNoX3VwcGVyX3JlbChQbGFubmVySW5mbyAqcm9vdCwgVXBwZXJSZWxhdGlvbktpbmQga2lu ZCwgUmVsaWRzIHJlbGlkcykKIAl1cHBlcnJlbC0+Y2hlYXBlc3RfdW5pcXVlX3BhdGggPSBOVUxM OwogCXVwcGVycmVsLT5jaGVhcGVzdF9wYXJhbWV0ZXJpemVkX3BhdGhzID0gTklMOwogCi0Jcm9v dC0+dXBwZXJfcmVsc1traW5kXSA9IGxhcHBlbmQocm9vdC0+dXBwZXJfcmVsc1traW5kXSwgdXBw ZXJyZWwpOworCWFkZF9yZWxfaW5mbygmcm9vdC0+dXBwZXJfcmVsc1traW5kXSwgdXBwZXJyZWwp OwogCiAJcmV0dXJuIHVwcGVycmVsOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMv cGF0aG5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaAppbmRleCA1MzQ2OTJi ZWUxLi5hMDAzNDMzMTc4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMu aAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaApAQCAtODAsNiArODAsMjUgQEAg dHlwZWRlZiBlbnVtIFVwcGVyUmVsYXRpb25LaW5kCiAJLyogTkI6IFVQUEVSUkVMX0ZJTkFMIG11 c3QgYmUgbGFzdCBlbnVtIGVudHJ5OyBpdCdzIHVzZWQgdG8gc2l6ZSBhcnJheXMgKi8KIH0gVXBw ZXJSZWxhdGlvbktpbmQ7CiAKKy8qCisgKiBIYXNoZWQgbGlzdCB0byBzdG9yZSByZWxhdGlvbiBz cGVjaWZpYyBpbmZvIGFuZCB0byByZXRyaWV2ZSBpdCBieSByZWxpZHMuCisgKgorICogRm9yIHNt YWxsIHByb2JsZW1zIHdlIGp1c3Qgc2NhbiB0aGUgbGlzdCB0byBkbyBsb29rdXBzLCBidXQgd2hl biB0aGVyZSBhcmUKKyAqIG1hbnkgcmVsYXRpb25zIHdlIGJ1aWxkIGEgaGFzaCB0YWJsZSBmb3Ig ZmFzdGVyIGxvb2t1cHMuICBUaGUgaGFzaCB0YWJsZSBpcworICogcHJlc2VudCBhbmQgdmFsaWQg d2hlbiAnaGFzaCcgaXMgbm90IE5VTEwuICBOb3RlIHRoYXQgd2Ugc3RpbGwgbWFpbnRhaW4gdGhl CisgKiBsaXN0IGV2ZW4gd2hlbiB1c2luZyB0aGUgaGFzaCB0YWJsZSBmb3IgbG9va3VwczsgdGhp cyBzaW1wbGlmaWVzIGxpZmUgZm9yCisgKiBHRVFPLgorICovCit0eXBlZGVmIHN0cnVjdCBSZWxJ bmZvTGlzdAoreworCXBnX25vZGVfYXR0cihub19jb3B5X2VxdWFsLCBub19yZWFkKQorCisJTm9k ZVRhZwkJdHlwZTsKKworCUxpc3QJICAgKml0ZW1zOworCXN0cnVjdCBIVEFCICpoYXNoIHBnX25v ZGVfYXR0cihyZWFkX3dyaXRlX2lnbm9yZSk7Cit9IFJlbEluZm9MaXN0OworCiAvKi0tLS0tLS0t LS0KICAqIFBsYW5uZXJHbG9iYWwKICAqCQlHbG9iYWwgaW5mb3JtYXRpb24gZm9yIHBsYW5uaW5n L29wdGltaXphdGlvbgpAQCAtMjY3LDE1ICsyODYsOSBAQCBzdHJ1Y3QgUGxhbm5lckluZm8KIAog CS8qCiAJICogam9pbl9yZWxfbGlzdCBpcyBhIGxpc3Qgb2YgYWxsIGpvaW4tcmVsYXRpb24gUmVs T3B0SW5mb3Mgd2UgaGF2ZQotCSAqIGNvbnNpZGVyZWQgaW4gdGhpcyBwbGFubmluZyBydW4uICBG b3Igc21hbGwgcHJvYmxlbXMgd2UganVzdCBzY2FuIHRoZQotCSAqIGxpc3QgdG8gZG8gbG9va3Vw cywgYnV0IHdoZW4gdGhlcmUgYXJlIG1hbnkgam9pbiByZWxhdGlvbnMgd2UgYnVpbGQgYQotCSAq IGhhc2ggdGFibGUgZm9yIGZhc3RlciBsb29rdXBzLiAgVGhlIGhhc2ggdGFibGUgaXMgcHJlc2Vu dCBhbmQgdmFsaWQKLQkgKiB3aGVuIGpvaW5fcmVsX2hhc2ggaXMgbm90IE5VTEwuICBOb3RlIHRo YXQgd2Ugc3RpbGwgbWFpbnRhaW4gdGhlIGxpc3QKLQkgKiBldmVuIHdoZW4gdXNpbmcgdGhlIGhh c2ggdGFibGUgZm9yIGxvb2t1cHM7IHRoaXMgc2ltcGxpZmllcyBsaWZlIGZvcgotCSAqIEdFUU8u CisJICogY29uc2lkZXJlZCBpbiB0aGlzIHBsYW5uaW5nIHJ1bi4KIAkgKi8KLQlMaXN0CSAgICpq b2luX3JlbF9saXN0OwotCXN0cnVjdCBIVEFCICpqb2luX3JlbF9oYXNoIHBnX25vZGVfYXR0cihy ZWFkX3dyaXRlX2lnbm9yZSk7CisJUmVsSW5mb0xpc3QgKmpvaW5fcmVsX2xpc3Q7CS8qIGxpc3Qg b2Ygam9pbi1yZWxhdGlvbiBSZWxPcHRJbmZvcyAqLwogCiAJLyoKIAkgKiBXaGVuIGRvaW5nIGEg ZHluYW1pYy1wcm9ncmFtbWluZy1zdHlsZSBqb2luIHNlYXJjaCwgam9pbl9yZWxfbGV2ZWxba10K QEAgLTQwOCw3ICs0MjEsNyBAQCBzdHJ1Y3QgUGxhbm5lckluZm8KIAkgKiBVcHBlci1yZWwgUmVs T3B0SW5mb3MuIFVzZSBmZXRjaF91cHBlcl9yZWwoKSB0byBnZXQgYW55IHBhcnRpY3VsYXIKIAkg KiB1cHBlciByZWwuCiAJICovCi0JTGlzdAkgICAqdXBwZXJfcmVsc1tVUFBFUlJFTF9GSU5BTCAr IDFdIHBnX25vZGVfYXR0cihyZWFkX3dyaXRlX2lnbm9yZSk7CisJUmVsSW5mb0xpc3QJCXVwcGVy X3JlbHNbVVBQRVJSRUxfRklOQUwgKyAxXSBwZ19ub2RlX2F0dHIocmVhZF93cml0ZV9pZ25vcmUp OwogCiAJLyogUmVzdWx0IHRsaXN0cyBjaG9zZW4gYnkgZ3JvdXBpbmdfcGxhbm5lciBmb3IgdXBw ZXItc3RhZ2UgcHJvY2Vzc2luZyAqLwogCXN0cnVjdCBQYXRoVGFyZ2V0ICp1cHBlcl90YXJnZXRz W1VQUEVSUkVMX0ZJTkFMICsgMV0gcGdfbm9kZV9hdHRyKHJlYWRfd3JpdGVfaWdub3JlKTsKLS0g CjIuMzEuMAoK --00000000000075de670612e805e8 Content-Type: application/octet-stream; name="v3-0002-Introduce-RelAggInfo-structure-to-store-info-for-grouped-paths.patch" Content-Disposition: attachment; filename="v3-0002-Introduce-RelAggInfo-structure-to-store-info-for-grouped-paths.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lte9zr9k1 RnJvbSBjNDk4NTdiOTVhYzJmOGZlMGQ5ODhiNTcxODFkNGZiZTEzY2UxMDQzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4K RGF0ZTogRnJpLCAyMyBGZWIgMjAyNCAxMToxMjoxOCArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjMg Mi85XSBJbnRyb2R1Y2UgUmVsQWdnSW5mbyBzdHJ1Y3R1cmUgdG8gc3RvcmUgaW5mbyBmb3IKIGdy b3VwZWQgcGF0aHMuCgpUaGlzIGNvbW1pdCBpbnRyb2R1Y2VzIFJlbEFnZ0luZm8gc3RydWN0dXJl IHRvIHN0b3JlIGluZm9ybWF0aW9uIG5lZWRlZAp0byBjcmVhdGUgZ3JvdXBlZCBwYXRocyBmb3Ig YmFzZSBhbmQgam9pbiByZWxzLiAgSXQgYWxzbyByZXZpc2VzIHRoZQpSZWxJbmZvTGlzdCByZWxh dGVkIHN0cnVjdHVyZXMgYW5kIGZ1bmN0aW9ucyBzbyB0aGF0IHRoZXkgY2FuIGJlIHVzZWQKd2l0 aCBSZWxBZ2dJbmZvcy4KLS0tCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9yZWxub2RlLmMg fCA2NiArKysrKysrKysrKysrKysrKy0tLS0tLS0tCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9k ZXMuaCAgICAgICAgfCA3MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAyIGZpbGVzIGNo YW5nZWQsIDExOCBpbnNlcnRpb25zKCspLCAyMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9yZWxub2RlLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvdXRpbC9yZWxub2RlLmMKaW5kZXggOWUyNTc1MGFjZC4uYzg4ZGE5NjNkYiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcmVsbm9kZS5jCisrKyBiL3NyYy9iYWNrZW5k L29wdGltaXplci91dGlsL3JlbG5vZGUuYwpAQCAtMzYsMTMgKzM2LDEzIEBACiAKIAogLyoKLSAq IEFuIGVudHJ5IG9mIGEgaGFzaCB0YWJsZSB0aGF0IHdlIHVzZSB0byBtYWtlIGxvb2t1cCBmb3Ig UmVsT3B0SW5mbwotICogc3RydWN0dXJlcyBtb3JlIGVmZmljaWVudC4KKyAqIEFuIGVudHJ5IG9m IGEgaGFzaCB0YWJsZSB0aGF0IHdlIHVzZSB0byBtYWtlIGxvb2t1cCBmb3IgUmVsT3B0SW5mbyBv cgorICogUmVsQWdnSW5mbyBzdHJ1Y3R1cmVzIG1vcmUgZWZmaWNpZW50LgogICovCiB0eXBlZGVm IHN0cnVjdCBSZWxJbmZvRW50cnkKIHsKIAlSZWxpZHMJCXJlbGlkczsJCQkvKiBoYXNoIGtleSAt LS0gTVVTVCBCRSBGSVJTVCAqLwotCVJlbE9wdEluZm8gKnJlbDsKKwl2b2lkCSAgICpkYXRhOwog fSBSZWxJbmZvRW50cnk7CiAKIHN0YXRpYyB2b2lkIGJ1aWxkX2pvaW5yZWxfdGxpc3QoUGxhbm5l ckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKmpvaW5yZWwsCkBAIC00NzcsNyArNDc3LDcgQEAgZmlu ZF9iYXNlX3JlbF9pZ25vcmVfam9pbihQbGFubmVySW5mbyAqcm9vdCwgaW50IHJlbGlkKQogCiAv KgogICogYnVpbGRfcmVsX2hhc2gKLSAqCSAgQ29uc3RydWN0IHRoZSBhdXhpbGlhcnkgaGFzaCB0 YWJsZSBmb3IgcmVsYXRpb25zLgorICoJICBDb25zdHJ1Y3QgdGhlIGF1eGlsaWFyeSBoYXNoIHRh YmxlIGZvciByZWxhdGlvbiBzcGVjaWZpYyBkYXRhLgogICovCiBzdGF0aWMgdm9pZAogYnVpbGRf cmVsX2hhc2goUmVsSW5mb0xpc3QgKmxpc3QpCkBAIC00OTcsMTkgKzQ5NywyNyBAQCBidWlsZF9y ZWxfaGFzaChSZWxJbmZvTGlzdCAqbGlzdCkKIAkJCQkJCSAgJmhhc2hfY3RsLAogCQkJCQkJICBI QVNIX0VMRU0gfCBIQVNIX0ZVTkNUSU9OIHwgSEFTSF9DT01QQVJFIHwgSEFTSF9DT05URVhUKTsK IAotCS8qIEluc2VydCBhbGwgdGhlIGFscmVhZHktZXhpc3RpbmcgcmVsYXRpb25zICovCisJLyog SW5zZXJ0IGFsbCB0aGUgYWxyZWFkeS1leGlzdGluZyByZWxhdGlvbiBzcGVjaWZpYyBpbmZvcyAq LwogCWZvcmVhY2gobCwgbGlzdC0+aXRlbXMpCiAJewotCQlSZWxPcHRJbmZvICpyZWwgPSAoUmVs T3B0SW5mbyAqKSBsZmlyc3QobCk7CisJCXZvaWQJICAgKml0ZW0gPSBsZmlyc3QobCk7CiAJCVJl bEluZm9FbnRyeSAqaGVudHJ5OwogCQlib29sCQlmb3VuZDsKKwkJUmVsaWRzCQlyZWxpZHM7CisK KwkJQXNzZXJ0KElzQShpdGVtLCBSZWxPcHRJbmZvKSB8fCBJc0EoaXRlbSwgUmVsQWdnSW5mbykp OworCisJCWlmIChJc0EoaXRlbSwgUmVsT3B0SW5mbykpCisJCQlyZWxpZHMgPSAoKFJlbE9wdElu Zm8gKikgaXRlbSktPnJlbGlkczsKKwkJZWxzZQorCQkJcmVsaWRzID0gKChSZWxBZ2dJbmZvICop IGl0ZW0pLT5yZWxpZHM7CiAKIAkJaGVudHJ5ID0gKFJlbEluZm9FbnRyeSAqKSBoYXNoX3NlYXJj aChoYXNodGFiLAotCQkJCQkJCQkJCQkgICYocmVsLT5yZWxpZHMpLAorCQkJCQkJCQkJCQkgICZy ZWxpZHMsCiAJCQkJCQkJCQkJCSAgSEFTSF9FTlRFUiwKIAkJCQkJCQkJCQkJICAmZm91bmQpOwog CQlBc3NlcnQoIWZvdW5kKTsKLQkJaGVudHJ5LT5yZWwgPSByZWw7CisJCWhlbnRyeS0+ZGF0YSA9 IGl0ZW07CiAJfQogCiAJbGlzdC0+aGFzaCA9IGhhc2h0YWI7CkBAIC01MTcsOSArNTI1LDkgQEAg YnVpbGRfcmVsX2hhc2goUmVsSW5mb0xpc3QgKmxpc3QpCiAKIC8qCiAgKiBmaW5kX3JlbF9pbmZv Ci0gKgkgIEZpbmQgYW4gUmVsT3B0SW5mbyBlbnRyeS4KKyAqCSAgRmluZCBhbiBSZWxPcHRJbmZv IG9yIGEgUmVsQWdnSW5mbyBlbnRyeS4KICAqLwotc3RhdGljIFJlbE9wdEluZm8gKgorc3RhdGlj IHZvaWQgKgogZmluZF9yZWxfaW5mbyhSZWxJbmZvTGlzdCAqbGlzdCwgUmVsaWRzIHJlbGlkcykK IHsKIAlpZiAobGlzdCA9PSBOVUxMKQpAQCAtNTUwLDcgKzU1OCw3IEBAIGZpbmRfcmVsX2luZm8o UmVsSW5mb0xpc3QgKmxpc3QsIFJlbGlkcyByZWxpZHMpCiAJCQkJCQkJCQkJCSAgSEFTSF9GSU5E LAogCQkJCQkJCQkJCQkgIE5VTEwpOwogCQlpZiAoaGVudHJ5KQotCQkJcmV0dXJuIGhlbnRyeS0+ cmVsOworCQkJcmV0dXJuIGhlbnRyeS0+ZGF0YTsKIAl9CiAJZWxzZQogCXsKQEAgLTU1OCwxMCAr NTY2LDE4IEBAIGZpbmRfcmVsX2luZm8oUmVsSW5mb0xpc3QgKmxpc3QsIFJlbGlkcyByZWxpZHMp CiAKIAkJZm9yZWFjaChsLCBsaXN0LT5pdGVtcykKIAkJewotCQkJUmVsT3B0SW5mbyAqcmVsID0g KFJlbE9wdEluZm8gKikgbGZpcnN0KGwpOworCQkJdm9pZAkgICAqaXRlbSA9IGxmaXJzdChsKTsK KwkJCVJlbGlkcwkJaXRlbV9yZWxpZHMgPSBOVUxMOworCisJCQlBc3NlcnQoSXNBKGl0ZW0sIFJl bE9wdEluZm8pIHx8IElzQShpdGVtLCBSZWxBZ2dJbmZvKSk7CiAKLQkJCWlmIChibXNfZXF1YWwo cmVsLT5yZWxpZHMsIHJlbGlkcykpCi0JCQkJcmV0dXJuIHJlbDsKKwkJCWlmIChJc0EoaXRlbSwg UmVsT3B0SW5mbykpCisJCQkJaXRlbV9yZWxpZHMgPSAoKFJlbE9wdEluZm8gKikgaXRlbSktPnJl bGlkczsKKwkJCWVsc2UgaWYgKElzQShpdGVtLCBSZWxBZ2dJbmZvKSkKKwkJCQlpdGVtX3JlbGlk cyA9ICgoUmVsQWdnSW5mbyAqKSBpdGVtKS0+cmVsaWRzOworCisJCQlpZiAoYm1zX2VxdWFsKGl0 ZW1fcmVsaWRzLCByZWxpZHMpKQorCQkJCXJldHVybiBpdGVtOwogCQl9CiAJfQogCkBAIC01NzYs MzIgKzU5Miw0MCBAQCBmaW5kX3JlbF9pbmZvKFJlbEluZm9MaXN0ICpsaXN0LCBSZWxpZHMgcmVs aWRzKQogUmVsT3B0SW5mbyAqCiBmaW5kX2pvaW5fcmVsKFBsYW5uZXJJbmZvICpyb290LCBSZWxp ZHMgcmVsaWRzKQogewotCXJldHVybiBmaW5kX3JlbF9pbmZvKHJvb3QtPmpvaW5fcmVsX2xpc3Qs IHJlbGlkcyk7CisJcmV0dXJuIChSZWxPcHRJbmZvICopIGZpbmRfcmVsX2luZm8ocm9vdC0+am9p bl9yZWxfbGlzdCwgcmVsaWRzKTsKIH0KIAogLyoKICAqIGFkZF9yZWxfaW5mbwotICoJCUFkZCBn aXZlbiByZWxhdGlvbiB0byB0aGUgZ2l2ZW4gbGlzdC4gQWxzbyBhZGQgaXQgdG8gdGhlIGF1eGls aWFyeQorICoJCUFkZCByZWxhdGlvbiBzcGVjaWZpYyBpbmZvIHRvIGEgbGlzdCwgYW5kIGFsc28g YWRkIGl0IHRvIHRoZSBhdXhpbGlhcnkKICAqCQloYXNodGFibGUgaWYgdGhlcmUgaXMgb25lLgog ICovCiBzdGF0aWMgdm9pZAotYWRkX3JlbF9pbmZvKFJlbEluZm9MaXN0ICpsaXN0LCBSZWxPcHRJ bmZvICpyZWwpCithZGRfcmVsX2luZm8oUmVsSW5mb0xpc3QgKmxpc3QsIHZvaWQgKmRhdGEpCiB7 CisJQXNzZXJ0KElzQShkYXRhLCBSZWxPcHRJbmZvKSB8fCBJc0EoZGF0YSwgUmVsQWdnSW5mbykp OworCiAJLyogR0VRTyByZXF1aXJlcyB1cyB0byBhcHBlbmQgdGhlIG5ldyByZWxhdGlvbiB0byB0 aGUgZW5kIG9mIHRoZSBsaXN0ISAqLwotCWxpc3QtPml0ZW1zID0gbGFwcGVuZChsaXN0LT5pdGVt cywgcmVsKTsKKwlsaXN0LT5pdGVtcyA9IGxhcHBlbmQobGlzdC0+aXRlbXMsIGRhdGEpOwogCiAJ Lyogc3RvcmUgaXQgaW50byB0aGUgYXV4aWxpYXJ5IGhhc2h0YWJsZSBpZiB0aGVyZSBpcyBvbmUu ICovCiAJaWYgKGxpc3QtPmhhc2gpCiAJeworCQlSZWxpZHMJCXJlbGlkczsKIAkJUmVsSW5mb0Vu dHJ5ICpoZW50cnk7CiAJCWJvb2wJCWZvdW5kOwogCisJCWlmIChJc0EoZGF0YSwgUmVsT3B0SW5m bykpCisJCQlyZWxpZHMgPSAoKFJlbE9wdEluZm8gKikgZGF0YSktPnJlbGlkczsKKwkJZWxzZQor CQkJcmVsaWRzID0gKChSZWxBZ2dJbmZvICopIGRhdGEpLT5yZWxpZHM7CisKIAkJaGVudHJ5ID0g KFJlbEluZm9FbnRyeSAqKSBoYXNoX3NlYXJjaChsaXN0LT5oYXNoLAotCQkJCQkJCQkJCQkgICYo cmVsLT5yZWxpZHMpLAorCQkJCQkJCQkJCQkgICZyZWxpZHMsCiAJCQkJCQkJCQkJCSAgSEFTSF9F TlRFUiwKIAkJCQkJCQkJCQkJICAmZm91bmQpOwogCQlBc3NlcnQoIWZvdW5kKTsKLQkJaGVudHJ5 LT5yZWwgPSByZWw7CisJCWhlbnRyeS0+ZGF0YSA9IGRhdGE7CiAJfQogfQogCkBAIC0xNDk2LDcg KzE1MjAsNyBAQCBmZXRjaF91cHBlcl9yZWwoUGxhbm5lckluZm8gKnJvb3QsIFVwcGVyUmVsYXRp b25LaW5kIGtpbmQsIFJlbGlkcyByZWxpZHMpCiAJLyogSWYgd2UgYWxyZWFkeSBtYWRlIHRoaXMg dXBwZXJyZWwgZm9yIHRoZSBxdWVyeSwgcmV0dXJuIGl0ICovCiAJaWYgKGxpc3QpCiAJewotCQl1 cHBlcnJlbCA9IGZpbmRfcmVsX2luZm8obGlzdCwgcmVsaWRzKTsKKwkJdXBwZXJyZWwgPSAoUmVs T3B0SW5mbyAqKSBmaW5kX3JlbF9pbmZvKGxpc3QsIHJlbGlkcyk7CiAJCWlmICh1cHBlcnJlbCkK IAkJCXJldHVybiB1cHBlcnJlbDsKIAl9CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9w YXRobm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCmluZGV4IGEwMDM0MzMx NzguLmFkNTVkNzYxNjkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5o CisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCkBAIC0xMDY1LDYgKzEwNjUsNzkg QEAgdHlwZWRlZiBzdHJ1Y3QgUmVsT3B0SW5mbwogCSgocmVsKS0+cGFydF9zY2hlbWUgJiYgKHJl bCktPmJvdW5kaW5mbyAmJiAocmVsKS0+bnBhcnRzID4gMCAmJiBcCiAJIChyZWwpLT5wYXJ0X3Jl bHMgJiYgKHJlbCktPnBhcnRleHBycyAmJiAocmVsKS0+bnVsbGFibGVfcGFydGV4cHJzKQogCisv KgorICogUmVsQWdnSW5mbworICoJCUluZm9ybWF0aW9uIG5lZWRlZCB0byBjcmVhdGUgZ3JvdXBl ZCBwYXRocyBmb3IgYmFzZSBhbmQgam9pbiByZWxzLgorICoKKyAqICJyZWxpZHMiIGlzIHRoZSBz ZXQgb2YgcmVsYXRpb24gaWRlbnRpZmllcnMgKFJUIGluZGV4ZXMpLCBqdXN0IGxpa2Ugd2l0aAor ICogUmVsT3B0SW5mby4KKyAqCisgKiAidGFyZ2V0IiB3aWxsIGJlIHVzZWQgYXMgcGF0aHRhcmdl dCBpZiBwYXJ0aWFsIGFnZ3JlZ2F0aW9uIGlzIGFwcGxpZWQgdG8KKyAqIGJhc2UgcmVsYXRpb24g b3Igam9pbi4gVGhlIHNhbWUgdGFyZ2V0IHdpbGwgYWxzbyAtLS0gaWYgdGhlIHJlbGF0aW9uIGlz IGEKKyAqIGpvaW4gLS0tIGJlIHVzZWQgdG8gam9pbiBncm91cGVkIHBhdGggdG8gYSBub24tZ3Jv dXBlZCBvbmUuICBUaGlzIHRhcmdldCBjYW4KKyAqIGNvbnRhaW4gcGxhaW4tVmFyIGdyb3VwaW5n IGV4cHJlc3Npb25zIGFuZCBBZ2dyZWYgbm9kZXMuCisgKgorICogTm90ZTogVGhlcmUncyBhIGNv bnZlbnRpb24gdGhhdCBBZ2dyZWYgZXhwcmVzc2lvbnMgYXJlIHN1cHBvc2VkIHRvIGZvbGxvdwor ICogdGhlIG90aGVyIGV4cHJlc3Npb25zIG9mIHRoZSB0YXJnZXQuIEl0ZXJhdGlvbnMgb2YgLT5l eHBycyBtYXkgcmVseSBvbiB0aGlzCisgKiBhcnJhbmdlbWVudC4KKyAqCisgKiAiYWdnX2lucHV0 IiBjb250YWlucyBWYXJzIHVzZWQgZWl0aGVyIGFzIGdyb3VwaW5nIGV4cHJlc3Npb25zIG9yIGFn Z3JlZ2F0ZQorICogYXJndW1lbnRzLiBQYXRocyBwcm92aWRpbmcgdGhlIGFnZ3JlZ2F0aW9uIHBs YW4gd2l0aCBpbnB1dCBkYXRhIHNob3VsZCB1c2UKKyAqIHRoaXMgdGFyZ2V0LiBUaGUgb25seSBk aWZmZXJlbmNlIGZyb20gcmVsdGFyZ2V0IG9mIHRoZSBub24tZ3JvdXBlZCByZWxhdGlvbgorICog aXMgdGhhdCBzb21lIGl0ZW1zIGNhbiBoYXZlIHNvcnRncm91cHJlZiBpbml0aWFsaXplZC4KKyAq CisgKiAiaW5wdXRfcm93cyIgaXMgdGhlIGVzdGltYXRlZCBudW1iZXIgb2YgaW5wdXQgcm93cyBm b3IgQWdnUGF0aC4gSXQncworICogYWN0dWFsbHkganVzdCBhIHdvcmtzcGFjZSBmb3IgdXNlcnMg b2YgdGhlIHN0cnVjdHVyZSwgaS5lLiBub3QgaW5pdGlhbGl6ZWQKKyAqIHdoZW4gaW5zdGFuY2Ug b2YgdGhlIHN0cnVjdHVyZSBpcyBjcmVhdGVkLgorICoKKyAqICJncm91cGVkX3Jvd3MiIGlzIHRo ZSBlc3RpbWF0ZWQgbnVtYmVyIG9mIHJlc3VsdCByb3dzIG9mIHRoZSBBZ2dQYXRoLgorICoKKyAq ICJncm91cF9jbGF1c2VzIiwgImdyb3VwX2V4cHJzIiBhbmQgImdyb3VwX3BhdGhrZXlzIiBhcmUg bGlzdHMgb2YKKyAqIFNvcnRHcm91cENsYXVzZSwgdGhlIGNvcnJlc3BvbmRpbmcgZ3JvdXBpbmcg ZXhwcmVzc2lvbnMgYW5kIFBhdGhLZXkKKyAqIHJlc3BlY3RpdmVseS4KKyAqCisgKiAiYWdnX2V4 cHJzIiBpcyBhIGxpc3Qgb2YgQWdncmVmIG5vZGVzIGZvciB0aGUgYWdncmVnYXRpb24gb2YgdGhl IHJlbGF0aW9uJ3MKKyAqIHBhdGhzLgorICovCit0eXBlZGVmIHN0cnVjdCBSZWxBZ2dJbmZvCit7 CisJcGdfbm9kZV9hdHRyKG5vX2NvcHlfZXF1YWwsIG5vX3JlYWQsIG5vX3F1ZXJ5X2p1bWJsZSkK KworCU5vZGVUYWcJCXR5cGU7CisKKwkvKgorCSAqIHRoZSBzYW1lIGFzIGluIFJlbE9wdEluZm87 IHNldCBvZiBiYXNlICsgT0ogcmVsaWRzIChyYW5nZXRhYmxlIGluZGV4ZXMpCisJICovCisJUmVs aWRzCQlyZWxpZHM7CisKKwkvKgorCSAqIHRoZSB0YXJnZXRsaXN0IGZvciBQYXRocyBzY2Fubmlu ZyB0aGlzIGdyb3VwZWQgcmVsOyBsaXN0IG9mIFZhcnMvRXhwcnMsCisJICogY29zdCwgd2lkdGgK KwkgKi8KKwlzdHJ1Y3QgUGF0aFRhcmdldCAqdGFyZ2V0OworCisJLyoKKwkgKiB0aGUgdGFyZ2V0 bGlzdCBmb3IgUGF0aHMgdGhhdCBnZW5lcmF0ZSBpbnB1dCBmb3IgdGhlIGdyb3VwZWQgcGF0aHMg CisJICovCisJc3RydWN0IFBhdGhUYXJnZXQgKmFnZ19pbnB1dDsKKworCS8qIGVzdGltYXRlZCBu dW1iZXIgb2YgaW5wdXQgdHVwbGVzIGZvciB0aGUgZ3JvdXBlZCBwYXRocyAqLworCUNhcmRpbmFs aXR5CQlpbnB1dF9yb3dzOworCisJLyogZXN0aW1hdGVkIG51bWJlciBvZiByZXN1bHQgdHVwbGVz IG9mIHRoZSBncm91cGVkIHJlbGF0aW9uKi8KKwlDYXJkaW5hbGl0eQkJZ3JvdXBlZF9yb3dzOwor CisJLyogYSBsaXN0IG9mIFNvcnRHcm91cENsYXVzZSdzICovCisJTGlzdAkgICAqZ3JvdXBfY2xh dXNlczsKKwkvKiBhIGxpc3Qgb2YgZ3JvdXBpbmcgZXhwcmVzc2lvbnMgKi8KKwlMaXN0CSAgICpn cm91cF9leHByczsKKwkvKiBhIGxpc3Qgb2YgUGF0aEtleXMgKi8KKwlMaXN0CSAgICpncm91cF9w YXRoa2V5czsKKworCS8qIGEgbGlzdCBvZiBBZ2dyZWYgbm9kZXMgKi8KKwlMaXN0CSAgICphZ2df ZXhwcnM7Cit9IFJlbEFnZ0luZm87CisKIC8qCiAgKiBJbmRleE9wdEluZm8KICAqCQlQZXItaW5k ZXggaW5mb3JtYXRpb24gZm9yIHBsYW5uaW5nL29wdGltaXphdGlvbgotLSAKMi4zMS4wCgo= --00000000000075de670612e805e8 Content-Type: application/octet-stream; name="v3-0003-Set-up-for-eager-aggregation-by-collecting-needed-infos.patch" Content-Disposition: attachment; filename="v3-0003-Set-up-for-eager-aggregation-by-collecting-needed-infos.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ltea04x62 RnJvbSAxZjNkMTQ0ZDY4ZjhkZGY0M2I1MWVkNmUwZDdjYzYwMzY4MWE0ZjBmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4K RGF0ZTogRnJpLCAyMyBGZWIgMjAyNCAxODo0MDo0NiArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjMg My85XSBTZXQgdXAgZm9yIGVhZ2VyIGFnZ3JlZ2F0aW9uIGJ5IGNvbGxlY3RpbmcgbmVlZGVkCiBp bmZvcwoKVGhpcyBjb21taXQgY2hlY2tzIGlmIGVhZ2VyIGFnZ3JlZ2F0aW9uIGlzIGFwcGxpY2Fi bGUsIGFuZCBpZiBzbywgc2V0cwp1cCByb290LT5hZ2dfY2xhdXNlX2xpc3QgYW5kIHJvb3QtPmdy b3VwX2V4cHJfbGlzdCBieSBjb2xsZWN0aW5nCnN1aXRhYmxlIGFnZ3JlZ2F0ZSBleHByZXNzaW9u cyBhbmQgZ3JvdXBpbmcgZXhwcmVzc2lvbnMgaW4gdGhlIHF1ZXJ5LgotLS0KIHNyYy9iYWNrZW5k L29wdGltaXplci9wYXRoL2FsbHBhdGhzLmMgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9v cHRpbWl6ZXIvcGxhbi9pbml0c3BsYW4uYyAgICAgICAgfCAyNTAgKysrKysrKysrKysrKysrKysr CiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubWFpbi5jICAgICAgICAgfCAgIDggKwog c3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgICAgICAgICAgIHwgIDEwICsKIHNy Yy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZSB8ICAgMSArCiBzcmMv aW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaCAgICAgICAgICAgICAgICAgfCAgNDEgKysrCiBzcmMv aW5jbHVkZS9vcHRpbWl6ZXIvcGF0aHMuaCAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2lu Y2x1ZGUvb3B0aW1pemVyL3BsYW5tYWluLmggICAgICAgICAgICAgIHwgICAxICsKIHNyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvc3lzdmlld3Mub3V0ICAgICAgICB8ICAgMyArLQogOSBmaWxlcyBj aGFuZ2VkLCAzMTUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL29wdGltaXplci9wYXRoL2FsbHBhdGhzLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvcGF0aC9hbGxwYXRocy5jCmluZGV4IGY4YTVmYmNiMGEuLjA2NzJkODQ1OGYgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2FsbHBhdGhzLmMKKysrIGIvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3BhdGgvYWxscGF0aHMuYwpAQCAtNzcsNiArNzcsNyBAQCB0eXBlZGVmIGVu dW0gcHVzaGRvd25fc2FmZV90eXBlCiAKIC8qIFRoZXNlIHBhcmFtZXRlcnMgYXJlIHNldCBieSBH VUMgKi8KIGJvb2wJCWVuYWJsZV9nZXFvID0gZmFsc2U7CS8qIGp1c3QgaW4gY2FzZSBHVUMgZG9l c24ndCBzZXQgaXQgKi8KK2Jvb2wJCWVuYWJsZV9lYWdlcl9hZ2dyZWdhdGUgPSBmYWxzZTsKIGlu dAkJCWdlcW9fdGhyZXNob2xkOwogaW50CQkJbWluX3BhcmFsbGVsX3RhYmxlX3NjYW5fc2l6ZTsK IGludAkJCW1pbl9wYXJhbGxlbF9pbmRleF9zY2FuX3NpemU7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvcGxhbi9pbml0c3BsYW4uYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9w bGFuL2luaXRzcGxhbi5jCmluZGV4IGQzODY4YjYyOGQuLmRiOTAzNzk2ZWMgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2luaXRzcGxhbi5jCisrKyBiL3NyYy9iYWNrZW5k L29wdGltaXplci9wbGFuL2luaXRzcGxhbi5jCkBAIC0xNCw2ICsxNCw3IEBACiAgKi8KICNpbmNs dWRlICJwb3N0Z3Jlcy5oIgogCisjaW5jbHVkZSAiYWNjZXNzL25idHJlZS5oIgogI2luY2x1ZGUg ImNhdGFsb2cvcGdfdHlwZS5oIgogI2luY2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgogI2luY2x1 ZGUgIm5vZGVzL25vZGVGdW5jcy5oIgpAQCAtNzksNiArODAsOCBAQCB0eXBlZGVmIHN0cnVjdCBK b2luVHJlZUl0ZW0KIH0gSm9pblRyZWVJdGVtOwogCiAKK3N0YXRpYyB2b2lkIGNyZWF0ZV9hZ2df Y2xhdXNlX2luZm9zKFBsYW5uZXJJbmZvICpyb290KTsKK3N0YXRpYyB2b2lkIGNyZWF0ZV9ncm91 cGluZ19leHByX2luZm9zKFBsYW5uZXJJbmZvICpyb290KTsKIHN0YXRpYyB2b2lkIGV4dHJhY3Rf bGF0ZXJhbF9yZWZlcmVuY2VzKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpicmVsLAog CQkJCQkJCQkJICAgSW5kZXggcnRpbmRleCk7CiBzdGF0aWMgTGlzdCAqZGVjb25zdHJ1Y3RfcmVj dXJzZShQbGFubmVySW5mbyAqcm9vdCwgTm9kZSAqanRub2RlLApAQCAtMzI2LDYgKzMyOSwyNTMg QEAgYWRkX3ZhcnNfdG9fdGFyZ2V0bGlzdChQbGFubmVySW5mbyAqcm9vdCwgTGlzdCAqdmFycywK IAl9CiB9CiAKKy8qCisgKiBzZXR1cF9lYWdlcl9hZ2dyZWdhdGlvbgorICoJICBDaGVjayBpZiBl YWdlciBhZ2dyZWdhdGlvbiBpcyBhcHBsaWNhYmxlLCBhbmQgaWYgc28gY29sbGVjdCBzdWl0YWJs ZQorICoJICBhZ2dyZWdhdGUgZXhwcmVzc2lvbnMgYW5kIGdyb3VwaW5nIGV4cHJlc3Npb25zIGlu IHRoZSBxdWVyeS4KKyAqLwordm9pZAorc2V0dXBfZWFnZXJfYWdncmVnYXRpb24oUGxhbm5lcklu Zm8gKnJvb3QpCit7CisJLyoKKwkgKiBEb24ndCBhcHBseSBlYWdlciBhZ2dyZWdhdGlvbiBpZiBk aXNhYmxlZCBieSB1c2VyLgorCSAqLworCWlmICghZW5hYmxlX2VhZ2VyX2FnZ3JlZ2F0ZSkKKwkJ cmV0dXJuOworCisJLyoKKwkgKiBEb24ndCBhcHBseSBlYWdlciBhZ2dyZWdhdGlvbiBpZiB0aGVy ZSBhcmUgbm8gR1JPVVAgQlkgY2xhdXNlcy4KKwkgKi8KKwlpZiAoIXJvb3QtPnBhcnNlLT5ncm91 cENsYXVzZSkKKwkJcmV0dXJuOworCisJLyoKKwkgKiBGb3Igbm93IHdlIGRvbid0IHRyeSB0byBz dXBwb3J0IGdyb3VwaW5nIHNldHMuCisJICovCisJaWYgKHJvb3QtPnBhcnNlLT5ncm91cGluZ1Nl dHMpCisJCXJldHVybjsKKworCS8qCisJICogRm9yIG5vdyB3ZSBkb24ndCB0cnkgdG8gc3VwcG9y dCBESVNUSU5DVCBvciBPUkRFUiBCWSBhZ2dyZWdhdGVzLgorCSAqLworCWlmIChyb290LT5udW1P cmRlcmVkQWdncyA+IDApCisJCXJldHVybjsKKworCS8qCisJICogSWYgdGhlcmUgYXJlIGFueSBh Z2dyZWdhdGVzIHRoYXQgZG8gbm90IHN1cHBvcnQgcGFydGlhbCBtb2RlLCBvciBhbnkKKwkgKiBw YXJ0aWFsIGFnZ3JlZ2F0ZXMgdGhhdCBhcmUgbm9uLXNlcmlhbGl6YWJsZSwgZG8gbm90IGFwcGx5 IGVhZ2VyCisJICogYWdncmVnYXRpb24uCisJICovCisJaWYgKHJvb3QtPmhhc05vblBhcnRpYWxB Z2dzIHx8IHJvb3QtPmhhc05vblNlcmlhbEFnZ3MpCisJCXJldHVybjsKKworCS8qCisJICogU1JG IGlzIG5vdCBhbGxvd2VkIGluIHRoZSBhZ2dyZWdhdGUgYXJndW1lbnQgYW5kIHdlIGRvbid0IGV2 ZW4gd2FudCBpdAorCSAqIGluIHRoZSBHUk9VUCBCWSBjbGF1c2UsIHNvIGZvcmJpZCBpdCBpbiBn ZW5lcmFsLiBJdCBuZWVkcyB0byBiZQorCSAqIGFuYWx5emVkIGlmIGV2YWx1YXRpb24gb2YgYSBH Uk9VUCBCWSBjbGF1c2UgY29udGFpbmluZyBTUkYgYmVsb3cgdGhlCisJICogcXVlcnkgdGFyZ2V0 bGlzdCB3b3VsZCBiZSBjb3JyZWN0LiBDdXJyZW50bHkgaXQgZG9lcyBub3Qgc2VlbSB0byBiZSBh bgorCSAqIGltcG9ydGFudCB1c2UgY2FzZS4KKwkgKi8KKwlpZiAocm9vdC0+cGFyc2UtPmhhc1Rh cmdldFNSRnMpCisJCXJldHVybjsKKworCS8qCisJICogQ29sbGVjdCBhZ2dyZWdhdGUgZXhwcmVz c2lvbnMgdGhhdCBhcHBlYXIgaW4gdGFyZ2V0bGlzdCBhbmQgaGF2aW5nCisJICogY2xhdXNlcy4K KwkgKi8KKwljcmVhdGVfYWdnX2NsYXVzZV9pbmZvcyhyb290KTsKKworCS8qCisJICogSWYgdGhl cmUgYXJlIG5vIHN1aXRhYmxlIGFnZ3JlZ2F0ZSBleHByZXNzaW9ucywgd2UgY2Fubm90IGFwcGx5 IGVhZ2VyCisJICogYWdncmVnYXRpb24uCisJICovCisJaWYgKHJvb3QtPmFnZ19jbGF1c2VfbGlz dCA9PSBOSUwpCisJCXJldHVybjsKKworCS8qCisJICogQ29sbGVjdCBncm91cGluZyBleHByZXNz aW9ucyB0aGF0IGFwcGVhciBpbiBncm91cGluZyBjbGF1c2VzLgorCSAqLworCWNyZWF0ZV9ncm91 cGluZ19leHByX2luZm9zKHJvb3QpOworfQorCisvKgorICogQ3JlYXRlIEFnZ0NsYXVzZUluZm8g Zm9yIGVhY2ggYWdncmVnYXRlLgorICoKKyAqIElmIGFueSBhZ2dyZWdhdGUgaXMgbm90IHN1aXRh YmxlLCBzZXQgcm9vdC0+YWdnX2NsYXVzZV9saXN0IHRvIE5JTCBhbmQKKyAqIHJldHVybi4KKyAq Lworc3RhdGljIHZvaWQKK2NyZWF0ZV9hZ2dfY2xhdXNlX2luZm9zKFBsYW5uZXJJbmZvICpyb290 KQoreworCUxpc3QJICAgKnRsaXN0X2V4cHJzOworCUxpc3RDZWxsICAgKmxjOworCisJQXNzZXJ0 KHJvb3QtPmFnZ19jbGF1c2VfbGlzdCA9PSBOSUwpOworCisJdGxpc3RfZXhwcnMgPSBwdWxsX3Zh cl9jbGF1c2UoKE5vZGUgKikgcm9vdC0+cHJvY2Vzc2VkX3RsaXN0LAorCQkJCQkJCQkgIFBWQ19J TkNMVURFX0FHR1JFR0FURVMgfAorCQkJCQkJCQkgIFBWQ19SRUNVUlNFX1dJTkRPV0ZVTkNTIHwK KwkJCQkJCQkJICBQVkNfUkVDVVJTRV9QTEFDRUhPTERFUlMpOworCisJLyoKKwkgKiBGb3Igbm93 IHdlIGRvbid0IHRyeSB0byBzdXBwb3J0IEdST1VQSU5HKCkgZXhwcmVzc2lvbnMuCisJICovCisJ Zm9yZWFjaChsYywgdGxpc3RfZXhwcnMpCisJeworCQlFeHByCSAgICpleHByID0gKEV4cHIgKikg bGZpcnN0KGxjKTsKKworCQlpZiAoSXNBKGV4cHIsIEdyb3VwaW5nRnVuYykpCisJCQlyZXR1cm47 CisJfQorCisJLyoKKwkgKiBBZ2dyZWdhdGVzIHdpdGhpbiB0aGUgSEFWSU5HIGNsYXVzZSBuZWVk IHRvIGJlIHByb2Nlc3NlZCBpbiB0aGUgc2FtZSB3YXkKKwkgKiBhcyB0aG9zZSBpbiB0aGUgdGFy Z2V0bGlzdC4gIE5vdGUgdGhhdCBIQVZJTkcgY2FuIGNvbnRhaW4gQWdncmVmcyBidXQKKwkgKiBu b3QgV2luZG93RnVuY3MuCisJICovCisJaWYgKHJvb3QtPnBhcnNlLT5oYXZpbmdRdWFsICE9IE5V TEwpCisJeworCQlMaXN0CSAgICpoYXZpbmdfZXhwcnM7CisKKwkJaGF2aW5nX2V4cHJzID0gcHVs bF92YXJfY2xhdXNlKChOb2RlICopIHJvb3QtPnBhcnNlLT5oYXZpbmdRdWFsLAorCQkJCQkJCQkJ ICAgUFZDX0lOQ0xVREVfQUdHUkVHQVRFUyB8CisJCQkJCQkJCQkgICBQVkNfUkVDVVJTRV9QTEFD RUhPTERFUlMpOworCQlpZiAoaGF2aW5nX2V4cHJzICE9IE5JTCkKKwkJeworCQkJdGxpc3RfZXhw cnMgPSBsaXN0X2NvbmNhdCh0bGlzdF9leHBycywgaGF2aW5nX2V4cHJzKTsKKwkJCWxpc3RfZnJl ZShoYXZpbmdfZXhwcnMpOworCQl9CisJfQorCisJZm9yZWFjaChsYywgdGxpc3RfZXhwcnMpCisJ eworCQlFeHByCSAgICpleHByID0gKEV4cHIgKikgbGZpcnN0KGxjKTsKKwkJQWdncmVmCSAgICph Z2dyZWY7CisJCUFnZ0NsYXVzZUluZm8gKmFjX2luZm87CisKKwkJLyoKKwkJICogdGxpc3RfZXhw cnMgbWF5IGFsc28gY29udGFpbiBWYXJzLCBidXQgd2Ugb25seSBuZWVkIEFnZ3JlZnMuCisJCSAq LworCQlpZiAoSXNBKGV4cHIsIFZhcikpCisJCQljb250aW51ZTsKKworCQlhZ2dyZWYgPSBjYXN0 Tm9kZShBZ2dyZWYsIGV4cHIpOworCisJCUFzc2VydChhZ2dyZWYtPmFnZ29yZGVyID09IE5JTCk7 CisJCUFzc2VydChhZ2dyZWYtPmFnZ2Rpc3RpbmN0ID09IE5JTCk7CisKKwkJYWNfaW5mbyA9IG1h a2VOb2RlKEFnZ0NsYXVzZUluZm8pOworCQlhY19pbmZvLT5hZ2dyZWYgPSBhZ2dyZWY7CisJCWFj X2luZm8tPmFnZ19ldmFsX2F0ID0gcHVsbF92YXJub3Mocm9vdCwgKE5vZGUgKikgYWdncmVmKTsK KworCQlyb290LT5hZ2dfY2xhdXNlX2xpc3QgPQorCQkJbGlzdF9hcHBlbmRfdW5pcXVlKHJvb3Qt PmFnZ19jbGF1c2VfbGlzdCwgYWNfaW5mbyk7CisJfQorCisJbGlzdF9mcmVlKHRsaXN0X2V4cHJz KTsKK30KKworLyoKKyAqIENyZWF0ZSBHcm91cEV4cHJJbmZvIGZvciBlYWNoIGV4cHJlc3Npb24g dXNhYmxlIGFzIGdyb3VwaW5nIGtleS4KKyAqCisgKiBJZiBhbnkgZ3JvdXBpbmcgZXhwcmVzc2lv biBpcyBub3Qgc3VpdGFibGUsIHNldCByb290LT5ncm91cF9leHByX2xpc3QgdG8gTklMCisgKiBh bmQgcmV0dXJuLgorICovCitzdGF0aWMgdm9pZAorY3JlYXRlX2dyb3VwaW5nX2V4cHJfaW5mb3Mo UGxhbm5lckluZm8gKnJvb3QpCit7CisJTGlzdAkgICAqZXhwcnMgPSBOSUw7CisJTGlzdAkgICAq c29ydGdyb3VwcmVmcyA9IE5JTDsKKwlMaXN0CSAgICpidHJlZV9vcGZhbWlsaWVzID0gTklMOwor CUxpc3RDZWxsICAgKmxjLAorCQkJICAgKmxjMSwKKwkJCSAgICpsYzIsCisJCQkgICAqbGMzOwor CisJQXNzZXJ0KHJvb3QtPmdyb3VwX2V4cHJfbGlzdCA9PSBOSUwpOworCisJZm9yZWFjaChsYywg cm9vdC0+cGFyc2UtPmdyb3VwQ2xhdXNlKQorCXsKKwkJU29ydEdyb3VwQ2xhdXNlICpzZ2MgPSBs Zmlyc3Rfbm9kZShTb3J0R3JvdXBDbGF1c2UsIGxjKTsKKwkJVGFyZ2V0RW50cnkgKnRsZSA9IGdl dF9zb3J0Z3JvdXBjbGF1c2VfdGxlKHNnYywgcm9vdC0+cHJvY2Vzc2VkX3RsaXN0KTsKKwkJVHlw ZUNhY2hlRW50cnkgKnRjZTsKKwkJT2lkCQkJCWVxdWFsaW1hZ2Vwcm9jOworCQlPaWQJCQkJZXFf b3A7CisJCUxpc3QJCSAgICplcV9vcGZhbWlsaWVzOworCQlPaWQJCQkJYnRyZWVfb3BmYW1pbHk7 CisKKwkJQXNzZXJ0KHRsZS0+cmVzc29ydGdyb3VwcmVmID4gMCk7CisKKwkJLyoKKwkJICogRm9y IG5vdyB3ZSBvbmx5IHN1cHBvcnQgcGxhaW4gVmFycyBhcyBncm91cGluZyBleHByZXNzaW9ucy4K KwkJICovCisJCWlmICghSXNBKHRsZS0+ZXhwciwgVmFyKSkKKwkJCXJldHVybjsKKworCQkvKgor CQkgKiBFYWdlciBhZ2dyZWdhdGlvbiBpcyBvbmx5IHBvc3NpYmxlIGlmIGVxdWFsaXR5IG9mIGdy b3VwaW5nIGtleXMKKwkJICogcGVyIHRoZSBlcXVhbGl0eSBvcGVyYXRvciBpbXBsaWVzIGJpdHdp c2UgZXF1YWxpdHkuIE90aGVyd2lzZSwgaWYKKwkJICogd2UgcHV0IGtleXMgb2YgZGlmZmVyZW50 IGJ5dGUgaW1hZ2VzIGludG8gdGhlIHNhbWUgZ3JvdXAsIHdlIGxvc2UKKwkJICogc29tZSBpbmZv cm1hdGlvbiB0aGF0IG1heSBiZSBuZWVkZWQgdG8gZXZhbHVhdGUgam9pbiBjbGF1c2VzIGFib3Zl CisJCSAqIHRoZSBwdXNoZWQtZG93biBhZ2dyZWdhdGUgbm9kZSwgb3IgdGhlIFdIRVJFIGNsYXVz ZS4KKwkJICoKKwkJICogRm9yIGV4YW1wbGUsIHRoZSBOVU1FUklDIGRhdGEgdHlwZSBpcyBub3Qg c3VwcG9ydGVkIGJlY2F1c2UgdmFsdWVzCisJCSAqIHRoYXQgZmFsbCBpbnRvIHRoZSBzYW1lIGdy b3VwIGFjY29yZGluZyB0byB0aGUgZXF1YWxpdHkgb3BlcmF0b3IKKwkJICogKGUuZy4gMCBhbmQg MC4wKSBjYW4gaGF2ZSBkaWZmZXJlbnQgc2NhbGUuCisJCSAqLworCQl0Y2UgPSBsb29rdXBfdHlw ZV9jYWNoZShleHByVHlwZSgoTm9kZSAqKSB0bGUtPmV4cHIpLAorCQkJCQkJCQlUWVBFQ0FDSEVf QlRSRUVfT1BGQU1JTFkpOworCQlpZiAoIU9pZElzVmFsaWQodGNlLT5idHJlZV9vcGYpIHx8CisJ CQkhT2lkSXNWYWxpZCh0Y2UtPmJ0cmVlX29waW50eXBlKSkKKwkJCXJldHVybjsKKworCQllcXVh bGltYWdlcHJvYyA9IGdldF9vcGZhbWlseV9wcm9jKHRjZS0+YnRyZWVfb3BmLAorCQkJCQkJCQkJ CSAgIHRjZS0+YnRyZWVfb3BpbnR5cGUsCisJCQkJCQkJCQkJICAgdGNlLT5idHJlZV9vcGludHlw ZSwKKwkJCQkJCQkJCQkgICBCVEVRVUFMSU1BR0VfUFJPQyk7CisJCWlmICghT2lkSXNWYWxpZChl cXVhbGltYWdlcHJvYykgfHwKKwkJCSFEYXR1bUdldEJvb2woT2lkRnVuY3Rpb25DYWxsMUNvbGwo ZXF1YWxpbWFnZXByb2MsCisJCQkJCQkJCQkJCSAgIHRjZS0+dHlwY29sbGF0aW9uLAorCQkJCQkJ CQkJCQkgICBPYmplY3RJZEdldERhdHVtKHRjZS0+YnRyZWVfb3BpbnR5cGUpKSkpCisJCQlyZXR1 cm47CisKKwkJLyoKKwkJICogR2V0IHRoZSBvcGVyYXRvciBpbiB0aGUgYnRyZWUncyBvcGZhbWls eS4KKwkJICovCisJCWVxX29wID0gZ2V0X29wZmFtaWx5X21lbWJlcih0Y2UtPmJ0cmVlX29wZiwK KwkJCQkJCQkJCXRjZS0+YnRyZWVfb3BpbnR5cGUsCisJCQkJCQkJCQl0Y2UtPmJ0cmVlX29waW50 eXBlLAorCQkJCQkJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyKTsKKwkJaWYgKCFPaWRJc1ZhbGlk KGVxX29wKSkKKwkJCXJldHVybjsKKwkJZXFfb3BmYW1pbGllcyA9IGdldF9tZXJnZWpvaW5fb3Bm YW1pbGllcyhlcV9vcCk7CisJCWlmICghZXFfb3BmYW1pbGllcykKKwkJCXJldHVybjsKKwkJYnRy ZWVfb3BmYW1pbHkgPSBsaW5pdGlhbF9vaWQoZXFfb3BmYW1pbGllcyk7CisKKwkJZXhwcnMgPSBs YXBwZW5kKGV4cHJzLCB0bGUtPmV4cHIpOworCQlzb3J0Z3JvdXByZWZzID0gbGFwcGVuZF9pbnQo c29ydGdyb3VwcmVmcywgdGxlLT5yZXNzb3J0Z3JvdXByZWYpOworCQlidHJlZV9vcGZhbWlsaWVz ID0gbGFwcGVuZF9vaWQoYnRyZWVfb3BmYW1pbGllcywgYnRyZWVfb3BmYW1pbHkpOworCX0KKwor CS8qCisJICogQ29uc3RydWN0IEdyb3VwRXhwckluZm8gZm9yIGVhY2ggZXhwcmVzc2lvbi4KKwkg Ki8KKwlmb3J0aHJlZShsYzEsIGV4cHJzLCBsYzIsIHNvcnRncm91cHJlZnMsIGxjMywgYnRyZWVf b3BmYW1pbGllcykKKwl7CisJCUV4cHIJICAgKmV4cHIgPSAoRXhwciAqKSBsZmlyc3QobGMxKTsK KwkJaW50CQkJc29ydGdyb3VwcmVmID0gbGZpcnN0X2ludChsYzIpOworCQlPaWQJCQlidHJlZV9v cGZhbWlseSA9IGxmaXJzdF9vaWQobGMzKTsKKwkJR3JvdXBFeHBySW5mbyAqZ2VfaW5mbzsKKwor CQlnZV9pbmZvID0gbWFrZU5vZGUoR3JvdXBFeHBySW5mbyk7CisJCWdlX2luZm8tPmV4cHIgPSAo RXhwciAqKSBjb3B5T2JqZWN0KGV4cHIpOworCQlnZV9pbmZvLT5zb3J0Z3JvdXByZWYgPSBzb3J0 Z3JvdXByZWY7CisJCWdlX2luZm8tPmJ0cmVlX29wZmFtaWx5ID0gYnRyZWVfb3BmYW1pbHk7CisK KwkJcm9vdC0+Z3JvdXBfZXhwcl9saXN0ID0gbGFwcGVuZChyb290LT5ncm91cF9leHByX2xpc3Qs IGdlX2luZm8pOworCX0KK30KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm1haW4uYyBiL3NyYy9iYWNrZW5kL29w dGltaXplci9wbGFuL3BsYW5tYWluLmMKaW5kZXggZWI3OGUzNzMxNy4uMTk3YTNmOTA1ZSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm1haW4uYworKysgYi9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubWFpbi5jCkBAIC03Nyw2ICs3Nyw4IEBAIHF1ZXJ5 X3BsYW5uZXIoUGxhbm5lckluZm8gKnJvb3QsCiAJcm9vdC0+cGxhY2Vob2xkZXJfbGlzdCA9IE5J TDsKIAlyb290LT5wbGFjZWhvbGRlcl9hcnJheSA9IE5VTEw7CiAJcm9vdC0+cGxhY2Vob2xkZXJf YXJyYXlfc2l6ZSA9IDA7CisJcm9vdC0+YWdnX2NsYXVzZV9saXN0ID0gTklMOworCXJvb3QtPmdy b3VwX2V4cHJfbGlzdCA9IE5JTDsKIAlyb290LT5ma2V5X2xpc3QgPSBOSUw7CiAJcm9vdC0+aW5p dGlhbF9yZWxzID0gTklMOwogCkBAIC0yNjMsNiArMjY1LDEyIEBAIHF1ZXJ5X3BsYW5uZXIoUGxh bm5lckluZm8gKnJvb3QsCiAJICovCiAJZXh0cmFjdF9yZXN0cmljdGlvbl9vcl9jbGF1c2VzKHJv b3QpOwogCisJLyoKKwkgKiBDaGVjayBpZiBlYWdlciBhZ2dyZWdhdGlvbiBpcyBhcHBsaWNhYmxl LCBhbmQgaWYgc28sIHNldCB1cAorCSAqIHJvb3QtPmFnZ19jbGF1c2VfbGlzdCBhbmQgcm9vdC0+ Z3JvdXBfZXhwcl9saXN0LgorCSAqLworCXNldHVwX2VhZ2VyX2FnZ3JlZ2F0aW9uKHJvb3QpOwor CiAJLyoKIAkgKiBOb3cgZXhwYW5kIGFwcGVuZHJlbHMgYnkgYWRkaW5nICJvdGhlcnJlbHMiIGZv ciB0aGVpciBjaGlsZHJlbi4gIFdlCiAJICogZGVsYXkgdGhpcyB0byB0aGUgZW5kIHNvIHRoYXQg d2UgaGF2ZSBhcyBtdWNoIGluZm9ybWF0aW9uIGFzIHBvc3NpYmxlCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2Mv Z3VjX3RhYmxlcy5jCmluZGV4IDQ1MDEzNTgyYTcuLjk2Yzc4NTI4MjEgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxz L21pc2MvZ3VjX3RhYmxlcy5jCkBAIC05MzgsNiArOTM4LDE2IEBAIHN0cnVjdCBjb25maWdfYm9v bCBDb25maWd1cmVOYW1lc0Jvb2xbXSA9CiAJCWZhbHNlLAogCQlOVUxMLCBOVUxMLCBOVUxMCiAJ fSwKKwl7CisJCXsiZW5hYmxlX2VhZ2VyX2FnZ3JlZ2F0ZSIsIFBHQ19VU0VSU0VULCBRVUVSWV9U VU5JTkdfTUVUSE9ELAorCQkJZ2V0dGV4dF9ub29wKCJFbmFibGVzIGVhZ2VyIGFnZ3JlZ2F0aW9u LiIpLAorCQkJTlVMTCwKKwkJCUdVQ19FWFBMQUlOCisJCX0sCisJCSZlbmFibGVfZWFnZXJfYWdn cmVnYXRlLAorCQlmYWxzZSwKKwkJTlVMTCwgTlVMTCwgTlVMTAorCX0sCiAJewogCQl7ImVuYWJs ZV9wYXJhbGxlbF9hcHBlbmQiLCBQR0NfVVNFUlNFVCwgUVVFUllfVFVOSU5HX01FVEhPRCwKIAkJ CWdldHRleHRfbm9vcCgiRW5hYmxlcyB0aGUgcGxhbm5lcidzIHVzZSBvZiBwYXJhbGxlbCBhcHBl bmQgcGxhbnMuIiksCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVz cWwuY29uZi5zYW1wbGUgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5z YW1wbGUKaW5kZXggZWRjYzAyODJiMi4uMDlkODUxYjM3NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCisrKyBiL3NyYy9iYWNrZW5kL3V0 aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQpAQCAtNDEwLDYgKzQxMCw3IEBACiAjZW5h YmxlX3NvcnQgPSBvbgogI2VuYWJsZV90aWRzY2FuID0gb24KICNlbmFibGVfZ3JvdXBfYnlfcmVv cmRlcmluZyA9IG9uCisjZW5hYmxlX2VhZ2VyX2FnZ3JlZ2F0ZSA9IG9mZgogCiAjIC0gUGxhbm5l ciBDb3N0IENvbnN0YW50cyAtCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhu b2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKaW5kZXggYWQ1NWQ3NjE2OS4u NDJhZWNhODgwYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKKysr IGIvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKQEAgLTM4Myw2ICszODMsMTIgQEAgc3Ry dWN0IFBsYW5uZXJJbmZvCiAJLyogbGlzdCBvZiBQbGFjZUhvbGRlckluZm9zICovCiAJTGlzdAkg ICAqcGxhY2Vob2xkZXJfbGlzdDsKIAorCS8qIGxpc3Qgb2YgQWdnQ2xhdXNlSW5mb3MgKi8KKwlM aXN0CSAgICphZ2dfY2xhdXNlX2xpc3Q7CisKKwkvKiBMaXN0IG9mIEdyb3VwRXhwckluZm9zICov CisJTGlzdAkgICAqZ3JvdXBfZXhwcl9saXN0OworCiAJLyogYXJyYXkgb2YgUGxhY2VIb2xkZXJJ bmZvcyBpbmRleGVkIGJ5IHBoaWQgKi8KIAlzdHJ1Y3QgUGxhY2VIb2xkZXJJbmZvICoqcGxhY2Vo b2xkZXJfYXJyYXkgcGdfbm9kZV9hdHRyKHJlYWRfd3JpdGVfaWdub3JlLCBhcnJheV9zaXplKHBs YWNlaG9sZGVyX2FycmF5X3NpemUpKTsKIAkvKiBhbGxvY2F0ZWQgc2l6ZSBvZiBhcnJheSAqLwpA QCAtMzE5Myw2ICszMTk5LDQxIEBAIHR5cGVkZWYgc3RydWN0IE1pbk1heEFnZ0luZm8KIAlQYXJh bQkgICAqcGFyYW07CiB9IE1pbk1heEFnZ0luZm87CiAKKy8qCisgKiBUaGUgYWdncmVnYXRlIGV4 cHJlc3Npb25zIHRoYXQgYXBwZWFyIGluIHRhcmdldGxpc3QgYW5kIGhhdmluZyBjbGF1c2VzCisg Ki8KK3R5cGVkZWYgc3RydWN0IEFnZ0NsYXVzZUluZm8KK3sKKwlwZ19ub2RlX2F0dHIobm9fcmVh ZCwgbm9fcXVlcnlfanVtYmxlKQorCisJTm9kZVRhZwkJdHlwZTsKKworCS8qIHRoZSBBZ2dyZWYg ZXhwciAqLworCUFnZ3JlZgkgICAqYWdncmVmOworCisJLyogbG93ZXN0IGxldmVsIHdlIGNhbiBl dmFsdWF0ZSB0aGlzIGFnZ3JlZ2F0ZSBhdCAqLworCVJlbGlkcwkJYWdnX2V2YWxfYXQ7Cit9IEFn Z0NsYXVzZUluZm87CisKKy8qCisgKiBUaGUgZ3JvdXBpbmcgZXhwcmVzc2lvbnMgdGhhdCBhcHBl YXIgaW4gZ3JvdXBpbmcgY2xhdXNlcworICovCit0eXBlZGVmIHN0cnVjdCBHcm91cEV4cHJJbmZv Cit7CisJcGdfbm9kZV9hdHRyKG5vX3JlYWQsIG5vX3F1ZXJ5X2p1bWJsZSkKKworCU5vZGVUYWcJ CXR5cGU7CisKKwkvKiB0aGUgcmVwcmVzZW50ZWQgZXhwcmVzc2lvbiAqLworCUV4cHIJICAgKmV4 cHI7CisKKwkvKiB0aGUgdGxlU29ydEdyb3VwUmVmIG9mIHRoZSBjb3JyZXNwb25kaW5nIFNvcnRH cm91cENsYXVzZSAqLworCUluZGV4CQlzb3J0Z3JvdXByZWY7CisKKwkvKiBidHJlZSBvcGZhbWls eSBkZWZpbmluZyB0aGUgb3JkZXJpbmcgKi8KKwlPaWQJCQlidHJlZV9vcGZhbWlseTsKK30gR3Jv dXBFeHBySW5mbzsKKwogLyoKICAqIEF0IHJ1bnRpbWUsIFBBUkFNX0VYRUMgc2xvdHMgYXJlIHVz ZWQgdG8gcGFzcyB2YWx1ZXMgYXJvdW5kIGZyb20gb25lIHBsYW4KICAqIG5vZGUgdG8gYW5vdGhl ci4gIFRoZXkgY2FuIGJlIHVzZWQgdG8gcGFzcyB2YWx1ZXMgZG93biBpbnRvIHN1YnF1ZXJpZXMg KGZvcgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhzLmggYi9zcmMvaW5j bHVkZS9vcHRpbWl6ZXIvcGF0aHMuaAppbmRleCAwZThhOWM5NGJhLi4wNDBhMDQ3YjgxIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aHMuaAorKysgYi9zcmMvaW5jbHVkZS9v cHRpbWl6ZXIvcGF0aHMuaApAQCAtMjEsNiArMjEsNyBAQAogICogYWxscGF0aHMuYwogICovCiBl eHRlcm4gUEdETExJTVBPUlQgYm9vbCBlbmFibGVfZ2VxbzsKK2V4dGVybiBQR0RMTElNUE9SVCBi b29sIGVuYWJsZV9lYWdlcl9hZ2dyZWdhdGU7CiBleHRlcm4gUEdETExJTVBPUlQgaW50IGdlcW9f dGhyZXNob2xkOwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBtaW5fcGFyYWxsZWxfdGFibGVfc2Nh bl9zaXplOwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBtaW5fcGFyYWxsZWxfaW5kZXhfc2Nhbl9z aXplOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BsYW5tYWluLmggYi9zcmMv aW5jbHVkZS9vcHRpbWl6ZXIvcGxhbm1haW4uaAppbmRleCBmMmUzZmE0YzJlLi40MmUwZjM3ODU5 IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGxhbm1haW4uaAorKysgYi9zcmMv aW5jbHVkZS9vcHRpbWl6ZXIvcGxhbm1haW4uaApAQCAtNzMsNiArNzMsNyBAQCBleHRlcm4gdm9p ZCBhZGRfb3RoZXJfcmVsc190b19xdWVyeShQbGFubmVySW5mbyAqcm9vdCk7CiBleHRlcm4gdm9p ZCBidWlsZF9iYXNlX3JlbF90bGlzdHMoUGxhbm5lckluZm8gKnJvb3QsIExpc3QgKmZpbmFsX3Rs aXN0KTsKIGV4dGVybiB2b2lkIGFkZF92YXJzX3RvX3RhcmdldGxpc3QoUGxhbm5lckluZm8gKnJv b3QsIExpc3QgKnZhcnMsCiAJCQkJCQkJCSAgIFJlbGlkcyB3aGVyZV9uZWVkZWQpOworZXh0ZXJu IHZvaWQgc2V0dXBfZWFnZXJfYWdncmVnYXRpb24oUGxhbm5lckluZm8gKnJvb3QpOwogZXh0ZXJu IHZvaWQgZmluZF9sYXRlcmFsX3JlZmVyZW5jZXMoUGxhbm5lckluZm8gKnJvb3QpOwogZXh0ZXJu IHZvaWQgY3JlYXRlX2xhdGVyYWxfam9pbl9pbmZvKFBsYW5uZXJJbmZvICpyb290KTsKIGV4dGVy biBMaXN0ICpkZWNvbnN0cnVjdF9qb2ludHJlZShQbGFubmVySW5mbyAqcm9vdCk7CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N5c3ZpZXdzLm91dCBiL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvc3lzdmlld3Mub3V0CmluZGV4IDliZTdhY2EyYjguLmE4M2E0MWIwZjgg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3lzdmlld3Mub3V0CisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3lzdmlld3Mub3V0CkBAIC0xMTMsNiArMTEzLDcg QEAgc2VsZWN0IG5hbWUsIHNldHRpbmcgZnJvbSBwZ19zZXR0aW5ncyB3aGVyZSBuYW1lIGxpa2Ug J2VuYWJsZSUnOwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tCiAg ZW5hYmxlX2FzeW5jX2FwcGVuZCAgICAgICAgICAgIHwgb24KICBlbmFibGVfYml0bWFwc2NhbiAg ICAgICAgICAgICAgfCBvbgorIGVuYWJsZV9lYWdlcl9hZ2dyZWdhdGUgICAgICAgICB8IG9mZgog IGVuYWJsZV9nYXRoZXJtZXJnZSAgICAgICAgICAgICB8IG9uCiAgZW5hYmxlX2dyb3VwX2J5X3Jl b3JkZXJpbmcgICAgIHwgb24KICBlbmFibGVfaGFzaGFnZyAgICAgICAgICAgICAgICAgfCBvbgpA QCAtMTM0LDcgKzEzNSw3IEBAIHNlbGVjdCBuYW1lLCBzZXR0aW5nIGZyb20gcGdfc2V0dGluZ3Mg d2hlcmUgbmFtZSBsaWtlICdlbmFibGUlJzsKICBlbmFibGVfc2Vxc2NhbiAgICAgICAgICAgICAg ICAgfCBvbgogIGVuYWJsZV9zb3J0ICAgICAgICAgICAgICAgICAgICB8IG9uCiAgZW5hYmxlX3Rp ZHNjYW4gICAgICAgICAgICAgICAgIHwgb24KLSgyMyByb3dzKQorKDI0IHJvd3MpCiAKIC0tIFRo ZXJlIGFyZSBhbHdheXMgd2FpdCBldmVudCBkZXNjcmlwdGlvbnMgZm9yIHZhcmlvdXMgdHlwZXMu CiBzZWxlY3QgdHlwZSwgY291bnQoKikgPiAwIGFzIG9rIEZST00gcGdfd2FpdF9ldmVudHMKLS0g CjIuMzEuMAoK --00000000000075de670612e805e8 Content-Type: application/octet-stream; name="v3-0004-Implement-functions-that-create-RelAggInfos-if-applicable.patch" Content-Disposition: attachment; filename="v3-0004-Implement-functions-that-create-RelAggInfos-if-applicable.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ltea0g813 RnJvbSA4MWRjOWI1ZTdiYjI5NDc0ZjNmYTJkZWI5ZjhmZGUzNmY5ZTE2YzAwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4K RGF0ZTogRnJpLCAyMyBGZWIgMjAyNCAxMToyNzo0OSArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjMg NC85XSBJbXBsZW1lbnQgZnVuY3Rpb25zIHRoYXQgY3JlYXRlIFJlbEFnZ0luZm9zIGlmCiBhcHBs aWNhYmxlCgpUaGlzIGNvbW1pdCBpbXBsZW1lbnRzIHRoZSBmdW5jdGlvbnMgdGhhdCBjaGVjayBp ZiBlYWdlciBhZ2dyZWdhdGlvbiBpcwphcHBsaWNhYmxlIGZvciBhIGdpdmVuIHJlbGF0aW9uLCBh bmQgaWYgc28sIGNyZWF0ZSBSZWxBZ2dJbmZvIHN0cnVjdHVyZQpmb3IgdGhlIHJlbGF0aW9uLCB1 c2luZyB0aGUgaW5mb3MgYWJvdXQgYWdncmVnYXRlIGV4cHJlc3Npb25zIGFuZApncm91cGluZyBl eHByZXNzaW9ucyB3ZSBjb2xsZWN0ZWQgZWFybGllci4KLS0tCiBzcmMvYmFja2VuZC9vcHRpbWl6 ZXIvcGF0aC9lcXVpdmNsYXNzLmMgfCAgMjYgKy0KIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFu L3BsYW5tYWluLmMgICB8ICAgMyArCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9yZWxub2Rl LmMgICAgfCA2MjQgKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC91dGlscy9h ZHQvc2VsZnVuY3MuYyAgICAgICAgfCAgIDUgKy0KIHNyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rl cy5oICAgICAgICAgICB8ICAgNiArCiBzcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aG5vZGUuaCAg ICAgICAgfCAgIDUgKwogc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhzLmggICAgICAgICAgIHwg ICAzICstCiA3IGZpbGVzIGNoYW5nZWQsIDY2MiBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9lcXVpdmNsYXNzLmMg Yi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9lcXVpdmNsYXNzLmMKaW5kZXggNGJkNjBhMDlj Ni4uMTg5MGRiYjg1MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvZXF1 aXZjbGFzcy5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2VxdWl2Y2xhc3MuYwpA QCAtMjQzOSwxNSArMjQzOSwxNyBAQCBmaW5kX2pvaW5fZG9tYWluKFBsYW5uZXJJbmZvICpyb290 LCBSZWxpZHMgcmVsaWRzKQogICoJICBEZXRlY3Qgd2hldGhlciB0d28gZXhwcmVzc2lvbnMgYXJl IGtub3duIGVxdWFsIGR1ZSB0byBlcXVpdmFsZW5jZQogICoJICByZWxhdGlvbnNoaXBzLgogICoK LSAqIEFjdHVhbGx5LCB0aGlzIG9ubHkgc2hvd3MgdGhhdCB0aGUgZXhwcmVzc2lvbnMgYXJlIGVx dWFsIGFjY29yZGluZwotICogdG8gc29tZSBvcGZhbWlseSdzIG5vdGlvbiBvZiBlcXVhbGl0eSAt LS0gYnV0IHdlIG9ubHkgdXNlIGl0IGZvcgotICogc2VsZWN0aXZpdHkgZXN0aW1hdGlvbiwgc28g YSBmdXp6eSBpZGVhIG9mIGVxdWFsaXR5IGlzIE9LLgorICogSWYgb3BmYW1pbHkgaXMgZ2l2ZW4s IHRoZSBleHByZXNzaW9ucyBtdXN0IGJlIGtub3duIGVxdWFsIHBlciB0aGUgc2VtYW50aWNzCisg KiBvZiB0aGF0IG9wZmFtaWx5IChub3RlIGl0IGhhcyB0byBiZSBhIGJ0cmVlIG9wZmFtaWx5LCBz aW5jZSB0aG9zZSBhcmUgdGhlCisgKiBvbmx5IG9wZmFtaWxpZXMgZXF1aXZjbGFzcy5jIGRlYWxz IHdpdGgpLiAgSWYgb3BmYW1pbHkgaXMgSW52YWxpZE9pZCwgd2UnbGwKKyAqIHJldHVybiB0cnVl IGlmIHRoZXkncmUgZXF1YWwgYWNjb3JkaW5nIHRvIGFueSBvcGZhbWlseSwgd2hpY2ggaXMgZnV6 enkgYnV0CisgKiBPSyBmb3IgZXN0aW1hdGlvbiBwdXJwb3Nlcy4KICAqCiAgKiBOb3RlOiBkb2Vz IG5vdCBib3RoZXIgdG8gY2hlY2sgZm9yICJlcXVhbChpdGVtMSwgaXRlbTIpIjsgY2FsbGVyIG11 c3QKICAqIGNoZWNrIHRoYXQgY2FzZSBpZiBpdCdzIHBvc3NpYmxlIHRvIHBhc3MgaWRlbnRpY2Fs IGl0ZW1zLgogICovCiBib29sCi1leHByc19rbm93bl9lcXVhbChQbGFubmVySW5mbyAqcm9vdCwg Tm9kZSAqaXRlbTEsIE5vZGUgKml0ZW0yKQorZXhwcnNfa25vd25fZXF1YWwoUGxhbm5lckluZm8g KnJvb3QsIE5vZGUgKml0ZW0xLCBOb2RlICppdGVtMiwgT2lkIG9wZmFtaWx5KQogewogCUxpc3RD ZWxsICAgKmxjMTsKIApAQCAtMjQ2Miw2ICsyNDY0LDE3IEBAIGV4cHJzX2tub3duX2VxdWFsKFBs YW5uZXJJbmZvICpyb290LCBOb2RlICppdGVtMSwgTm9kZSAqaXRlbTIpCiAJCWlmIChlYy0+ZWNf aGFzX3ZvbGF0aWxlKQogCQkJY29udGludWU7CiAKKwkJLyoKKwkJICogSXQncyBva2F5IHRvIGNv bnNpZGVyIGVjX2Jyb2tlbiBFQ3MgaGVyZS4gIEJyb2tlbm5lc3MganVzdCBtZWFucyB3ZQorCQkg KiBjb3VsZG4ndCBkZXJpdmUgYWxsIHRoZSBpbXBsaWVkIGNsYXVzZXMgd2UnZCBoYXZlIGxpa2Vk IHRvOyBpdCBkb2VzCisJCSAqIG5vdCBpbnZhbGlkYXRlIG91ciBrbm93bGVkZ2UgdGhhdCB0aGUg bWVtYmVycyBhcmUgZXF1YWwuCisJCSAqLworCisJCS8qIElnbm9yZSBpZiB0aGlzIEVDIGRvZXNu J3QgdXNlIHNwZWNpZmllZCBvcGZhbWlseSAqLworCQlpZiAoT2lkSXNWYWxpZChvcGZhbWlseSkg JiYKKwkJCSFsaXN0X21lbWJlcl9vaWQoZWMtPmVjX29wZmFtaWxpZXMsIG9wZmFtaWx5KSkKKwkJ CWNvbnRpbnVlOworCiAJCWZvcmVhY2gobGMyLCBlYy0+ZWNfbWVtYmVycykKIAkJewogCQkJRXF1 aXZhbGVuY2VNZW1iZXIgKmVtID0gKEVxdWl2YWxlbmNlTWVtYmVyICopIGxmaXJzdChsYzIpOwpA QCAtMjQ5MCw4ICsyNTAzLDcgQEAgZXhwcnNfa25vd25fZXF1YWwoUGxhbm5lckluZm8gKnJvb3Qs IE5vZGUgKml0ZW0xLCBOb2RlICppdGVtMikKICAqIChJbiBwcmluY2lwbGUgdGhlcmUgbWlnaHQg YmUgbW9yZSB0aGFuIG9uZSBtYXRjaGluZyBlY2xhc3MgaWYgbXVsdGlwbGUKICAqIGNvbGxhdGlv bnMgYXJlIGludm9sdmVkLCBidXQgc2luY2UgY29sbGF0aW9uIGRvZXNuJ3QgbWF0dGVyIGZvciBl cXVhbGl0eSwKICAqIHdlIGlnbm9yZSB0aGF0IGZpbmUgcG9pbnQgaGVyZS4pICBUaGlzIGlzIG11 Y2ggbGlrZSBleHByc19rbm93bl9lcXVhbCwKLSAqIGV4Y2VwdCB0aGF0IHdlIGluc2lzdCBvbiB0 aGUgY29tcGFyaXNvbiBvcGVyYXRvciBtYXRjaGluZyB0aGUgZWNsYXNzLCBzbwotICogdGhhdCB0 aGUgcmVzdWx0IGlzIGRlZmluaXRlIG5vdCBhcHByb3hpbWF0ZS4KKyAqIGV4Y2VwdCBmb3IgdGhl IGZvcm1hdCBvZiB0aGUgaW5wdXQuCiAgKgogICogT24gc3VjY2Vzcywgd2UgYWxzbyBzZXQgZmtp bmZvLT5lY2xhc3NbY29sbm9dIHRvIHRoZSBtYXRjaGluZyBlY2xhc3MsCiAgKiBhbmQgc2V0IGZr aW5mby0+ZmtfZWNsYXNzX21lbWJlcltjb2xub10gdG8gdGhlIGVjbGFzcyBtZW1iZXIgZm9yIHRo ZQpAQCAtMjUzMiw3ICsyNTQ0LDcgQEAgbWF0Y2hfZWNsYXNzZXNfdG9fZm9yZWlnbl9rZXlfY29s KFBsYW5uZXJJbmZvICpyb290LAogCQkvKiBOZXZlciBtYXRjaCB0byBhIHZvbGF0aWxlIEVDICov CiAJCWlmIChlYy0+ZWNfaGFzX3ZvbGF0aWxlKQogCQkJY29udGludWU7Ci0JCS8qIE5vdGU6IGl0 IHNlZW1zIG9rYXkgdG8gbWF0Y2ggdG8gImJyb2tlbiIgZWNsYXNzZXMgaGVyZSAqLworCQkvKiBJ dCdzIG9rYXkgdG8gY29uc2lkZXIgImJyb2tlbiIgRUNzIGhlcmUsIHNlZSBleHByc19rbm93bl9l cXVhbCAqLwogCiAJCWZvcmVhY2gobGMyLCBlYy0+ZWNfbWVtYmVycykKIAkJewpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm1haW4uYyBiL3NyYy9iYWNrZW5kL29w dGltaXplci9wbGFuL3BsYW5tYWluLmMKaW5kZXggMTk3YTNmOTA1ZS4uMGZmMGNhOTljYiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm1haW4uYworKysgYi9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubWFpbi5jCkBAIC02Nyw2ICs2Nyw5IEBAIHF1ZXJ5 X3BsYW5uZXIoUGxhbm5lckluZm8gKnJvb3QsCiAJcm9vdC0+am9pbl9yZWxfbGlzdCA9IG1ha2VO b2RlKFJlbEluZm9MaXN0KTsKIAlyb290LT5qb2luX3JlbF9saXN0LT5pdGVtcyA9IE5JTDsKIAly b290LT5qb2luX3JlbF9saXN0LT5oYXNoID0gTlVMTDsKKwlyb290LT5hZ2dfaW5mb19saXN0ID0g bWFrZU5vZGUoUmVsSW5mb0xpc3QpOworCXJvb3QtPmFnZ19pbmZvX2xpc3QtPml0ZW1zID0gTklM OworCXJvb3QtPmFnZ19pbmZvX2xpc3QtPmhhc2ggPSBOVUxMOwogCXJvb3QtPmpvaW5fcmVsX2xl dmVsID0gTlVMTDsKIAlyb290LT5qb2luX2N1cl9sZXZlbCA9IDA7CiAJcm9vdC0+Y2Fub25fcGF0 aGtleXMgPSBOSUw7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9yZWxu b2RlLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9yZWxub2RlLmMKaW5kZXggYzg4ZGE5 NjNkYi4uZTBiMzY4ODBjZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwv cmVsbm9kZS5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3JlbG5vZGUuYwpAQCAt ODcsNiArODcsMTQgQEAgc3RhdGljIHZvaWQgYnVpbGRfY2hpbGRfam9pbl9yZWx0YXJnZXQoUGxh bm5lckluZm8gKnJvb3QsCiAJCQkJCQkJCQkgICBSZWxPcHRJbmZvICpjaGlsZHJlbCwKIAkJCQkJ CQkJCSAgIGludCBuYXBwaW5mb3MsCiAJCQkJCQkJCQkgICBBcHBlbmRSZWxJbmZvICoqYXBwaW5m b3MpOworc3RhdGljIGJvb2wgZWFnZXJfYWdncmVnYXRpb25fcG9zc2libGVfZm9yX3JlbGF0aW9u KFBsYW5uZXJJbmZvICpyb290LAorCQkJCQkJCQkJCQkJCVJlbE9wdEluZm8gKnJlbCk7CitzdGF0 aWMgYm9vbCBpbml0X2dyb3VwaW5nX3RhcmdldHMoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdElu Zm8gKnJlbCwKKwkJCQkJCQkJICBQYXRoVGFyZ2V0ICp0YXJnZXQsIFBhdGhUYXJnZXQgKmFnZ19p bnB1dCwKKwkJCQkJCQkJICBMaXN0ICoqZ3JvdXBfZXhwcnNfZXh0cmFfcCk7CitzdGF0aWMgYm9v bCBpc192YXJfaW5fYWdncmVmX29ubHkoUGxhbm5lckluZm8gKnJvb3QsIFZhciAqdmFyKTsKK3N0 YXRpYyBib29sIGlzX3Zhcl9uZWVkZWRfYnlfam9pbihQbGFubmVySW5mbyAqcm9vdCwgVmFyICp2 YXIsIFJlbE9wdEluZm8gKnJlbCk7CitzdGF0aWMgSW5kZXggZ2V0X2V4cHJlc3Npb25fc29ydGdy b3VwcmVmKFBsYW5uZXJJbmZvICpyb290LCBFeHByICpleHByKTsKIAogCiAvKgpAQCAtNjQwLDYg KzY0OCw1OCBAQCBhZGRfam9pbl9yZWwoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKmpv aW5yZWwpCiAJYWRkX3JlbF9pbmZvKHJvb3QtPmpvaW5fcmVsX2xpc3QsIGpvaW5yZWwpOwogfQog CisvKgorICogYWRkX2dyb3VwZWRfcmVsCisgKgkJQWRkIGdyb3VwZWQgYmFzZSBvciBqb2luIHJl bGF0aW9uIHRvIHRoZSBsaXN0IG9mIGdyb3VwZWQgcmVsYXRpb25zIGluCisgKgkJdGhlIGdpdmVu IFBsYW5uZXJJbmZvLiAgQWxzbyBhZGQgdGhlIGNvcnJlc3BvbmRpbmcgUmVsQWdnSW5mbyB0bwor ICoJCXJvb3QtPmFnZ19pbmZvX2xpc3QuCisgKi8KK3ZvaWQKK2FkZF9ncm91cGVkX3JlbChQbGFu bmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsLCBSZWxBZ2dJbmZvICphZ2dfaW5mbykKK3sK KwlhZGRfcmVsX2luZm8oJnJvb3QtPnVwcGVyX3JlbHNbVVBQRVJSRUxfUEFSVElBTF9HUk9VUF9B R0ddLCByZWwpOworCWFkZF9yZWxfaW5mbyhyb290LT5hZ2dfaW5mb19saXN0LCBhZ2dfaW5mbyk7 Cit9CisKKy8qCisgKiBmaW5kX2dyb3VwZWRfcmVsCisgKgkgIFJldHVybnMgZ3JvdXBlZCByZWxh dGlvbiBlbnRyeSAoYmFzZSBvciBqb2luIHJlbGF0aW9uKSBjb3JyZXNwb25kaW5nIHRvCisgKgkg ICdyZWxpZHMnIG9yIE5VTEwgaWYgbm9uZSBleGlzdHMuCisgKgorICogSWYgYWdnX2luZm9fcCBp cyBub3QgTlVMTCwgdGhlbiBhbHNvIHRoZSBjb3JyZXNwb25kaW5nIFJlbEFnZ0luZm8gKGlmIG9u ZQorICogZXhpc3RzKSB3aWxsIGJlIHJldHVybmVkIGluICphZ2dfaW5mb19wLgorICovCitSZWxP cHRJbmZvICoKK2ZpbmRfZ3JvdXBlZF9yZWwoUGxhbm5lckluZm8gKnJvb3QsIFJlbGlkcyByZWxp ZHMsIFJlbEFnZ0luZm8gKiphZ2dfaW5mb19wKQoreworCVJlbE9wdEluZm8gKnJlbDsKKworCXJl bCA9IChSZWxPcHRJbmZvICopIGZpbmRfcmVsX2luZm8oJnJvb3QtPnVwcGVyX3JlbHNbVVBQRVJS RUxfUEFSVElBTF9HUk9VUF9BR0ddLAorCQkJCQkJCQkJICAgcmVsaWRzKTsKKwlpZiAocmVsID09 IE5VTEwpCisJeworCQlpZiAoYWdnX2luZm9fcCkKKwkJCSphZ2dfaW5mb19wID0gTlVMTDsKKwor CQlyZXR1cm4gTlVMTDsKKwl9CisKKwkvKiBhbHNvIHJldHVybiB0aGUgY29ycmVzcG9uZGluZyBS ZWxBZ2dJbmZvLCBpZiBhc2tlZCAqLworCWlmIChhZ2dfaW5mb19wKQorCXsKKwkJUmVsQWdnSW5m byAqYWdnX2luZm87CisKKwkJYWdnX2luZm8gPSAoUmVsQWdnSW5mbyAqKSBmaW5kX3JlbF9pbmZv KHJvb3QtPmFnZ19pbmZvX2xpc3QsIHJlbGlkcyk7CisKKwkJLyogVGhlIHJlbGF0aW9uIGV4aXN0 cywgc28gdGhlIGFnZ19pbmZvIHNob3VsZCBiZSB0aGVyZSB0b28uICovCisJCUFzc2VydChhZ2df aW5mbyAhPSBOVUxMKTsKKworCQkqYWdnX2luZm9fcCA9IGFnZ19pbmZvOworCX0KKworCXJldHVy biByZWw7Cit9CisKIC8qCiAgKiBzZXRfZm9yZWlnbl9yZWxfcHJvcGVydGllcwogICoJCVNldCB1 cCBmb3JlaWduLWpvaW4gZmllbGRzIGlmIG91dGVyIGFuZCBpbm5lciByZWxhdGlvbiBhcmUgZm9y ZWlnbgpAQCAtMjQ2NCwzICsyNTI0LDU2NyBAQCBidWlsZF9jaGlsZF9qb2luX3JlbHRhcmdldChQ bGFubmVySW5mbyAqcm9vdCwKIAljaGlsZHJlbC0+cmVsdGFyZ2V0LT5jb3N0LnBlcl90dXBsZSA9 IHBhcmVudHJlbC0+cmVsdGFyZ2V0LT5jb3N0LnBlcl90dXBsZTsKIAljaGlsZHJlbC0+cmVsdGFy Z2V0LT53aWR0aCA9IHBhcmVudHJlbC0+cmVsdGFyZ2V0LT53aWR0aDsKIH0KKworLyoKKyAqIGNy ZWF0ZV9yZWxfYWdnX2luZm8KKyAqCSAgQ2hlY2sgaWYgdGhlIGdpdmVuIHJlbGF0aW9uIGNhbiBw cm9kdWNlIGdyb3VwZWQgcGF0aHMgYW5kIHJldHVybiB0aGUKKyAqCSAgaW5mb3JtYXRpb24gaXQn bGwgbmVlZCBmb3IgaXQuICBUaGUgZ2l2ZW4gcmVsYXRpb24gaXMgdGhlIG5vbi1ncm91cGVkIG9u ZQorICoJICB3aGljaCBoYXMgdGhlIHJlbHRhcmdldCBhbHJlYWR5IGNvbnN0cnVjdGVkLgorICov CitSZWxBZ2dJbmZvICoKK2NyZWF0ZV9yZWxfYWdnX2luZm8oUGxhbm5lckluZm8gKnJvb3QsIFJl bE9wdEluZm8gKnJlbCkKK3sKKwlMaXN0Q2VsbCAgICpsYzsKKwlSZWxBZ2dJbmZvICpyZXN1bHQ7 CisJUGF0aFRhcmdldCAqYWdnX2lucHV0OworCVBhdGhUYXJnZXQgKnRhcmdldDsKKwlMaXN0CSAg ICpncnBfZXhwcnNfZXh0cmEgPSBOSUw7CisJTGlzdAkgICAqZ3JvdXBfY2xhdXNlc19maW5hbDsK KwlpbnQJCQlpOworCisJLyoKKwkgKiBUaGUgbGlzdHMgb2YgYWdncmVnYXRlIGV4cHJlc3Npb25z IGFuZCBncm91cGluZyBleHByZXNzaW9ucyBzaG91bGQgaGF2ZQorCSAqIGJlZW4gY29uc3RydWN0 ZWQuCisJICovCisJQXNzZXJ0KHJvb3QtPmFnZ19jbGF1c2VfbGlzdCAhPSBOSUwpOworCUFzc2Vy dChyb290LT5ncm91cF9leHByX2xpc3QgIT0gTklMKTsKKworCS8qCisJICogSWYgdGhpcyBpcyBh IGNoaWxkIHJlbCwgdGhlIGdyb3VwZWQgcmVsIGZvciBpdHMgcGFyZW50IHJlbCBtdXN0IGhhdmUK KwkgKiBiZWVuIGNyZWF0ZWQgaWYgaXQgY2FuLiAgU28gd2UgY2FuIGp1c3QgdXNlIHBhcmVudCdz IFJlbEFnZ0luZm8gaWYgdGhlcmUKKwkgKiBpcyBvbmUsIHdpdGggYXBwcm9wcmlhdGUgdmFyaWFi bGUgc3Vic3RpdHV0aW9ucy4KKwkgKi8KKwlpZiAoSVNfT1RIRVJfUkVMKHJlbCkpCisJeworCQlS ZWxPcHRJbmZvCSAgICpyZWxfZ3JvdXBlZDsKKwkJUmVsQWdnSW5mbwkgICAqYWdnX2luZm87CisJ CVJlbGlkcwkJCXBhcmVudF9yZWxpZHMgPSBOVUxMOworCQlBcHBlbmRSZWxJbmZvICoqYXBwaW5m b3M7CisJCWludAkJCQluYXBwaW5mb3M7CisJCWludAkJCQljbnQ7CisKKwkJYXBwaW5mb3MgPSBm aW5kX2FwcGluZm9zX2J5X3JlbGlkcyhyb290LCByZWwtPnJlbGlkcywgJm5hcHBpbmZvcyk7CisK KwkJZm9yIChjbnQgPSAwOyBjbnQgPCBuYXBwaW5mb3M7IGNudCsrKQorCQkJcGFyZW50X3JlbGlk cyA9IGJtc19hZGRfbWVtYmVyKHBhcmVudF9yZWxpZHMsCisJCQkJCQkJCQkJICAgYXBwaW5mb3Nb Y250XS0+cGFyZW50X3JlbGlkKTsKKworCQlBc3NlcnQoIWJtc19pc19lbXB0eShwYXJlbnRfcmVs aWRzKSk7CisJCXJlbF9ncm91cGVkID0gZmluZF9ncm91cGVkX3JlbChyb290LCBwYXJlbnRfcmVs aWRzLCAmYWdnX2luZm8pOworCisJCWlmIChyZWxfZ3JvdXBlZCA9PSBOVUxMKQorCQkJcmV0dXJu IE5VTEw7CisKKwkJQXNzZXJ0KGFnZ19pbmZvICE9IE5VTEwpOworCisJCWFnZ19pbmZvID0gKFJl bEFnZ0luZm8gKikgYWRqdXN0X2FwcGVuZHJlbF9hdHRycyhyb290LAorCQkJCQkJCQkJCQkJCQkg KE5vZGUgKikgYWdnX2luZm8sCisJCQkJCQkJCQkJCQkJCSBuYXBwaW5mb3MsCisJCQkJCQkJCQkJ CQkJCSBhcHBpbmZvcyk7CisKKwkJcGZyZWUoYXBwaW5mb3MpOworCisJCWFnZ19pbmZvLT5pbnB1 dF9yb3dzID0gcmVsLT5yb3dzOworCQlhZ2dfaW5mby0+Z3JvdXBlZF9yb3dzID0KKwkJCWVzdGlt YXRlX251bV9ncm91cHMocm9vdCwgYWdnX2luZm8tPmdyb3VwX2V4cHJzLAorCQkJCQkJCQlhZ2df aW5mby0+aW5wdXRfcm93cywgTlVMTCwgTlVMTCk7CisKKwkJcmV0dXJuIGFnZ19pbmZvOworCX0K KworCS8qIENoZWNrIGlmIGl0J3MgcG9zc2libGUgdG8gcHJvZHVjZSBncm91cGVkIHBhdGhzIGZv ciB0aGlzIHJlbGF0aW9uLiAqLworCWlmICghZWFnZXJfYWdncmVnYXRpb25fcG9zc2libGVfZm9y X3JlbGF0aW9uKHJvb3QsIHJlbCkpCisJCXJldHVybiBOVUxMOworCisJLyoKKwkgKiBDcmVhdGUg dGFyZ2V0cyBmb3IgdGhlIGdyb3VwZWQgcGF0aHMgYW5kIGZvciB0aGUgaW5wdXQgcGF0aHMgb2Yg dGhlCisJICogZ3JvdXBlZCBwYXRocy4KKwkgKi8KKwl0YXJnZXQgPSBjcmVhdGVfZW1wdHlfcGF0 aHRhcmdldCgpOworCWFnZ19pbnB1dCA9IGNyZWF0ZV9lbXB0eV9wYXRodGFyZ2V0KCk7CisKKwkv KiBpbml0aWFsaXplICd0YXJnZXQnIGFuZCAnYWdnX2lucHV0JyAqLworCWlmICghaW5pdF9ncm91 cGluZ190YXJnZXRzKHJvb3QsIHJlbCwgdGFyZ2V0LCBhZ2dfaW5wdXQsICZncnBfZXhwcnNfZXh0 cmEpKQorCQlyZXR1cm4gTlVMTDsKKworCS8qIEVhZ2VyIGFnZ3JlZ2F0aW9uIG1ha2VzIG5vIHNl bnNlIHcvbyBncm91cGluZyBleHByZXNzaW9ucyAqLworCWlmICgobGlzdF9sZW5ndGgodGFyZ2V0 LT5leHBycykgKyBsaXN0X2xlbmd0aChncnBfZXhwcnNfZXh0cmEpKSA9PSAwKQorCQlyZXR1cm4g TlVMTDsKKworCWdyb3VwX2NsYXVzZXNfZmluYWwgPSByb290LT5wYXJzZS0+Z3JvdXBDbGF1c2U7 CisKKwkvKgorCSAqIElmIHRoZSBhZ2dyZWdhdGlvbiB0YXJnZXQgc2hvdWxkIGhhdmUgZXh0cmEg Z3JvdXBpbmcgZXhwcmVzc2lvbnMgKGluCisJICogb3JkZXIgdG8gZW1pdCBpbnB1dCB2YXJzIGZv ciBqb2luIGNvbmRpdGlvbnMpLCBhZGQgdGhlbSBub3cuIFRoaXMgc3RlcAorCSAqIGluY2x1ZGVz IGFzc2lnbm1lbnQgb2YgdGxlU29ydEdyb3VwUmVmJ3Mgd2hpY2ggd2UgY2FuIGdlbmVyYXRlIG5v dy4KKwkgKi8KKwlpZiAobGlzdF9sZW5ndGgoZ3JwX2V4cHJzX2V4dHJhKSA+IDApCisJeworCQlJ bmRleAkJc29ydGdyb3VwcmVmOworCisJCS8qCisJCSAqIE1ha2UgYSBjb3B5IG9mIHRoZSBncm91 cCBjbGF1c2VzIGFzIHdlJ2xsIG5lZWQgdG8gYWRkIHNvbWUgbW9yZQorCQkgKiBjbGF1c2VzLgor CQkgKi8KKwkJZ3JvdXBfY2xhdXNlc19maW5hbCA9IGxpc3RfY29weShncm91cF9jbGF1c2VzX2Zp bmFsKTsKKworCQkvKiBmaW5kIG91dCB0aGUgY3VycmVudCBtYXggc29ydGdyb3VwcmVmICovCisJ CXNvcnRncm91cHJlZiA9IDA7CisJCWZvcmVhY2gobGMsIHJvb3QtPnByb2Nlc3NlZF90bGlzdCkK KwkJeworCQkJSW5kZXgJCXJlZiA9ICgoVGFyZ2V0RW50cnkgKikgbGZpcnN0KGxjKSktPnJlc3Nv cnRncm91cHJlZjsKKworCQkJaWYgKHJlZiA+IHNvcnRncm91cHJlZikKKwkJCQlzb3J0Z3JvdXBy ZWYgPSByZWY7CisJCX0KKworCQkvKgorCQkgKiBHZW5lcmF0ZSB0aGUgU29ydEdyb3VwQ2xhdXNl J3MgYW5kIGFkZCB0aGUgZXhwcmVzc2lvbnMgdG8gdGhlCisJCSAqIHRhcmdldC4KKwkJICovCisJ CWZvcmVhY2gobGMsIGdycF9leHByc19leHRyYSkKKwkJeworCQkJVmFyCQkgICAqdmFyID0gbGZp cnN0X25vZGUoVmFyLCBsYyk7CisJCQlTb3J0R3JvdXBDbGF1c2UgKmNsID0gbWFrZU5vZGUoU29y dEdyb3VwQ2xhdXNlKTsKKworCQkJLyoKKwkJCSAqIEluaXRpYWxpemUgdGhlIFNvcnRHcm91cENs YXVzZS4KKwkJCSAqCisJCQkgKiBBcyB0aGUgZmluYWwgYWdncmVnYXRpb24gd2lsbCBub3QgdXNl IHRoaXMgZ3JvdXBpbmcgZXhwcmVzc2lvbiwKKwkJCSAqIHdlIGRvbid0IGNhcmUgd2hldGhlciBz b3J0b3AgaXMgPCBvciA+LiBUaGUgdmFsdWUgb2YgbnVsbHNfZmlyc3QKKwkJCSAqIHNob3VsZCBu b3QgbWF0dGVyIGZvciB0aGUgc2FtZSByZWFzb24uCisJCQkgKi8KKwkJCWNsLT50bGVTb3J0R3Jv dXBSZWYgPSArK3NvcnRncm91cHJlZjsKKwkJCWdldF9zb3J0X2dyb3VwX29wZXJhdG9ycyh2YXIt PnZhcnR5cGUsCisJCQkJCQkJCQkgZmFsc2UsIHRydWUsIGZhbHNlLAorCQkJCQkJCQkJICZjbC0+ c29ydG9wLCAmY2wtPmVxb3AsIE5VTEwsCisJCQkJCQkJCQkgJmNsLT5oYXNoYWJsZSk7CisJCQln cm91cF9jbGF1c2VzX2ZpbmFsID0gbGFwcGVuZChncm91cF9jbGF1c2VzX2ZpbmFsLCBjbCk7CisJ CQlhZGRfY29sdW1uX3RvX3BhdGh0YXJnZXQodGFyZ2V0LCAoRXhwciAqKSB2YXIsCisJCQkJCQkJ CQkgY2wtPnRsZVNvcnRHcm91cFJlZik7CisKKwkJCS8qCisJCQkgKiBUaGUgYWdncmVnYXRpb24g aW5wdXQgdGFyZ2V0IG11c3QgZW1pdCB0aGlzIHZhciB0b28uCisJCQkgKi8KKwkJCWFkZF9jb2x1 bW5fdG9fcGF0aHRhcmdldChhZ2dfaW5wdXQsIChFeHByICopIHZhciwKKwkJCQkJCQkJCSBjbC0+ dGxlU29ydEdyb3VwUmVmKTsKKwkJfQorCX0KKworCS8qCisJICogQnVpbGQgYSBsaXN0IG9mIGdy b3VwaW5nIGV4cHJlc3Npb25zIGFuZCBhIGxpc3Qgb2YgdGhlIGNvcnJlc3BvbmRpbmcKKwkgKiBT b3J0R3JvdXBDbGF1c2VzLgorCSAqLworCWkgPSAwOworCXJlc3VsdCA9IG1ha2VOb2RlKFJlbEFn Z0luZm8pOworCWZvcmVhY2gobGMsIHRhcmdldC0+ZXhwcnMpCisJeworCQlJbmRleAkJc29ydGdy b3VwcmVmID0gMDsKKwkJU29ydEdyb3VwQ2xhdXNlICpjbDsKKwkJRXhwcgkgICAqdGV4cHI7CisK KwkJdGV4cHIgPSAoRXhwciAqKSBsZmlyc3QobGMpOworCisJCUFzc2VydChJc0EodGV4cHIsIFZh cikpOworCisJCXNvcnRncm91cHJlZiA9IHRhcmdldC0+c29ydGdyb3VwcmVmc1tpKytdOworCQlp ZiAoc29ydGdyb3VwcmVmID09IDApCisJCQljb250aW51ZTsKKworCQkvKiBmaW5kIHRoZSBTb3J0 R3JvdXBDbGF1c2UgaW4gZ3JvdXBfY2xhdXNlc19maW5hbCAqLworCQljbCA9IGdldF9zb3J0Z3Jv dXByZWZfY2xhdXNlKHNvcnRncm91cHJlZiwgZ3JvdXBfY2xhdXNlc19maW5hbCk7CisKKwkJLyog ZG8gbm90IGFkZCB0aGlzIFNvcnRHcm91cENsYXVzZSBpZiBpdCBoYXMgYWxyZWFkeSBiZWVuIGFk ZGVkICovCisJCWlmIChsaXN0X21lbWJlcihyZXN1bHQtPmdyb3VwX2NsYXVzZXMsIGNsKSkKKwkJ CWNvbnRpbnVlOworCisJCXJlc3VsdC0+Z3JvdXBfY2xhdXNlcyA9IGxhcHBlbmQocmVzdWx0LT5n cm91cF9jbGF1c2VzLCBjbCk7CisJCXJlc3VsdC0+Z3JvdXBfZXhwcnMgPSBsaXN0X2FwcGVuZF91 bmlxdWUocmVzdWx0LT5ncm91cF9leHBycywKKwkJCQkJCQkJCQkJCSB0ZXhwcik7CisJfQorCisJ LyoKKwkgKiBDYWxjdWxhdGUgcGF0aGtleXMgdGhhdCByZXByZXNlbnQgdGhpcyBncm91cGluZyBy ZXF1aXJlbWVudHMuCisJICovCisJcmVzdWx0LT5ncm91cF9wYXRoa2V5cyA9CisJCW1ha2VfcGF0 aGtleXNfZm9yX3NvcnRjbGF1c2VzKHJvb3QsIHJlc3VsdC0+Z3JvdXBfY2xhdXNlcywKKwkJCQkJ CQkJCSAgbWFrZV90bGlzdF9mcm9tX3BhdGh0YXJnZXQodGFyZ2V0KSk7CisKKwkvKgorCSAqIEFk ZCBhZ2dyZWdhdGVzIHRvIHRoZSBncm91cGluZyB0YXJnZXQuCisJICovCisJZm9yZWFjaChsYywg cm9vdC0+YWdnX2NsYXVzZV9saXN0KQorCXsKKwkJQWdnQ2xhdXNlSW5mbyAqYWNfaW5mbyA9IGxm aXJzdF9ub2RlKEFnZ0NsYXVzZUluZm8sIGxjKTsKKwkJQWdncmVmICAgKmFnZ3JlZjsKKworCQlB c3NlcnQoSXNBKGFjX2luZm8tPmFnZ3JlZiwgQWdncmVmKSk7CisKKwkJYWdncmVmID0gKEFnZ3Jl ZiAqKSBjb3B5T2JqZWN0KGFjX2luZm8tPmFnZ3JlZik7CisJCW1hcmtfcGFydGlhbF9hZ2dyZWYo YWdncmVmLCBBR0dTUExJVF9JTklUSUFMX1NFUklBTCk7CisKKwkJYWRkX2NvbHVtbl90b19wYXRo dGFyZ2V0KHRhcmdldCwgKEV4cHIgKikgYWdncmVmLCAwKTsKKworCQlyZXN1bHQtPmFnZ19leHBy cyA9IGxhcHBlbmQocmVzdWx0LT5hZ2dfZXhwcnMsIGFnZ3JlZik7CisJfQorCisJLyoKKwkgKiBT aW5jZSBuZWl0aGVyIHRhcmdldCBub3IgYWdnX2lucHV0IGlzIHN1cHBvc2VkIHRvIGJlIGlkZW50 aWNhbCB0byB0aGUKKwkgKiBzb3VyY2UgcmVsdGFyZ2V0LCBjb21wdXRlIHRoZSB3aWR0aCBhbmQg Y29zdCBhZ2Fpbi4KKwkgKi8KKwlzZXRfcGF0aHRhcmdldF9jb3N0X3dpZHRoKHJvb3QsIHRhcmdl dCk7CisJc2V0X3BhdGh0YXJnZXRfY29zdF93aWR0aChyb290LCBhZ2dfaW5wdXQpOworCisJcmVz dWx0LT5yZWxpZHMgPSBibXNfY29weShyZWwtPnJlbGlkcyk7CisJcmVzdWx0LT50YXJnZXQgPSB0 YXJnZXQ7CisJcmVzdWx0LT5hZ2dfaW5wdXQgPSBhZ2dfaW5wdXQ7CisKKwkvKgorCSAqIFRoZSBu dW1iZXIgb2YgYWdncmVnYXRpb24gaW5wdXQgcm93cyBpcyBzaW1wbHkgdGhlIG51bWJlciBvZiBy b3dzIG9mIHRoZQorCSAqIG5vbi1ncm91cGVkIHJlbGF0aW9uLCB3aGljaCBzaG91bGQgaGF2ZSBi ZWVuIGVzdGltYXRlZCBieSBub3cuCisJICovCisJcmVzdWx0LT5pbnB1dF9yb3dzID0gcmVsLT5y b3dzOworCisJLyogRXN0aW1hdGUgdGhlIG51bWJlciBvZiBncm91cHMgd2l0aCBlcXVhbCBncm91 cGVkIGV4cHJzLiAqLworCXJlc3VsdC0+Z3JvdXBlZF9yb3dzID0gZXN0aW1hdGVfbnVtX2dyb3Vw cyhyb290LCByZXN1bHQtPmdyb3VwX2V4cHJzLAorCQkJCQkJCQkJCQkgICByZXN1bHQtPmlucHV0 X3Jvd3MsIE5VTEwsIE5VTEwpOworCisJcmV0dXJuIHJlc3VsdDsKK30KKworLyoKKyAqIGVhZ2Vy X2FnZ3JlZ2F0aW9uX3Bvc3NpYmxlX2Zvcl9yZWxhdGlvbgorICogCSAgQ2hlY2sgaWYgaXQncyBw b3NzaWJsZSB0byBwcm9kdWNlIGdyb3VwZWQgcGF0aHMgZm9yIHRoZSBnaXZlbiByZWxhdGlvbi4K KyAqLworc3RhdGljIGJvb2wKK2VhZ2VyX2FnZ3JlZ2F0aW9uX3Bvc3NpYmxlX2Zvcl9yZWxhdGlv bihQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsKQoreworCUxpc3RDZWxsICAgKmxj OworCisJLyoKKwkgKiBUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvZiBlYWdlciBhZ2dyZWdh dGlvbiBjYW5ub3QgaGFuZGxlCisJICogUGxhY2VIb2xkZXJWYXIgKFBIVikuCisJICoKKwkgKiBJ ZiB3ZSBrbmV3IHRoYXQgdGhlIFBIViBzaG91bGQgYmUgZXZhbHVhdGVkIGluIHRoaXMgdGFyZ2V0 IChhbmQgb2YKKwkgKiBjb3Vyc2UsIGlmIGl0cyBleHByZXNzaW9uIG1hdGNoZWQgc29tZSBBZ2dy ZWYgYXJndW1lbnQpLCB3ZSdkIGp1c3QgbGV0CisJICogaW5pdF9ncm91cGluZ190YXJnZXRzIGFk ZCB0aGF0IEFnZ3JlZi4gT24gdGhlIG90aGVyIGhhbmQsIGlmIHdlIGtuZXcKKwkgKiB0aGF0IHRo ZSBQSFYgaXMgZXZhbHVhdGVkIGJlbG93IHRoZSBjdXJyZW50IHJlbCwgd2UgY291bGQgaWdub3Jl IGl0CisJICogYmVjYXVzZSB0aGUgcmVmZXJlbmNpbmcgQWdncmVmIHdvdWxkIHRha2UgY2FyZSBv ZiBwcm9wYWdhdGlvbiBvZiB0aGUKKwkgKiB2YWx1ZSB0byB1cHBlciBqb2lucy4KKwkgKgorCSAq IFRoZSBwcm9ibGVtIGlzIHRoYXQgdGhlIHNhbWUgUEhWIGNhbiBiZSBldmFsdWF0ZWQgaW4gdGhl IHRhcmdldCBvZiB0aGUKKwkgKiBjdXJyZW50IHJlbCBvciBpbiB0aGF0IG9mIGxvd2VyIHJlbCAt LS0gZGVwZW5kaW5nIG9uIHRoZSBpbnB1dCBwYXRocy4KKwkgKiBGb3IgZXhhbXBsZSwgY29uc2lk ZXIgcmVsLT5yZWxpZHMgPSB7QSwgQiwgQ30gYW5kIGlmIHBoX2V2YWxfYXQgPSB7QiwKKwkgKiBD fS4gUGF0aCAiQSBKT0lOIChCIEpPSU4gQykiIGltcGxpZXMgdGhhdCB0aGUgUEhWIGlzIGV2YWx1 YXRlZCBieSB0aGUKKwkgKiAiKEIgSk9JTiBDKSIsIHdoaWxlIHBhdGggIihBIEpPSU4gQikgSk9J TiBDIiBldmFsdWF0ZXMgdGhlIFBIViBpdHNlbGYuCisJICovCisJZm9yZWFjaChsYywgcmVsLT5y ZWx0YXJnZXQtPmV4cHJzKQorCXsKKwkJRXhwcgkgICAqZXhwciA9IGxmaXJzdChsYyk7CisKKwkJ aWYgKElzQShleHByLCBQbGFjZUhvbGRlclZhcikpCisJCQlyZXR1cm4gZmFsc2U7CisJfQorCisJ aWYgKElTX1NJTVBMRV9SRUwocmVsKSkKKwl7CisJCVJhbmdlVGJsRW50cnkgKnJ0ZSA9IHJvb3Qt PnNpbXBsZV9ydGVfYXJyYXlbcmVsLT5yZWxpZF07CisKKwkJLyoKKwkJICogcnRla2luZCAhPSBS VEVfUkVMQVRJT04gY2FzZSBpcyBub3Qgc3VwcG9ydGVkIHlldC4KKwkJICovCisJCWlmIChydGUt PnJ0ZWtpbmQgIT0gUlRFX1JFTEFUSU9OKQorCQkJcmV0dXJuIGZhbHNlOworCX0KKworCS8qIENh bGxlciBzaG91bGQgb25seSBwYXNzIGJhc2UgcmVsYXRpb25zIG9yIGpvaW5zLiAqLworCUFzc2Vy dChyZWwtPnJlbG9wdGtpbmQgPT0gUkVMT1BUX0JBU0VSRUwgfHwKKwkJICAgcmVsLT5yZWxvcHRr aW5kID09IFJFTE9QVF9KT0lOUkVMKTsKKworCS8qCisJICogQ2hlY2sgaWYgYWxsIGFnZ3JlZ2F0 ZSBleHByZXNzaW9ucyBjYW4gYmUgZXZhbHVhdGVkIG9uIHRoaXMgcmVsYXRpb24KKwkgKiBsZXZl bC4KKwkgKi8KKwlmb3JlYWNoKGxjLCByb290LT5hZ2dfY2xhdXNlX2xpc3QpCisJeworCQlBZ2dD bGF1c2VJbmZvICphY19pbmZvID0gbGZpcnN0X25vZGUoQWdnQ2xhdXNlSW5mbywgbGMpOworCisJ CUFzc2VydChJc0EoYWNfaW5mby0+YWdncmVmLCBBZ2dyZWYpKTsKKworCQkvKgorCQkgKiBHaXZl IHVwIGlmIGFueSBhZ2dyZWdhdGUgbmVlZHMgcmVsYXRpb25zIG90aGVyIHRoYW4gdGhlIGN1cnJl bnQgb25lLgorCQkgKgorCQkgKiBJZiB0aGUgYWdncmVnYXRlIG5lZWRzIHRoZSBjdXJyZW50IHJl bCBwbHVzIGFueXRoaW5nIGVsc2UsIHRoZW4gdGhlCisJCSAqIHByb2JsZW0gaXMgdGhhdCBncm91 cGluZyBvZiB0aGUgY3VycmVudCByZWxhdGlvbiBjb3VsZCBtYWtlIHNvbWUKKwkJICogaW5wdXQg dmFyaWFibGVzIHVuYXZhaWxhYmxlIGZvciB0aGUgImhpZ2hlciBhZ2dyZWdhdGUiLCBhbmQgaXQn ZAorCQkgKiBhbHNvIGRlY3JlYXNlIHRoZSBudW1iZXIgb2YgaW5wdXQgcm93cyB0aGUgImhpZ2hl ciBhZ2dyZWdhdGUiCisJCSAqIHJlY2VpdmVzLgorCQkgKgorCQkgKiBJZiB0aGUgYWdncmVnYXRl IGRvZXMgbm90IGV2ZW4gbmVlZCB0aGUgY3VycmVudCByZWwsIHRoZW4gdGhlCisJCSAqIGN1cnJl bnQgcmVsIHNob3VsZCBiZSBncm91cGVkIGJlY2F1c2Ugd2UgZG8gbm90IHN1cHBvcnQgam9pbiBv ZiB0d28KKwkJICogZ3JvdXBlZCByZWxhdGlvbnMuCisJCSAqLworCQlpZiAoIWJtc19pc19zdWJz ZXQoYWNfaW5mby0+YWdnX2V2YWxfYXQsIHJlbC0+cmVsaWRzKSkKKwkJCXJldHVybiBmYWxzZTsK Kwl9CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworLyoKKyAqIGluaXRfZ3JvdXBpbmdfdGFyZ2V0cwor ICoJICBJbml0aWFsaXplIHRhcmdldCBmb3IgZ3JvdXBlZCBwYXRocyAodGFyZ2V0KSBhcyB3ZWxs IGFzIGEgdGFyZ2V0IGZvcgorICoJICBwYXRocyB0aGF0IGdlbmVyYXRlIGlucHV0IGZvciB0aGUg Z3JvdXBlZCBwYXRocyAoYWdnX2lucHV0KS4KKyAqCisgKiBncm91cF9leHByc19leHRyYV9wIHJl Y2VpdmVzIGEgbGlzdCBvZiBWYXIgbm9kZXMgZm9yIHdoaWNoIHdlIG5lZWQgdG8KKyAqIGNvbnN0 cnVjdCBTb3J0R3JvdXBDbGF1c2UuIFRob3NlIHZhcnMgd2lsbCB0aGVuIGJlIHVzZWQgYXMgYWRk aXRpb25hbAorICogZ3JvdXBpbmcgZXhwcmVzc2lvbnMsIGZvciB0aGUgc2FrZSBvZiBqb2luIGNs YXVzZXMuCisgKgorICogUmV0dXJuIHRydWUgaWZmIHRoZSB0YXJnZXRzIGNvdWxkIGJlIGluaXRp YWxpemVkLgorICovCitzdGF0aWMgYm9vbAoraW5pdF9ncm91cGluZ190YXJnZXRzKFBsYW5uZXJJ bmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwsCisJCQkJCSAgUGF0aFRhcmdldCAqdGFyZ2V0LCBQ YXRoVGFyZ2V0ICphZ2dfaW5wdXQsCisJCQkJCSAgTGlzdCAqKmdyb3VwX2V4cHJzX2V4dHJhX3Ap Cit7CisJTGlzdENlbGwgICAqbGM7CisJTGlzdAkgICAqcG9zc2libHlfZGVwZW5kZW50ID0gTklM OworCisJZm9yZWFjaChsYywgcmVsLT5yZWx0YXJnZXQtPmV4cHJzKQorCXsKKwkJRXhwcgkgICAq ZXhwciA9IChFeHByICopIGxmaXJzdChsYyk7CisJCUluZGV4CQlzb3J0Z3JvdXByZWY7CisKKwkJ LyoKKwkJICogR2l2ZW4gdGhhdCBQbGFjZUhvbGRlclZhciBjdXJyZW50bHkgcHJldmVudHMgdXMg ZnJvbSBkb2luZyBlYWdlcgorCQkgKiBhZ2dyZWdhdGlvbiwgdGhlIHNvdXJjZSB0YXJnZXQgY2Fu bm90IGNvbnRhaW4gYW55dGhpbmcgbW9yZSBjb21wbGV4CisJCSAqIHRoYW4gYSBWYXIuCisJCSAq LworCQlBc3NlcnQoSXNBKGV4cHIsIFZhcikpOworCisJCS8qIEdldCB0aGUgc29ydGdyb3VwcmVm IGlmIHRoZSBleHByIGNhbiBhY3QgYXMgZ3JvdXBpbmcgZXhwcmVzc2lvbi4gKi8KKwkJc29ydGdy b3VwcmVmID0gZ2V0X2V4cHJlc3Npb25fc29ydGdyb3VwcmVmKHJvb3QsIGV4cHIpOworCQlpZiAo c29ydGdyb3VwcmVmID4gMCkKKwkJeworCQkJLyoKKwkJCSAqIElmIHRoZSB0YXJnZXQgZXhwcmVz c2lvbiBjYW4gYmUgdXNlZCBhcyB0aGUgZ3JvdXBpbmcga2V5LCBpdAorCQkJICogc2hvdWxkIGJl IGVtaXR0ZWQgYnkgdGhlIGdyb3VwZWQgcGF0aHMgdGhhdCBoYXZlIGJlZW4gcHVzaGVkCisJCQkg KiBkb3duIHRvIHRoaXMgcmVsYXRpb24gbGV2ZWwuCisJCQkgKi8KKwkJCWFkZF9jb2x1bW5fdG9f cGF0aHRhcmdldCh0YXJnZXQsIGV4cHIsIHNvcnRncm91cHJlZik7CisKKwkJCS8qCisJCQkgKiAu Li4gYW5kIGl0IGFsc28gc2hvdWxkIGJlIGVtaXR0ZWQgYnkgdGhlIGlucHV0IHBhdGhzCisJCQkg Ki8KKwkJCWFkZF9jb2x1bW5fdG9fcGF0aHRhcmdldChhZ2dfaW5wdXQsIGV4cHIsIHNvcnRncm91 cHJlZik7CisJCX0KKwkJZWxzZQorCQl7CisJCQlpZiAoaXNfdmFyX25lZWRlZF9ieV9qb2luKHJv b3QsIChWYXIgKikgZXhwciwgcmVsKSkKKwkJCXsKKwkJCQkvKgorCQkJCSAqIFRoZSB2YXJpYWJs ZSBpcyBuZWVkZWQgZm9yIGEgam9pbiwgaG93ZXZlciBpdCdzIG5laXRoZXIgaW4KKwkJCQkgKiB0 aGUgR1JPVVAgQlkgY2xhdXNlIG5vciBjYW4gaXQgYmUgZGVyaXZlZCBmcm9tIGl0IHVzaW5nIEVD LgorCQkJCSAqIChPdGhlcndpc2UgaXQgd291bGQgaGF2ZSB0byBiZSBhZGRlZCB0byB0aGUgdGFy Z2V0cyBhYm92ZS4pCisJCQkJICogV2UgbmVlZCB0byBjb25zdHJ1Y3Qgc3BlY2lhbCBTb3J0R3Jv dXBDbGF1c2UgZm9yIHRoaXMKKwkJCQkgKiB2YXJpYWJsZS4KKwkJCQkgKgorCQkJCSAqIE5vdGUg dGhhdCBpdHMgdGxlU29ydEdyb3VwUmVmIG5lZWRzIHRvIGJlIHVuaXF1ZSB3aXRoaW4KKwkJCQkg KiBhZ2dfaW5wdXQsIHNvIHdlIG5lZWQgdG8gcG9zdHBvbmUgY3JlYXRpb24gb2YgdGhlCisJCQkJ ICogU29ydEdyb3VwQ2xhdXNlJ3MgdW50aWwgd2UncmUgZG9uZSB3aXRoIHRoZSBpdGVyYXRpb24g b2YKKwkJCQkgKiByZWwtPnJlbHRhcmdldC0+ZXhwcnMuIEFsc28gaXQgbWFrZXMgc2Vuc2UgZm9y IHRoZSBjYWxsZXIgdG8KKwkJCQkgKiBkbyBzb21lIG1vcmUgY2hlY2sgYmVmb3JlIGl0IHN0YXJ0 cyB0byBjcmVhdGUgdGhvc2UKKwkJCQkgKiBTb3J0R3JvdXBDbGF1c2Uncy4KKwkJCQkgKi8KKwkJ CQkqZ3JvdXBfZXhwcnNfZXh0cmFfcCA9IGxhcHBlbmQoKmdyb3VwX2V4cHJzX2V4dHJhX3AsIGV4 cHIpOworCQkJfQorCQkJZWxzZSBpZiAoaXNfdmFyX2luX2FnZ3JlZl9vbmx5KHJvb3QsIChWYXIg KikgZXhwcikpCisJCQl7CisJCQkJLyoKKwkJCQkgKiBBbm90aGVyIHJlYXNvbiB3ZSBtaWdodCBu ZWVkIHRoaXMgdmFyaWFibGUgaXMgdGhhdCBzb21lCisJCQkJICogYWdncmVnYXRlIHB1c2hlZCBk b3duIHRvIHRoaXMgcmVsYXRpb24gcmVmZXJlbmNlcyBpdC4gSW4KKwkJCQkgKiBzdWNoIGEgY2Fz ZSwgYWRkIGl0IHRvICJhZ2dfaW5wdXQiLCBidXQgbm90IHRvICJ0YXJnZXQiLgorCQkJCSAqIEhv d2V2ZXIsIGlmIHRoZSBhZ2dyZWdhdGUgaXMgbm90IHRoZSBvbmx5IHJlYXNvbiBmb3IgdGhlIHZh cgorCQkJCSAqIHRvIGJlIGluIHRoZSB0YXJnZXQsIHNvbWUgbW9yZSBjaGVja3MgbmVlZCB0byBi ZSBwZXJmb3JtZWQKKwkJCQkgKiBiZWxvdy4KKwkJCQkgKi8KKwkJCQlhZGRfbmV3X2NvbHVtbl90 b19wYXRodGFyZ2V0KGFnZ19pbnB1dCwgZXhwcik7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJ LyoKKwkJCQkgKiBUaGUgVmFyIGNhbiBiZSBmdW5jdGlvbmFsbHkgZGVwZW5kZW50IG9uIGFub3Ro ZXIgZXhwcmVzc2lvbgorCQkJCSAqIG9mIHRoZSB0YXJnZXQsIGJ1dCB3ZSBjYW5ub3QgY2hlY2sg dGhhdCB1bnRpbCB3ZSd2ZSBidWlsdAorCQkJCSAqIGFsbCB0aGUgZXhwcmVzc2lvbnMgZm9yIHRo ZSB0YXJnZXQuCisJCQkJICovCisJCQkJcG9zc2libHlfZGVwZW5kZW50ID0gbGFwcGVuZChwb3Nz aWJseV9kZXBlbmRlbnQsIGV4cHIpOworCQkJfQorCQl9CisJfQorCisJLyoKKwkgKiBOb3cgd2Ug Y2FuIGNoZWNrIHdoZXRoZXIgdGhlIGV4cHJlc3Npb24gaXMgZnVuY3Rpb25hbGx5IGRlcGVuZGVu dCBvbgorCSAqIGFub3RoZXIgb25lLgorCSAqLworCWZvcmVhY2gobGMsIHBvc3NpYmx5X2RlcGVu ZGVudCkKKwl7CisJCVZhcgkJICAgKnR2YXI7CisJCUxpc3QJICAgKmRlcHMgPSBOSUw7CisJCVJh bmdlVGJsRW50cnkgKnJ0ZTsKKworCQl0dmFyID0gbGZpcnN0X25vZGUoVmFyLCBsYyk7CisJCXJ0 ZSA9IHJvb3QtPnNpbXBsZV9ydGVfYXJyYXlbdHZhci0+dmFybm9dOworCisJCS8qCisJCSAqIENo ZWNrIGlmIHRoZSBWYXIgY2FuIGJlIGluIHRoZSBncm91cGluZyBrZXkgZXZlbiB0aG91Z2ggaXQn cyBub3QKKwkJICogbWVudGlvbmVkIGJ5IHRoZSBHUk9VUCBCWSBjbGF1c2UgKGFuZCBjb3VsZCBu b3QgYmUgZGVyaXZlZCB1c2luZworCQkgKiBFQ3MpLgorCQkgKi8KKwkJaWYgKGNoZWNrX2Z1bmN0 aW9uYWxfZ3JvdXBpbmcocnRlLT5yZWxpZCwgdHZhci0+dmFybm8sCisJCQkJCQkJCQkgIHR2YXIt PnZhcmxldmVsc3VwLAorCQkJCQkJCQkJICB0YXJnZXQtPmV4cHJzLCAmZGVwcykpCisJCXsKKwkJ CS8qCisJCQkgKiBUaGUgdmFyIHNob3VsZG4ndCBiZSBhY3R1YWxseSB1c2VkIGZvciBncm91cGlu ZyBrZXkgZXZhbHVhdGlvbgorCQkJICogKGluc3RlYWQsIHRoZSBvbmUgdGhpcyBkZXBlbmRzIG9u IHdpbGwgYmUpLCBzbyBzb3J0Z3JvdXByZWYKKwkJCSAqIHNob3VsZCBub3QgYmUgaW1wb3J0YW50 LgorCQkJICovCisJCQlhZGRfbmV3X2NvbHVtbl90b19wYXRodGFyZ2V0KHRhcmdldCwgKEV4cHIg KikgdHZhcik7CisJCQlhZGRfbmV3X2NvbHVtbl90b19wYXRodGFyZ2V0KGFnZ19pbnB1dCwgKEV4 cHIgKikgdHZhcik7CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKgorCQkJICogQXMgbG9uZyBhcyB0 aGUgcXVlcnkgaXMgc2VtYW50aWNhbGx5IGNvcnJlY3QsIGFycml2aW5nIGhlcmUKKwkJCSAqIG1l YW5zIHRoYXQgdGhlIHZhciBpcyByZWZlcmVuY2VkIGJ5IGEgZ2VuZXJpYyBncm91cGluZworCQkJ ICogZXhwcmVzc2lvbiBidXQgbm90IHJlZmVyZW5jZWQgYnkgYW55IGpvaW4uCisJCQkgKgorCQkJ ICogSWYgdGhlIGVhZ2VyIGFnZ3JlZ2F0aW9uIHdpbGwgc3VwcG9ydCBnZW5lcmljIGdyb3VwaW5n CisJCQkgKiBleHByZXNzaW9uIGluIHRoZSBmdXR1cmUsIGNyZWF0ZV9yZWxfYWdnX2luZm8oKSB3 aWxsIGhhdmUgdG8gYWRkCisJCQkgKiB0aGlzIHZhcmlhYmxlIHRvICJhZ2dfaW5wdXQiIHRhcmdl dCBhbmQgYWxzbyBhZGQgdGhlIHdob2xlCisJCQkgKiBnZW5lcmljIGV4cHJlc3Npb24gdG8gInRh cmdldCIuCisJCQkgKi8KKwkJCXJldHVybiBmYWxzZTsKKwkJfQorCX0KKworCXJldHVybiB0cnVl OworfQorCisvKgorICogaXNfdmFyX2luX2FnZ3JlZl9vbmx5CisgKgkgIENoZWNrIHdoZXRoZXIg Z2l2ZW4gVmFyIGFwcGVhcnMgaW4gQWdncmVmKHMpIHdoaWNoIHdlIGNvbnNpZGVyIHVzYWJsZSBh dAorICoJICByZWxhdGlvbiAvIGpvaW4gbGV2ZWwsIGFuZCBvbmx5IGluIHRoZSBBZ2dyZWYocyku CisgKi8KK3N0YXRpYyBib29sCitpc192YXJfaW5fYWdncmVmX29ubHkoUGxhbm5lckluZm8gKnJv b3QsIFZhciAqdmFyKQoreworCUxpc3RDZWxsICAgKmxjOworCisJZm9yZWFjaChsYywgcm9vdC0+ YWdnX2NsYXVzZV9saXN0KQorCXsKKwkJQWdnQ2xhdXNlSW5mbyAqYWNfaW5mbyA9IGxmaXJzdF9u b2RlKEFnZ0NsYXVzZUluZm8sIGxjKTsKKworCQlBc3NlcnQoSXNBKGFjX2luZm8tPmFnZ3JlZiwg QWdncmVmKSk7CisKKwkJaWYgKGJtc19pc19tZW1iZXIodmFyLT52YXJubywgYWNfaW5mby0+YWdn X2V2YWxfYXQpKQorCQkJYnJlYWs7CisJfQorCisJLyogTm8gYWdncmVnYXRlIHJlZmVyZW5jZXMg dGhlIFZhcj8gKi8KKwlpZiAobGMgPT0gTlVMTCkKKwkJcmV0dXJuIGZhbHNlOworCisJLyogRG9l cyB0aGUgVmFyIGFwcGVhciBpbiB0aGUgdGFyZ2V0IG91dHNpZGUgYWdncmVnYXRlcz8gKi8KKwlm b3JlYWNoKGxjLCByb290LT5wcm9jZXNzZWRfdGxpc3QpCisJeworCQlUYXJnZXRFbnRyeSAqdGxl ID0gbGZpcnN0X25vZGUoVGFyZ2V0RW50cnksIGxjKTsKKwkJTGlzdAkgICAqdmFyczsKKworCQlp ZiAoSXNBKHRsZS0+ZXhwciwgQWdncmVmKSkKKwkJCWNvbnRpbnVlOworCisJCXZhcnMgPSBwdWxs X3Zhcl9jbGF1c2UoKE5vZGUgKikgdGxlLT5leHByLAorCQkJCQkJCSAgIFBWQ19SRUNVUlNFX1dJ TkRPV0ZVTkNTIHwKKwkJCQkJCQkgICBQVkNfUkVDVVJTRV9QTEFDRUhPTERFUlMpOworCQlpZiAo bGlzdF9tZW1iZXIodmFycywgdmFyKSkKKwkJeworCQkJbGlzdF9mcmVlKHZhcnMpOworCQkJcmV0 dXJuIGZhbHNlOworCQl9CisKKwkJbGlzdF9mcmVlKHZhcnMpOworCX0KKworCS8qIFRoZSBWYXIg aXMgaW4gYWdncmVnYXRlKHMpIGFuZCBvbmx5IHRoZXJlLiAqLworCXJldHVybiB0cnVlOworfQor CisvKgorICogaXNfdmFyX25lZWRlZF9ieV9qb2luCisgKgkgIENoZWNrIGlmIHRoZSBnaXZlbiBW YXIgaXMgbmVlZGVkIGJ5IGpvaW5zIGFib3ZlIHRoZSBjdXJyZW50IHJlbC4KKyAqCisgKiBDb25z aWRlciBwdXNoaW5nIHRoZSBhZ2dyZWdhdGUgYXZnKGIueSkgZG93biB0byByZWxhdGlvbiBiIGZv ciB0aGUgZm9sbG93aW5nCisgKiBxdWVyeToKKyAqCisgKiAgICBTRUxFQ1QgYS5pLCBhdmcoYi55 KQorICogICAgRlJPTSBhIEpPSU4gYiBPTiBhLmogPSBiLmoKKyAqICAgIEdST1VQIEJZIGEuaTsK KyAqCisgKiBDb2x1bW4gYi5qIG5lZWRzIHRvIGJlIHVzZWQgYXMgdGhlIGdyb3VwaW5nIGtleSBi ZWNhdXNlIG90aGVyd2lzZSBpdCBjYW5ub3QKKyAqIGZpbmQgaXRzIHdheSB0byB0aGUgaW5wdXQg b2YgdGhlIGpvaW4gZXhwcmVzc2lvbi4KKyAqLworc3RhdGljIGJvb2wKK2lzX3Zhcl9uZWVkZWRf Ynlfam9pbihQbGFubmVySW5mbyAqcm9vdCwgVmFyICp2YXIsIFJlbE9wdEluZm8gKnJlbCkKK3sK KwlSZWxpZHMJCXJlbGlkczsKKwlpbnQJCQlhdHRubzsKKwlSZWxPcHRJbmZvICpiYXNlcmVsOwor CisJLyoKKwkgKiBOb3RlIHRoYXQgd2hlbiB3ZSBhcmUgY2hlY2tpbmcgaWYgdGhlIFZhciBpcyBu ZWVkZWQgYnkgam9pbnMgYWJvdmUsIHdlCisJICogd2FudCB0byBleGNsdWRlIHRoZSBzaXR1YXRp b24gd2hlcmUgdGhlIFZhciBpcyBvbmx5IG5lZWRlZCBpbiBmaW5hbAorCSAqIG91dHB1dC4gIFNv IGluY2x1ZGUgInJlbGF0aW9uIDAiIGhlcmUuCisJICovCisJcmVsaWRzID0gYm1zX2NvcHkocmVs LT5yZWxpZHMpOworCXJlbGlkcyA9IGJtc19hZGRfbWVtYmVyKHJlbGlkcywgMCk7CisKKwliYXNl cmVsID0gZmluZF9iYXNlX3JlbChyb290LCB2YXItPnZhcm5vKTsKKwlhdHRubyA9IHZhci0+dmFy YXR0bm8gLSBiYXNlcmVsLT5taW5fYXR0cjsKKworCisJcmV0dXJuIGJtc19ub25lbXB0eV9kaWZm ZXJlbmNlKGJhc2VyZWwtPmF0dHJfbmVlZGVkW2F0dG5vXSwgcmVsaWRzKTsKK30KKworLyoKKyAq IGdldF9leHByZXNzaW9uX3NvcnRncm91cHJlZgorICoJICBSZXR1cm4gc29ydGdyb3VwcmVmIGlm IHRoZSBnaXZlbiAnZXhwcicgY2FuIGJlIHVzZWQgYXMgYSBncm91cGluZworICoJICBleHByZXNz aW9uIGluIGdyb3VwZWQgcGF0aHMgZm9yIGJhc2Ugb3Igam9pbiByZWxhdGlvbnMsIG9yIDAgb3Ro ZXJ3aXNlLgorICoKKyAqIE5vdGUgdGhhdCB3ZSBhbHNvIG5lZWQgdG8gY2hlY2sgaWYgdGhlICdl eHByJyBpcyBrbm93biBlcXVhbCB0byBvdGhlciBleHBycworICogZHVlIHRvIGVxdWl2YWxlbmNl IHJlbGF0aW9uc2hpcHMgdGhhdCBjYW4gYWN0IGFzIGdyb3VwaW5nIGV4cHJlc3Npb25zLgorICov CitzdGF0aWMgSW5kZXgKK2dldF9leHByZXNzaW9uX3NvcnRncm91cHJlZihQbGFubmVySW5mbyAq cm9vdCwgRXhwciAqZXhwcikKK3sKKwlMaXN0Q2VsbCAgICpsYzsKKworCWZvcmVhY2gobGMsIHJv b3QtPmdyb3VwX2V4cHJfbGlzdCkKKwl7CisJCUdyb3VwRXhwckluZm8gKmdlX2luZm8gPSBsZmly c3Rfbm9kZShHcm91cEV4cHJJbmZvLCBsYyk7CisKKwkJQXNzZXJ0KElzQShnZV9pbmZvLT5leHBy LCBWYXIpKTsKKworCQlpZiAoZXF1YWwoZ2VfaW5mby0+ZXhwciwgZXhwcikgfHwKKwkJCWV4cHJz X2tub3duX2VxdWFsKHJvb3QsIChOb2RlICopIGV4cHIsIChOb2RlICopIGdlX2luZm8tPmV4cHIs CisJCQkJCQkJICBnZV9pbmZvLT5idHJlZV9vcGZhbWlseSkpCisJCXsKKwkJCUFzc2VydChnZV9p bmZvLT5zb3J0Z3JvdXByZWYgPiAwKTsKKworCQkJcmV0dXJuIGdlX2luZm8tPnNvcnRncm91cHJl ZjsKKwkJfQorCX0KKworCS8qIFRoZSBleHByZXNzaW9uIGNhbm5vdCBiZSB1c2VkIGFzIGdyb3Vw aW5nIGtleS4gKi8KKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9zZWxmdW5jcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3NlbGZ1bmNzLmMKaW5kZXgg Y2VhNzc3ZTlkNC4uZDEzNjUyMjlmNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3NlbGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3NlbGZ1bmNzLmMKQEAgLTMz MTMsMTAgKzMzMTMsMTEgQEAgYWRkX3VuaXF1ZV9ncm91cF92YXIoUGxhbm5lckluZm8gKnJvb3Qs IExpc3QgKnZhcmluZm9zLAogCiAJCS8qCiAJCSAqIERyb3Aga25vd24tZXF1YWwgdmFycywgYnV0 IG9ubHkgaWYgdGhleSBiZWxvbmcgdG8gZGlmZmVyZW50Ci0JCSAqIHJlbGF0aW9ucyAoc2VlIGNv bW1lbnRzIGZvciBlc3RpbWF0ZV9udW1fZ3JvdXBzKQorCQkgKiByZWxhdGlvbnMgKHNlZSBjb21t ZW50cyBmb3IgZXN0aW1hdGVfbnVtX2dyb3VwcykuICBXZSBhcmVuJ3QgdG9vCisJCSAqIGZ1c3N5 IGFib3V0IHRoZSBzZW1hbnRpY3Mgb2YgImVxdWFsIiBoZXJlLgogCQkgKi8KIAkJaWYgKHZhcmRh dGEtPnJlbCAhPSB2YXJpbmZvLT5yZWwgJiYKLQkJCWV4cHJzX2tub3duX2VxdWFsKHJvb3QsIHZh ciwgdmFyaW5mby0+dmFyKSkKKwkJCWV4cHJzX2tub3duX2VxdWFsKHJvb3QsIHZhciwgdmFyaW5m by0+dmFyLCBJbnZhbGlkT2lkKSkKIAkJewogCQkJaWYgKHZhcmluZm8tPm5kaXN0aW5jdCA8PSBu ZGlzdGluY3QpCiAJCQl7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMu aCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCmluZGV4IDQyYWVjYTg4MGMuLmFkY2Ux ZjZjOTQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCisrKyBiL3Ny Yy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCkBAIC00MjksNiArNDI5LDEyIEBAIHN0cnVjdCBQ bGFubmVySW5mbwogCSAqLwogCVJlbEluZm9MaXN0CQl1cHBlcl9yZWxzW1VQUEVSUkVMX0ZJTkFM ICsgMV0gcGdfbm9kZV9hdHRyKHJlYWRfd3JpdGVfaWdub3JlKTsKIAorCS8qCisJICogbGlzdCBv ZiBncm91cGVkIHJlbGF0aW9uIFJlbEFnZ0luZm9zLiBPbmUgaW5zdGFuY2Ugb2YgUmVsQWdnSW5m byBwZXIKKwkgKiBpdGVtIG9mIHRoZSB1cHBlcl9yZWxzW1VQUEVSUkVMX1BBUlRJQUxfR1JPVVBf QUdHXSBsaXN0LgorCSAqLworCVJlbEluZm9MaXN0ICphZ2dfaW5mb19saXN0OworCiAJLyogUmVz dWx0IHRsaXN0cyBjaG9zZW4gYnkgZ3JvdXBpbmdfcGxhbm5lciBmb3IgdXBwZXItc3RhZ2UgcHJv Y2Vzc2luZyAqLwogCXN0cnVjdCBQYXRoVGFyZ2V0ICp1cHBlcl90YXJnZXRzW1VQUEVSUkVMX0ZJ TkFMICsgMV0gcGdfbm9kZV9hdHRyKHJlYWRfd3JpdGVfaWdub3JlKTsKIApkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhub2RlLmggYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIv cGF0aG5vZGUuaAppbmRleCBjNDNkOTdiNDhhLi44ZDAzY2UyYzU3IDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9vcHRpbWl6ZXIvcGF0aG5vZGUuaAorKysgYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIv cGF0aG5vZGUuaApAQCAtMzEwLDYgKzMxMCwxMCBAQCBleHRlcm4gUmVsT3B0SW5mbyAqZmluZF9i YXNlX3JlbChQbGFubmVySW5mbyAqcm9vdCwgaW50IHJlbGlkKTsKIGV4dGVybiBSZWxPcHRJbmZv ICpmaW5kX2Jhc2VfcmVsX25vZXJyKFBsYW5uZXJJbmZvICpyb290LCBpbnQgcmVsaWQpOwogZXh0 ZXJuIFJlbE9wdEluZm8gKmZpbmRfYmFzZV9yZWxfaWdub3JlX2pvaW4oUGxhbm5lckluZm8gKnJv b3QsIGludCByZWxpZCk7CiBleHRlcm4gUmVsT3B0SW5mbyAqZmluZF9qb2luX3JlbChQbGFubmVy SW5mbyAqcm9vdCwgUmVsaWRzIHJlbGlkcyk7CitleHRlcm4gdm9pZCBhZGRfZ3JvdXBlZF9yZWwo UGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwKKwkJCQkJCQlSZWxBZ2dJbmZvICph Z2dfaW5mbyk7CitleHRlcm4gUmVsT3B0SW5mbyAqZmluZF9ncm91cGVkX3JlbChQbGFubmVySW5m byAqcm9vdCwgUmVsaWRzIHJlbGlkcywKKwkJCQkJCQkJCVJlbEFnZ0luZm8gKiphZ2dfaW5mb19w KTsKIGV4dGVybiBSZWxPcHRJbmZvICpidWlsZF9qb2luX3JlbChQbGFubmVySW5mbyAqcm9vdCwK IAkJCQkJCQkJICBSZWxpZHMgam9pbnJlbGlkcywKIAkJCQkJCQkJICBSZWxPcHRJbmZvICpvdXRl cl9yZWwsCkBAIC0zNDQsNCArMzQ4LDUgQEAgZXh0ZXJuIFJlbE9wdEluZm8gKmJ1aWxkX2NoaWxk X2pvaW5fcmVsKFBsYW5uZXJJbmZvICpyb290LAogCQkJCQkJCQkJCVJlbE9wdEluZm8gKnBhcmVu dF9qb2lucmVsLCBMaXN0ICpyZXN0cmljdGxpc3QsCiAJCQkJCQkJCQkJU3BlY2lhbEpvaW5JbmZv ICpzamluZm8pOwogCitleHRlcm4gUmVsQWdnSW5mbyAqY3JlYXRlX3JlbF9hZ2dfaW5mbyhQbGFu bmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsKTsKICNlbmRpZgkJCQkJCQkvKiBQQVRITk9E RV9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aHMuaCBiL3NyYy9p bmNsdWRlL29wdGltaXplci9wYXRocy5oCmluZGV4IDA0MGEwNDdiODEuLmRjZWExMDg4OGIgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL29wdGltaXplci9wYXRocy5oCisrKyBiL3NyYy9pbmNsdWRl L29wdGltaXplci9wYXRocy5oCkBAIC0xNjAsNyArMTYwLDggQEAgZXh0ZXJuIExpc3QgKmdlbmVy YXRlX2pvaW5faW1wbGllZF9lcXVhbGl0aWVzX2Zvcl9lY3MoUGxhbm5lckluZm8gKnJvb3QsCiAJ CQkJCQkJCQkJCQkJICBSZWxpZHMgam9pbl9yZWxpZHMsCiAJCQkJCQkJCQkJCQkJICBSZWxpZHMg b3V0ZXJfcmVsaWRzLAogCQkJCQkJCQkJCQkJCSAgUmVsT3B0SW5mbyAqaW5uZXJfcmVsKTsKLWV4 dGVybiBib29sIGV4cHJzX2tub3duX2VxdWFsKFBsYW5uZXJJbmZvICpyb290LCBOb2RlICppdGVt MSwgTm9kZSAqaXRlbTIpOworZXh0ZXJuIGJvb2wgZXhwcnNfa25vd25fZXF1YWwoUGxhbm5lcklu Zm8gKnJvb3QsIE5vZGUgKml0ZW0xLCBOb2RlICppdGVtMiwKKwkJCQkJCQkgIE9pZCBvcGZhbWls eSk7CiBleHRlcm4gRXF1aXZhbGVuY2VDbGFzcyAqbWF0Y2hfZWNsYXNzZXNfdG9fZm9yZWlnbl9r ZXlfY29sKFBsYW5uZXJJbmZvICpyb290LAogCQkJCQkJCQkJCQkJCQkgICBGb3JlaWduS2V5T3B0 SW5mbyAqZmtpbmZvLAogCQkJCQkJCQkJCQkJCQkgICBpbnQgY29sbm8pOwotLSAKMi4zMS4wCgo= --00000000000075de670612e805e8 Content-Type: application/octet-stream; name="v3-0005-Implement-functions-that-generate-paths-for-grouped-relations.patch" Content-Disposition: attachment; filename="v3-0005-Implement-functions-that-generate-paths-for-grouped-relations.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ltea0rdx4 RnJvbSA2ZWUwNWI4MzA4MjQyY2ZlNzg4NzlmZjVjOGViNGQ0NWFjMzYzYTZlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4K RGF0ZTogRnJpLCAyMyBGZWIgMjAyNCAxNDoxOTozOSArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjMg NS85XSBJbXBsZW1lbnQgZnVuY3Rpb25zIHRoYXQgZ2VuZXJhdGUgcGF0aHMgZm9yIGdyb3VwZWQK IHJlbGF0aW9ucwoKVGhpcyBjb21taXQgaW1wbGVtZW50cyB0aGUgZnVuY3Rpb25zIHRoYXQgZ2Vu ZXJhdGUgcGF0aHMgZm9yIGdyb3VwZWQKcmVsYXRpb25zIGJ5IGFkZGluZyBzb3J0ZWQgYW5kIGhh c2hlZCBwYXJ0aWFsIGFnZ3JlZ2F0aW9uIHBhdGhzIG9uIHRvcApvZiBwYXRocyBvZiB0aGUgcGxh aW4gYmFzZSBvciBqb2luIHJlbGF0aW9ucy4KLS0tCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0 aC9hbGxwYXRocy5jIHwgMzA3ICsrKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvdXRpbC9wYXRobm9kZS5jIHwgIDEyICstCiBzcmMvaW5jbHVkZS9vcHRpbWl6 ZXIvcGF0aHMuaCAgICAgICAgIHwgICA0ICsKIDMgZmlsZXMgY2hhbmdlZCwgMzE1IGluc2VydGlv bnMoKyksIDggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3BhdGgvYWxscGF0aHMuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2FsbHBhdGhzLmMK aW5kZXggMDY3MmQ4NDU4Zi4uNjMzYjViMGFmMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BhdGgvYWxscGF0aHMuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9h bGxwYXRocy5jCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAib3B0aW1pemVyL3BhdGhzLmgi CiAjaW5jbHVkZSAib3B0aW1pemVyL3BsYW5jYXQuaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvcGxh bm5lci5oIgorI2luY2x1ZGUgIm9wdGltaXplci9wcmVwLmgiCiAjaW5jbHVkZSAib3B0aW1pemVy L3RsaXN0LmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX2NsYXVzZS5oIgogI2luY2x1ZGUgInBh cnNlci9wYXJzZXRyZWUuaCIKQEAgLTQ3LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJwb3J0L3BnX2Jp dHV0aWxzLmgiCiAjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRlTWFuaXAuaCIKICNpbmNsdWRlICJ1 dGlscy9sc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy9zZWxmdW5jcy5oIgogCiAKIC8qIEJp dG1hc2sgZmxhZ3MgZm9yIHB1c2hkb3duX3NhZmV0eV9pbmZvLnVuc2FmZUZsYWdzICovCkBAIC0z MzAzLDYgKzMzMDUsMzExIEBAIGdlbmVyYXRlX3VzZWZ1bF9nYXRoZXJfcGF0aHMoUGxhbm5lcklu Zm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwgYm9vbCBvdmVycmlkZV9yCiAJfQogfQogCisvKgor ICogZ2VuZXJhdGVfZ3JvdXBlZF9wYXRocworICoJCUdlbmVyYXRlIHBhdGhzIGZvciBhIGdyb3Vw ZWQgcmVsYXRpb24gYnkgYWRkaW5nIHNvcnRlZCBhbmQgaGFzaGVkCisgKgkJcGFydGlhbCBhZ2dy ZWdhdGlvbiBwYXRocyBvbiB0b3Agb2YgcGF0aHMgb2YgdGhlIHBsYWluIGJhc2Ugb3Igam9pbgor ICoJCXJlbGF0aW9uLgorICoKKyAqIFRoZSBpbmZvcm1hdGlvbiBuZWVkZWQgYXJlIHByb3ZpZGVk IGJ5IHRoZSBSZWxBZ2dJbmZvIHN0cnVjdHVyZS4KKyAqLwordm9pZAorZ2VuZXJhdGVfZ3JvdXBl ZF9wYXRocyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsX2dyb3VwZWQsCisJCQkJ CSAgIFJlbE9wdEluZm8gKnJlbF9wbGFpbiwgUmVsQWdnSW5mbyAqYWdnX2luZm8pCit7CisJQWdn Q2xhdXNlQ29zdHMgYWdnX2Nvc3RzOworCWJvb2wJCWNhbl9oYXNoOworCWJvb2wJCWNhbl9zb3J0 OworCVBhdGgJICAgKmNoZWFwZXN0X3RvdGFsX3BhdGggPSBOVUxMOworCVBhdGgJICAgKmNoZWFw ZXN0X3BhcnRpYWxfcGF0aCA9IE5VTEw7CisJZG91YmxlCQlkTnVtR3JvdXBzID0gMDsKKwlkb3Vi bGUJCWROdW1QYXJ0aWFsR3JvdXBzID0gMDsKKworCWlmIChJU19EVU1NWV9SRUwocmVsX3BsYWlu KSkKKwl7CisJCW1hcmtfZHVtbXlfcmVsKHJlbF9ncm91cGVkKTsKKwkJcmV0dXJuOworCX0KKwor CU1lbVNldCgmYWdnX2Nvc3RzLCAwLCBzaXplb2YoQWdnQ2xhdXNlQ29zdHMpKTsKKwlnZXRfYWdn X2NsYXVzZV9jb3N0cyhyb290LCBBR0dTUExJVF9JTklUSUFMX1NFUklBTCwgJmFnZ19jb3N0cyk7 CisKKwkvKgorCSAqIERldGVybWluZSB3aGV0aGVyIGl0J3MgcG9zc2libGUgdG8gcGVyZm9ybSBz b3J0LWJhc2VkIGltcGxlbWVudGF0aW9ucyBvZgorCSAqIGdyb3VwaW5nLgorCSAqLworCWNhbl9z b3J0ID0gZ3JvdXBpbmdfaXNfc29ydGFibGUoYWdnX2luZm8tPmdyb3VwX2NsYXVzZXMpOworCisJ LyoKKwkgKiBEZXRlcm1pbmUgd2hldGhlciB3ZSBzaG91bGQgY29uc2lkZXIgaGFzaC1iYXNlZCBp bXBsZW1lbnRhdGlvbnMgb2YKKwkgKiBncm91cGluZy4KKwkgKi8KKwlBc3NlcnQocm9vdC0+bnVt T3JkZXJlZEFnZ3MgPT0gMCk7CisJY2FuX2hhc2ggPSAoYWdnX2luZm8tPmdyb3VwX2NsYXVzZXMg IT0gTklMICYmCisJCQkJZ3JvdXBpbmdfaXNfaGFzaGFibGUoYWdnX2luZm8tPmdyb3VwX2NsYXVz ZXMpKTsKKworCS8qCisJICogQ29uc2lkZXIgd2hldGhlciB3ZSBzaG91bGQgZ2VuZXJhdGUgcGFy dGlhbGx5IGFnZ3JlZ2F0ZWQgbm9uLXBhcnRpYWwKKwkgKiBwYXRocy4gIFdlIGNhbiBvbmx5IGRv IHRoaXMgaWYgd2UgaGF2ZSBhIG5vbi1wYXJ0aWFsIHBhdGguCisJICovCisJaWYgKHJlbF9wbGFp bi0+cGF0aGxpc3QgIT0gTklMKQorCXsKKwkJY2hlYXBlc3RfdG90YWxfcGF0aCA9IHJlbF9wbGFp bi0+Y2hlYXBlc3RfdG90YWxfcGF0aDsKKwkJQXNzZXJ0KGNoZWFwZXN0X3RvdGFsX3BhdGggIT0g TlVMTCk7CisJfQorCisJLyoKKwkgKiBJZiBwYXJhbGxlbGlzbSBpcyBwb3NzaWJsZSBmb3IgcmVs X2dyb3VwZWQsIHRoZW4gd2Ugc2hvdWxkIGNvbnNpZGVyCisJICogZ2VuZXJhdGluZyBwYXJ0aWFs bHktZ3JvdXBlZCBwYXJ0aWFsIHBhdGhzLiAgSG93ZXZlciwgaWYgdGhlIHBsYWluIHJlbAorCSAq IGhhcyBubyBwYXJ0aWFsIHBhdGhzLCB0aGVuIHdlIGNhbid0LgorCSAqLworCWlmIChyZWxfZ3Jv dXBlZC0+Y29uc2lkZXJfcGFyYWxsZWwgJiYgcmVsX3BsYWluLT5wYXJ0aWFsX3BhdGhsaXN0ICE9 IE5JTCkKKwl7CisJCWNoZWFwZXN0X3BhcnRpYWxfcGF0aCA9IGxpbml0aWFsKHJlbF9wbGFpbi0+ cGFydGlhbF9wYXRobGlzdCk7CisJCUFzc2VydChjaGVhcGVzdF9wYXJ0aWFsX3BhdGggIT0gTlVM TCk7CisJfQorCisJLyogRXN0aW1hdGUgbnVtYmVyIG9mIHBhcnRpYWwgZ3JvdXBzLiAqLworCWlm IChjaGVhcGVzdF90b3RhbF9wYXRoICE9IE5VTEwpCisJCWROdW1Hcm91cHMgPSBlc3RpbWF0ZV9u dW1fZ3JvdXBzKHJvb3QsCisJCQkJCQkJCQkJIGFnZ19pbmZvLT5ncm91cF9leHBycywKKwkJCQkJ CQkJCQkgY2hlYXBlc3RfdG90YWxfcGF0aC0+cm93cywKKwkJCQkJCQkJCQkgTlVMTCwgTlVMTCk7 CisJaWYgKGNoZWFwZXN0X3BhcnRpYWxfcGF0aCAhPSBOVUxMKQorCQlkTnVtUGFydGlhbEdyb3Vw cyA9IGVzdGltYXRlX251bV9ncm91cHMocm9vdCwKKwkJCQkJCQkJCQkJCWFnZ19pbmZvLT5ncm91 cF9leHBycywKKwkJCQkJCQkJCQkJCWNoZWFwZXN0X3BhcnRpYWxfcGF0aC0+cm93cywKKwkJCQkJ CQkJCQkJCU5VTEwsIE5VTEwpOworCisJaWYgKGNhbl9zb3J0ICYmIGNoZWFwZXN0X3RvdGFsX3Bh dGggIT0gTlVMTCkKKwl7CisJCUxpc3RDZWxsICAgKmxjOworCisJCS8qCisJCSAqIFVzZSBhbnkg YXZhaWxhYmxlIHN1aXRhYmx5LXNvcnRlZCBwYXRoIGFzIGlucHV0LCBhbmQgYWxzbyBjb25zaWRl cgorCQkgKiBzb3J0aW5nIHRoZSBjaGVhcGVzdC10b3RhbCBwYXRoLgorCQkgKi8KKwkJZm9yZWFj aChsYywgcmVsX3BsYWluLT5wYXRobGlzdCkKKwkJeworCQkJUGF0aAkgICAqaW5wdXRfcGF0aCA9 IChQYXRoICopIGxmaXJzdChsYyk7CisJCQlQYXRoCSAgICpwYXRoOworCQkJYm9vbAkJaXNfc29y dGVkOworCQkJaW50CQkJcHJlc29ydGVkX2tleXM7CisKKwkJCS8qCisJCQkgKiBTaW5jZSB0aGUg cGF0aCBvcmlnaW5hdGVzIGZyb20gdGhlIG5vbi1ncm91cGVkIHJlbGF0aW9uIHdoaWNoIGlzCisJ CQkgKiBub3QgYXdhcmUgb2YgZWFnZXIgYWdncmVnYXRpb24sIHdlIG11c3QgZW5zdXJlIHRoYXQg aXQgcHJvdmlkZXMKKwkJCSAqIHRoZSBjb3JyZWN0IGlucHV0IGZvciB0aGUgcGFydGlhbCBhZ2dy ZWdhdGlvbi4KKwkJCSAqLworCQkJcGF0aCA9IChQYXRoICopIGNyZWF0ZV9wcm9qZWN0aW9uX3Bh dGgocm9vdCwKKwkJCQkJCQkJCQkJCSAgIHJlbF9ncm91cGVkLAorCQkJCQkJCQkJCQkJICAgaW5w dXRfcGF0aCwKKwkJCQkJCQkJCQkJCSAgIGFnZ19pbmZvLT5hZ2dfaW5wdXQpOworCisJCQlpc19z b3J0ZWQgPSBwYXRoa2V5c19jb3VudF9jb250YWluZWRfaW4oYWdnX2luZm8tPmdyb3VwX3BhdGhr ZXlzLAorCQkJCQkJCQkJCQkJCXBhdGgtPnBhdGhrZXlzLAorCQkJCQkJCQkJCQkJCSZwcmVzb3J0 ZWRfa2V5cyk7CisJCQlpZiAoIWlzX3NvcnRlZCkKKwkJCXsKKwkJCQkvKgorCQkJCSAqIFRyeSBh dCBsZWFzdCBzb3J0aW5nIHRoZSBjaGVhcGVzdCBwYXRoIGFuZCBhbHNvIHRyeQorCQkJCSAqIGlu Y3JlbWVudGFsbHkgc29ydGluZyBhbnkgcGF0aCB3aGljaCBpcyBwYXJ0aWFsbHkgc29ydGVkCisJ CQkJICogYWxyZWFkeSAobm8gbmVlZCB0byBkZWFsIHdpdGggcGF0aHMgd2hpY2ggaGF2ZSBwcmVz b3J0ZWQKKwkJCQkgKiBrZXlzIHdoZW4gaW5jcmVtZW50YWwgc29ydCBpcyBkaXNhYmxlZCB1bmxl c3MgaXQncyB0aGUKKwkJCQkgKiBjaGVhcGVzdCBpbnB1dCBwYXRoKS4KKwkJCQkgKi8KKwkJCQlp ZiAoaW5wdXRfcGF0aCAhPSBjaGVhcGVzdF90b3RhbF9wYXRoICYmCisJCQkJCShwcmVzb3J0ZWRf a2V5cyA9PSAwIHx8ICFlbmFibGVfaW5jcmVtZW50YWxfc29ydCkpCisJCQkJCWNvbnRpbnVlOwor CisJCQkJLyoKKwkJCQkgKiBXZSd2ZSBubyBuZWVkIHRvIGNvbnNpZGVyIGJvdGggYSBzb3J0IGFu ZCBpbmNyZW1lbnRhbCBzb3J0LgorCQkJCSAqIFdlJ2xsIGp1c3QgZG8gYSBzb3J0IGlmIHRoZXJl IGFyZSBubyBwcmVzb3J0ZWQga2V5cyBhbmQgYW4KKwkJCQkgKiBpbmNyZW1lbnRhbCBzb3J0IHdo ZW4gdGhlcmUgYXJlIHByZXNvcnRlZCBrZXlzLgorCQkJCSAqLworCQkJCWlmIChwcmVzb3J0ZWRf a2V5cyA9PSAwIHx8ICFlbmFibGVfaW5jcmVtZW50YWxfc29ydCkKKwkJCQkJcGF0aCA9IChQYXRo ICopIGNyZWF0ZV9zb3J0X3BhdGgocm9vdCwKKwkJCQkJCQkJCQkJCQkgcmVsX2dyb3VwZWQsCisJ CQkJCQkJCQkJCQkJIHBhdGgsCisJCQkJCQkJCQkJCQkJIGFnZ19pbmZvLT5ncm91cF9wYXRoa2V5 cywKKwkJCQkJCQkJCQkJCQkgLTEuMCk7CisJCQkJZWxzZQorCQkJCQlwYXRoID0gKFBhdGggKikg Y3JlYXRlX2luY3JlbWVudGFsX3NvcnRfcGF0aChyb290LAorCQkJCQkJCQkJCQkJCQkJCSByZWxf Z3JvdXBlZCwKKwkJCQkJCQkJCQkJCQkJCQkgcGF0aCwKKwkJCQkJCQkJCQkJCQkJCQkgYWdnX2lu Zm8tPmdyb3VwX3BhdGhrZXlzLAorCQkJCQkJCQkJCQkJCQkJCSBwcmVzb3J0ZWRfa2V5cywKKwkJ CQkJCQkJCQkJCQkJCQkgLTEuMCk7CisJCQl9CisKKwkJCS8qCisJCQkgKiBxdWFsIGlzIE5JTCBi ZWNhdXNlIHRoZSBIQVZJTkcgY2xhdXNlIGNhbm5vdCBiZSBldmFsdWF0ZWQgdW50aWwgdGhlCisJ CQkgKiBmaW5hbCB2YWx1ZSBvZiB0aGUgYWdncmVnYXRlIGlzIGtub3duLgorCQkJICovCisJCQlw YXRoID0gKFBhdGggKikgY3JlYXRlX2FnZ19wYXRoKHJvb3QsCisJCQkJCQkJCQkJCXJlbF9ncm91 cGVkLAorCQkJCQkJCQkJCQlwYXRoLAorCQkJCQkJCQkJCQlhZ2dfaW5mby0+dGFyZ2V0LAorCQkJ CQkJCQkJCQlBR0dfU09SVEVELAorCQkJCQkJCQkJCQlBR0dTUExJVF9JTklUSUFMX1NFUklBTCwK KwkJCQkJCQkJCQkJYWdnX2luZm8tPmdyb3VwX2NsYXVzZXMsCisJCQkJCQkJCQkJCU5JTCwKKwkJ CQkJCQkJCQkJJmFnZ19jb3N0cywKKwkJCQkJCQkJCQkJZE51bUdyb3Vwcyk7CisKKwkJCWFkZF9w YXRoKHJlbF9ncm91cGVkLCBwYXRoKTsKKwkJfQorCX0KKworCWlmIChjYW5fc29ydCAmJiBjaGVh cGVzdF9wYXJ0aWFsX3BhdGggIT0gTlVMTCkKKwl7CisJCUxpc3RDZWxsICAgKmxjOworCisJCS8q IFNpbWlsYXIgdG8gYWJvdmUgbG9naWMsIGJ1dCBmb3IgcGFydGlhbCBwYXRocy4gKi8KKwkJZm9y ZWFjaChsYywgcmVsX3BsYWluLT5wYXJ0aWFsX3BhdGhsaXN0KQorCQl7CisJCQlQYXRoCSAgICpp bnB1dF9wYXRoID0gKFBhdGggKikgbGZpcnN0KGxjKTsKKwkJCVBhdGgJICAgKnBhdGg7CisJCQli b29sCQlpc19zb3J0ZWQ7CisJCQlpbnQJCQlwcmVzb3J0ZWRfa2V5czsKKworCQkJLyoKKwkJCSAq IFNpbmNlIHRoZSBwYXRoIG9yaWdpbmF0ZXMgZnJvbSB0aGUgbm9uLWdyb3VwZWQgcmVsYXRpb24g d2hpY2ggaXMKKwkJCSAqIG5vdCBhd2FyZSBvZiBlYWdlciBhZ2dyZWdhdGlvbiwgd2UgbXVzdCBl bnN1cmUgdGhhdCBpdCBwcm92aWRlcworCQkJICogdGhlIGNvcnJlY3QgaW5wdXQgZm9yIHRoZSBw YXJ0aWFsIGFnZ3JlZ2F0aW9uLgorCQkJICovCisJCQlwYXRoID0gKFBhdGggKikgY3JlYXRlX3By b2plY3Rpb25fcGF0aChyb290LAorCQkJCQkJCQkJCQkJICAgcmVsX2dyb3VwZWQsCisJCQkJCQkJ CQkJCQkgICBpbnB1dF9wYXRoLAorCQkJCQkJCQkJCQkJICAgYWdnX2luZm8tPmFnZ19pbnB1dCk7 CisKKwkJCWlzX3NvcnRlZCA9IHBhdGhrZXlzX2NvdW50X2NvbnRhaW5lZF9pbihhZ2dfaW5mby0+ Z3JvdXBfcGF0aGtleXMsCisJCQkJCQkJCQkJCQkJcGF0aC0+cGF0aGtleXMsCisJCQkJCQkJCQkJ CQkJJnByZXNvcnRlZF9rZXlzKTsKKworCQkJaWYgKCFpc19zb3J0ZWQpCisJCQl7CisJCQkJLyoK KwkJCQkgKiBUcnkgYXQgbGVhc3Qgc29ydGluZyB0aGUgY2hlYXBlc3QgcGF0aCBhbmQgYWxzbyB0 cnkKKwkJCQkgKiBpbmNyZW1lbnRhbGx5IHNvcnRpbmcgYW55IHBhdGggd2hpY2ggaXMgcGFydGlh bGx5IHNvcnRlZAorCQkJCSAqIGFscmVhZHkgKG5vIG5lZWQgdG8gZGVhbCB3aXRoIHBhdGhzIHdo aWNoIGhhdmUgcHJlc29ydGVkCisJCQkJICoga2V5cyB3aGVuIGluY3JlbWVudGFsIHNvcnQgaXMg ZGlzYWJsZWQgdW5sZXNzIGl0J3MgdGhlCisJCQkJICogY2hlYXBlc3QgaW5wdXQgcGF0aCkuCisJ CQkJICovCisJCQkJaWYgKGlucHV0X3BhdGggIT0gY2hlYXBlc3RfcGFydGlhbF9wYXRoICYmCisJ CQkJCShwcmVzb3J0ZWRfa2V5cyA9PSAwIHx8ICFlbmFibGVfaW5jcmVtZW50YWxfc29ydCkpCisJ CQkJCWNvbnRpbnVlOworCisJCQkJLyoKKwkJCQkgKiBXZSd2ZSBubyBuZWVkIHRvIGNvbnNpZGVy IGJvdGggYSBzb3J0IGFuZCBpbmNyZW1lbnRhbCBzb3J0LgorCQkJCSAqIFdlJ2xsIGp1c3QgZG8g YSBzb3J0IGlmIHRoZXJlIGFyZSBubyBwcmVzb3J0ZWQga2V5cyBhbmQgYW4KKwkJCQkgKiBpbmNy ZW1lbnRhbCBzb3J0IHdoZW4gdGhlcmUgYXJlIHByZXNvcnRlZCBrZXlzLgorCQkJCSAqLworCQkJ CWlmIChwcmVzb3J0ZWRfa2V5cyA9PSAwIHx8ICFlbmFibGVfaW5jcmVtZW50YWxfc29ydCkKKwkJ CQkJcGF0aCA9IChQYXRoICopIGNyZWF0ZV9zb3J0X3BhdGgocm9vdCwKKwkJCQkJCQkJCQkJCQkg cmVsX2dyb3VwZWQsCisJCQkJCQkJCQkJCQkJIHBhdGgsCisJCQkJCQkJCQkJCQkJIGFnZ19pbmZv LT5ncm91cF9wYXRoa2V5cywKKwkJCQkJCQkJCQkJCQkgLTEuMCk7CisJCQkJZWxzZQorCQkJCQlw YXRoID0gKFBhdGggKikgY3JlYXRlX2luY3JlbWVudGFsX3NvcnRfcGF0aChyb290LAorCQkJCQkJ CQkJCQkJCQkJCSByZWxfZ3JvdXBlZCwKKwkJCQkJCQkJCQkJCQkJCQkgcGF0aCwKKwkJCQkJCQkJ CQkJCQkJCQkgYWdnX2luZm8tPmdyb3VwX3BhdGhrZXlzLAorCQkJCQkJCQkJCQkJCQkJCSBwcmVz b3J0ZWRfa2V5cywKKwkJCQkJCQkJCQkJCQkJCQkgLTEuMCk7CisJCQl9CisKKwkJCS8qCisJCQkg KiBxdWFsIGlzIE5JTCBiZWNhdXNlIHRoZSBIQVZJTkcgY2xhdXNlIGNhbm5vdCBiZSBldmFsdWF0 ZWQgdW50aWwgdGhlCisJCQkgKiBmaW5hbCB2YWx1ZSBvZiB0aGUgYWdncmVnYXRlIGlzIGtub3du LgorCQkJICovCisJCQlwYXRoID0gKFBhdGggKikgY3JlYXRlX2FnZ19wYXRoKHJvb3QsCisJCQkJ CQkJCQkJCXJlbF9ncm91cGVkLAorCQkJCQkJCQkJCQlwYXRoLAorCQkJCQkJCQkJCQlhZ2dfaW5m by0+dGFyZ2V0LAorCQkJCQkJCQkJCQlBR0dfU09SVEVELAorCQkJCQkJCQkJCQlBR0dTUExJVF9J TklUSUFMX1NFUklBTCwKKwkJCQkJCQkJCQkJYWdnX2luZm8tPmdyb3VwX2NsYXVzZXMsCisJCQkJ CQkJCQkJCU5JTCwKKwkJCQkJCQkJCQkJJmFnZ19jb3N0cywKKwkJCQkJCQkJCQkJZE51bVBhcnRp YWxHcm91cHMpOworCisJCQlhZGRfcGFydGlhbF9wYXRoKHJlbF9ncm91cGVkLCBwYXRoKTsKKwkJ fQorCX0KKworCS8qCisJICogQWRkIGEgcGFydGlhbGx5LWdyb3VwZWQgSGFzaEFnZyBQYXRoIHdo ZXJlIHBvc3NpYmxlCisJICovCisJaWYgKGNhbl9oYXNoICYmIGNoZWFwZXN0X3RvdGFsX3BhdGgg IT0gTlVMTCkKKwl7CisJCVBhdGggICAqcGF0aDsKKworCQkvKgorCQkgKiBTaW5jZSB0aGUgcGF0 aCBvcmlnaW5hdGVzIGZyb20gdGhlIG5vbi1ncm91cGVkIHJlbGF0aW9uIHdoaWNoIGlzCisJCSAq IG5vdCBhd2FyZSBvZiBlYWdlciBhZ2dyZWdhdGlvbiwgd2UgbXVzdCBlbnN1cmUgdGhhdCBpdCBw cm92aWRlcworCQkgKiB0aGUgY29ycmVjdCBpbnB1dCBmb3IgdGhlIHBhcnRpYWwgYWdncmVnYXRp b24uCisJCSAqLworCQlwYXRoID0gKFBhdGggKikgY3JlYXRlX3Byb2plY3Rpb25fcGF0aChyb290 LAorCQkJCQkJCQkJCQkgICByZWxfZ3JvdXBlZCwKKwkJCQkJCQkJCQkJICAgY2hlYXBlc3RfdG90 YWxfcGF0aCwKKwkJCQkJCQkJCQkJICAgYWdnX2luZm8tPmFnZ19pbnB1dCk7CisKKwkJLyoKKwkJ ICogcXVhbCBpcyBOSUwgYmVjYXVzZSB0aGUgSEFWSU5HIGNsYXVzZSBjYW5ub3QgYmUgZXZhbHVh dGVkIHVudGlsCisJCSAqIHRoZSBmaW5hbCB2YWx1ZSBvZiB0aGUgYWdncmVnYXRlIGlzIGtub3du LgorCQkgKi8KKwkJcGF0aCA9IChQYXRoICopIGNyZWF0ZV9hZ2dfcGF0aChyb290LAorCQkJCQkJ CQkJCXJlbF9ncm91cGVkLAorCQkJCQkJCQkJCXBhdGgsCisJCQkJCQkJCQkJYWdnX2luZm8tPnRh cmdldCwKKwkJCQkJCQkJCQlBR0dfSEFTSEVELAorCQkJCQkJCQkJCUFHR1NQTElUX0lOSVRJQUxf U0VSSUFMLAorCQkJCQkJCQkJCWFnZ19pbmZvLT5ncm91cF9jbGF1c2VzLAorCQkJCQkJCQkJCU5J TCwKKwkJCQkJCQkJCQkmYWdnX2Nvc3RzLAorCQkJCQkJCQkJCWROdW1Hcm91cHMpOworCisJCWFk ZF9wYXRoKHJlbF9ncm91cGVkLCBwYXRoKTsKKwl9CisKKwkvKgorCSAqIE5vdyBhZGQgYSBwYXJ0 aWFsbHktZ3JvdXBlZCBIYXNoQWdnIHBhcnRpYWwgUGF0aCB3aGVyZSBwb3NzaWJsZQorCSAqLwor CWlmIChjYW5faGFzaCAmJiBjaGVhcGVzdF9wYXJ0aWFsX3BhdGggIT0gTlVMTCkKKwl7CisJCVBh dGggICAqcGF0aDsKKworCQkvKgorCQkgKiBTaW5jZSB0aGUgcGF0aCBvcmlnaW5hdGVzIGZyb20g dGhlIG5vbi1ncm91cGVkIHJlbGF0aW9uIHdoaWNoIGlzCisJCSAqIG5vdCBhd2FyZSBvZiBlYWdl ciBhZ2dyZWdhdGlvbiwgd2UgbXVzdCBlbnN1cmUgdGhhdCBpdCBwcm92aWRlcworCQkgKiB0aGUg Y29ycmVjdCBpbnB1dCBmb3IgdGhlIHBhcnRpYWwgYWdncmVnYXRpb24uCisJCSAqLworCQlwYXRo ID0gKFBhdGggKikgY3JlYXRlX3Byb2plY3Rpb25fcGF0aChyb290LAorCQkJCQkJCQkJCQkgICBy ZWxfZ3JvdXBlZCwKKwkJCQkJCQkJCQkJICAgY2hlYXBlc3RfcGFydGlhbF9wYXRoLAorCQkJCQkJ CQkJCQkgICBhZ2dfaW5mby0+YWdnX2lucHV0KTsKKworCQkvKgorCQkgKiBxdWFsIGlzIE5JTCBi ZWNhdXNlIHRoZSBIQVZJTkcgY2xhdXNlIGNhbm5vdCBiZSBldmFsdWF0ZWQgdW50aWwKKwkJICog dGhlIGZpbmFsIHZhbHVlIG9mIHRoZSBhZ2dyZWdhdGUgaXMga25vd24uCisJCSAqLworCQlwYXRo ID0gKFBhdGggKikgY3JlYXRlX2FnZ19wYXRoKHJvb3QsCisJCQkJCQkJCQkJcmVsX2dyb3VwZWQs CisJCQkJCQkJCQkJcGF0aCwKKwkJCQkJCQkJCQlhZ2dfaW5mby0+dGFyZ2V0LAorCQkJCQkJCQkJ CUFHR19IQVNIRUQsCisJCQkJCQkJCQkJQUdHU1BMSVRfSU5JVElBTF9TRVJJQUwsCisJCQkJCQkJ CQkJYWdnX2luZm8tPmdyb3VwX2NsYXVzZXMsCisJCQkJCQkJCQkJTklMLAorCQkJCQkJCQkJCSZh Z2dfY29zdHMsCisJCQkJCQkJCQkJZE51bVBhcnRpYWxHcm91cHMpOworCisJCWFkZF9wYXJ0aWFs X3BhdGgocmVsX2dyb3VwZWQsIHBhdGgpOworCX0KK30KKwogLyoKICAqIG1ha2VfcmVsX2Zyb21f am9pbmxpc3QKICAqCSAgQnVpbGQgYWNjZXNzIHBhdGhzIHVzaW5nIGEgImpvaW5saXN0IiB0byBn dWlkZSB0aGUgam9pbiBwYXRoIHNlYXJjaC4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGlt aXplci91dGlsL3BhdGhub2RlLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wYXRobm9k ZS5jCmluZGV4IDI0NmNkOGY3NDcuLmRjNTU4MmFkYjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L29wdGltaXplci91dGlsL3BhdGhub2RlLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0 aWwvcGF0aG5vZGUuYwpAQCAtMjY5NSw4ICsyNjk1LDcgQEAgY3JlYXRlX3Byb2plY3Rpb25fcGF0 aChQbGFubmVySW5mbyAqcm9vdCwKIAlwYXRobm9kZS0+cGF0aC5wYXRodHlwZSA9IFRfUmVzdWx0 OwogCXBhdGhub2RlLT5wYXRoLnBhcmVudCA9IHJlbDsKIAlwYXRobm9kZS0+cGF0aC5wYXRodGFy Z2V0ID0gdGFyZ2V0OwotCS8qIEZvciBub3csIGFzc3VtZSB3ZSBhcmUgYWJvdmUgYW55IGpvaW5z LCBzbyBubyBwYXJhbWV0ZXJpemF0aW9uICovCi0JcGF0aG5vZGUtPnBhdGgucGFyYW1faW5mbyA9 IE5VTEw7CisJcGF0aG5vZGUtPnBhdGgucGFyYW1faW5mbyA9IHN1YnBhdGgtPnBhcmFtX2luZm87 CiAJcGF0aG5vZGUtPnBhdGgucGFyYWxsZWxfYXdhcmUgPSBmYWxzZTsKIAlwYXRobm9kZS0+cGF0 aC5wYXJhbGxlbF9zYWZlID0gcmVsLT5jb25zaWRlcl9wYXJhbGxlbCAmJgogCQlzdWJwYXRoLT5w YXJhbGxlbF9zYWZlICYmCkBAIC0yOTQ4LDggKzI5NDcsNyBAQCBjcmVhdGVfaW5jcmVtZW50YWxf c29ydF9wYXRoKFBsYW5uZXJJbmZvICpyb290LAogCXBhdGhub2RlLT5wYXRoLnBhcmVudCA9IHJl bDsKIAkvKiBTb3J0IGRvZXNuJ3QgcHJvamVjdCwgc28gdXNlIHNvdXJjZSBwYXRoJ3MgcGF0aHRh cmdldCAqLwogCXBhdGhub2RlLT5wYXRoLnBhdGh0YXJnZXQgPSBzdWJwYXRoLT5wYXRodGFyZ2V0 OwotCS8qIEZvciBub3csIGFzc3VtZSB3ZSBhcmUgYWJvdmUgYW55IGpvaW5zLCBzbyBubyBwYXJh bWV0ZXJpemF0aW9uICovCi0JcGF0aG5vZGUtPnBhdGgucGFyYW1faW5mbyA9IE5VTEw7CisJcGF0 aG5vZGUtPnBhdGgucGFyYW1faW5mbyA9IHN1YnBhdGgtPnBhcmFtX2luZm87CiAJcGF0aG5vZGUt PnBhdGgucGFyYWxsZWxfYXdhcmUgPSBmYWxzZTsKIAlwYXRobm9kZS0+cGF0aC5wYXJhbGxlbF9z YWZlID0gcmVsLT5jb25zaWRlcl9wYXJhbGxlbCAmJgogCQlzdWJwYXRoLT5wYXJhbGxlbF9zYWZl OwpAQCAtMjk5NSw4ICsyOTkzLDcgQEAgY3JlYXRlX3NvcnRfcGF0aChQbGFubmVySW5mbyAqcm9v dCwKIAlwYXRobm9kZS0+cGF0aC5wYXJlbnQgPSByZWw7CiAJLyogU29ydCBkb2Vzbid0IHByb2pl Y3QsIHNvIHVzZSBzb3VyY2UgcGF0aCdzIHBhdGh0YXJnZXQgKi8KIAlwYXRobm9kZS0+cGF0aC5w YXRodGFyZ2V0ID0gc3VicGF0aC0+cGF0aHRhcmdldDsKLQkvKiBGb3Igbm93LCBhc3N1bWUgd2Ug YXJlIGFib3ZlIGFueSBqb2lucywgc28gbm8gcGFyYW1ldGVyaXphdGlvbiAqLwotCXBhdGhub2Rl LT5wYXRoLnBhcmFtX2luZm8gPSBOVUxMOworCXBhdGhub2RlLT5wYXRoLnBhcmFtX2luZm8gPSBz dWJwYXRoLT5wYXJhbV9pbmZvOwogCXBhdGhub2RlLT5wYXRoLnBhcmFsbGVsX2F3YXJlID0gZmFs c2U7CiAJcGF0aG5vZGUtPnBhdGgucGFyYWxsZWxfc2FmZSA9IHJlbC0+Y29uc2lkZXJfcGFyYWxs ZWwgJiYKIAkJc3VicGF0aC0+cGFyYWxsZWxfc2FmZTsKQEAgLTMxNTQsOCArMzE1MSw3IEBAIGNy ZWF0ZV9hZ2dfcGF0aChQbGFubmVySW5mbyAqcm9vdCwKIAlwYXRobm9kZS0+cGF0aC5wYXRodHlw ZSA9IFRfQWdnOwogCXBhdGhub2RlLT5wYXRoLnBhcmVudCA9IHJlbDsKIAlwYXRobm9kZS0+cGF0 aC5wYXRodGFyZ2V0ID0gdGFyZ2V0OwotCS8qIEZvciBub3csIGFzc3VtZSB3ZSBhcmUgYWJvdmUg YW55IGpvaW5zLCBzbyBubyBwYXJhbWV0ZXJpemF0aW9uICovCi0JcGF0aG5vZGUtPnBhdGgucGFy YW1faW5mbyA9IE5VTEw7CisJcGF0aG5vZGUtPnBhdGgucGFyYW1faW5mbyA9IHN1YnBhdGgtPnBh cmFtX2luZm87CiAJcGF0aG5vZGUtPnBhdGgucGFyYWxsZWxfYXdhcmUgPSBmYWxzZTsKIAlwYXRo bm9kZS0+cGF0aC5wYXJhbGxlbF9zYWZlID0gcmVsLT5jb25zaWRlcl9wYXJhbGxlbCAmJgogCQlz dWJwYXRoLT5wYXJhbGxlbF9zYWZlOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvb3B0aW1pemVy L3BhdGhzLmggYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aHMuaAppbmRleCBkY2VhMTA4ODhi Li42OGZjMDU0MzJjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aHMuaAor KysgYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aHMuaApAQCAtNTgsNiArNTgsMTAgQEAgZXh0 ZXJuIHZvaWQgZ2VuZXJhdGVfZ2F0aGVyX3BhdGhzKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJ bmZvICpyZWwsCiAJCQkJCQkJCSAgYm9vbCBvdmVycmlkZV9yb3dzKTsKIGV4dGVybiB2b2lkIGdl bmVyYXRlX3VzZWZ1bF9nYXRoZXJfcGF0aHMoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8g KnJlbCwKIAkJCQkJCQkJCQkgYm9vbCBvdmVycmlkZV9yb3dzKTsKK2V4dGVybiB2b2lkIGdlbmVy YXRlX2dyb3VwZWRfcGF0aHMoUGxhbm5lckluZm8gKnJvb3QsCisJCQkJCQkJCSAgIFJlbE9wdElu Zm8gKnJlbF9ncm91cGVkLAorCQkJCQkJCQkgICBSZWxPcHRJbmZvICpyZWxfcGxhaW4sCisJCQkJ CQkJCSAgIFJlbEFnZ0luZm8gKmFnZ19pbmZvKTsKIGV4dGVybiBpbnQJY29tcHV0ZV9wYXJhbGxl bF93b3JrZXIoUmVsT3B0SW5mbyAqcmVsLCBkb3VibGUgaGVhcF9wYWdlcywKIAkJCQkJCQkJCWRv dWJsZSBpbmRleF9wYWdlcywgaW50IG1heF93b3JrZXJzKTsKIGV4dGVybiB2b2lkIGNyZWF0ZV9w YXJ0aWFsX2JpdG1hcF9wYXRocyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsLAot LSAKMi4zMS4wCgo= --00000000000075de670612e805e8 Content-Type: application/octet-stream; name="v3-0006-Build-grouped-relations-out-of-base-relations.patch" Content-Disposition: attachment; filename="v3-0006-Build-grouped-relations-out-of-base-relations.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ltea10wz5 RnJvbSBlNjgxMmQ3NDlkODAyZjMyYjViOGNjZGIzYzQwOWJmYzkxZWJmN2ZkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4K RGF0ZTogV2VkLCAyOCBGZWIgMjAyNCAxMDowMzo0MSArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjMg Ni85XSBCdWlsZCBncm91cGVkIHJlbGF0aW9ucyBvdXQgb2YgYmFzZSByZWxhdGlvbnMKClRoaXMg Y29tbWl0IGJ1aWxkcyBncm91cGVkIHJlbGF0aW9ucyBmb3IgZWFjaCBiYXNlIHJlbGF0aW9uIGlm IHBvc3NpYmxlLAphbmQgZ2VuZXJhdGVzIGFnZ3JlZ2F0aW9uIHBhdGhzIGZvciB0aGUgZ3JvdXBl ZCBiYXNlIHJlbGF0aW9ucy4KLS0tCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9hbGxwYXRo cy5jIHwgIDkxICsrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIv dXRpbC9yZWxub2RlLmMgIHwgMTAxICsrKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvaW5j bHVkZS9vcHRpbWl6ZXIvcGF0aG5vZGUuaCAgICAgIHwgICA0ICsKIDMgZmlsZXMgY2hhbmdlZCwg MTk2IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0 aC9hbGxwYXRocy5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvYWxscGF0aHMuYwppbmRl eCA2MzNiNWIwYWYxLi5iMjFmMjE1ODlhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvcGF0aC9hbGxwYXRocy5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2FsbHBh dGhzLmMKQEAgLTkzLDYgKzkzLDcgQEAgam9pbl9zZWFyY2hfaG9va190eXBlIGpvaW5fc2VhcmNo X2hvb2sgPSBOVUxMOwogCiBzdGF0aWMgdm9pZCBzZXRfYmFzZV9yZWxfY29uc2lkZXJfc3RhcnR1 cChQbGFubmVySW5mbyAqcm9vdCk7CiBzdGF0aWMgdm9pZCBzZXRfYmFzZV9yZWxfc2l6ZXMoUGxh bm5lckluZm8gKnJvb3QpOworc3RhdGljIHZvaWQgc2V0dXBfYmFzZV9ncm91cGVkX3JlbHMoUGxh bm5lckluZm8gKnJvb3QpOwogc3RhdGljIHZvaWQgc2V0X2Jhc2VfcmVsX3BhdGhsaXN0cyhQbGFu bmVySW5mbyAqcm9vdCk7CiBzdGF0aWMgdm9pZCBzZXRfcmVsX3NpemUoUGxhbm5lckluZm8gKnJv b3QsIFJlbE9wdEluZm8gKnJlbCwKIAkJCQkJCSBJbmRleCBydGksIFJhbmdlVGJsRW50cnkgKnJ0 ZSk7CkBAIC0xMTcsNiArMTE4LDcgQEAgc3RhdGljIHZvaWQgc2V0X2FwcGVuZF9yZWxfc2l6ZShQ bGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsLAogCQkJCQkJCQlJbmRleCBydGksIFJh bmdlVGJsRW50cnkgKnJ0ZSk7CiBzdGF0aWMgdm9pZCBzZXRfYXBwZW5kX3JlbF9wYXRobGlzdChQ bGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsLAogCQkJCQkJCQkJSW5kZXggcnRpLCBS YW5nZVRibEVudHJ5ICpydGUpOworc3RhdGljIHZvaWQgc2V0X2dyb3VwZWRfcmVsX3BhdGhsaXN0 KFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwpOwogc3RhdGljIHZvaWQgZ2VuZXJh dGVfb3JkZXJlZGFwcGVuZF9wYXRocyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVs LAogCQkJCQkJCQkJCSBMaXN0ICpsaXZlX2NoaWxkcmVscywKIAkJCQkJCQkJCQkgTGlzdCAqYWxs X2NoaWxkX3BhdGhrZXlzKTsKQEAgLTE4NSw2ICsxODcsMTEgQEAgbWFrZV9vbmVfcmVsKFBsYW5u ZXJJbmZvICpyb290LCBMaXN0ICpqb2lubGlzdCkKIAkgKi8KIAlzZXRfYmFzZV9yZWxfc2l6ZXMo cm9vdCk7CiAKKwkvKgorCSAqIEJ1aWxkIGdyb3VwZWQgYmFzZSByZWxhdGlvbnMgZm9yIGVhY2gg YmFzZSByZWwgaWYgcG9zc2libGUuCisJICovCisJc2V0dXBfYmFzZV9ncm91cGVkX3JlbHMocm9v dCk7CisKIAkvKgogCSAqIFdlIHNob3VsZCBub3cgaGF2ZSBzaXplIGVzdGltYXRlcyBmb3IgZXZl cnkgYWN0dWFsIHRhYmxlIGludm9sdmVkIGluCiAJICogdGhlIHF1ZXJ5LCBhbmQgd2UgYWxzbyBr bm93IHdoaWNoIGlmIGFueSBoYXZlIGJlZW4gZGVsZXRlZCBmcm9tIHRoZQpAQCAtMzI2LDYgKzMz Myw1OSBAQCBzZXRfYmFzZV9yZWxfc2l6ZXMoUGxhbm5lckluZm8gKnJvb3QpCiAJfQogfQogCisv KgorICogc2V0dXBfYmFzZV9ncm91cGVkX3JlbHMKKyAqCSAgRm9yIGVhY2ggInBsYWluIiBiYXNl IHJlbGF0aW9uIGJ1aWxkIGEgZ3JvdXBlZCBiYXNlIHJlbGF0aW9uIGlmIGVhZ2VyCisgKgkgIGFn Z3JlZ2F0aW9uIGlzIHBvc3NpYmxlIGFuZCBpZiB0aGlzIHJlbGF0aW9uIGNhbiBwcm9kdWNlIGdy b3VwZWQgcGF0aHMuCisgKi8KK3N0YXRpYyB2b2lkCitzZXR1cF9iYXNlX2dyb3VwZWRfcmVscyhQ bGFubmVySW5mbyAqcm9vdCkKK3sKKwlJbmRleAkJcnRpOworCisJLyoKKwkgKiBJZiB0aGVyZSBh cmUgbm8gYWdncmVnYXRlIGV4cHJlc3Npb25zIG9yIGdyb3VwaW5nIGV4cHJlc3Npb25zLCBlYWdl cgorCSAqIGFnZ3JlZ2F0aW9uIGlzIG5vdCBwb3NzaWJsZS4KKwkgKi8KKwlpZiAocm9vdC0+YWdn X2NsYXVzZV9saXN0ID09IE5JTCB8fAorCQlyb290LT5ncm91cF9leHByX2xpc3QgPT0gTklMKQor CQlyZXR1cm47CisKKwkvKgorCSAqIEVhZ2VyIGFnZ3JlZ2F0aW9uIG9ubHkgbWFrZXMgc2Vuc2Ug aWYgdGhlcmUgYXJlIG11bHRpcGxlIGJhc2UgcmVscyBpbgorCSAqIHRoZSBxdWVyeS4KKwkgKi8K KwlpZiAoYm1zX21lbWJlcnNoaXAocm9vdC0+YWxsX2Jhc2VyZWxzKSAhPSBCTVNfTVVMVElQTEUp CisJCXJldHVybjsKKworCWZvciAocnRpID0gMTsgcnRpIDwgcm9vdC0+c2ltcGxlX3JlbF9hcnJh eV9zaXplOyBydGkrKykKKwl7CisJCVJlbE9wdEluZm8JICAgKnJlbCA9IHJvb3QtPnNpbXBsZV9y ZWxfYXJyYXlbcnRpXTsKKwkJUmVsT3B0SW5mbwkgICAqcmVsX2dyb3VwZWQ7CisJCVJlbEFnZ0lu Zm8JICAgKmFnZ19pbmZvOworCisJCS8qIHRoZXJlIG1heSBiZSBlbXB0eSBzbG90cyBjb3JyZXNw b25kaW5nIHRvIG5vbi1iYXNlcmVsIFJURXMgKi8KKwkJaWYgKHJlbCA9PSBOVUxMKQorCQkJY29u dGludWU7CisKKwkJQXNzZXJ0KHJlbC0+cmVsaWQgPT0gcnRpKTsgLyogc2FuaXR5IGNoZWNrIG9u IGFycmF5ICovCisKKwkJLyoKKwkJICogSWdub3JlIFJURXMgdGhhdCBhcmUgbm90IHNpbXBsZSBy ZWxzLiAgTm90ZSB0aGF0IHdlIG5lZWQgdG8gY29uc2lkZXIKKwkJICogIm90aGVyIHJlbHMiIGhl cmUuCisJCSAqLworCQlpZiAoIUlTX1NJTVBMRV9SRUwocmVsKSkKKwkJCWNvbnRpbnVlOworCisJ CXJlbF9ncm91cGVkID0gYnVpbGRfc2ltcGxlX2dyb3VwZWRfcmVsKHJvb3QsIHJlbC0+cmVsaWQs ICZhZ2dfaW5mbyk7CisJCWlmIChyZWxfZ3JvdXBlZCkKKwkJeworCQkJLyogTWFrZSB0aGUgZ3Jv dXBlZCByZWxhdGlvbiBhdmFpbGFibGUgZm9yIGpvaW5pbmcuICovCisJCQlhZGRfZ3JvdXBlZF9y ZWwocm9vdCwgcmVsX2dyb3VwZWQsIGFnZ19pbmZvKTsKKwkJfQorCX0KK30KKwogLyoKICAqIHNl dF9iYXNlX3JlbF9wYXRobGlzdHMKICAqCSAgRmluZHMgYWxsIHBhdGhzIGF2YWlsYWJsZSBmb3Ig c2Nhbm5pbmcgZWFjaCBiYXNlLXJlbGF0aW9uIGVudHJ5LgpAQCAtNTYyLDYgKzYyMiwxNSBAQCBz ZXRfcmVsX3BhdGhsaXN0KFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwsCiAJLyog Tm93IGZpbmQgdGhlIGNoZWFwZXN0IG9mIHRoZSBwYXRocyBmb3IgdGhpcyByZWwgKi8KIAlzZXRf Y2hlYXBlc3QocmVsKTsKIAorCS8qCisJICogSWYgYSBncm91cGVkIHJlbGF0aW9uIGZvciB0aGlz IHJlbCBleGlzdHMsIGJ1aWxkIHBhcnRpYWwgYWdncmVnYXRpb24KKwkgKiBwYXRocyBmb3IgaXQu CisJICoKKwkgKiBOb3RlIHRoYXQgdGhpcyBjYW4gb25seSBoYXBwZW4gYWZ0ZXIgd2UndmUgY2Fs bGVkIHNldF9jaGVhcGVzdCgpIGZvcgorCSAqIHRoaXMgYmFzZSByZWwsIGJlY2F1c2Ugd2UgbmVl ZCBpdHMgY2hlYXBlc3QgcGF0aHMuCisJICovCisJc2V0X2dyb3VwZWRfcmVsX3BhdGhsaXN0KHJv b3QsIHJlbCk7CisKICNpZmRlZiBPUFRJTUlaRVJfREVCVUcKIAlwcHJpbnQocmVsKTsKICNlbmRp ZgpAQCAtMTI4OSw2ICsxMzU4LDI4IEBAIHNldF9hcHBlbmRfcmVsX3BhdGhsaXN0KFBsYW5uZXJJ bmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwsCiAJYWRkX3BhdGhzX3RvX2FwcGVuZF9yZWwocm9v dCwgcmVsLCBsaXZlX2NoaWxkcmVscyk7CiB9CiAKKy8qCisgKiBzZXRfZ3JvdXBlZF9yZWxfcGF0 aGxpc3QKKyAqCSAgSWYgYSBncm91cGVkIHJlbGF0aW9uIGZvciB0aGUgZ2l2ZW4gJ3JlbCcgZXhp c3RzLCBidWlsZCBwYXJ0aWFsCisgKgkgIGFnZ3JlZ2F0aW9uIHBhdGhzIGZvciBpdC4KKyAqLwor c3RhdGljIHZvaWQKK3NldF9ncm91cGVkX3JlbF9wYXRobGlzdChQbGFubmVySW5mbyAqcm9vdCwg UmVsT3B0SW5mbyAqcmVsKQoreworCVJlbE9wdEluZm8gICAqcmVsX2dyb3VwZWQ7CisJUmVsQWdn SW5mbyAgICphZ2dfaW5mbzsKKworCS8qIEFkZCBwYXRocyB0byB0aGUgZ3JvdXBlZCBiYXNlIHJl bGF0aW9uIGlmIG9uZSBleGlzdHMuICovCisJcmVsX2dyb3VwZWQgPSBmaW5kX2dyb3VwZWRfcmVs KHJvb3QsIHJlbC0+cmVsaWRzLAorCQkJCQkJCQkgICAmYWdnX2luZm8pOworCWlmIChyZWxfZ3Jv dXBlZCkKKwl7CisJCWdlbmVyYXRlX2dyb3VwZWRfcGF0aHMocm9vdCwgcmVsX2dyb3VwZWQsIHJl bCwKKwkJCQkJCQkgICBhZ2dfaW5mbyk7CisJCXNldF9jaGVhcGVzdChyZWxfZ3JvdXBlZCk7CisJ fQorfQorCiAKIC8qCiAgKiBhZGRfcGF0aHNfdG9fYXBwZW5kX3JlbApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcmVsbm9kZS5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3V0aWwvcmVsbm9kZS5jCmluZGV4IGUwYjM2ODgwY2QuLmIyYjlkNjFjOTggMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3JlbG5vZGUuYworKysgYi9zcmMvYmFja2VuZC9v cHRpbWl6ZXIvdXRpbC9yZWxub2RlLmMKQEAgLTE2LDYgKzE2LDcgQEAKIAogI2luY2x1ZGUgPGxp bWl0cy5oPgogCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb25zdHJhaW50LmgiCiAjaW5jbHVkZSAi bWlzY2FkbWluLmgiCiAjaW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCiAjaW5jbHVkZSAib3B0 aW1pemVyL2FwcGVuZGluZm8uaCIKQEAgLTI3LDEyICsyOCwxNSBAQAogI2luY2x1ZGUgIm9wdGlt aXplci9wYXRocy5oIgogI2luY2x1ZGUgIm9wdGltaXplci9wbGFjZWhvbGRlci5oIgogI2luY2x1 ZGUgIm9wdGltaXplci9wbGFuY2F0LmgiCisjaW5jbHVkZSAib3B0aW1pemVyL3BsYW5uZXIuaCIK ICNpbmNsdWRlICJvcHRpbWl6ZXIvcmVzdHJpY3RpbmZvLmgiCiAjaW5jbHVkZSAib3B0aW1pemVy L3RsaXN0LmgiCiAjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRlTWFuaXAuaCIKKyNpbmNsdWRlICJw YXJzZXIvcGFyc2Vfb3Blci5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZV9yZWxhdGlvbi5oIgog I2luY2x1ZGUgInV0aWxzL2hzZWFyY2guaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIK KyNpbmNsdWRlICJ1dGlscy9zZWxmdW5jcy5oIgogCiAKIC8qCkBAIC00MTEsNiArNDE1LDEwMyBA QCBidWlsZF9zaW1wbGVfcmVsKFBsYW5uZXJJbmZvICpyb290LCBpbnQgcmVsaWQsIFJlbE9wdElu Zm8gKnBhcmVudCkKIAlyZXR1cm4gcmVsOwogfQogCisvKgorICogYnVpbGRfc2ltcGxlX2dyb3Vw ZWRfcmVsCisgKgkgIENvbnN0cnVjdCBhIG5ldyBSZWxPcHRJbmZvIGZvciBhIGdyb3VwZWQgYmFz ZSByZWxhdGlvbiBvdXQgb2YgYW4gZXhpc3RpbmcKKyAqCSAgbm9uLWdyb3VwZWQgYmFzZSByZWxh dGlvbi4KKyAqCisgKiBPbiBzdWNjZXNzLCB0aGUgbmV3IFJlbE9wdEluZm8gaXMgcmV0dXJuZWQg YW5kIHRoZSBjb3JyZXNwb25kaW5nIFJlbEFnZ0luZm8KKyAqIGlzIHN0b3JlZCBpbiAqYWdnX2lu Zm9fcC4KKyAqLworUmVsT3B0SW5mbyAqCitidWlsZF9zaW1wbGVfZ3JvdXBlZF9yZWwoUGxhbm5l ckluZm8gKnJvb3QsIGludCByZWxpZCwKKwkJCQkJCSBSZWxBZ2dJbmZvICoqYWdnX2luZm9fcCkK K3sKKwlSZWxPcHRJbmZvCSAgICpyZWxfcGxhaW47CisJUmVsT3B0SW5mbwkgICAqcmVsX2dyb3Vw ZWQ7CisJUmVsQWdnSW5mbwkgICAqYWdnX2luZm87CisKKwkvKgorCSAqIFdlIHNob3VsZCBoYXZl IGF2YWlsYWJsZSBhZ2dyZWdhdGUgZXhwcmVzc2lvbnMgYW5kIGdyb3VwaW5nIGV4cHJlc3Npb25z LAorCSAqIG90aGVyd2lzZSB3ZSBjYW5ub3QgcmVhY2ggaGVyZS4KKwkgKi8KKwlBc3NlcnQocm9v dC0+YWdnX2NsYXVzZV9saXN0ICE9IE5JTCk7CisJQXNzZXJ0KHJvb3QtPmdyb3VwX2V4cHJfbGlz dCAhPSBOSUwpOworCisJcmVsX3BsYWluID0gcm9vdC0+c2ltcGxlX3JlbF9hcnJheVtyZWxpZF07 CisJQXNzZXJ0KHJlbF9wbGFpbiAhPSBOVUxMKTsKKwlBc3NlcnQoSVNfU0lNUExFX1JFTChyZWxf cGxhaW4pKTsKKworCS8qIG5vdGhpbmcgdG8gZG8gZm9yIGR1bW15IHJlbCAqLworCWlmIChJU19E VU1NWV9SRUwocmVsX3BsYWluKSkKKwkJcmV0dXJuIE5VTEw7CisKKwkvKgorCSAqIFByZXBhcmUg dGhlIGluZm9ybWF0aW9uIHdlIG5lZWQgdG8gY3JlYXRlIGdyb3VwZWQgcGF0aHMgZm9yIHRoaXMg YmFzZQorCSAqIHJlbGF0aW9uLgorCSAqLworCWFnZ19pbmZvID0gY3JlYXRlX3JlbF9hZ2dfaW5m byhyb290LCByZWxfcGxhaW4pOworCWlmIChhZ2dfaW5mbyA9PSBOVUxMKQorCQlyZXR1cm4gTlVM TDsKKworCS8qIGJ1aWxkIGEgZ3JvdXBlZCByZWxhdGlvbiBvdXQgb2YgdGhlIHBsYWluIHJlbGF0 aW9uICovCisJcmVsX2dyb3VwZWQgPSBidWlsZF9ncm91cGVkX3JlbChyb290LCByZWxfcGxhaW4p OworCXJlbF9ncm91cGVkLT5yZWx0YXJnZXQgPSBhZ2dfaW5mby0+dGFyZ2V0OworCXJlbF9ncm91 cGVkLT5yb3dzID0gYWdnX2luZm8tPmdyb3VwZWRfcm93czsKKworCS8qIHJldHVybiB0aGUgUmVs QWdnSW5mbyBzdHJ1Y3R1cmUgKi8KKwkqYWdnX2luZm9fcCA9IGFnZ19pbmZvOworCisJcmV0dXJu IHJlbF9ncm91cGVkOworfQorCisvKgorICogYnVpbGRfZ3JvdXBlZF9yZWwKKyAqCSAgQnVpbGQg YSBncm91cGVkIHJlbGF0aW9uIGJ5IGZsYXQgY29weWluZyBhIHBsYWluIHJlbGF0aW9uIGFuZCBy ZXNldHRpbmcKKyAqCSAgdGhlIG5lY2Vzc2FyeSBmaWVsZHMuCisgKi8KK1JlbE9wdEluZm8gKgor YnVpbGRfZ3JvdXBlZF9yZWwoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbF9wbGFp bikKK3sKKwlSZWxPcHRJbmZvICAgKnJlbF9ncm91cGVkOworCisJcmVsX2dyb3VwZWQgPSBtYWtl Tm9kZShSZWxPcHRJbmZvKTsKKwltZW1jcHkocmVsX2dyb3VwZWQsIHJlbF9wbGFpbiwgc2l6ZW9m KFJlbE9wdEluZm8pKTsKKworCS8qCisJICogY2xlYXIgcGF0aCBpbmZvCisJICovCisJcmVsX2dy b3VwZWQtPnBhdGhsaXN0ID0gTklMOworCXJlbF9ncm91cGVkLT5wcGlsaXN0ID0gTklMOworCXJl bF9ncm91cGVkLT5wYXJ0aWFsX3BhdGhsaXN0ID0gTklMOworCXJlbF9ncm91cGVkLT5jaGVhcGVz dF9zdGFydHVwX3BhdGggPSBOVUxMOworCXJlbF9ncm91cGVkLT5jaGVhcGVzdF90b3RhbF9wYXRo ID0gTlVMTDsKKwlyZWxfZ3JvdXBlZC0+Y2hlYXBlc3RfdW5pcXVlX3BhdGggPSBOVUxMOworCXJl bF9ncm91cGVkLT5jaGVhcGVzdF9wYXJhbWV0ZXJpemVkX3BhdGhzID0gTklMOworCisJLyoKKwkg KiBjbGVhciBwYXJ0aXRpb24gaW5mbworCSAqLworCXJlbF9ncm91cGVkLT5wYXJ0X3NjaGVtZSA9 IE5VTEw7CisJcmVsX2dyb3VwZWQtPm5wYXJ0cyA9IC0xOworCXJlbF9ncm91cGVkLT5ib3VuZGlu Zm8gPSBOVUxMOworCXJlbF9ncm91cGVkLT5wYXJ0Ym91bmRzX21lcmdlZCA9IGZhbHNlOworCXJl bF9ncm91cGVkLT5wYXJ0aXRpb25fcXVhbCA9IE5JTDsKKwlyZWxfZ3JvdXBlZC0+cGFydF9yZWxz ID0gTlVMTDsKKwlyZWxfZ3JvdXBlZC0+bGl2ZV9wYXJ0cyA9IE5VTEw7CisJcmVsX2dyb3VwZWQt PmFsbF9wYXJ0cmVscyA9IE5VTEw7CisJcmVsX2dyb3VwZWQtPnBhcnRleHBycyA9IE5VTEw7CisJ cmVsX2dyb3VwZWQtPm51bGxhYmxlX3BhcnRleHBycyA9IE5VTEw7CisJcmVsX2dyb3VwZWQtPmNv bnNpZGVyX3BhcnRpdGlvbndpc2Vfam9pbiA9IGZhbHNlOworCisJLyoKKwkgKiBjbGVhciBzaXpl IGVzdGltYXRlcworCSAqLworCXJlbF9ncm91cGVkLT5yb3dzID0gMDsKKworCXJldHVybiByZWxf Z3JvdXBlZDsKK30KKwogLyoKICAqIGZpbmRfYmFzZV9yZWwKICAqCSAgRmluZCBhIGJhc2Ugb3Ig b3RoZXJyZWwgcmVsYXRpb24gZW50cnksIHdoaWNoIG11c3QgYWxyZWFkeSBleGlzdC4KZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL29wdGltaXplci9wYXRobm9kZS5oIGIvc3JjL2luY2x1ZGUvb3B0 aW1pemVyL3BhdGhub2RlLmgKaW5kZXggOGQwM2NlMmM1Ny4uNmI4NTZhNWU3NyAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhub2RlLmgKKysrIGIvc3JjL2luY2x1ZGUvb3B0 aW1pemVyL3BhdGhub2RlLmgKQEAgLTMwNiw2ICszMDYsMTAgQEAgZXh0ZXJuIHZvaWQgc2V0dXBf c2ltcGxlX3JlbF9hcnJheXMoUGxhbm5lckluZm8gKnJvb3QpOwogZXh0ZXJuIHZvaWQgZXhwYW5k X3BsYW5uZXJfYXJyYXlzKFBsYW5uZXJJbmZvICpyb290LCBpbnQgYWRkX3NpemUpOwogZXh0ZXJu IFJlbE9wdEluZm8gKmJ1aWxkX3NpbXBsZV9yZWwoUGxhbm5lckluZm8gKnJvb3QsIGludCByZWxp ZCwKIAkJCQkJCQkJCVJlbE9wdEluZm8gKnBhcmVudCk7CitleHRlcm4gUmVsT3B0SW5mbyAqYnVp bGRfc2ltcGxlX2dyb3VwZWRfcmVsKFBsYW5uZXJJbmZvICpyb290LCBpbnQgcmVsaWQsCisJCQkJ CQkJCQkJCVJlbEFnZ0luZm8gKiphZ2dfaW5mb19wKTsKK2V4dGVybiBSZWxPcHRJbmZvICpidWls ZF9ncm91cGVkX3JlbChQbGFubmVySW5mbyAqcm9vdCwKKwkJCQkJCQkJCSBSZWxPcHRJbmZvICpy ZWxfcGxhaW4pOwogZXh0ZXJuIFJlbE9wdEluZm8gKmZpbmRfYmFzZV9yZWwoUGxhbm5lckluZm8g KnJvb3QsIGludCByZWxpZCk7CiBleHRlcm4gUmVsT3B0SW5mbyAqZmluZF9iYXNlX3JlbF9ub2Vy cihQbGFubmVySW5mbyAqcm9vdCwgaW50IHJlbGlkKTsKIGV4dGVybiBSZWxPcHRJbmZvICpmaW5k X2Jhc2VfcmVsX2lnbm9yZV9qb2luKFBsYW5uZXJJbmZvICpyb290LCBpbnQgcmVsaWQpOwotLSAK Mi4zMS4wCgo= --00000000000075de670612e805e8 Content-Type: application/octet-stream; name="v3-0007-Build-grouped-relations-out-of-join-relations.patch" Content-Disposition: attachment; filename="v3-0007-Build-grouped-relations-out-of-join-relations.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ltea1bgo6 RnJvbSA5ODFlNzExZWRjYzJkZGU4OWIxYmI1YjAwZDQ1YmEwMGJjMmQxYWI2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4K RGF0ZTogRnJpLCAyMyBGZWIgMjAyNCAxMzozMzowOSArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjMg Ny85XSBCdWlsZCBncm91cGVkIHJlbGF0aW9ucyBvdXQgb2Ygam9pbiByZWxhdGlvbnMKClRoaXMg Y29tbWl0IGJ1aWxkcyBncm91cGVkIHJlbGF0aW9ucyBmb3IgZWFjaCBqdXN0LXByb2Nlc3NlZCBq b2luCnJlbGF0aW9uIGlmIHBvc3NpYmxlLCBhbmQgZ2VuZXJhdGVzIGFnZ3JlZ2F0aW9uIHBhdGhz IGZvciB0aGUgZ3JvdXBlZApqb2luIHJlbGF0aW9ucy4KClRoZSBjaGFuZ2VzIG1hZGUgdG8gbWFr ZV9qb2luX3JlbCgpIGFyZSByZWxhdGl2ZWx5IG1pbm9yLCB3aXRoIHRoZQphZGRpdGlvbiBvZiBh IG5ldyBmdW5jdGlvbiBtYWtlX2dyb3VwZWRfam9pbl9yZWwoKSwgd2hpY2ggZmluZHMgb3IKY3Jl YXRlcyBhIGdyb3VwZWQgcmVsYXRpb24gZm9yIHRoZSBqdXN0LXByb2Nlc3NlZCBqb2lucmVsLCBh bmQgZ2VuZXJhdGVzCmdyb3VwZWQgcGF0aHMgYnkgam9pbmluZyBhIGdyb3VwZWQgaW5wdXQgcmVs YXRpb24gd2l0aCBhIG5vbi1ncm91cGVkCmlucHV0IHJlbGF0aW9uLgoKVGhlIG90aGVyIHdheSB0 byBnZW5lcmF0ZSBncm91cGVkIHBhdGhzIGlzIGJ5IGFkZGluZyBzb3J0ZWQgYW5kIGhhc2hlZApw YXJ0aWFsIGFnZ3JlZ2F0aW9uIHBhdGhzIG9uIHRvcCBvZiBwYXRocyBvZiB0aGUgam9pbnJlbC4g IFRoaXMgb2NjdXJzCmluIHN0YW5kYXJkX2pvaW5fc2VhcmNoKCksIGFmdGVyIHdlJ3ZlIHJ1biBz ZXRfY2hlYXBlc3QoKSBmb3IgdGhlCmpvaW5yZWwuICBUaGUgcmVhc29uIGZvciBwZXJmb3JtaW5n IHRoaXMgc3RlcCBhZnRlciBzZXRfY2hlYXBlc3QoKSBpcwp0aGF0IHdlIG5lZWQgdG8ga25vdyB0 aGUgam9pbnJlbCdzIGNoZWFwZXN0IHBhdGhzIChzZWUKZ2VuZXJhdGVfZ3JvdXBlZF9wYXRocygp KS4KClRoaXMgcGF0Y2ggYWxzbyBtYWtlcyB0aGUgZ3JvdXBlZCByZWxhdGlvbiBmb3IgdGhlIHRv cG1vc3Qgam9pbiByZWwgYWN0CmFzIHRoZSB1cHBlciByZWwgcmVwcmVzZW50aW5nIHRoZSByZXN1 bHQgb2YgcGFydGlhbCBhZ2dyZWdhdGlvbiwgc28gdGhhdAp3ZSBjYW4gYWRkIHRoZSBmaW5hbCBh Z2dyZWdhdGlvbiBvbiB0b3Agb2YgdGhhdC4gIEFkZGl0aW9uYWxseSwgdGhpcwpwYXRjaCBleHRl bmRzIHRoZSBmdW5jdGlvbmFsaXR5IG9mIGVhZ2VyIGFnZ3JlZ2F0aW9uIHRvIHdvcmsgd2l0aApw YXJ0aXRpb253aXNlIGpvaW4gYW5kIGdlcW8uCgpUaGlzIHBhdGNoIGFsc28gbWFrZXMgZWFnZXIg YWdncmVnYXRpb24gd29yayB3aXRoIG91dGVyIGpvaW5zLiAgV2l0aApvdXRlciBqb2lucywgdGhl IGFnZ3JlZ2F0ZSBjYW5ub3QgYmUgcHVzaGVkIGRvd24gaWYgYW55IGNvbHVtbgpyZWZlcmVuY2Vk IGJ5IGdyb3VwaW5nIGV4cHJlc3Npb25zIG9yIGFnZ3JlZ2F0ZSBmdW5jdGlvbnMgaXMgbnVsbGFi bGUgYnkKYW4gb3V0ZXIgam9pbiBhYm92ZSB0aGUgcmVsYXRpb24gdG8gd2hpY2ggd2Ugd2FudCB0 byBhcHBseSB0aGUgcGFydGlhbAphZ2dyZWdhdGlvbi4gIFRoYW5rcyB0byBUb20ncyBvdXRlci1q b2luLWF3YXJlLVZhciBpbmZyYXN0cnVjdHVyZSwgd2UKY2FuIGVhc2lseSBpZGVudGlmeSBzdWNo IHNpdHVhdGlvbnMgYW5kIHN1YnNlcXVlbnRseSByZWZyYWluIGZyb20KcHVzaGluZyBkb3duIHRo ZSBhZ2dyZWdhdGVzLgoKU3RhcnRpbmcgZnJvbSB0aGlzIHBhdGNoLCB5b3Ugc2hvdWxkIGJlIGFi bGUgdG8gc2VlIHBsYW5zIHdpdGggZWFnZXIKYWdncmVnYXRpb24uCi0tLQogc3JjL2JhY2tlbmQv b3B0aW1pemVyL2dlcW8vZ2Vxb19ldmFsLmMgIHwgIDg0ICsrKysrKysrKysrKystLS0tCiBzcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9hbGxwYXRocy5jICAgfCAgNDggKysrKysrKysrKwogc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvam9pbnJlbHMuYyAgIHwgMTE1ICsrKysrKysrKysrKysr KysrKysrKysrKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jICAgIHwgIDM1 ICsrKysrKy0tCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9hcHBlbmRpbmZvLmMgfCAgNjQg KysrKysrKysrKysrKwogNSBmaWxlcyBjaGFuZ2VkLCAzMjAgaW5zZXJ0aW9ucygrKSwgMjYgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL2dlcW8vZ2Vxb19l dmFsLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvZ2Vxby9nZXFvX2V2YWwuYwppbmRleCAxMTQx MTU2ODk5Li4yNzg4NTdkNzY3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvZ2Vx by9nZXFvX2V2YWwuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvZ2Vxby9nZXFvX2V2YWwu YwpAQCAtNjAsOCArNjAsMTIgQEAgZ2Vxb19ldmFsKFBsYW5uZXJJbmZvICpyb290LCBHZW5lICp0 b3VyLCBpbnQgbnVtX2dlbmUpCiAJTWVtb3J5Q29udGV4dCBvbGRjeHQ7CiAJUmVsT3B0SW5mbyAq am9pbnJlbDsKIAlDb3N0CQlmaXRuZXNzOwotCWludAkJCXNhdmVsZW5ndGg7Ci0Jc3RydWN0IEhU QUIgKnNhdmVoYXNoOworCWludAkJCXNhdmVsZW5ndGhfam9pbl9yZWw7CisJc3RydWN0IEhUQUIg KnNhdmVoYXNoX2pvaW5fcmVsOworCWludAkJCXNhdmVsZW5ndGhfZ3JvdXBlZF9yZWw7CisJc3Ry dWN0IEhUQUIgKnNhdmVoYXNoX2dyb3VwZWRfcmVsOworCWludAkJCXNhdmVsZW5ndGhfZ3JvdXBl ZF9pbmZvOworCXN0cnVjdCBIVEFCICpzYXZlaGFzaF9ncm91cGVkX2luZm87CiAKIAkvKgogCSAq IENyZWF0ZSBhIHByaXZhdGUgbWVtb3J5IGNvbnRleHQgdGhhdCB3aWxsIGhvbGQgYWxsIHRlbXAg c3RvcmFnZQpAQCAtNzgsMjUgKzgyLDM4IEBAIGdlcW9fZXZhbChQbGFubmVySW5mbyAqcm9vdCwg R2VuZSAqdG91ciwgaW50IG51bV9nZW5lKQogCW9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hU byhteWNvbnRleHQpOwogCiAJLyoKLQkgKiBnaW1tZV90cmVlIHdpbGwgYWRkIGVudHJpZXMgdG8g cm9vdC0+am9pbl9yZWxfbGlzdCwgd2hpY2ggbWF5IG9yIG1heQotCSAqIG5vdCBhbHJlYWR5IGNv bnRhaW4gc29tZSBlbnRyaWVzLiAgVGhlIG5ld2x5IGFkZGVkIGVudHJpZXMgd2lsbCBiZQotCSAq IHJlY3ljbGVkIGJ5IHRoZSBNZW1vcnlDb250ZXh0RGVsZXRlIGJlbG93LCBzbyB3ZSBtdXN0IGVu c3VyZSB0aGF0IHRoZQotCSAqIGxpc3QgaXMgcmVzdG9yZWQgdG8gaXRzIGZvcm1lciBzdGF0ZSBi ZWZvcmUgZXhpdGluZy4gIFdlIGNhbiBkbyB0aGlzIGJ5Ci0JICogdHJ1bmNhdGluZyB0aGUgbGlz dCB0byBpdHMgb3JpZ2luYWwgbGVuZ3RoLiAgTk9URSB0aGlzIGFzc3VtZXMgdGhhdCBhbnkKLQkg KiBhZGRlZCBlbnRyaWVzIGFyZSBhcHBlbmRlZCBhdCB0aGUgZW5kIQorCSAqIGdpbW1lX3RyZWUg d2lsbCBhZGQgZW50cmllcyB0byByb290LT5qb2luX3JlbF9saXN0LCByb290LT5hZ2dfaW5mb19s aXN0CisJICogYW5kIHJvb3QtPnVwcGVyX3JlbHNbVVBQRVJSRUxfUEFSVElBTF9HUk9VUF9BR0dd LCB3aGljaCBtYXkgb3IgbWF5IG5vdAorCSAqIGFscmVhZHkgY29udGFpbiBzb21lIGVudHJpZXMu ICBUaGUgbmV3bHkgYWRkZWQgZW50cmllcyB3aWxsIGJlIHJlY3ljbGVkCisJICogYnkgdGhlIE1l bW9yeUNvbnRleHREZWxldGUgYmVsb3csIHNvIHdlIG11c3QgZW5zdXJlIHRoYXQgZWFjaCBsaXN0 IG9mCisJICogdGhlIFJlbEluZm9MaXN0IHN0cnVjdHVyZXMgaXMgcmVzdG9yZWQgdG8gaXRzIGZv cm1lciBzdGF0ZSBiZWZvcmUKKwkgKiBleGl0aW5nLiAgV2UgY2FuIGRvIHRoaXMgYnkgdHJ1bmNh dGluZyBlYWNoIGxpc3QgdG8gaXRzIG9yaWdpbmFsIGxlbmd0aC4KKwkgKiBOT1RFIHRoaXMgYXNz dW1lcyB0aGF0IGFueSBhZGRlZCBlbnRyaWVzIGFyZSBhcHBlbmRlZCBhdCB0aGUgZW5kIQogCSAq Ci0JICogV2UgYWxzbyBtdXN0IHRha2UgY2FyZSBub3QgdG8gbWVzcyB1cCB0aGUgb3V0ZXIgam9p bl9yZWxfbGlzdC0+aGFzaCwgaWYKLQkgKiB0aGVyZSBpcyBvbmUuICBXZSBjYW4gZG8gdGhpcyBi eSBqdXN0IHRlbXBvcmFyaWx5IHNldHRpbmcgdGhlIGxpbmsgdG8KLQkgKiBOVUxMLiAgKElmIHdl IGFyZSBkZWFsaW5nIHdpdGggZW5vdWdoIGpvaW4gcmVscywgd2hpY2ggd2UgdmVyeSBsaWtlbHkK LQkgKiBhcmUsIGEgbmV3IGhhc2ggdGFibGUgd2lsbCBnZXQgYnVpbHQgYW5kIHVzZWQgbG9jYWxs eS4pCisJICogV2UgYWxzbyBtdXN0IHRha2UgY2FyZSBub3QgdG8gbWVzcyB1cCB0aGUgb3V0ZXIg aGFzaCB0YWJsZXMgb2YgdGhlCisJICogUmVsSW5mb0xpc3Qgc3RydWN0dXJlcywgaWYgYW55LiAg V2UgY2FuIGRvIHRoaXMgYnkganVzdCB0ZW1wb3JhcmlseQorCSAqIHNldHRpbmcgZWFjaCBsaW5r IHRvIE5VTEwuICAoSWYgd2UgYXJlIGRlYWxpbmcgd2l0aCBlbm91Z2ggam9pbiByZWxzLAorCSAq IHdoaWNoIHdlIHZlcnkgbGlrZWx5IGFyZSwgbmV3IGhhc2ggdGFibGVzIHdpbGwgZ2V0IGJ1aWx0 IGFuZCB1c2VkCisJICogbG9jYWxseS4pCiAJICoKIAkgKiBqb2luX3JlbF9sZXZlbFtdIHNob3Vs ZG4ndCBiZSBpbiB1c2UsIHNvIGp1c3QgQXNzZXJ0IGl0IGlzbid0LgogCSAqLwotCXNhdmVsZW5n dGggPSBsaXN0X2xlbmd0aChyb290LT5qb2luX3JlbF9saXN0LT5pdGVtcyk7Ci0Jc2F2ZWhhc2gg PSByb290LT5qb2luX3JlbF9saXN0LT5oYXNoOworCXNhdmVsZW5ndGhfam9pbl9yZWwgPSBsaXN0 X2xlbmd0aChyb290LT5qb2luX3JlbF9saXN0LT5pdGVtcyk7CisJc2F2ZWhhc2hfam9pbl9yZWwg PSByb290LT5qb2luX3JlbF9saXN0LT5oYXNoOworCisJc2F2ZWxlbmd0aF9ncm91cGVkX3JlbCA9 CisJCWxpc3RfbGVuZ3RoKHJvb3QtPnVwcGVyX3JlbHNbVVBQRVJSRUxfUEFSVElBTF9HUk9VUF9B R0ddLml0ZW1zKTsKKwlzYXZlaGFzaF9ncm91cGVkX3JlbCA9CisJCXJvb3QtPnVwcGVyX3JlbHNb VVBQRVJSRUxfUEFSVElBTF9HUk9VUF9BR0ddLmhhc2g7CisKKwlzYXZlbGVuZ3RoX2dyb3VwZWRf aW5mbyA9IGxpc3RfbGVuZ3RoKHJvb3QtPmFnZ19pbmZvX2xpc3QtPml0ZW1zKTsKKwlzYXZlaGFz aF9ncm91cGVkX2luZm8gPSByb290LT5hZ2dfaW5mb19saXN0LT5oYXNoOworCiAJQXNzZXJ0KHJv b3QtPmpvaW5fcmVsX2xldmVsID09IE5VTEwpOwogCiAJcm9vdC0+am9pbl9yZWxfbGlzdC0+aGFz aCA9IE5VTEw7CisJcm9vdC0+dXBwZXJfcmVsc1tVUFBFUlJFTF9QQVJUSUFMX0dST1VQX0FHR10u aGFzaCA9IE5VTEw7CisJcm9vdC0+YWdnX2luZm9fbGlzdC0+aGFzaCA9IE5VTEw7CiAKIAkvKiBj b25zdHJ1Y3QgdGhlIGJlc3QgcGF0aCBmb3IgdGhlIGdpdmVuIGNvbWJpbmF0aW9uIG9mIHJlbGF0 aW9ucyAqLwogCWpvaW5yZWwgPSBnaW1tZV90cmVlKHJvb3QsIHRvdXIsIG51bV9nZW5lKTsKQEAg LTExOCwxMiArMTM1LDIyIEBAIGdlcW9fZXZhbChQbGFubmVySW5mbyAqcm9vdCwgR2VuZSAqdG91 ciwgaW50IG51bV9nZW5lKQogCQlmaXRuZXNzID0gREJMX01BWDsKIAogCS8qCi0JICogUmVzdG9y ZSBqb2luX3JlbF9saXN0IHRvIGl0cyBmb3JtZXIgc3RhdGUsIGFuZCBwdXQgYmFjayBvcmlnaW5h bAotCSAqIGhhc2h0YWJsZSBpZiBhbnkuCisJICogUmVzdG9yZSBlYWNoIG9mIHRoZSBsaXN0IGlu IGpvaW5fcmVsX2xpc3QsIGFnZ19pbmZvX2xpc3QgYW5kCisJICogdXBwZXJfcmVsc1tVUFBFUlJF TF9QQVJUSUFMX0dST1VQX0FHR10gdG8gaXRzIGZvcm1lciBzdGF0ZSwgYW5kIHB1dCBiYWNrCisJ ICogb3JpZ2luYWwgaGFzaHRhYmxlIGlmIGFueS4KIAkgKi8KIAlyb290LT5qb2luX3JlbF9saXN0 LT5pdGVtcyA9IGxpc3RfdHJ1bmNhdGUocm9vdC0+am9pbl9yZWxfbGlzdC0+aXRlbXMsCi0JCQkJ CQkJCQkJCSAgIHNhdmVsZW5ndGgpOwotCXJvb3QtPmpvaW5fcmVsX2xpc3QtPmhhc2ggPSBzYXZl aGFzaDsKKwkJCQkJCQkJCQkJICAgc2F2ZWxlbmd0aF9qb2luX3JlbCk7CisJcm9vdC0+am9pbl9y ZWxfbGlzdC0+aGFzaCA9IHNhdmVoYXNoX2pvaW5fcmVsOworCisJcm9vdC0+dXBwZXJfcmVsc1tV UFBFUlJFTF9QQVJUSUFMX0dST1VQX0FHR10uaXRlbXMgPQorCQlsaXN0X3RydW5jYXRlKHJvb3Qt PnVwcGVyX3JlbHNbVVBQRVJSRUxfUEFSVElBTF9HUk9VUF9BR0ddLml0ZW1zLAorCQkJCQkgIHNh dmVsZW5ndGhfZ3JvdXBlZF9yZWwpOworCXJvb3QtPnVwcGVyX3JlbHNbVVBQRVJSRUxfUEFSVElB TF9HUk9VUF9BR0ddLmhhc2ggPSBzYXZlaGFzaF9ncm91cGVkX3JlbDsKKworCXJvb3QtPmFnZ19p bmZvX2xpc3QtPml0ZW1zID0gbGlzdF90cnVuY2F0ZShyb290LT5hZ2dfaW5mb19saXN0LT5pdGVt cywKKwkJCQkJCQkJCQkJICAgc2F2ZWxlbmd0aF9ncm91cGVkX2luZm8pOworCXJvb3QtPmFnZ19p bmZvX2xpc3QtPmhhc2ggPSBzYXZlaGFzaF9ncm91cGVkX2luZm87CiAKIAkvKiByZWxlYXNlIGFs bCB0aGUgbWVtb3J5IGFjcXVpcmVkIHdpdGhpbiBnaW1tZV90cmVlICovCiAJTWVtb3J5Q29udGV4 dFN3aXRjaFRvKG9sZGN4dCk7CkBAIC0yNzksNiArMzA2LDI3IEBAIG1lcmdlX2NsdW1wKFBsYW5u ZXJJbmZvICpyb290LCBMaXN0ICpjbHVtcHMsIENsdW1wICpuZXdfY2x1bXAsIGludCBudW1fZ2Vu ZSwKIAkJCQkvKiBGaW5kIGFuZCBzYXZlIHRoZSBjaGVhcGVzdCBwYXRocyBmb3IgdGhpcyBqb2lu cmVsICovCiAJCQkJc2V0X2NoZWFwZXN0KGpvaW5yZWwpOwogCisJCQkJLyoKKwkJCQkgKiBFeGNl cHQgZm9yIHRoZSB0b3Btb3N0IHNjYW4vam9pbiByZWwsIGNvbnNpZGVyIGdlbmVyYXRpbmcKKwkJ CQkgKiBwYXJ0aWFsIGFnZ3JlZ2F0aW9uIHBhdGhzIGZvciB0aGUgZ3JvdXBlZCByZWxhdGlvbiBv biB0b3Agb2YgdGhlCisJCQkJICogcGF0aHMgb2YgdGhpcyByZWwuICBBZnRlciB0aGF0LCB3ZSdy ZSBkb25lIGNyZWF0aW5nIHBhdGhzIGZvcgorCQkJCSAqIHRoZSBncm91cGVkIHJlbGF0aW9uLCBz byBydW4gc2V0X2NoZWFwZXN0KCkuCisJCQkJICovCisJCQkJaWYgKCFibXNfZXF1YWwoam9pbnJl bC0+cmVsaWRzLCByb290LT5hbGxfcXVlcnlfcmVscykpCisJCQkJeworCQkJCQlSZWxPcHRJbmZv ICAgKnJlbF9ncm91cGVkOworCQkJCQlSZWxBZ2dJbmZvICAgKmFnZ19pbmZvOworCisJCQkJCXJl bF9ncm91cGVkID0gZmluZF9ncm91cGVkX3JlbChyb290LCBqb2lucmVsLT5yZWxpZHMsCisJCQkJ CQkJCQkJCQkgICAmYWdnX2luZm8pOworCQkJCQlpZiAocmVsX2dyb3VwZWQpCisJCQkJCXsKKwkJ CQkJCWdlbmVyYXRlX2dyb3VwZWRfcGF0aHMocm9vdCwgcmVsX2dyb3VwZWQsIGpvaW5yZWwsCisJ CQkJCQkJCQkJCSAgIGFnZ19pbmZvKTsKKwkJCQkJCXNldF9jaGVhcGVzdChyZWxfZ3JvdXBlZCk7 CisJCQkJCX0KKwkJCQl9CisKIAkJCQkvKiBBYnNvcmIgbmV3IGNsdW1wIGludG8gb2xkICovCiAJ CQkJb2xkX2NsdW1wLT5qb2lucmVsID0gam9pbnJlbDsKIAkJCQlvbGRfY2x1bXAtPnNpemUgKz0g bmV3X2NsdW1wLT5zaXplOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgv YWxscGF0aHMuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2FsbHBhdGhzLmMKaW5kZXgg YjIxZjIxNTg5YS4uNjhhZTdlZjQ3ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3BhdGgvYWxscGF0aHMuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9hbGxwYXRo cy5jCkBAIC0zODYxLDYgKzM4NjEsMTAgQEAgc3RhbmRhcmRfam9pbl9zZWFyY2goUGxhbm5lcklu Zm8gKnJvb3QsIGludCBsZXZlbHNfbmVlZGVkLCBMaXN0ICppbml0aWFsX3JlbHMpCiAJCSAqCiAJ CSAqIEFmdGVyIHRoYXQsIHdlJ3JlIGRvbmUgY3JlYXRpbmcgcGF0aHMgZm9yIHRoZSBqb2lucmVs LCBzbyBydW4KIAkJICogc2V0X2NoZWFwZXN0KCkuCisJCSAqCisJCSAqIEluIGFkZGl0aW9uLCB3 ZSBhbHNvIHJ1biBnZW5lcmF0ZV9ncm91cGVkX3BhdGhzKCkgZm9yIHRoZSBncm91cGVkCisJCSAq IHJlbGF0aW9uIG9mIGVhY2gganVzdC1wcm9jZXNzZWQgam9pbnJlbCwgYW5kIHJ1biBzZXRfY2hl YXBlc3QoKSBmb3IKKwkJICogdGhlIGdyb3VwZWQgcmVsYXRpb24gYWZ0ZXJ3YXJkcy4KIAkJICov CiAJCWZvcmVhY2gobGMsIHJvb3QtPmpvaW5fcmVsX2xldmVsW2xldl0pCiAJCXsKQEAgLTM4ODEs NiArMzg4NSwyNyBAQCBzdGFuZGFyZF9qb2luX3NlYXJjaChQbGFubmVySW5mbyAqcm9vdCwgaW50 IGxldmVsc19uZWVkZWQsIExpc3QgKmluaXRpYWxfcmVscykKIAkJCS8qIEZpbmQgYW5kIHNhdmUg dGhlIGNoZWFwZXN0IHBhdGhzIGZvciB0aGlzIHJlbCAqLwogCQkJc2V0X2NoZWFwZXN0KHJlbCk7 CiAKKwkJCS8qCisJCQkgKiBFeGNlcHQgZm9yIHRoZSB0b3Btb3N0IHNjYW4vam9pbiByZWwsIGNv bnNpZGVyIGdlbmVyYXRpbmcKKwkJCSAqIHBhcnRpYWwgYWdncmVnYXRpb24gcGF0aHMgZm9yIHRo ZSBncm91cGVkIHJlbGF0aW9uIG9uIHRvcCBvZiB0aGUKKwkJCSAqIHBhdGhzIG9mIHRoaXMgcmVs LiAgQWZ0ZXIgdGhhdCwgd2UncmUgZG9uZSBjcmVhdGluZyBwYXRocyBmb3IKKwkJCSAqIHRoZSBn cm91cGVkIHJlbGF0aW9uLCBzbyBydW4gc2V0X2NoZWFwZXN0KCkuCisJCQkgKi8KKwkJCWlmICgh Ym1zX2VxdWFsKHJlbC0+cmVsaWRzLCByb290LT5hbGxfcXVlcnlfcmVscykpCisJCQl7CisJCQkJ UmVsT3B0SW5mbyAgICpyZWxfZ3JvdXBlZDsKKwkJCQlSZWxBZ2dJbmZvICAgKmFnZ19pbmZvOwor CisJCQkJcmVsX2dyb3VwZWQgPSBmaW5kX2dyb3VwZWRfcmVsKHJvb3QsIHJlbC0+cmVsaWRzLAor CQkJCQkJCQkJCQkgICAmYWdnX2luZm8pOworCQkJCWlmIChyZWxfZ3JvdXBlZCkKKwkJCQl7CisJ CQkJCWdlbmVyYXRlX2dyb3VwZWRfcGF0aHMocm9vdCwgcmVsX2dyb3VwZWQsIHJlbCwKKwkJCQkJ CQkJCQkgICBhZ2dfaW5mbyk7CisJCQkJCXNldF9jaGVhcGVzdChyZWxfZ3JvdXBlZCk7CisJCQkJ fQorCQkJfQorCiAjaWZkZWYgT1BUSU1JWkVSX0RFQlVHCiAJCQlwcHJpbnQocmVsKTsKICNlbmRp ZgpAQCAtNDc0OSw2ICs0Nzc0LDI5IEBAIGdlbmVyYXRlX3BhcnRpdGlvbndpc2Vfam9pbl9wYXRo cyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsKQogCQlpZiAoSVNfRFVNTVlfUkVM KGNoaWxkX3JlbCkpCiAJCQljb250aW51ZTsKIAorCQkvKgorCQkgKiBFeGNlcHQgZm9yIHRoZSB0 b3Btb3N0IHNjYW4vam9pbiByZWwsIGNvbnNpZGVyIGdlbmVyYXRpbmcgcGFydGlhbAorCQkgKiBh Z2dyZWdhdGlvbiBwYXRocyBmb3IgdGhlIGdyb3VwZWQgcmVsYXRpb24gb24gdG9wIG9mIHRoZSBw YXRocyBvZgorCQkgKiB0aGlzIHBhcnRpdGlvbmVkIGNoaWxkLWpvaW4uICBBZnRlciB0aGF0LCB3 ZSdyZSBkb25lIGNyZWF0aW5nIHBhdGhzCisJCSAqIGZvciB0aGUgZ3JvdXBlZCByZWxhdGlvbiwg c28gcnVuIHNldF9jaGVhcGVzdCgpLgorCQkgKi8KKwkJaWYgKCFibXNfZXF1YWwoSVNfT1RIRVJf UkVMKHJlbCkgPworCQkJCQkgICByZWwtPnRvcF9wYXJlbnRfcmVsaWRzIDogcmVsLT5yZWxpZHMs CisJCQkJCSAgIHJvb3QtPmFsbF9xdWVyeV9yZWxzKSkKKwkJeworCQkJUmVsT3B0SW5mbyAgICpy ZWxfZ3JvdXBlZDsKKwkJCVJlbEFnZ0luZm8gICAqYWdnX2luZm87CisKKwkJCXJlbF9ncm91cGVk ID0gZmluZF9ncm91cGVkX3JlbChyb290LCBjaGlsZF9yZWwtPnJlbGlkcywKKwkJCQkJCQkJCQkg ICAmYWdnX2luZm8pOworCQkJaWYgKHJlbF9ncm91cGVkKQorCQkJeworCQkJCWdlbmVyYXRlX2dy b3VwZWRfcGF0aHMocm9vdCwgcmVsX2dyb3VwZWQsIGNoaWxkX3JlbCwKKwkJCQkJCQkJCSAgIGFn Z19pbmZvKTsKKwkJCQlzZXRfY2hlYXBlc3QocmVsX2dyb3VwZWQpOworCQkJfQorCQl9CisKICNp ZmRlZiBPUFRJTUlaRVJfREVCVUcKIAkJcHByaW50KGNoaWxkX3JlbCk7CiAjZW5kaWYKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2pvaW5yZWxzLmMgYi9zcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvcGF0aC9qb2lucmVscy5jCmluZGV4IDQ3NTA1NzliMGEuLmE5ZWYwODE1OTcg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2pvaW5yZWxzLmMKKysrIGIv c3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvam9pbnJlbHMuYwpAQCAtMTYsMTEgKzE2LDEzIEBA CiAKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvYXBwZW5kaW5m by5oIgorI2luY2x1ZGUgIm9wdGltaXplci9jb3N0LmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL2pv aW5pbmZvLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL3BhdGhub2RlLmgiCiAjaW5jbHVkZSAib3B0 aW1pemVyL3BhdGhzLmgiCiAjaW5jbHVkZSAicGFydGl0aW9uaW5nL3BhcnRib3VuZHMuaCIKICNp bmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgorI2luY2x1ZGUgInV0aWxzL3NlbGZ1bmNzLmgiCiAK IAogc3RhdGljIHZvaWQgbWFrZV9yZWxzX2J5X2NsYXVzZV9qb2lucyhQbGFubmVySW5mbyAqcm9v dCwKQEAgLTM1LDYgKzM3LDkgQEAgc3RhdGljIGJvb2wgaGFzX2xlZ2FsX2pvaW5jbGF1c2UoUGxh bm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCk7CiBzdGF0aWMgYm9vbCByZXN0cmljdGlv bl9pc19jb25zdGFudF9mYWxzZShMaXN0ICpyZXN0cmljdGxpc3QsCiAJCQkJCQkJCQkJICBSZWxP cHRJbmZvICpqb2lucmVsLAogCQkJCQkJCQkJCSAgYm9vbCBvbmx5X3B1c2hlZF9kb3duKTsKK3N0 YXRpYyB2b2lkIG1ha2VfZ3JvdXBlZF9qb2luX3JlbChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0 SW5mbyAqcmVsMSwKKwkJCQkJCQkJICBSZWxPcHRJbmZvICpyZWwyLCBSZWxPcHRJbmZvICpqb2lu cmVsLAorCQkJCQkJCQkgIFNwZWNpYWxKb2luSW5mbyAqc2ppbmZvLCBMaXN0ICpyZXN0cmljdGxp c3QpOwogc3RhdGljIHZvaWQgcG9wdWxhdGVfam9pbnJlbF93aXRoX3BhdGhzKFBsYW5uZXJJbmZv ICpyb290LCBSZWxPcHRJbmZvICpyZWwxLAogCQkJCQkJCQkJCVJlbE9wdEluZm8gKnJlbDIsIFJl bE9wdEluZm8gKmpvaW5yZWwsCiAJCQkJCQkJCQkJU3BlY2lhbEpvaW5JbmZvICpzamluZm8sIExp c3QgKnJlc3RyaWN0bGlzdCk7CkBAIC03NTMsNiArNzU4LDEwIEBAIG1ha2Vfam9pbl9yZWwoUGxh bm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbDEsIFJlbE9wdEluZm8gKnJlbDIpCiAJCXJl dHVybiBqb2lucmVsOwogCX0KIAorCS8qIEJ1aWxkIGEgZ3JvdXBlZCBqb2luIHJlbGF0aW9uIGZv ciAnam9pbnJlbCcgaWYgcG9zc2libGUuICovCisJbWFrZV9ncm91cGVkX2pvaW5fcmVsKHJvb3Qs IHJlbDEsIHJlbDIsIGpvaW5yZWwsIHNqaW5mbywKKwkJCQkJCSAgcmVzdHJpY3RsaXN0KTsKKwog CS8qIEFkZCBwYXRocyB0byB0aGUgam9pbiByZWxhdGlvbi4gKi8KIAlwb3B1bGF0ZV9qb2lucmVs X3dpdGhfcGF0aHMocm9vdCwgcmVsMSwgcmVsMiwgam9pbnJlbCwgc2ppbmZvLAogCQkJCQkJCQly ZXN0cmljdGxpc3QpOwpAQCAtODY0LDYgKzg3MywxMDcgQEAgYWRkX291dGVyX2pvaW5zX3RvX3Jl bGlkcyhQbGFubmVySW5mbyAqcm9vdCwgUmVsaWRzIGlucHV0X3JlbGlkcywKIAlyZXR1cm4gaW5w dXRfcmVsaWRzOwogfQogCisvKgorICogbWFrZV9ncm91cGVkX2pvaW5fcmVsCisgKgkgIEJ1aWxk IGEgZ3JvdXBlZCBqb2luIHJlbGF0aW9uIG91dCBvZiAnam9pbnJlbCcgaWYgZWFnZXIgYWdncmVn YXRpb24gaXMKKyAqCSAgcG9zc2libGUgYW5kIHRoZSAnam9pbnJlbCcgY2FuIHByb2R1Y2UgZ3Jv dXBlZCBwYXRocy4KKyAqCisgKiBXZSBhbHNvIGdlbmVyYXRlIHBhcnRpYWwgYWdncmVnYXRpb24g cGF0aHMgZm9yIHRoZSBncm91cGVkIHJlbGF0aW9uIGJ5CisgKiBqb2luaW5nIHRoZSBncm91cGVk IHBhdGhzIG9mICdyZWwxJyB0byB0aGUgcGxhaW4gcGF0aHMgb2YgJ3JlbDInLCBvciBieQorICog am9pbmluZyB0aGUgZ3JvdXBlZCBwYXRocyBvZiAncmVsMicgdG8gdGhlIHBsYWluIHBhdGhzIG9m ICdyZWwxJy4KKyAqLworc3RhdGljIHZvaWQKK21ha2VfZ3JvdXBlZF9qb2luX3JlbChQbGFubmVy SW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsMSwKKwkJCQkJICBSZWxPcHRJbmZvICpyZWwyLCBS ZWxPcHRJbmZvICpqb2lucmVsLAorCQkJCQkgIFNwZWNpYWxKb2luSW5mbyAqc2ppbmZvLCBMaXN0 ICpyZXN0cmljdGxpc3QpCit7CisJUmVsaWRzCQkJam9pbnJlbGlkczsKKwlSZWxPcHRJbmZvCSAg ICpyZWxfZ3JvdXBlZDsKKwlSZWxBZ2dJbmZvCSAgICphZ2dfaW5mbyA9IE5VTEw7CisJUmVsT3B0 SW5mbwkgICAqcmVsMV9ncm91cGVkOworCVJlbE9wdEluZm8JICAgKnJlbDJfZ3JvdXBlZDsKKwor CS8qCisJICogSWYgdGhlcmUgYXJlIG5vIGFnZ3JlZ2F0ZSBleHByZXNzaW9ucyBvciBncm91cGlu ZyBleHByZXNzaW9ucywgZWFnZXIKKwkgKiBhZ2dyZWdhdGlvbiBpcyBub3QgcG9zc2libGUuCisJ ICovCisJaWYgKHJvb3QtPmFnZ19jbGF1c2VfbGlzdCA9PSBOSUwgfHwKKwkJcm9vdC0+Z3JvdXBf ZXhwcl9saXN0ID09IE5JTCkKKwkJcmV0dXJuOworCisJam9pbnJlbGlkcyA9IGJtc191bmlvbihy ZWwxLT5yZWxpZHMsIHJlbDItPnJlbGlkcyk7CisJcmVsX2dyb3VwZWQgPSBmaW5kX2dyb3VwZWRf cmVsKHJvb3QsIGpvaW5yZWxpZHMsICZhZ2dfaW5mbyk7CisKKwkvKgorCSAqIENvbnN0cnVjdCBh IG5ldyBSZWxPcHRJbmZvIGZvciB0aGUgZ3JvdXBlZCBqb2luIHJlbGF0aW9uIGlmIHRoZXJlIGlz IG5vCisJICogZXhpc3Rpbmcgb25lLgorCSAqLworCWlmIChyZWxfZ3JvdXBlZCA9PSBOVUxMKQor CXsKKwkJLyoKKwkJICogUHJlcGFyZSB0aGUgaW5mb3JtYXRpb24gd2UgbmVlZCB0byBjcmVhdGUg Z3JvdXBlZCBwYXRocyBmb3IgdGhpcworCQkgKiBqb2luIHJlbGF0aW9uLgorCQkgKi8KKwkJYWdn X2luZm8gPSBjcmVhdGVfcmVsX2FnZ19pbmZvKHJvb3QsIGpvaW5yZWwpOworCQlpZiAoYWdnX2lu Zm8gPT0gTlVMTCkKKwkJCXJldHVybjsKKworCQkvKiBidWlsZCBhIGdyb3VwZWQgcmVsYXRpb24g b3V0IG9mIHRoZSBwbGFpbiByZWxhdGlvbiAqLworCQlyZWxfZ3JvdXBlZCA9IGJ1aWxkX2dyb3Vw ZWRfcmVsKHJvb3QsIGpvaW5yZWwpOworCQlyZWxfZ3JvdXBlZC0+cmVsdGFyZ2V0ID0gYWdnX2lu Zm8tPnRhcmdldDsKKwkJcmVsX2dyb3VwZWQtPnJvd3MgPSBhZ2dfaW5mby0+Z3JvdXBlZF9yb3dz OworCisJCS8qCisJCSAqIE1ha2UgdGhlIGdyb3VwZWQgcmVsYXRpb24gYXZhaWxhYmxlIGZvciBm dXJ0aGVyIGpvaW5pbmcgb3IgZm9yCisJCSAqIGFjdGluZyBhcyB0aGUgdXBwZXIgcmVsIHJlcHJl c2VudGluZyB0aGUgcmVzdWx0IG9mIHBhcnRpYWwKKwkJICogYWdncmVnYXRpb24uCisJCSAqLwor CQlhZGRfZ3JvdXBlZF9yZWwocm9vdCwgcmVsX2dyb3VwZWQsIGFnZ19pbmZvKTsKKwl9CisKKwlB c3NlcnQoYWdnX2luZm8gIT0gTlVMTCk7CisKKwkvKiByZXRyaWV2ZSB0aGUgZ3JvdXBlZCByZWxh dGlvbnMgZm9yIHRoZSB0d28gaW5wdXQgcmVscyAqLworCXJlbDFfZ3JvdXBlZCA9IGZpbmRfZ3Jv dXBlZF9yZWwocm9vdCwgcmVsMS0+cmVsaWRzLCBOVUxMKTsKKwlyZWwyX2dyb3VwZWQgPSBmaW5k X2dyb3VwZWRfcmVsKHJvb3QsIHJlbDItPnJlbGlkcywgTlVMTCk7CisKKwkvKiB3ZSBzaG91bGQg bm90IHNlZSBkdW1teSBncm91cGVkIHJlbGF0aW9uICovCisJQXNzZXJ0KHJlbDFfZ3JvdXBlZCA9 PSBOVUxMIHx8ICFJU19EVU1NWV9SRUwocmVsMV9ncm91cGVkKSk7CisJQXNzZXJ0KHJlbDJfZ3Jv dXBlZCA9PSBOVUxMIHx8ICFJU19EVU1NWV9SRUwocmVsMl9ncm91cGVkKSk7CisKKwkvKiBOb3Ro aW5nIHRvIGRvIGlmIHRoZXJlJ3Mgbm8gZ3JvdXBlZCByZWxhdGlvbi4gKi8KKwlpZiAocmVsMV9n cm91cGVkID09IE5VTEwgJiYKKwkJcmVsMl9ncm91cGVkID09IE5VTEwpCisJCXJldHVybjsKKwor CS8qCisJICogSm9pbiBvZiB0d28gZ3JvdXBlZCByZWxhdGlvbnMgaXMgY3VycmVudGx5IG5vdCBz dXBwb3J0ZWQuICBJbiBzdWNoIGEKKwkgKiBjYXNlLCBncm91cGluZyBvZiBvbmUgc2lkZSB3b3Vs ZCBjaGFuZ2UgdGhlIG9jY3VycmVuY2Ugb2YgdGhlIG90aGVyCisJICogc2lkZSdzIGFnZ3JlZ2F0 ZSB0cmFuc2llbnQgc3RhdGVzIG9uIHRoZSBpbnB1dCBvZiB0aGUgZmluYWwgYWdncmVnYXRpb24u CisJICogVGhpcyBjYW4gYmUgaGFuZGxlZCBieSBhZGp1c3RpbmcgdGhlIHRyYW5zaWVudCBzdGF0 ZXMsIGJ1dCBpdCdzIG5vdAorCSAqIHdvcnRoIHRoZSBlZmZvcnQgZm9yIG5vdy4KKwkgKi8KKwlp ZiAocmVsMV9ncm91cGVkICE9IE5VTEwgJiYKKwkJcmVsMl9ncm91cGVkICE9IE5VTEwpCisJCXJl dHVybjsKKworCS8qIGdlbmVyYXRlIHBhcnRpYWwgYWdncmVnYXRpb24gcGF0aHMgZm9yIHRoZSBn cm91cGVkIHJlbGF0aW9uICovCisJaWYgKHJlbDFfZ3JvdXBlZCAhPSBOVUxMKQorCXsKKwkJc2V0 X2pvaW5yZWxfc2l6ZV9lc3RpbWF0ZXMocm9vdCwgcmVsX2dyb3VwZWQsIHJlbDFfZ3JvdXBlZCwg cmVsMiwKKwkJCQkJCQkJICAgc2ppbmZvLCByZXN0cmljdGxpc3QpOworCQlwb3B1bGF0ZV9qb2lu cmVsX3dpdGhfcGF0aHMocm9vdCwgcmVsMV9ncm91cGVkLCByZWwyLCByZWxfZ3JvdXBlZCwKKwkJ CQkJCQkJCXNqaW5mbywgcmVzdHJpY3RsaXN0KTsKKwl9CisJZWxzZSBpZiAocmVsMl9ncm91cGVk ICE9IE5VTEwpCisJeworCQlzZXRfam9pbnJlbF9zaXplX2VzdGltYXRlcyhyb290LCByZWxfZ3Jv dXBlZCwgcmVsMSwgcmVsMl9ncm91cGVkLAorCQkJCQkJCQkgICBzamluZm8sIHJlc3RyaWN0bGlz dCk7CisJCXBvcHVsYXRlX2pvaW5yZWxfd2l0aF9wYXRocyhyb290LCByZWwxLCByZWwyX2dyb3Vw ZWQsIHJlbF9ncm91cGVkLAorCQkJCQkJCQkJc2ppbmZvLCByZXN0cmljdGxpc3QpOworCX0KK30K KwogLyoKICAqIHBvcHVsYXRlX2pvaW5yZWxfd2l0aF9wYXRocwogICoJICBBZGQgcGF0aHMgdG8g dGhlIGdpdmVuIGpvaW5yZWwgZm9yIGdpdmVuIHBhaXIgb2Ygam9pbmluZyByZWxhdGlvbnMuIFRo ZQpAQCAtMTY1Myw2ICsxNzYzLDExIEBAIHRyeV9wYXJ0aXRpb253aXNlX2pvaW4oUGxhbm5lcklu Zm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbDEsIFJlbE9wdEluZm8gKnJlbDIsCiAJCQkJCQkgYWRq dXN0X2NoaWxkX3JlbGlkcyhqb2lucmVsLT5yZWxpZHMsCiAJCQkJCQkJCQkJCSBuYXBwaW5mb3Ms IGFwcGluZm9zKSkpOwogCisJCS8qIEJ1aWxkIGEgZ3JvdXBlZCBqb2luIHJlbGF0aW9uIGZvciAn Y2hpbGRfam9pbnJlbCcgaWYgcG9zc2libGUgKi8KKwkJbWFrZV9ncm91cGVkX2pvaW5fcmVsKHJv b3QsIGNoaWxkX3JlbDEsIGNoaWxkX3JlbDIsCisJCQkJCQkJICBjaGlsZF9qb2lucmVsLCBjaGls ZF9zamluZm8sCisJCQkJCQkJICBjaGlsZF9yZXN0cmljdGxpc3QpOworCiAJCS8qIEFuZCBtYWtl IHBhdGhzIGZvciB0aGUgY2hpbGQgam9pbiAqLwogCQlwb3B1bGF0ZV9qb2lucmVsX3dpdGhfcGF0 aHMocm9vdCwgY2hpbGRfcmVsMSwgY2hpbGRfcmVsMiwKIAkJCQkJCQkJCWNoaWxkX2pvaW5yZWws IGNoaWxkX3NqaW5mbywKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3Bs YW5uZXIuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwppbmRleCBhYzk3 NTc1NDUzLi44MjQ0MTM0ZmNkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxh bi9wbGFubmVyLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCkBA IC0zOTM5LDEwICszOTM5LDE2IEBAIGNyZWF0ZV9vcmRpbmFyeV9ncm91cGluZ19wYXRocyhQbGFu bmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqaW5wdXRfcmVsLAogCiAJLyogR2F0aGVyIGFueSBw YXJ0aWFsbHkgZ3JvdXBlZCBwYXJ0aWFsIHBhdGhzLiAqLwogCWlmIChwYXJ0aWFsbHlfZ3JvdXBl ZF9yZWwgJiYgcGFydGlhbGx5X2dyb3VwZWRfcmVsLT5wYXJ0aWFsX3BhdGhsaXN0KQotCXsKIAkJ Z2F0aGVyX2dyb3VwaW5nX3BhdGhzKHJvb3QsIHBhcnRpYWxseV9ncm91cGVkX3JlbCk7CisKKwkv KgorCSAqIE5vdyBjaG9vc2UgdGhlIGJlc3QgcGF0aChzKSBmb3IgcGFydGlhbGx5X2dyb3VwZWRf cmVsLgorCSAqCisJICogTm90ZSB0aGF0IHRoZSBub24tcGFydGlhbCBwYXRocyBjYW4gY29tZSBl aXRoZXIgZnJvbSB0aGUgR2F0aGVyIGFib3ZlIG9yCisJICogZnJvbSBlYWdlciBhZ2dyZWdhdGlv bi4KKwkgKi8KKwlpZiAocGFydGlhbGx5X2dyb3VwZWRfcmVsICYmIHBhcnRpYWxseV9ncm91cGVk X3JlbC0+cGF0aGxpc3QpCiAJCXNldF9jaGVhcGVzdChwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwpOwot CX0KIAogCS8qCiAJICogRXN0aW1hdGUgbnVtYmVyIG9mIGdyb3Vwcy4KQEAgLTcwMzYsNiArNzA0 MiwxMyBAQCBjcmVhdGVfcGFydGlhbF9ncm91cGluZ19wYXRocyhQbGFubmVySW5mbyAqcm9vdCwK IAlib29sCQljYW5faGFzaCA9IChleHRyYS0+ZmxhZ3MgJiBHUk9VUElOR19DQU5fVVNFX0hBU0gp ICE9IDA7CiAJYm9vbAkJY2FuX3NvcnQgPSAoZXh0cmEtPmZsYWdzICYgR1JPVVBJTkdfQ0FOX1VT RV9TT1JUKSAhPSAwOwogCisJLyoKKwkgKiBUaGUgcGFydGlhbGx5X2dyb3VwZWRfcmVsIGNvdWxk IGhhdmUgYmVlbiBhbHJlYWR5IGNyZWF0ZWQgZHVlIHRvIGVhZ2VyCisJICogYWdncmVnYXRpb24u CisJICovCisJcGFydGlhbGx5X2dyb3VwZWRfcmVsID0gZmluZF9ncm91cGVkX3JlbChyb290LCBp bnB1dF9yZWwtPnJlbGlkcywgTlVMTCk7CisJQXNzZXJ0KGVuYWJsZV9lYWdlcl9hZ2dyZWdhdGUg fHwgcGFydGlhbGx5X2dyb3VwZWRfcmVsID09IE5VTEwpOworCiAJLyoKIAkgKiBDb25zaWRlciB3 aGV0aGVyIHdlIHNob3VsZCBnZW5lcmF0ZSBwYXJ0aWFsbHkgYWdncmVnYXRlZCBub24tcGFydGlh bAogCSAqIHBhdGhzLiAgV2UgY2FuIG9ubHkgZG8gdGhpcyBpZiB3ZSBoYXZlIGEgbm9uLXBhcnRp YWwgcGF0aCwgYW5kIG9ubHkgaWYKQEAgLTcwNTksMTkgKzcwNzIsMjUgQEAgY3JlYXRlX3BhcnRp YWxfZ3JvdXBpbmdfcGF0aHMoUGxhbm5lckluZm8gKnJvb3QsCiAJICogSWYgd2UgY2FuJ3QgcGFy dGlhbGx5IGFnZ3JlZ2F0ZSBwYXJ0aWFsIHBhdGhzLCBhbmQgd2UgY2FuJ3QgcGFydGlhbGx5CiAJ ICogYWdncmVnYXRlIG5vbi1wYXJ0aWFsIHBhdGhzLCB0aGVuIGRvbid0IGJvdGhlciBjcmVhdGlu ZyB0aGUgbmV3CiAJICogUmVsT3B0SW5mbyBhdCBhbGwsIHVubGVzcyB0aGUgY2FsbGVyIHNwZWNp ZmllZCBmb3JjZV9yZWxfY3JlYXRpb24uCisJICoKKwkgKiBOb3RlIHRoYXQgdGhlIHBhcnRpYWxs eV9ncm91cGVkX3JlbCBjb3VsZCBoYXZlIGJlZW4gYWxyZWFkeSBjcmVhdGVkIGFuZAorCSAqIHBv cHVsYXRlZCB3aXRoIGFwcHJvcHJpYXRlIHBhdGhzIGJ5IGVhZ2VyIGFnZ3JlZ2F0aW9uLgogCSAq LwogCWlmIChjaGVhcGVzdF90b3RhbF9wYXRoID09IE5VTEwgJiYKIAkJY2hlYXBlc3RfcGFydGlh bF9wYXRoID09IE5VTEwgJiYKIAkJIWZvcmNlX3JlbF9jcmVhdGlvbikKLQkJcmV0dXJuIE5VTEw7 CisJCXJldHVybiBwYXJ0aWFsbHlfZ3JvdXBlZF9yZWw7CiAKIAkvKgogCSAqIEJ1aWxkIGEgbmV3 IHVwcGVyIHJlbGF0aW9uIHRvIHJlcHJlc2VudCB0aGUgcmVzdWx0IG9mIHBhcnRpYWxseQotCSAq IGFnZ3JlZ2F0aW5nIHRoZSByb3dzIGZyb20gdGhlIGlucHV0IHJlbGF0aW9uLgotCSAqLwotCXBh cnRpYWxseV9ncm91cGVkX3JlbCA9IGZldGNoX3VwcGVyX3JlbChyb290LAotCQkJCQkJCQkJCQlV UFBFUlJFTF9QQVJUSUFMX0dST1VQX0FHRywKLQkJCQkJCQkJCQkJZ3JvdXBlZF9yZWwtPnJlbGlk cyk7CisJICogYWdncmVnYXRpbmcgdGhlIHJvd3MgZnJvbSB0aGUgaW5wdXQgcmVsYXRpb24uICBU aGUgcmVsYXRpb24gbWF5IGFscmVhZHkKKwkgKiBleGlzdCBkdWUgdG8gZWFnZXIgYWdncmVnYXRp b24sIGluIHdoaWNoIGNhc2Ugd2UgZG9uJ3QgbmVlZCB0byBjcmVhdGUKKwkgKiBpdC4KKwkgKi8K KwlpZiAocGFydGlhbGx5X2dyb3VwZWRfcmVsID09IE5VTEwpCisJCXBhcnRpYWxseV9ncm91cGVk X3JlbCA9IGZldGNoX3VwcGVyX3JlbChyb290LAorCQkJCQkJCQkJCQkJVVBQRVJSRUxfUEFSVElB TF9HUk9VUF9BR0csCisJCQkJCQkJCQkJCQlncm91cGVkX3JlbC0+cmVsaWRzKTsKIAlwYXJ0aWFs bHlfZ3JvdXBlZF9yZWwtPmNvbnNpZGVyX3BhcmFsbGVsID0KIAkJZ3JvdXBlZF9yZWwtPmNvbnNp ZGVyX3BhcmFsbGVsOwogCXBhcnRpYWxseV9ncm91cGVkX3JlbC0+cmVsb3B0a2luZCA9IGdyb3Vw ZWRfcmVsLT5yZWxvcHRraW5kOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0 aWwvYXBwZW5kaW5mby5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvYXBwZW5kaW5mby5j CmluZGV4IDZiYTRlYmEyMjQuLmIzYTI4NDIxNGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29w dGltaXplci91dGlsL2FwcGVuZGluZm8uYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRp bC9hcHBlbmRpbmZvLmMKQEAgLTQ5NSw2ICs0OTUsNzAgQEAgYWRqdXN0X2FwcGVuZHJlbF9hdHRy c19tdXRhdG9yKE5vZGUgKm5vZGUsCiAJCXJldHVybiAoTm9kZSAqKSBuZXdpbmZvOwogCX0KIAor CS8qCisJICogV2UgaGF2ZSB0byBwcm9jZXNzIFJlbEFnZ0luZm8gbm9kZXMgc3BlY2lhbGx5Lgor CSAqLworCWlmIChJc0Eobm9kZSwgUmVsQWdnSW5mbykpCisJeworCQlSZWxBZ2dJbmZvICpvbGRp bmZvID0gKFJlbEFnZ0luZm8gKikgbm9kZTsKKwkJUmVsQWdnSW5mbyAqbmV3aW5mbyA9IG1ha2VO b2RlKFJlbEFnZ0luZm8pOworCisJCS8qIENvcHkgYWxsIGZsYXQtY29waWFibGUgZmllbGRzICov CisJCW1lbWNweShuZXdpbmZvLCBvbGRpbmZvLCBzaXplb2YoUmVsQWdnSW5mbykpOworCisJCW5l d2luZm8tPnJlbGlkcyA9IGFkanVzdF9jaGlsZF9yZWxpZHMob2xkaW5mby0+cmVsaWRzLAorCQkJ CQkJCQkJCQkgIGNvbnRleHQtPm5hcHBpbmZvcywKKwkJCQkJCQkJCQkJICBjb250ZXh0LT5hcHBp bmZvcyk7CisKKwkJbmV3aW5mby0+dGFyZ2V0ID0gKFBhdGhUYXJnZXQgKikKKwkJCWFkanVzdF9h cHBlbmRyZWxfYXR0cnNfbXV0YXRvcigoTm9kZSAqKSBvbGRpbmZvLT50YXJnZXQsCisJCQkJCQkJ CQkJICAgY29udGV4dCk7CisKKwkJbmV3aW5mby0+YWdnX2lucHV0ID0gKFBhdGhUYXJnZXQgKikK KwkJCWFkanVzdF9hcHBlbmRyZWxfYXR0cnNfbXV0YXRvcigoTm9kZSAqKSBvbGRpbmZvLT5hZ2df aW5wdXQsCisJCQkJCQkJCQkJICAgY29udGV4dCk7CisKKwkJbmV3aW5mby0+Z3JvdXBfY2xhdXNl cyA9IChMaXN0ICopCisJCQlhZGp1c3RfYXBwZW5kcmVsX2F0dHJzX211dGF0b3IoKE5vZGUgKikg b2xkaW5mby0+Z3JvdXBfY2xhdXNlcywKKwkJCQkJCQkJCQkgICBjb250ZXh0KTsKKworCQluZXdp bmZvLT5ncm91cF9leHBycyA9IChMaXN0ICopCisJCQlhZGp1c3RfYXBwZW5kcmVsX2F0dHJzX211 dGF0b3IoKE5vZGUgKikgb2xkaW5mby0+Z3JvdXBfZXhwcnMsCisJCQkJCQkJCQkJICAgY29udGV4 dCk7CisKKwkJbmV3aW5mby0+YWdnX2V4cHJzID0gKExpc3QgKikKKwkJCWFkanVzdF9hcHBlbmRy ZWxfYXR0cnNfbXV0YXRvcigoTm9kZSAqKSBvbGRpbmZvLT5hZ2dfZXhwcnMsCisJCQkJCQkJCQkJ ICAgY29udGV4dCk7CisKKwkJcmV0dXJuIChOb2RlICopIG5ld2luZm87CisJfQorCisJLyoKKwkg KiBXZSBoYXZlIHRvIHByb2Nlc3MgUGF0aFRhcmdldCBub2RlcyBzcGVjaWFsbHkuCisJICovCisJ aWYgKElzQShub2RlLCBQYXRoVGFyZ2V0KSkKKwl7CisJCVBhdGhUYXJnZXQgKm9sZHRhcmdldCA9 IChQYXRoVGFyZ2V0ICopIG5vZGU7CisJCVBhdGhUYXJnZXQgKm5ld3RhcmdldCA9IG1ha2VOb2Rl KFBhdGhUYXJnZXQpOworCisJCS8qIENvcHkgYWxsIGZsYXQtY29waWFibGUgZmllbGRzICovCisJ CW1lbWNweShuZXd0YXJnZXQsIG9sZHRhcmdldCwgc2l6ZW9mKFBhdGhUYXJnZXQpKTsKKworCQlp ZiAob2xkdGFyZ2V0LT5zb3J0Z3JvdXByZWZzKQorCQl7CisJCQlTaXplCW5ieXRlcyA9IGxpc3Rf bGVuZ3RoKG9sZHRhcmdldC0+ZXhwcnMpICogc2l6ZW9mKEluZGV4KTsKKworCQkJbmV3dGFyZ2V0 LT5leHBycyA9IChMaXN0ICopCisJCQkJYWRqdXN0X2FwcGVuZHJlbF9hdHRyc19tdXRhdG9yKChO b2RlICopIG9sZHRhcmdldC0+ZXhwcnMsCisJCQkJCQkJCQkJCSAgIGNvbnRleHQpOworCisJCQlu ZXd0YXJnZXQtPnNvcnRncm91cHJlZnMgPSAoSW5kZXggKikgcGFsbG9jKG5ieXRlcyk7CisJCQlt ZW1jcHkobmV3dGFyZ2V0LT5zb3J0Z3JvdXByZWZzLCBvbGR0YXJnZXQtPnNvcnRncm91cHJlZnMs IG5ieXRlcyk7CisJCX0KKworCQlyZXR1cm4gKE5vZGUgKikgbmV3dGFyZ2V0OworCX0KKwogCS8q CiAJICogTk9URTogd2UgZG8gbm90IG5lZWQgdG8gcmVjdXJzZSBpbnRvIHN1YmxpbmtzLCBiZWNh dXNlIHRoZXkgc2hvdWxkCiAJICogYWxyZWFkeSBoYXZlIGJlZW4gY29udmVydGVkIHRvIHN1YnBs YW5zIGJlZm9yZSB3ZSBzZWUgdGhlbS4KLS0gCjIuMzEuMAoK --00000000000075de670612e805e8 Content-Type: application/octet-stream; name="v3-0008-Add-test-cases.patch" Content-Disposition: attachment; filename="v3-0008-Add-test-cases.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ltea1n5m7 RnJvbSBkNTRhMzI4ZDFhMWY5ZDRhMGEwYWQwYzA0OThkMGI1ODE1Y2I1NTg1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4K RGF0ZTogRnJpLCAyMyBGZWIgMjAyNCAxMzo0MToyMiArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjMg OC85XSBBZGQgdGVzdCBjYXNlcwoKLS0tCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2VhZ2Vy X2FnZ3JlZ2F0ZS5vdXQgfCAxMjkzICsrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNz L3BhcmFsbGVsX3NjaGVkdWxlICAgICAgICAgICAgfCAgICAyICstCiBzcmMvdGVzdC9yZWdyZXNz L3NxbC9lYWdlcl9hZ2dyZWdhdGUuc3FsICAgICAgfCAgMTkyICsrKwogMyBmaWxlcyBjaGFuZ2Vk LCAxNDg2IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2VhZ2VyX2FnZ3JlZ2F0ZS5vdXQKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL3NxbC9lYWdlcl9hZ2dyZWdhdGUuc3FsCgpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9lYWdlcl9hZ2dyZWdhdGUub3V0IGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9lYWdlcl9hZ2dyZWdhdGUub3V0Cm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjdhMjgyODc1MjIKLS0tIC9kZXYvbnVsbAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2VhZ2VyX2FnZ3JlZ2F0ZS5vdXQKQEAgLTAsMCArMSwx MjkzIEBACistLQorLS0gRUFHRVIgQUdHUkVHQVRJT04KKy0tIFRlc3Qgd2UgY2FuIHB1c2ggYWdn cmVnYXRpb24gZG93biBiZWxvdyBqb2luCistLQorLS0gRW5hYmxlIGVhZ2VyIGFnZ3JlZ2F0aW9u LCB3aGljaCBieSBkZWZhdWx0IGlzIGRpc2FibGVkLgorU0VUIGVuYWJsZV9lYWdlcl9hZ2dyZWdh dGUgVE8gb247CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3QxIChhIGludCwgYiBpbnQsIGMgZG91 YmxlIHByZWNpc2lvbik7CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3QyIChhIGludCwgYiBpbnQs IGMgZG91YmxlIHByZWNpc2lvbik7CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3QzIChhIGludCwg YiBpbnQsIGMgZG91YmxlIHByZWNpc2lvbik7CitJTlNFUlQgSU5UTyBlYWdlcl9hZ2dfdDEgU0VM RUNUIGksIGksIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMClpOworSU5TRVJUIElOVE8g ZWFnZXJfYWdnX3QyIFNFTEVDVCBpLCBpJTEwLCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEw MDApaTsKK0lOU0VSVCBJTlRPIGVhZ2VyX2FnZ190MyBTRUxFQ1QgaSUxMCwgaSUxMCwgaSBGUk9N IGdlbmVyYXRlX3NlcmllcygxLCAxMDAwKWk7CitBTkFMWVpFIGVhZ2VyX2FnZ190MTsKK0FOQUxZ WkUgZWFnZXJfYWdnX3QyOworQU5BTFlaRSBlYWdlcl9hZ2dfdDM7CistLQorLS0gVGVzdCBlYWdl ciBhZ2dyZWdhdGlvbiBvdmVyIGJhc2UgcmVsCistLQorLS0gUGVyZm9ybSBzY2FuIG9mIGEgdGFi bGUsIGFnZ3JlZ2F0ZSB0aGUgcmVzdWx0LCBqb2luIGl0IHRvIHRoZSBvdGhlciB0YWJsZQorLS0g YW5kIGZpbmFsaXplIHRoZSBhZ2dyZWdhdGlvbi4KK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9G RikKK1NFTEVDVCB0MS5hLCBhdmcodDIuYykgRlJPTSBlYWdlcl9hZ2dfdDEgdDEgSk9JTiBlYWdl cl9hZ2dfdDIgdDIgT04gdDEuYiA9IHQyLmIgR1JPVVAgQlkgdDEuYSBPUkRFUiBCWSB0MS5hOwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBGaW5hbGl6ZSBHcm91cEFnZ3JlZ2F0ZQorICAgT3V0cHV0 OiB0MS5hLCBhdmcodDIuYykKKyAgIEdyb3VwIEtleTogdDEuYQorICAgLT4gIFNvcnQKKyAgICAg ICAgIE91dHB1dDogdDEuYSwgKFBBUlRJQUwgYXZnKHQyLmMpKQorICAgICAgICAgU29ydCBLZXk6 IHQxLmEKKyAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgIE91dHB1dDogdDEu YSwgKFBBUlRJQUwgYXZnKHQyLmMpKQorICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDEuYiA9 IHQyLmIpCisgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190 MSB0MQorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MS5hLCB0MS5iLCB0MS5jCisgICAg ICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi5iLCAo UEFSVElBTCBhdmcodDIuYykpCisgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNo QWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmIsIFBBUlRJ QUwgYXZnKHQyLmMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyLmIK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJf YWdnX3QyIHQyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmEs IHQyLmIsIHQyLmMKKygxOCByb3dzKQorCitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMpIEZST00gZWFn ZXJfYWdnX3QxIHQxIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iIEdST1VQIEJZ IHQxLmEgT1JERVIgQlkgdDEuYTsKKyBhIHwgYXZnIAorLS0tKy0tLS0tCisgMSB8IDQ5NgorIDIg fCA0OTcKKyAzIHwgNDk4CisgNCB8IDQ5OQorIDUgfCA1MDAKKyA2IHwgNTAxCisgNyB8IDUwMgor IDggfCA1MDMKKyA5IHwgNTA0CisoOSByb3dzKQorCistLSBQcm9kdWNlIHJlc3VsdHMgd2l0aCBz b3J0aW5nIGFnZ3JlZ2F0aW9uCitTRVQgZW5hYmxlX2hhc2hhZ2cgVE8gb2ZmOworRVhQTEFJTiAo VkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQxLmEsIGF2Zyh0Mi5jKSBGUk9NIGVhZ2VyX2Fn Z190MSB0MSBKT0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0gdDIuYiBHUk9VUCBCWSB0MS5h IE9SREVSIEJZIHQxLmE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExB TiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEZpbmFs aXplIEdyb3VwQWdncmVnYXRlCisgICBPdXRwdXQ6IHQxLmEsIGF2Zyh0Mi5jKQorICAgR3JvdXAg S2V5OiB0MS5hCisgICAtPiAgU29ydAorICAgICAgICAgT3V0cHV0OiB0MS5hLCAoUEFSVElBTCBh dmcodDIuYykpCisgICAgICAgICBTb3J0IEtleTogdDEuYQorICAgICAgICAgLT4gIEhhc2ggSm9p bgorICAgICAgICAgICAgICAgT3V0cHV0OiB0MS5hLCAoUEFSVElBTCBhdmcodDIuYykpCisgICAg ICAgICAgICAgICBIYXNoIENvbmQ6ICh0MS5iID0gdDIuYikKKyAgICAgICAgICAgICAgIC0+ICBT ZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3QxIHQxCisgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQxLmEsIHQxLmIsIHQxLmMKKyAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAg ICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmIsIChQQVJUSUFMIGF2Zyh0Mi5jKSkKKyAgICAgICAg ICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEdyb3VwQWdncmVnYXRlCisgICAgICAgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IHQyLmIsIFBBUlRJQUwgYXZnKHQyLmMpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyLmIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IC0+ICBTb3J0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmMs IHQyLmIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5OiB0Mi5iCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVh Z2VyX2FnZ190MiB0MgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0 cHV0OiB0Mi5jLCB0Mi5iCisoMjEgcm93cykKKworU0VMRUNUIHQxLmEsIGF2Zyh0Mi5jKSBGUk9N IGVhZ2VyX2FnZ190MSB0MSBKT0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0gdDIuYiBHUk9V UCBCWSB0MS5hIE9SREVSIEJZIHQxLmE7CisgYSB8IGF2ZyAKKy0tLSstLS0tLQorIDEgfCA0OTYK KyAyIHwgNDk3CisgMyB8IDQ5OAorIDQgfCA0OTkKKyA1IHwgNTAwCisgNiB8IDUwMQorIDcgfCA1 MDIKKyA4IHwgNTAzCisgOSB8IDUwNAorKDkgcm93cykKKworUkVTRVQgZW5hYmxlX2hhc2hhZ2c7 CistLQorLS0gVGVzdCBlYWdlciBhZ2dyZWdhdGlvbiBvdmVyIGpvaW4gcmVsCistLQorLS0gUGVy Zm9ybSBqb2luIG9mIHRhYmxlcywgYWdncmVnYXRlIHRoZSByZXN1bHQsIGpvaW4gaXQgdG8gdGhl IG90aGVyIHRhYmxlCistLSBhbmQgZmluYWxpemUgdGhlIGFnZ3JlZ2F0aW9uLgorRVhQTEFJTiAo VkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQxLmEsIGF2Zyh0Mi5jICsgdDMuYykgRlJPTSBl YWdlcl9hZ2dfdDEgdDEgSk9JTiBlYWdlcl9hZ2dfdDIgdDIgT04gdDEuYiA9IHQyLmIgSk9JTiBl YWdlcl9hZ2dfdDMgdDMgT04gdDIuYSA9IHQzLmEgR1JPVVAgQlkgdDEuYSBPUkRFUiBCWSB0MS5h OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBGaW5hbGl6 ZSBHcm91cEFnZ3JlZ2F0ZQorICAgT3V0cHV0OiB0MS5hLCBhdmcoKHQyLmMgKyB0My5jKSkKKyAg IEdyb3VwIEtleTogdDEuYQorICAgLT4gIFNvcnQKKyAgICAgICAgIE91dHB1dDogdDEuYSwgKFBB UlRJQUwgYXZnKCh0Mi5jICsgdDMuYykpKQorICAgICAgICAgU29ydCBLZXk6IHQxLmEKKyAgICAg ICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgIE91dHB1dDogdDEuYSwgKFBBUlRJQUwg YXZnKCh0Mi5jICsgdDMuYykpKQorICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDEuYiA9IHQy LmIpCisgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190MSB0 MQorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MS5hLCB0MS5iLCB0MS5jCisgICAgICAg ICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi5iLCAoUEFS VElBTCBhdmcoKHQyLmMgKyB0My5jKSkpCisgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlh bCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmIs IFBBUlRJQUwgYXZnKCh0Mi5jICsgdDMuYykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICBH cm91cCBLZXk6IHQyLmIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIuYywgdDMuYywgdDIu YgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDMuYSA9IHQy LmEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVi bGljLmVhZ2VyX2FnZ190MyB0MworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgT3V0cHV0OiB0My5hLCB0My5iLCB0My5jCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0 cHV0OiB0Mi5jLCB0Mi5iLCB0Mi5hCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190MiB0MgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi5jLCB0Mi5iLCB0Mi5h CisoMjUgcm93cykKKworU0VMRUNUIHQxLmEsIGF2Zyh0Mi5jICsgdDMuYykgRlJPTSBlYWdlcl9h Z2dfdDEgdDEgSk9JTiBlYWdlcl9hZ2dfdDIgdDIgT04gdDEuYiA9IHQyLmIgSk9JTiBlYWdlcl9h Z2dfdDMgdDMgT04gdDIuYSA9IHQzLmEgR1JPVVAgQlkgdDEuYSBPUkRFUiBCWSB0MS5hOworIGEg fCBhdmcgCistLS0rLS0tLS0KKyAxIHwgNDk3CisgMiB8IDQ5OQorIDMgfCA1MDEKKyA0IHwgNTAz CisgNSB8IDUwNQorIDYgfCA1MDcKKyA3IHwgNTA5CisgOCB8IDUxMQorIDkgfCA1MTMKKyg5IHJv d3MpCisKKy0tIFByb2R1Y2UgcmVzdWx0cyB3aXRoIHNvcnRpbmcgYWdncmVnYXRpb24KK1NFVCBl bmFibGVfaGFzaGFnZyBUTyBvZmY7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxF Q1QgdDEuYSwgYXZnKHQyLmMgKyB0My5jKSBGUk9NIGVhZ2VyX2FnZ190MSB0MSBKT0lOIGVhZ2Vy X2FnZ190MiB0MiBPTiB0MS5iID0gdDIuYiBKT0lOIGVhZ2VyX2FnZ190MyB0MyBPTiB0Mi5hID0g dDMuYSBHUk9VUCBCWSB0MS5hIE9SREVSIEJZIHQxLmE7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEZpbmFsaXplIEdyb3VwQWdncmVn YXRlCisgICBPdXRwdXQ6IHQxLmEsIGF2ZygodDIuYyArIHQzLmMpKQorICAgR3JvdXAgS2V5OiB0 MS5hCisgICAtPiAgU29ydAorICAgICAgICAgT3V0cHV0OiB0MS5hLCAoUEFSVElBTCBhdmcoKHQy LmMgKyB0My5jKSkpCisgICAgICAgICBTb3J0IEtleTogdDEuYQorICAgICAgICAgLT4gIEhhc2gg Sm9pbgorICAgICAgICAgICAgICAgT3V0cHV0OiB0MS5hLCAoUEFSVElBTCBhdmcoKHQyLmMgKyB0 My5jKSkpCisgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0MS5iID0gdDIuYikKKyAgICAgICAg ICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3QxIHQxCisgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IHQxLmEsIHQxLmIsIHQxLmMKKyAgICAgICAgICAgICAgIC0+ICBI YXNoCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmIsIChQQVJUSUFMIGF2ZygodDIu YyArIHQzLmMpKSkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEdyb3VwQWdncmVn YXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmIsIFBBUlRJQUwgYXZn KCh0Mi5jICsgdDMuYykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQy LmIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTb3J0CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmMsIHQzLmMsIHQyLmIKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5OiB0Mi5iCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBPdXRwdXQ6IHQyLmMsIHQzLmMsIHQyLmIKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQzLmEgPSB0Mi5hKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2df dDMgdDMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1 dDogdDMuYSwgdDMuYiwgdDMuYworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IE91dHB1dDogdDIuYywgdDIuYiwgdDIuYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdDIgdDIKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDog dDIuYywgdDIuYiwgdDIuYQorKDI4IHJvd3MpCisKK1NFTEVDVCB0MS5hLCBhdmcodDIuYyArIHQz LmMpIEZST00gZWFnZXJfYWdnX3QxIHQxIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0 Mi5iIEpPSU4gZWFnZXJfYWdnX3QzIHQzIE9OIHQyLmEgPSB0My5hIEdST1VQIEJZIHQxLmEgT1JE RVIgQlkgdDEuYTsKKyBhIHwgYXZnIAorLS0tKy0tLS0tCisgMSB8IDQ5NworIDIgfCA0OTkKKyAz IHwgNTAxCisgNCB8IDUwMworIDUgfCA1MDUKKyA2IHwgNTA3CisgNyB8IDUwOQorIDggfCA1MTEK KyA5IHwgNTEzCisoOSByb3dzKQorCitSRVNFVCBlbmFibGVfaGFzaGFnZzsKKy0tCistLSBUZXN0 IHRoYXQgZWFnZXIgYWdncmVnYXRpb24gd29ya3MgZm9yIG91dGVyIGpvaW4KKy0tCistLSBFbnN1 cmUgYWdncmVnYXRpb24gY2FuIGJlIHB1c2hlZCBkb3duIHRvIHRoZSBub24tbnVsbGFibGUgc2lk ZQorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQxLmEsIGF2Zyh0Mi5jKSBG Uk9NIGVhZ2VyX2FnZ190MSB0MSBSSUdIVCBKT0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0g dDIuYiBHUk9VUCBCWSB0MS5hIE9SREVSIEJZIHQxLmE7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IEZpbmFsaXplIEdyb3VwQWdncmVnYXRlCisgICBPdXRwdXQ6IHQxLmEsIGF2Zyh0Mi5jKQorICAg R3JvdXAgS2V5OiB0MS5hCisgICAtPiAgU29ydAorICAgICAgICAgT3V0cHV0OiB0MS5hLCAoUEFS VElBTCBhdmcodDIuYykpCisgICAgICAgICBTb3J0IEtleTogdDEuYQorICAgICAgICAgLT4gIEhh c2ggUmlnaHQgSm9pbgorICAgICAgICAgICAgICAgT3V0cHV0OiB0MS5hLCAoUEFSVElBTCBhdmco dDIuYykpCisgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0MS5iID0gdDIuYikKKyAgICAgICAg ICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3QxIHQxCisgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IHQxLmEsIHQxLmIsIHQxLmMKKyAgICAgICAgICAgICAgIC0+ICBI YXNoCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmIsIChQQVJUSUFMIGF2Zyh0Mi5j KSkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIuYiwgUEFSVElBTCBhdmcodDIuYykKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDIuYgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdDIgdDIKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIuYSwgdDIuYiwgdDIuYworKDE4 IHJvd3MpCisKK1NFTEVDVCB0MS5hLCBhdmcodDIuYykgRlJPTSBlYWdlcl9hZ2dfdDEgdDEgUklH SFQgSk9JTiBlYWdlcl9hZ2dfdDIgdDIgT04gdDEuYiA9IHQyLmIgR1JPVVAgQlkgdDEuYSBPUkRF UiBCWSB0MS5hOworIGEgfCBhdmcgCistLS0rLS0tLS0KKyAxIHwgNDk2CisgMiB8IDQ5NworIDMg fCA0OTgKKyA0IHwgNDk5CisgNSB8IDUwMAorIDYgfCA1MDEKKyA3IHwgNTAyCisgOCB8IDUwMwor IDkgfCA1MDQKKyAgIHwgNTA1CisoMTAgcm93cykKKworLS0gRW5zdXJlIGFnZ3JlZ2F0aW9uIGNh bm5vdCBiZSBwdXNoZWQgZG93biB0byB0aGUgbnVsbGFibGUgc2lkZQorRVhQTEFJTiAoVkVSQk9T RSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQyLmIsIGF2Zyh0Mi5jKSBGUk9NIGVhZ2VyX2FnZ190MSB0 MSBMRUZUIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iIEdST1VQIEJZIHQyLmIg T1JERVIgQlkgdDIuYjsKKyAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU29ydAorICAgT3V0cHV0OiB0Mi5iLCAoYXZnKHQy LmMpKQorICAgU29ydCBLZXk6IHQyLmIKKyAgIC0+ICBIYXNoQWdncmVnYXRlCisgICAgICAgICBP dXRwdXQ6IHQyLmIsIGF2Zyh0Mi5jKQorICAgICAgICAgR3JvdXAgS2V5OiB0Mi5iCisgICAgICAg ICAtPiAgSGFzaCBSaWdodCBKb2luCisgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmIsIHQyLmMK KyAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQyLmIgPSB0MS5iKQorICAgICAgICAgICAgICAg LT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdDIgdDIKKyAgICAgICAgICAgICAgICAg ICAgIE91dHB1dDogdDIuYSwgdDIuYiwgdDIuYworICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAg ICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDEuYgorICAgICAgICAgICAgICAgICAgICAgLT4g IFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdDEgdDEKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIE91dHB1dDogdDEuYgorKDE1IHJvd3MpCisKK1NFTEVDVCB0Mi5iLCBhdmcodDIuYykg RlJPTSBlYWdlcl9hZ2dfdDEgdDEgTEVGVCBKT0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0g dDIuYiBHUk9VUCBCWSB0Mi5iIE9SREVSIEJZIHQyLmI7CisgYiB8IGF2ZyAKKy0tLSstLS0tLQor IDEgfCA0OTYKKyAyIHwgNDk3CisgMyB8IDQ5OAorIDQgfCA0OTkKKyA1IHwgNTAwCisgNiB8IDUw MQorIDcgfCA1MDIKKyA4IHwgNTAzCisgOSB8IDUwNAorICAgfCAgICAKKygxMCByb3dzKQorCist LQorLS0gVGVzdCB0aGF0IGVhZ2VyIGFnZ3JlZ2F0aW9uIHdvcmtzIGZvciBwYXJhbGxlbCBwbGFu cworLS0KK1NFVCBwYXJhbGxlbF9zZXR1cF9jb3N0PTA7CitTRVQgcGFyYWxsZWxfdHVwbGVfY29z dD0wOworU0VUIG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemU9MDsKK1NFVCBtYXhfcGFyYWxs ZWxfd29ya2Vyc19wZXJfZ2F0aGVyPTQ7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitT RUxFQ1QgdDEuYSwgYXZnKHQyLmMpIEZST00gZWFnZXJfYWdnX3QxIHQxIEpPSU4gZWFnZXJfYWdn X3QyIHQyIE9OIHQxLmIgPSB0Mi5iIEdST1VQIEJZIHQxLmEgT1JERVIgQlkgdDEuYTsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgRmluYWxpemUg R3JvdXBBZ2dyZWdhdGUKKyAgIE91dHB1dDogdDEuYSwgYXZnKHQyLmMpCisgICBHcm91cCBLZXk6 IHQxLmEKKyAgIC0+ICBTb3J0CisgICAgICAgICBPdXRwdXQ6IHQxLmEsIChQQVJUSUFMIGF2Zyh0 Mi5jKSkKKyAgICAgICAgIFNvcnQgS2V5OiB0MS5hCisgICAgICAgICAtPiAgR2F0aGVyCisgICAg ICAgICAgICAgICBPdXRwdXQ6IHQxLmEsIChQQVJUSUFMIGF2Zyh0Mi5jKSkKKyAgICAgICAgICAg ICAgIFdvcmtlcnMgUGxhbm5lZDogMgorICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIEhhc2gg Sm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MS5hLCAoUEFSVElBTCBhdmcodDIu YykpCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0MS5iID0gdDIuYikKKyAgICAg ICAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdn X3QxIHQxCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLmEsIHQxLmIsIHQx LmMKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBIYXNoCisgICAgICAgICAgICAg ICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmIsIChQQVJUSUFMIGF2Zyh0Mi5jKSkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIuYiwgUEFSVElBTCBhdmcodDIuYykKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDIuYgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBTY2FuIG9uIHB1YmxpYy5l YWdlcl9hZ2dfdDIgdDIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91 dHB1dDogdDIuYSwgdDIuYiwgdDIuYworKDIxIHJvd3MpCisKK1NFTEVDVCB0MS5hLCBhdmcodDIu YykgRlJPTSBlYWdlcl9hZ2dfdDEgdDEgSk9JTiBlYWdlcl9hZ2dfdDIgdDIgT04gdDEuYiA9IHQy LmIgR1JPVVAgQlkgdDEuYSBPUkRFUiBCWSB0MS5hOworIGEgfCBhdmcgCistLS0rLS0tLS0KKyAx IHwgNDk2CisgMiB8IDQ5NworIDMgfCA0OTgKKyA0IHwgNDk5CisgNSB8IDUwMAorIDYgfCA1MDEK KyA3IHwgNTAyCisgOCB8IDUwMworIDkgfCA1MDQKKyg5IHJvd3MpCisKK1JFU0VUIHBhcmFsbGVs X3NldHVwX2Nvc3Q7CitSRVNFVCBwYXJhbGxlbF90dXBsZV9jb3N0OworUkVTRVQgbWluX3BhcmFs bGVsX3RhYmxlX3NjYW5fc2l6ZTsKK1JFU0VUIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRo ZXI7CitEUk9QIFRBQkxFIGVhZ2VyX2FnZ190MTsKK0RST1AgVEFCTEUgZWFnZXJfYWdnX3QyOwor RFJPUCBUQUJMRSBlYWdlcl9hZ2dfdDM7CistLQorLS0gVGVzdCBlYWdlciBhZ2dyZWdhdGlvbiBm b3IgcGFydGl0aW9ud2lzZSBqb2luCistLQorLS0gRW5hYmxlIHBhcnRpdGlvbndpc2UgYWdncmVn YXRlLCB3aGljaCBieSBkZWZhdWx0IGlzIGRpc2FibGVkLgorU0VUIGVuYWJsZV9wYXJ0aXRpb253 aXNlX2FnZ3JlZ2F0ZSBUTyB0cnVlOworLS0gRW5hYmxlIHBhcnRpdGlvbndpc2Ugam9pbiwgd2hp Y2ggYnkgZGVmYXVsdCBpcyBkaXNhYmxlZC4KK1NFVCBlbmFibGVfcGFydGl0aW9ud2lzZV9qb2lu IFRPIHRydWU7CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3RhYjEoeCBpbnQsIHkgaW50KSBQQVJU SVRJT04gQlkgUkFOR0UoeCk7CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3RhYjFfcDEgUEFSVElU SU9OIE9GIGVhZ2VyX2FnZ190YWIxIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEwKTsKK0NSRUFU RSBUQUJMRSBlYWdlcl9hZ2dfdGFiMV9wMiBQQVJUSVRJT04gT0YgZWFnZXJfYWdnX3RhYjEgRk9S IFZBTFVFUyBGUk9NICgxMCkgVE8gKDIwKTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiMV9w MyBQQVJUSVRJT04gT0YgZWFnZXJfYWdnX3RhYjEgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMw KTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiMih4IGludCwgeSBpbnQpIFBBUlRJVElPTiBC WSBSQU5HRSh5KTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiMl9wMSBQQVJUSVRJT04gT0Yg ZWFnZXJfYWdnX3RhYjIgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMTApOworQ1JFQVRFIFRBQkxF IGVhZ2VyX2FnZ190YWIyX3AyIFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiMiBGT1IgVkFMVUVT IEZST00gKDEwKSBUTyAoMjApOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWIyX3AzIFBBUlRJ VElPTiBPRiBlYWdlcl9hZ2dfdGFiMiBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAoMzApOworSU5T RVJUIElOVE8gZWFnZXJfYWdnX3RhYjEgU0VMRUNUIGkgJSAzMCwgaSAlIDIwIEZST00gZ2VuZXJh dGVfc2VyaWVzKDAsIDI5OSwgMikgaTsKK0lOU0VSVCBJTlRPIGVhZ2VyX2FnZ190YWIyIFNFTEVD VCBpICUgMjAsIGkgJSAzMCBGUk9NIGdlbmVyYXRlX3NlcmllcygwLCAyOTksIDMpIGk7CitBTkFM WVpFIGVhZ2VyX2FnZ190YWIxOworQU5BTFlaRSBlYWdlcl9hZ2dfdGFiMjsKKy0tIFdoZW4gR1JP VVAgQlkgY2xhdXNlIG1hdGNoZXM7IGZ1bGwgYWdncmVnYXRpb24gaXMgcGVyZm9ybWVkIGZvciBl YWNoIHBhcnRpdGlvbi4KK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0MS54 LCBzdW0odDEueSksIGNvdW50KCopIEZST00gZWFnZXJfYWdnX3RhYjEgdDEsIGVhZ2VyX2FnZ190 YWIyIHQyIFdIRVJFIHQxLnggPSB0Mi55IEdST1VQIEJZIHQxLnggT1JERVIgQlkgdDEueDsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgU29ydAorICAgT3V0cHV0OiB0MS54LCAoc3VtKHQxLnkpKSwgKGNvdW50KCopKQorICAg U29ydCBLZXk6IHQxLngKKyAgIC0+ICBBcHBlbmQKKyAgICAgICAgIC0+ICBGaW5hbGl6ZSBIYXNo QWdncmVnYXRlCisgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLngsIHN1bSh0MS55KSwgY291bnQo KikKKyAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDEueAorICAgICAgICAgICAgICAgLT4gIEhh c2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MS54LCAoUEFSVElBTCBzdW0o dDEueSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29u ZDogKHQyLnkgPSB0MS54KQorICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1 YmxpYy5lYWdlcl9hZ2dfdGFiMl9wMSB0MgorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0 cHV0OiB0Mi55CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgT3V0cHV0OiB0MS54LCAoUEFSVElBTCBzdW0odDEueSkpLCAoUEFSVElBTCBj b3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dy ZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDEueCwgUEFS VElBTCBzdW0odDEueSksIFBBUlRJQUwgY291bnQoKikKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEdyb3VwIEtleTogdDEueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMSB0MQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MS54LCB0MS55CisgICAgICAg ICAtPiAgRmluYWxpemUgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8x LngsIHN1bSh0MV8xLnkpLCBjb3VudCgqKQorICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0MV8x LngKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIE91 dHB1dDogdDFfMS54LCAoUEFSVElBTCBzdW0odDFfMS55KSksIChQQVJUSUFMIGNvdW50KCopKQor ICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDJfMS55ID0gdDFfMS54KQorICAgICAg ICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMl9wMiB0 Ml8xCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzEueQorICAgICAgICAg ICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDog dDFfMS54LCAoUEFSVElBTCBzdW0odDFfMS55KSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8xLngsIFBBUlRJQUwgc3VtKHQxXzEu eSksIFBBUlRJQUwgY291bnQoKikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdy b3VwIEtleTogdDFfMS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2Vx IFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIxX3AyIHQxXzEKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMS54LCB0MV8xLnkKKyAgICAgICAgIC0+ ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueCwg c3VtKHQxXzIueSksIGNvdW50KCopCisgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQxXzIueAor ICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0 OiB0MV8yLngsIChQQVJUSUFMIHN1bSh0MV8yLnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAg ICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0Ml8yLnkgPSB0MV8yLngpCisgICAgICAgICAg ICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIyX3AzIHQyXzIK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMi55CisgICAgICAgICAgICAg ICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8y LngsIChQQVJUSUFMIHN1bSh0MV8yLnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueCwgUEFSVElBTCBzdW0odDFfMi55KSwg UEFSVElBTCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAg S2V5OiB0MV8yLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2Nh biBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjFfcDMgdDFfMgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8yLngsIHQxXzIueQorKDQ5IHJvd3MpCisKK1NF TEVDVCB0MS54LCBzdW0odDEueSksIGNvdW50KCopIEZST00gZWFnZXJfYWdnX3RhYjEgdDEsIGVh Z2VyX2FnZ190YWIyIHQyIFdIRVJFIHQxLnggPSB0Mi55IEdST1VQIEJZIHQxLnggT1JERVIgQlkg dDEueDsKKyB4ICB8IHN1bSAgfCBjb3VudCAKKy0tLS0rLS0tLS0tKy0tLS0tLS0KKyAgMCB8ICA1 MDAgfCAgIDEwMAorICA2IHwgMTEwMCB8ICAgMTAwCisgMTIgfCAgNzAwIHwgICAxMDAKKyAxOCB8 IDEzMDAgfCAgIDEwMAorIDI0IHwgIDkwMCB8ICAgMTAwCisoNSByb3dzKQorCistLSBHUk9VUCBC WSBoYXZpbmcgb3RoZXIgbWF0Y2hpbmcga2V5CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYp CitTRUxFQ1QgdDIueSwgc3VtKHQxLnkpLCBjb3VudCgqKSBGUk9NIGVhZ2VyX2FnZ190YWIxIHQx LCBlYWdlcl9hZ2dfdGFiMiB0MiBXSEVSRSB0MS54ID0gdDIueSBHUk9VUCBCWSB0Mi55IE9SREVS IEJZIHQyLnk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBM QU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIFNvcnQKKyAgIE91dHB1dDogdDIueSwgKHN1bSh0MS55KSksIChj b3VudCgqKSkKKyAgIFNvcnQgS2V5OiB0Mi55CisgICAtPiAgQXBwZW5kCisgICAgICAgICAtPiAg RmluYWxpemUgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi55LCBzdW0o dDEueSksIGNvdW50KCopCisgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyLnkKKyAgICAgICAg ICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIueSwg KFBBUlRJQUwgc3VtKHQxLnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAg ICAgICBIYXNoIENvbmQ6ICh0Mi55ID0gdDEueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBT ZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjJfcDEgdDIKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIE91dHB1dDogdDIueQorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDEueCwgKFBBUlRJQUwgc3VtKHQxLnkp KSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFy dGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRw dXQ6IHQxLngsIFBBUlRJQUwgc3VtKHQxLnkpLCBQQVJUSUFMIGNvdW50KCopCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQxLngKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjFfcDEg dDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDEueSwg dDEueAorICAgICAgICAgLT4gIEZpbmFsaXplIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAg IE91dHB1dDogdDJfMS55LCBzdW0odDFfMS55KSwgY291bnQoKikKKyAgICAgICAgICAgICAgIEdy b3VwIEtleTogdDJfMS55CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IHQyXzEueSwgKFBBUlRJQUwgc3VtKHQxXzEueSkpLCAoUEFSVElB TCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQyXzEueSA9IHQx XzEueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJf YWdnX3RhYjJfcDIgdDJfMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8x LnkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAg ICAgICBPdXRwdXQ6IHQxXzEueCwgKFBBUlRJQUwgc3VtKHQxXzEueSkpLCAoUEFSVElBTCBjb3Vu dCgqKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdh dGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMS54LCBQQVJU SUFMIHN1bSh0MV8xLnkpLCBQQVJUSUFMIGNvdW50KCopCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBHcm91cCBLZXk6IHQxXzEueAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMiB0MV8xCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzEueSwgdDFfMS54 CisgICAgICAgICAtPiAgRmluYWxpemUgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgT3V0 cHV0OiB0Ml8yLnksIHN1bSh0MV8yLnkpLCBjb3VudCgqKQorICAgICAgICAgICAgICAgR3JvdXAg S2V5OiB0Ml8yLnkKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAg ICAgICAgIE91dHB1dDogdDJfMi55LCAoUEFSVElBTCBzdW0odDFfMi55KSksIChQQVJUSUFMIGNv dW50KCopKQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDJfMi55ID0gdDFfMi54 KQorICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2df dGFiMl9wMyB0Ml8yCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzIueQor ICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IE91dHB1dDogdDFfMi54LCAoUEFSVElBTCBzdW0odDFfMi55KSksIChQQVJUSUFMIGNvdW50KCop KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8yLngsIFBBUlRJQUwg c3VtKHQxXzIueSksIFBBUlRJQUwgY291bnQoKikKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEdyb3VwIEtleTogdDFfMi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIxX3AzIHQxXzIKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMi55LCB0MV8yLngKKyg0 OSByb3dzKQorCitTRUxFQ1QgdDIueSwgc3VtKHQxLnkpLCBjb3VudCgqKSBGUk9NIGVhZ2VyX2Fn Z190YWIxIHQxLCBlYWdlcl9hZ2dfdGFiMiB0MiBXSEVSRSB0MS54ID0gdDIueSBHUk9VUCBCWSB0 Mi55IE9SREVSIEJZIHQyLnk7CisgeSAgfCBzdW0gIHwgY291bnQgCistLS0tKy0tLS0tLSstLS0t LS0tCisgIDAgfCAgNTAwIHwgICAxMDAKKyAgNiB8IDExMDAgfCAgIDEwMAorIDEyIHwgIDcwMCB8 ICAgMTAwCisgMTggfCAxMzAwIHwgICAxMDAKKyAyNCB8ICA5MDAgfCAgIDEwMAorKDUgcm93cykK KworLS0gV2hlbiBHUk9VUCBCWSBjbGF1c2UgZG9lcyBub3QgbWF0Y2g7IHBhcnRpYWwgYWdncmVn YXRpb24gaXMgcGVyZm9ybWVkIGZvciBlYWNoIHBhcnRpdGlvbi4KK0VYUExBSU4gKFZFUkJPU0Us IENPU1RTIE9GRikKK1NFTEVDVCB0Mi54LCBzdW0odDEueCksIGNvdW50KCopIEZST00gZWFnZXJf YWdnX3RhYjEgdDEsIGVhZ2VyX2FnZ190YWIyIHQyIFdIRVJFIHQxLnggPSB0Mi55IEdST1VQIEJZ IHQyLnggSEFWSU5HIGF2Zyh0MS54KSA+IDEwIE9SREVSIEJZIHQyLng7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNvcnQKKyAgIE91dHB1dDogdDIu eCwgKHN1bSh0MS54KSksIChjb3VudCgqKSkKKyAgIFNvcnQgS2V5OiB0Mi54CisgICAtPiAgRmlu YWxpemUgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgT3V0cHV0OiB0Mi54LCBzdW0odDEueCksIGNv dW50KCopCisgICAgICAgICBHcm91cCBLZXk6IHQyLngKKyAgICAgICAgIEZpbHRlcjogKGF2Zyh0 MS54KSA+ICcxMCc6Om51bWVyaWMpCisgICAgICAgICAtPiAgQXBwZW5kCisgICAgICAgICAgICAg ICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzEueCwgKFBB UlRJQUwgc3VtKHQxXzEueCkpLCAoUEFSVElBTCBjb3VudCgqKSksIChQQVJUSUFMIGF2Zyh0MV8x LngpKQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDJfMS55ID0gdDFfMS54KQor ICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFi Ml9wMSB0Ml8xCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzEueCwgdDJf MS55CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgT3V0cHV0OiB0MV8xLngsIChQQVJUSUFMIHN1bSh0MV8xLngpKSwgKFBBUlRJQUwgY291 bnQoKikpLCAoUEFSVElBTCBhdmcodDFfMS54KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE91dHB1dDogdDFfMS54LCBQQVJUSUFMIHN1bSh0MV8xLngpLCBQQVJUSUFMIGNvdW50KCop LCBQQVJUSUFMIGF2Zyh0MV8xLngpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH cm91cCBLZXk6IHQxXzEueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNl cSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMSB0MV8xCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzEueAorICAgICAgICAgICAgICAgLT4g IEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8yLngsIChQQVJUSUFM IHN1bSh0MV8yLngpKSwgKFBBUlRJQUwgY291bnQoKikpLCAoUEFSVElBTCBhdmcodDFfMi54KSkK KyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQyXzIueSA9IHQxXzIueCkKKyAgICAg ICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjJfcDIg dDJfMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8yLngsIHQyXzIueQor ICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IE91dHB1dDogdDFfMi54LCAoUEFSVElBTCBzdW0odDFfMi54KSksIChQQVJUSUFMIGNvdW50KCop KSwgKFBBUlRJQUwgYXZnKHQxXzIueCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAg UGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQxXzIueCwgUEFSVElBTCBzdW0odDFfMi54KSwgUEFSVElBTCBjb3VudCgqKSwgUEFS VElBTCBhdmcodDFfMi54KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAg S2V5OiB0MV8yLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2Nh biBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjFfcDIgdDFfMgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8yLngKKyAgICAgICAgICAgICAgIC0+ICBIYXNo IEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMy54LCAoUEFSVElBTCBzdW0o dDFfMy54KSksIChQQVJUSUFMIGNvdW50KCopKSwgKFBBUlRJQUwgYXZnKHQxXzMueCkpCisgICAg ICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0Ml8zLnkgPSB0MV8zLngpCisgICAgICAgICAg ICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIyX3AzIHQyXzMK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMy54LCB0Ml8zLnkKKyAgICAg ICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRw dXQ6IHQxXzMueCwgKFBBUlRJQUwgc3VtKHQxXzMueCkpLCAoUEFSVElBTCBjb3VudCgqKSksIChQ QVJUSUFMIGF2Zyh0MV8zLngpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRp YWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0 OiB0MV8zLngsIFBBUlRJQUwgc3VtKHQxXzMueCksIFBBUlRJQUwgY291bnQoKiksIFBBUlRJQUwg YXZnKHQxXzMueCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTog dDFfMy54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24g cHVibGljLmVhZ2VyX2FnZ190YWIxX3AzIHQxXzMKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIE91dHB1dDogdDFfMy54CisoNDQgcm93cykKKworU0VMRUNUIHQyLngsIHN1 bSh0MS54KSwgY291bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiMSB0MSwgZWFnZXJfYWdnX3RhYjIg dDIgV0hFUkUgdDEueCA9IHQyLnkgR1JPVVAgQlkgdDIueCBIQVZJTkcgYXZnKHQxLngpID4gMTAg T1JERVIgQlkgdDIueDsKKyB4ICB8IHN1bSAgfCBjb3VudCAKKy0tLS0rLS0tLS0tKy0tLS0tLS0K KyAgMiB8ICA2MDAgfCAgICA1MAorICA0IHwgMTIwMCB8ICAgIDUwCisgIDggfCAgOTAwIHwgICAg NTAKKyAxMiB8ICA2MDAgfCAgICA1MAorIDE0IHwgMTIwMCB8ICAgIDUwCisgMTggfCAgOTAwIHwg ICAgNTAKKyg2IHJvd3MpCisKKy0tIENoZWNrIHdpdGggZWFnZXIgYWdncmVnYXRpb24gb3ZlciBq b2luIHJlbAorLS0gZnVsbCBhZ2dyZWdhdGlvbgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZG KQorU0VMRUNUIHQxLngsIHN1bSh0Mi55ICsgdDMueSkgRlJPTSBlYWdlcl9hZ2dfdGFiMSB0MSBK T0lOIGVhZ2VyX2FnZ190YWIxIHQyIE9OIHQxLnggPSB0Mi54IEpPSU4gZWFnZXJfYWdnX3RhYjEg dDMgT04gdDIueCA9IHQzLnggR1JPVVAgQlkgdDEueCBPUkRFUiBCWSB0MS54OworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIFNvcnQKKyAgIE91dHB1dDogdDEueCwgKHN1bSgodDIueSArIHQzLnkpKSkKKyAgIFNv cnQgS2V5OiB0MS54CisgICAtPiAgQXBwZW5kCisgICAgICAgICAtPiAgRmluYWxpemUgSGFzaEFn Z3JlZ2F0ZQorICAgICAgICAgICAgICAgT3V0cHV0OiB0MS54LCBzdW0oKHQyLnkgKyB0My55KSkK KyAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDEueAorICAgICAgICAgICAgICAgLT4gIEhhc2gg Sm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MS54LCAoUEFSVElBTCBzdW0oKHQy LnkgKyB0My55KSkpCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0MS54ID0gdDIu eCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdn X3RhYjFfcDEgdDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDEueAorICAg ICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91 dHB1dDogdDIueCwgdDMueCwgKFBBUlRJQUwgc3VtKCh0Mi55ICsgdDMueSkpKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi54LCB0My54LCBQQVJUSUFMIHN1bSgodDIu eSArIHQzLnkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0 Mi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLnksIHQyLngsIHQz LnksIHQzLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29u ZDogKHQyLnggPSB0My54KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMSB0MgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi55LCB0Mi54CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0My55LCB0My54CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24g cHVibGljLmVhZ2VyX2FnZ190YWIxX3AxIHQzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzLnksIHQzLngKKyAgICAgICAgIC0+ICBG aW5hbGl6ZSBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzEueCwgc3Vt KCh0Ml8xLnkgKyB0M18xLnkpKQorICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0MV8xLngKKyAg ICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDog dDFfMS54LCAoUEFSVElBTCBzdW0oKHQyXzEueSArIHQzXzEueSkpKQorICAgICAgICAgICAgICAg ICAgICAgSGFzaCBDb25kOiAodDFfMS54ID0gdDJfMS54KQorICAgICAgICAgICAgICAgICAgICAg LT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMiB0MV8xCisgICAgICAgICAg ICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzEueAorICAgICAgICAgICAgICAgICAgICAgLT4g IEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMS54LCB0M18xLngs IChQQVJUSUFMIHN1bSgodDJfMS55ICsgdDNfMS55KSkpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBPdXRwdXQ6IHQyXzEueCwgdDNfMS54LCBQQVJUSUFMIHN1bSgodDJfMS55ICsgdDNf MS55KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDJfMS54 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzEueSwgdDJfMS54LCB0 M18xLnksIHQzXzEueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGFz aCBDb25kOiAodDJfMS54ID0gdDNfMS54KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMiB0Ml8xCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzEu eSwgdDJfMS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFz aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0 M18xLnksIHQzXzEueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMiB0M18xCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzEu eSwgdDNfMS54CisgICAgICAgICAtPiAgRmluYWxpemUgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAg ICAgICAgT3V0cHV0OiB0MV8yLngsIHN1bSgodDJfMi55ICsgdDNfMi55KSkKKyAgICAgICAgICAg ICAgIEdyb3VwIEtleTogdDFfMi54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAg ICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueCwgKFBBUlRJQUwgc3VtKCh0Ml8yLnkgKyB0 M18yLnkpKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxXzIueCA9IHQyXzIu eCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdn X3RhYjFfcDMgdDFfMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8yLngK KyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAg ICBPdXRwdXQ6IHQyXzIueCwgdDNfMi54LCAoUEFSVElBTCBzdW0oKHQyXzIueSArIHQzXzIueSkp KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8yLngsIHQzXzIueCwg UEFSVElBTCBzdW0oKHQyXzIueSArIHQzXzIueSkpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBHcm91cCBLZXk6IHQyXzIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg T3V0cHV0OiB0Ml8yLnksIHQyXzIueCwgdDNfMi55LCB0M18yLngKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQyXzIueCA9IHQzXzIueCkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMu ZWFnZXJfYWdnX3RhYjFfcDMgdDJfMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgT3V0cHV0OiB0Ml8yLnksIHQyXzIueAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE91dHB1dDogdDNfMi55LCB0M18yLngKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJf YWdnX3RhYjFfcDMgdDNfMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgT3V0cHV0OiB0M18yLnksIHQzXzIueAorKDcwIHJvd3MpCisKK1NFTEVDVCB0 MS54LCBzdW0odDIueSArIHQzLnkpIEZST00gZWFnZXJfYWdnX3RhYjEgdDEgSk9JTiBlYWdlcl9h Z2dfdGFiMSB0MiBPTiB0MS54ID0gdDIueCBKT0lOIGVhZ2VyX2FnZ190YWIxIHQzIE9OIHQyLngg PSB0My54IEdST1VQIEJZIHQxLnggT1JERVIgQlkgdDEueDsKKyB4ICB8ICBzdW0gIAorLS0tLSst LS0tLS0tCisgIDAgfCAxMDAwMAorICAyIHwgMTQwMDAKKyAgNCB8IDE4MDAwCisgIDYgfCAyMjAw MAorICA4IHwgMjYwMDAKKyAxMCB8IDEwMDAwCisgMTIgfCAxNDAwMAorIDE0IHwgMTgwMDAKKyAx NiB8IDIyMDAwCisgMTggfCAyNjAwMAorIDIwIHwgMTAwMDAKKyAyMiB8IDE0MDAwCisgMjQgfCAx ODAwMAorIDI2IHwgMjIwMDAKKyAyOCB8IDI2MDAwCisoMTUgcm93cykKKworLS0gcGFydGlhbCBh Z2dyZWdhdGlvbgorU0VUIGVuYWJsZV9oYXNoYWdnIFRPIG9mZjsKK0VYUExBSU4gKFZFUkJPU0Us IENPU1RTIE9GRikKK1NFTEVDVCB0My55LCBzdW0odDIueSArIHQzLnkpIEZST00gZWFnZXJfYWdn X3RhYjEgdDEgSk9JTiBlYWdlcl9hZ2dfdGFiMSB0MiBPTiB0MS54ID0gdDIueCBKT0lOIGVhZ2Vy X2FnZ190YWIxIHQzIE9OIHQyLnggPSB0My54IEdST1VQIEJZIHQzLnkgT1JERVIgQlkgdDMueTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBGaW5hbGl6ZSBHcm91cEFnZ3JlZ2F0ZQorICAgT3V0cHV0OiB0My55 LCBzdW0oKHQyLnkgKyB0My55KSkKKyAgIEdyb3VwIEtleTogdDMueQorICAgLT4gIFNvcnQKKyAg ICAgICAgIE91dHB1dDogdDMueSwgKFBBUlRJQUwgc3VtKCh0Mi55ICsgdDMueSkpKQorICAgICAg ICAgU29ydCBLZXk6IHQzLnkKKyAgICAgICAgIC0+ICBBcHBlbmQKKyAgICAgICAgICAgICAgIC0+ ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNfMS55LCAoUEFSVElB TCBzdW0oKHQyXzEueSArIHQzXzEueSkpKQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25k OiAodDJfMS54ID0gdDFfMS54KQorICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgR3Jv dXBBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNfMS55LCB0 Ml8xLngsIHQzXzEueCwgUEFSVElBTCBzdW0oKHQyXzEueSArIHQzXzEueSkpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQzXzEueSwgdDJfMS54LCB0M18xLngKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIC0+ICBTb3J0CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBPdXRwdXQ6IHQyXzEueSwgdDNfMS55LCB0Ml8xLngsIHQzXzEueAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgU29ydCBLZXk6IHQzXzEueSwgdDJfMS54CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzEueSwgdDNfMS55LCB0Ml8xLngsIHQz XzEueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAo dDJfMS54ID0gdDNfMS54KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMSB0Ml8xCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzEueSwgdDJfMS54 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0M18xLnksIHQz XzEueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNl cSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMSB0M18xCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzEueSwgdDNfMS54 CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgT3V0cHV0OiB0MV8xLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2Nh biBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjFfcDEgdDFfMQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgT3V0cHV0OiB0MV8xLngKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4K KyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNfMi55LCAoUEFSVElBTCBzdW0oKHQyXzIu eSArIHQzXzIueSkpKQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDJfMi54ID0g dDFfMi54KQorICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgR3JvdXBBZ2dyZWdhdGUK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNfMi55LCB0Ml8yLngsIHQzXzIu eCwgUEFSVElBTCBzdW0oKHQyXzIueSArIHQzXzIueSkpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICBHcm91cCBLZXk6IHQzXzIueSwgdDJfMi54LCB0M18yLngKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIC0+ICBTb3J0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRw dXQ6IHQyXzIueSwgdDNfMi55LCB0Ml8yLngsIHQzXzIueAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgU29ydCBLZXk6IHQzXzIueSwgdDJfMi54CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IHQyXzIueSwgdDNfMi55LCB0Ml8yLngsIHQzXzIueAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDJfMi54ID0gdDNf Mi54KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2Fu IG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMiB0Ml8yCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzIueSwgdDJfMi54CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0M18yLnksIHQzXzIueAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1 YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMiB0M18yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzIueSwgdDNfMi54CisgICAgICAgICAg ICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0 MV8yLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMu ZWFnZXJfYWdnX3RhYjFfcDIgdDFfMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg T3V0cHV0OiB0MV8yLngKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAg ICAgICAgICAgIE91dHB1dDogdDNfMy55LCAoUEFSVElBTCBzdW0oKHQyXzMueSArIHQzXzMueSkp KQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDJfMy54ID0gdDFfMy54KQorICAg ICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgR3JvdXBBZ2dyZWdhdGUKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIE91dHB1dDogdDNfMy55LCB0Ml8zLngsIHQzXzMueCwgUEFSVElBTCBz dW0oKHQyXzMueSArIHQzXzMueSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBL ZXk6IHQzXzMueSwgdDJfMy54LCB0M18zLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ ICBTb3J0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzMueSwg dDNfMy55LCB0Ml8zLngsIHQzXzMueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg U29ydCBLZXk6IHQzXzMueSwgdDJfMy54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQyXzMueSwgdDNfMy55LCB0Ml8zLngsIHQzXzMueAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDJfMy54ID0gdDNfMy54KQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5l YWdlcl9hZ2dfdGFiMV9wMyB0Ml8zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IHQyXzMueSwgdDJfMy54CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgT3V0cHV0OiB0M18zLnksIHQzXzMueAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9h Z2dfdGFiMV9wMyB0M18zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IHQzXzMueSwgdDNfMy54CisgICAgICAgICAgICAgICAgICAgICAt PiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8zLngKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3Rh YjFfcDMgdDFfMworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8z LngKKyg3MyByb3dzKQorCitTRUxFQ1QgdDMueSwgc3VtKHQyLnkgKyB0My55KSBGUk9NIGVhZ2Vy X2FnZ190YWIxIHQxIEpPSU4gZWFnZXJfYWdnX3RhYjEgdDIgT04gdDEueCA9IHQyLnggSk9JTiBl YWdlcl9hZ2dfdGFiMSB0MyBPTiB0Mi54ID0gdDMueCBHUk9VUCBCWSB0My55IE9SREVSIEJZIHQz Lnk7CisgeSAgfCAgc3VtICAKKy0tLS0rLS0tLS0tLQorICAwIHwgIDc1MDAKKyAgMiB8IDEzNTAw CisgIDQgfCAxOTUwMAorICA2IHwgMjU1MDAKKyAgOCB8IDMxNTAwCisgMTAgfCAyMjUwMAorIDEy IHwgMjg1MDAKKyAxNCB8IDM0NTAwCisgMTYgfCA0MDUwMAorIDE4IHwgNDY1MDAKKygxMCByb3dz KQorCitSRVNFVCBlbmFibGVfaGFzaGFnZzsKK0RST1AgVEFCTEUgZWFnZXJfYWdnX3RhYjE7CitE Uk9QIFRBQkxFIGVhZ2VyX2FnZ190YWIyOworLS0KKy0tIFRlc3Qgd2l0aCBtdWx0aS1sZXZlbCBw YXJ0aXRpb25pbmcgc2NoZW1lCistLQorQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWJfbWwoeCBp bnQsIHkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UoeCk7CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdn X3RhYl9tbF9wMSBQQVJUSVRJT04gT0YgZWFnZXJfYWdnX3RhYl9tbCBGT1IgVkFMVUVTIEZST00g KDApIFRPICgxMCk7CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3RhYl9tbF9wMiBQQVJUSVRJT04g T0YgZWFnZXJfYWdnX3RhYl9tbCBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApIFBBUlRJVElP TiBCWSBSQU5HRSh4KTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiX21sX3AyX3MxIFBBUlRJ VElPTiBPRiBlYWdlcl9hZ2dfdGFiX21sX3AyIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSk7 CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3RhYl9tbF9wMl9zMiBQQVJUSVRJT04gT0YgZWFnZXJf YWdnX3RhYl9tbF9wMiBGT1IgVkFMVUVTIEZST00gKDE1KSBUTyAoMjApOworQ1JFQVRFIFRBQkxF IGVhZ2VyX2FnZ190YWJfbWxfcDMgUEFSVElUSU9OIE9GIGVhZ2VyX2FnZ190YWJfbWwgRk9SIFZB TFVFUyBGUk9NICgyMCkgVE8gKDMwKSBQQVJUSVRJT04gQlkgUkFOR0UoeCk7CitDUkVBVEUgVEFC TEUgZWFnZXJfYWdnX3RhYl9tbF9wM19zMSBQQVJUSVRJT04gT0YgZWFnZXJfYWdnX3RhYl9tbF9w MyBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAoMjUpOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190 YWJfbWxfcDNfczIgUEFSVElUSU9OIE9GIGVhZ2VyX2FnZ190YWJfbWxfcDMgRk9SIFZBTFVFUyBG Uk9NICgyNSkgVE8gKDMwKTsKK0lOU0VSVCBJTlRPIGVhZ2VyX2FnZ190YWJfbWwgU0VMRUNUIGkg JSAzMCwgaSAlIDMwIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDApIGk7CitBTkFMWVpFIGVh Z2VyX2FnZ190YWJfbWw7CistLSBXaGVuIEdST1VQIEJZIGNsYXVzZSBtYXRjaGVzOyBmdWxsIGFn Z3JlZ2F0aW9uIGlzIHBlcmZvcm1lZCBmb3IgZWFjaCBwYXJ0aXRpb24uCitFWFBMQUlOIChWRVJC T1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgdDEueCwgc3VtKHQyLnkpLCBjb3VudCgqKSBGUk9NIGVh Z2VyX2FnZ190YWJfbWwgdDEgSk9JTiBlYWdlcl9hZ2dfdGFiX21sIHQyIE9OIHQxLnggPSB0Mi54 IEdST1VQIEJZIHQxLnggT1JERVIgQlkgdDEueDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU29ydAorICAgT3V0cHV0OiB0 MS54LCAoc3VtKHQyLnkpKSwgKGNvdW50KCopKQorICAgU29ydCBLZXk6IHQxLngKKyAgIC0+ICBB cHBlbmQKKyAgICAgICAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAg ICBPdXRwdXQ6IHQxLngsIHN1bSh0Mi55KSwgY291bnQoKikKKyAgICAgICAgICAgICAgIEdyb3Vw IEtleTogdDEueAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAg ICAgICAgT3V0cHV0OiB0MS54LCAoUEFSVElBTCBzdW0odDIueSkpLCAoUEFSVElBTCBjb3VudCgq KSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxLnggPSB0Mi54KQorICAgICAg ICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3Ax IHQxCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLngKKyAgICAgICAgICAg ICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQy LngsIChQQVJUSUFMIHN1bSh0Mi55KSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi54LCBQQVJUSUFMIHN1bSh0Mi55KSwgUEFSVElB TCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0 Mi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVi bGljLmVhZ2VyX2FnZ190YWJfbWxfcDEgdDIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE91dHB1dDogdDIueSwgdDIueAorICAgICAgICAgLT4gIEZpbmFsaXplIEhhc2hB Z2dyZWdhdGUKKyAgICAgICAgICAgICAgIE91dHB1dDogdDFfMS54LCBzdW0odDJfMS55KSwgY291 bnQoKikKKyAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDFfMS54CisgICAgICAgICAgICAgICAt PiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzEueCwgKFBBUlRJ QUwgc3VtKHQyXzEueSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAg IEhhc2ggQ29uZDogKHQxXzEueCA9IHQyXzEueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBT ZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMl9zMSB0MV8xCisgICAgICAgICAg ICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzEueAorICAgICAgICAgICAgICAgICAgICAgLT4g IEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMS54LCAoUEFSVElB TCBzdW0odDJfMS55KSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgT3V0cHV0OiB0Ml8xLngsIFBBUlRJQUwgc3VtKHQyXzEueSksIFBBUlRJQUwgY291 bnQoKikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDJfMS54 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGlj LmVhZ2VyX2FnZ190YWJfbWxfcDJfczEgdDJfMQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgT3V0cHV0OiB0Ml8xLnksIHQyXzEueAorICAgICAgICAgLT4gIEZpbmFsaXpl IEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIE91dHB1dDogdDFfMi54LCBzdW0odDJfMi55 KSwgY291bnQoKikKKyAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDFfMi54CisgICAgICAgICAg ICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueCwg KFBBUlRJQUwgc3VtKHQyXzIueSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAg ICAgICAgIEhhc2ggQ29uZDogKHQxXzIueCA9IHQyXzIueCkKKyAgICAgICAgICAgICAgICAgICAg IC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMl9zMiB0MV8yCisgICAg ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueAorICAgICAgICAgICAgICAgICAg ICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMi54LCAo UEFSVElBTCBzdW0odDJfMi55KSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8yLngsIFBBUlRJQUwgc3VtKHQyXzIueSksIFBBUlRJ QUwgY291bnQoKikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTog dDJfMi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24g cHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDJfczIgdDJfMgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8yLnksIHQyXzIueAorICAgICAgICAgLT4gIEZp bmFsaXplIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIE91dHB1dDogdDFfMy54LCBzdW0o dDJfMy55KSwgY291bnQoKikKKyAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDFfMy54CisgICAg ICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQx XzMueCwgKFBBUlRJQUwgc3VtKHQyXzMueSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAg ICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxXzMueCA9IHQyXzMueCkKKyAgICAgICAgICAgICAg ICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wM19zMSB0MV8z CisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzMueAorICAgICAgICAgICAg ICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJf My54LCAoUEFSVElBTCBzdW0odDJfMy55KSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8zLngsIFBBUlRJQUwgc3VtKHQyXzMueSks IFBBUlRJQUwgY291bnQoKikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3Vw IEtleTogdDJfMy54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNj YW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDNfczEgdDJfMworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8zLnksIHQyXzMueAorICAgICAgICAg LT4gIEZpbmFsaXplIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIE91dHB1dDogdDFfNC54 LCBzdW0odDJfNC55KSwgY291bnQoKikKKyAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDFfNC54 CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRw dXQ6IHQxXzQueCwgKFBBUlRJQUwgc3VtKHQyXzQueSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAg ICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxXzQueCA9IHQyXzQueCkKKyAgICAgICAg ICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wM19z MiB0MV80CisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzQueAorICAgICAg ICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1 dDogdDJfNC54LCAoUEFSVElBTCBzdW0odDJfNC55KSksIChQQVJUSUFMIGNvdW50KCopKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml80LngsIFBBUlRJQUwgc3VtKHQy XzQueSksIFBBUlRJQUwgY291bnQoKikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEdyb3VwIEtleTogdDJfNC54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAg U2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDNfczIgdDJfNAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml80LnksIHQyXzQueAorKDc5 IHJvd3MpCisKK1NFTEVDVCB0MS54LCBzdW0odDIueSksIGNvdW50KCopIEZST00gZWFnZXJfYWdn X3RhYl9tbCB0MSBKT0lOIGVhZ2VyX2FnZ190YWJfbWwgdDIgT04gdDEueCA9IHQyLnggR1JPVVAg QlkgdDEueCBPUkRFUiBCWSB0MS54OworIHggIHwgIHN1bSAgfCBjb3VudCAKKy0tLS0rLS0tLS0t LSstLS0tLS0tCisgIDAgfCAgICAgMCB8ICAxMDg5CisgIDEgfCAgMTE1NiB8ICAxMTU2CisgIDIg fCAgMjMxMiB8ICAxMTU2CisgIDMgfCAgMzQ2OCB8ICAxMTU2CisgIDQgfCAgNDYyNCB8ICAxMTU2 CisgIDUgfCAgNTc4MCB8ICAxMTU2CisgIDYgfCAgNjkzNiB8ICAxMTU2CisgIDcgfCAgODA5MiB8 ICAxMTU2CisgIDggfCAgOTI0OCB8ICAxMTU2CisgIDkgfCAxMDQwNCB8ICAxMTU2CisgMTAgfCAx MTU2MCB8ICAxMTU2CisgMTEgfCAxMTk3OSB8ICAxMDg5CisgMTIgfCAxMzA2OCB8ICAxMDg5Cisg MTMgfCAxNDE1NyB8ICAxMDg5CisgMTQgfCAxNTI0NiB8ICAxMDg5CisgMTUgfCAxNjMzNSB8ICAx MDg5CisgMTYgfCAxNzQyNCB8ICAxMDg5CisgMTcgfCAxODUxMyB8ICAxMDg5CisgMTggfCAxOTYw MiB8ICAxMDg5CisgMTkgfCAyMDY5MSB8ICAxMDg5CisgMjAgfCAyMTc4MCB8ICAxMDg5CisgMjEg fCAyMjg2OSB8ICAxMDg5CisgMjIgfCAyMzk1OCB8ICAxMDg5CisgMjMgfCAyNTA0NyB8ICAxMDg5 CisgMjQgfCAyNjEzNiB8ICAxMDg5CisgMjUgfCAyNzIyNSB8ICAxMDg5CisgMjYgfCAyODMxNCB8 ICAxMDg5CisgMjcgfCAyOTQwMyB8ICAxMDg5CisgMjggfCAzMDQ5MiB8ICAxMDg5CisgMjkgfCAz MTU4MSB8ICAxMDg5CisoMzAgcm93cykKKworLS0gV2hlbiBHUk9VUCBCWSBjbGF1c2UgZG9lcyBu b3QgbWF0Y2g7IHBhcnRpYWwgYWdncmVnYXRpb24gaXMgcGVyZm9ybWVkIGZvciBlYWNoIHBhcnRp dGlvbi4KK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0MS55LCBzdW0odDIu eSksIGNvdW50KCopIEZST00gZWFnZXJfYWdnX3RhYl9tbCB0MSBKT0lOIGVhZ2VyX2FnZ190YWJf bWwgdDIgT04gdDEueCA9IHQyLnggR1JPVVAgQlkgdDEueSBPUkRFUiBCWSB0MS55OworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBTb3J0CisgICBPdXRwdXQ6IHQxLnksIChzdW0odDIueSkpLCAoY291bnQoKikpCisgICBTb3J0 IEtleTogdDEueQorICAgLT4gIEZpbmFsaXplIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgIE91dHB1 dDogdDEueSwgc3VtKHQyLnkpLCBjb3VudCgqKQorICAgICAgICAgR3JvdXAgS2V5OiB0MS55Cisg ICAgICAgICAtPiAgQXBwZW5kCisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAg ICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzEueSwgKFBBUlRJQUwgc3VtKHQyXzEueSkpLCAoUEFS VElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxXzEueCA9 IHQyXzEueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFn ZXJfYWdnX3RhYl9tbF9wMSB0MV8xCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6 IHQxXzEueSwgdDFfMS54CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8xLngsIChQQVJUSUFMIHN1bSh0Ml8xLnkpKSwg KFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlh bCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6 IHQyXzEueCwgUEFSVElBTCBzdW0odDJfMS55KSwgUEFSVElBTCBjb3VudCgqKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Ml8xLngKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9t bF9wMSB0Ml8xCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6 IHQyXzEueSwgdDJfMS54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IHQxXzIueSwgKFBBUlRJQUwgc3VtKHQyXzIueSkpLCAoUEFSVElB TCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxXzIueCA9IHQy XzIueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJf YWdnX3RhYl9tbF9wMl9zMSB0MV8yCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6 IHQxXzIueSwgdDFfMi54CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8yLngsIChQQVJUSUFMIHN1bSh0Ml8yLnkpKSwg KFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlh bCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6 IHQyXzIueCwgUEFSVElBTCBzdW0odDJfMi55KSwgUEFSVElBTCBjb3VudCgqKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Ml8yLngKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9t bF9wMl9zMSB0Ml8yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRw dXQ6IHQyXzIueSwgdDJfMi54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAg ICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzMueSwgKFBBUlRJQUwgc3VtKHQyXzMueSkpLCAoUEFS VElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxXzMueCA9 IHQyXzMueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFn ZXJfYWdnX3RhYl9tbF9wMl9zMiB0MV8zCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRw dXQ6IHQxXzMueSwgdDFfMy54CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8zLngsIChQQVJUSUFMIHN1bSh0Ml8zLnkp KSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFy dGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRw dXQ6IHQyXzMueCwgUEFSVElBTCBzdW0odDJfMy55KSwgUEFSVElBTCBjb3VudCgqKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Ml8zLngKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3Rh Yl9tbF9wMl9zMiB0Ml8zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQyXzMueSwgdDJfMy54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAg ICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzQueSwgKFBBUlRJQUwgc3VtKHQyXzQueSkpLCAo UEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxXzQu eCA9IHQyXzQueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMu ZWFnZXJfYWdnX3RhYl9tbF9wM19zMSB0MV80CisgICAgICAgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQxXzQueSwgdDFfNC54CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml80LngsIChQQVJUSUFMIHN1bSh0Ml80 LnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAg UGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQyXzQueCwgUEFSVElBTCBzdW0odDJfNC55KSwgUEFSVElBTCBjb3VudCgqKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Ml80LngKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdn X3RhYl9tbF9wM19zMSB0Ml80CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBPdXRwdXQ6IHQyXzQueSwgdDJfNC54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisg ICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzUueSwgKFBBUlRJQUwgc3VtKHQyXzUueSkp LCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQx XzUueCA9IHQyXzUueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJs aWMuZWFnZXJfYWdnX3RhYl9tbF9wM19zMiB0MV81CisgICAgICAgICAgICAgICAgICAgICAgICAg ICBPdXRwdXQ6IHQxXzUueSwgdDFfNS54CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml81LngsIChQQVJUSUFMIHN1bSh0 Ml81LnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAt PiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBPdXRwdXQ6IHQyXzUueCwgUEFSVElBTCBzdW0odDJfNS55KSwgUEFSVElBTCBjb3VudCgqKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Ml81LngKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJf YWdnX3RhYl9tbF9wM19zMiB0Ml81CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBPdXRwdXQ6IHQyXzUueSwgdDJfNS54CisoNjcgcm93cykKKworU0VMRUNUIHQxLnksIHN1 bSh0Mi55KSwgY291bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiX21sIHQxIEpPSU4gZWFnZXJfYWdn X3RhYl9tbCB0MiBPTiB0MS54ID0gdDIueCBHUk9VUCBCWSB0MS55IE9SREVSIEJZIHQxLnk7Cisg eSAgfCAgc3VtICB8IGNvdW50IAorLS0tLSstLS0tLS0tKy0tLS0tLS0KKyAgMCB8ICAgICAwIHwg IDEwODkKKyAgMSB8ICAxMTU2IHwgIDExNTYKKyAgMiB8ICAyMzEyIHwgIDExNTYKKyAgMyB8ICAz NDY4IHwgIDExNTYKKyAgNCB8ICA0NjI0IHwgIDExNTYKKyAgNSB8ICA1NzgwIHwgIDExNTYKKyAg NiB8ICA2OTM2IHwgIDExNTYKKyAgNyB8ICA4MDkyIHwgIDExNTYKKyAgOCB8ICA5MjQ4IHwgIDEx NTYKKyAgOSB8IDEwNDA0IHwgIDExNTYKKyAxMCB8IDExNTYwIHwgIDExNTYKKyAxMSB8IDExOTc5 IHwgIDEwODkKKyAxMiB8IDEzMDY4IHwgIDEwODkKKyAxMyB8IDE0MTU3IHwgIDEwODkKKyAxNCB8 IDE1MjQ2IHwgIDEwODkKKyAxNSB8IDE2MzM1IHwgIDEwODkKKyAxNiB8IDE3NDI0IHwgIDEwODkK KyAxNyB8IDE4NTEzIHwgIDEwODkKKyAxOCB8IDE5NjAyIHwgIDEwODkKKyAxOSB8IDIwNjkxIHwg IDEwODkKKyAyMCB8IDIxNzgwIHwgIDEwODkKKyAyMSB8IDIyODY5IHwgIDEwODkKKyAyMiB8IDIz OTU4IHwgIDEwODkKKyAyMyB8IDI1MDQ3IHwgIDEwODkKKyAyNCB8IDI2MTM2IHwgIDEwODkKKyAy NSB8IDI3MjI1IHwgIDEwODkKKyAyNiB8IDI4MzE0IHwgIDEwODkKKyAyNyB8IDI5NDAzIHwgIDEw ODkKKyAyOCB8IDMwNDkyIHwgIDEwODkKKyAyOSB8IDMxNTgxIHwgIDEwODkKKygzMCByb3dzKQor CistLSBDaGVjayB3aXRoIGVhZ2VyIGFnZ3JlZ2F0aW9uIG92ZXIgam9pbiByZWwKKy0tIGZ1bGwg YWdncmVnYXRpb24KK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0MS54LCBz dW0odDIueSArIHQzLnkpLCBjb3VudCgqKSBGUk9NIGVhZ2VyX2FnZ190YWJfbWwgdDEgSk9JTiBl YWdlcl9hZ2dfdGFiX21sIHQyIE9OIHQxLnggPSB0Mi54IEpPSU4gZWFnZXJfYWdnX3RhYl9tbCB0 MyBvbiB0Mi54ID0gdDMueCBHUk9VUCBCWSB0MS54IE9SREVSIEJZIHQxLng7CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU29ydAorICAgT3V0cHV0OiB0MS54 LCAoc3VtKCh0Mi55ICsgdDMueSkpKSwgKGNvdW50KCopKQorICAgU29ydCBLZXk6IHQxLngKKyAg IC0+ICBBcHBlbmQKKyAgICAgICAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRlCisgICAgICAg ICAgICAgICBPdXRwdXQ6IHQxLngsIHN1bSgodDIueSArIHQzLnkpKSwgY291bnQoKikKKyAgICAg ICAgICAgICAgIEdyb3VwIEtleTogdDEueAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgor ICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MS54LCAoUEFSVElBTCBzdW0oKHQyLnkgKyB0 My55KSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29u ZDogKHQxLnggPSB0Mi54KQorICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1 YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AxIHQxCisgICAgICAgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQxLngKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAg ICAgICAgICAgICAgICBPdXRwdXQ6IHQyLngsIHQzLngsIChQQVJUSUFMIHN1bSgodDIueSArIHQz LnkpKSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4g IFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg T3V0cHV0OiB0Mi54LCB0My54LCBQQVJUSUFMIHN1bSgodDIueSArIHQzLnkpKSwgUEFSVElBTCBj b3VudCgqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Mi54 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLnksIHQyLngsIHQzLnks IHQzLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDog KHQyLnggPSB0My54KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4g IFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AxIHQyCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLnksIHQyLngKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzLnksIHQzLngKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBw dWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMSB0MworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0My55LCB0My54CisgICAgICAgICAtPiAg RmluYWxpemUgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8xLngsIHN1 bSgodDJfMS55ICsgdDNfMS55KSksIGNvdW50KCopCisgICAgICAgICAgICAgICBHcm91cCBLZXk6 IHQxXzEueAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAg ICAgT3V0cHV0OiB0MV8xLngsIChQQVJUSUFMIHN1bSgodDJfMS55ICsgdDNfMS55KSkpLCAoUEFS VElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxXzEueCA9 IHQyXzEueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFn ZXJfYWdnX3RhYl9tbF9wMl9zMSB0MV8xCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRw dXQ6IHQxXzEueAorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIE91dHB1dDogdDJfMS54LCB0M18xLngsIChQQVJUSUFMIHN1bSgodDJfMS55 ICsgdDNfMS55KSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIE91dHB1dDogdDJfMS54LCB0M18xLngsIFBBUlRJQUwgc3VtKCh0Ml8xLnkgKyB0M18x LnkpKSwgUEFSVElBTCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg R3JvdXAgS2V5OiB0Ml8xLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBI YXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDog dDJfMS55LCB0Ml8xLngsIHQzXzEueSwgdDNfMS54CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0Ml8xLnggPSB0M18xLngpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2Fn Z190YWJfbWxfcDJfczEgdDJfMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgT3V0cHV0OiB0Ml8xLnksIHQyXzEueAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIE91dHB1dDogdDNfMS55LCB0M18xLngKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdn X3RhYl9tbF9wMl9zMSB0M18xCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzEueSwgdDNfMS54CisgICAgICAgICAtPiAgRmluYWxp emUgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8yLngsIHN1bSgodDJf Mi55ICsgdDNfMi55KSksIGNvdW50KCopCisgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQxXzIu eAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0 cHV0OiB0MV8yLngsIChQQVJUSUFMIHN1bSgodDJfMi55ICsgdDNfMi55KSkpLCAoUEFSVElBTCBj b3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxXzIueCA9IHQyXzIu eCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdn X3RhYl9tbF9wMl9zMiB0MV8yCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQx XzIueAorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIE91dHB1dDogdDJfMi54LCB0M18yLngsIChQQVJUSUFMIHN1bSgodDJfMi55ICsgdDNf Mi55KSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IE91dHB1dDogdDJfMi54LCB0M18yLngsIFBBUlRJQUwgc3VtKCh0Ml8yLnkgKyB0M18yLnkpKSwg UEFSVElBTCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAg S2V5OiB0Ml8yLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoIEpv aW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMi55 LCB0Ml8yLngsIHQzXzIueSwgdDNfMi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBIYXNoIENvbmQ6ICh0Ml8yLnggPSB0M18yLngpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJf bWxfcDJfczIgdDJfMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgT3V0cHV0OiB0Ml8yLnksIHQyXzIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIE91dHB1dDogdDNfMi55LCB0M18yLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9t bF9wMl9zMiB0M18yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBPdXRwdXQ6IHQzXzIueSwgdDNfMi54CisgICAgICAgICAtPiAgRmluYWxpemUgSGFz aEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8zLngsIHN1bSgodDJfMy55ICsg dDNfMy55KSksIGNvdW50KCopCisgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQxXzMueAorICAg ICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0 MV8zLngsIChQQVJUSUFMIHN1bSgodDJfMy55ICsgdDNfMy55KSkpLCAoUEFSVElBTCBjb3VudCgq KSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxXzMueCA9IHQyXzMueCkKKyAg ICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9t bF9wM19zMSB0MV8zCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzMueAor ICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IE91dHB1dDogdDJfMy54LCB0M18zLngsIChQQVJUSUFMIHN1bSgodDJfMy55ICsgdDNfMy55KSkp LCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0 aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1 dDogdDJfMy54LCB0M18zLngsIFBBUlRJQUwgc3VtKCh0Ml8zLnkgKyB0M18zLnkpKSwgUEFSVElB TCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0 Ml8zLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMy55LCB0Ml8z LngsIHQzXzMueSwgdDNfMy54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBIYXNoIENvbmQ6ICh0Ml8zLnggPSB0M18zLngpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDNf czEgdDJfMworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0 cHV0OiB0Ml8zLnksIHQyXzMueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IE91dHB1dDogdDNfMy55LCB0M18zLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wM19z MSB0M18zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBPdXRwdXQ6IHQzXzMueSwgdDNfMy54CisgICAgICAgICAtPiAgRmluYWxpemUgSGFzaEFnZ3Jl Z2F0ZQorICAgICAgICAgICAgICAgT3V0cHV0OiB0MV80LngsIHN1bSgodDJfNC55ICsgdDNfNC55 KSksIGNvdW50KCopCisgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQxXzQueAorICAgICAgICAg ICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV80Lngs IChQQVJUSUFMIHN1bSgodDJfNC55ICsgdDNfNC55KSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAg ICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxXzQueCA9IHQyXzQueCkKKyAgICAgICAg ICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wM19z MiB0MV80CisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzQueAorICAgICAg ICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1 dDogdDJfNC54LCB0M180LngsIChQQVJUSUFMIHN1bSgodDJfNC55ICsgdDNfNC55KSkpLCAoUEFS VElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhh c2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJf NC54LCB0M180LngsIFBBUlRJQUwgc3VtKCh0Ml80LnkgKyB0M180LnkpKSwgUEFSVElBTCBjb3Vu dCgqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Ml80LngK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfNC55LCB0Ml80LngsIHQz XzQueSwgdDNfNC54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIYXNo IENvbmQ6ICh0Ml80LnggPSB0M180LngpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDNfczIgdDJf NAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0 Ml80LnksIHQyXzQueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4g IEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1 dDogdDNfNC55LCB0M180LngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wM19zMiB0M180 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRw dXQ6IHQzXzQueSwgdDNfNC54CisoMTE0IHJvd3MpCisKK1NFTEVDVCB0MS54LCBzdW0odDIueSAr IHQzLnkpLCBjb3VudCgqKSBGUk9NIGVhZ2VyX2FnZ190YWJfbWwgdDEgSk9JTiBlYWdlcl9hZ2df dGFiX21sIHQyIE9OIHQxLnggPSB0Mi54IEpPSU4gZWFnZXJfYWdnX3RhYl9tbCB0MyBvbiB0Mi54 ID0gdDMueCBHUk9VUCBCWSB0MS54IE9SREVSIEJZIHQxLng7CisgeCAgfCAgIHN1bSAgIHwgY291 bnQgCistLS0tKy0tLS0tLS0tLSstLS0tLS0tCisgIDAgfCAgICAgICAwIHwgMzU5MzcKKyAgMSB8 ICAgNzg2MDggfCAzOTMwNAorICAyIHwgIDE1NzIxNiB8IDM5MzA0CisgIDMgfCAgMjM1ODI0IHwg MzkzMDQKKyAgNCB8ICAzMTQ0MzIgfCAzOTMwNAorICA1IHwgIDM5MzA0MCB8IDM5MzA0CisgIDYg fCAgNDcxNjQ4IHwgMzkzMDQKKyAgNyB8ICA1NTAyNTYgfCAzOTMwNAorICA4IHwgIDYyODg2NCB8 IDM5MzA0CisgIDkgfCAgNzA3NDcyIHwgMzkzMDQKKyAxMCB8ICA3ODYwODAgfCAzOTMwNAorIDEx IHwgIDc5MDYxNCB8IDM1OTM3CisgMTIgfCAgODYyNDg4IHwgMzU5MzcKKyAxMyB8ICA5MzQzNjIg fCAzNTkzNworIDE0IHwgMTAwNjIzNiB8IDM1OTM3CisgMTUgfCAxMDc4MTEwIHwgMzU5MzcKKyAx NiB8IDExNDk5ODQgfCAzNTkzNworIDE3IHwgMTIyMTg1OCB8IDM1OTM3CisgMTggfCAxMjkzNzMy IHwgMzU5MzcKKyAxOSB8IDEzNjU2MDYgfCAzNTkzNworIDIwIHwgMTQzNzQ4MCB8IDM1OTM3Cisg MjEgfCAxNTA5MzU0IHwgMzU5MzcKKyAyMiB8IDE1ODEyMjggfCAzNTkzNworIDIzIHwgMTY1MzEw MiB8IDM1OTM3CisgMjQgfCAxNzI0OTc2IHwgMzU5MzcKKyAyNSB8IDE3OTY4NTAgfCAzNTkzNwor IDI2IHwgMTg2ODcyNCB8IDM1OTM3CisgMjcgfCAxOTQwNTk4IHwgMzU5MzcKKyAyOCB8IDIwMTI0 NzIgfCAzNTkzNworIDI5IHwgMjA4NDM0NiB8IDM1OTM3CisoMzAgcm93cykKKworLS0gcGFydGlh bCBhZ2dyZWdhdGlvbgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQzLnks IHN1bSh0Mi55ICsgdDMueSksIGNvdW50KCopIEZST00gZWFnZXJfYWdnX3RhYl9tbCB0MSBKT0lO IGVhZ2VyX2FnZ190YWJfbWwgdDIgT04gdDEueCA9IHQyLnggSk9JTiBlYWdlcl9hZ2dfdGFiX21s IHQzIG9uIHQyLnggPSB0My54IEdST1VQIEJZIHQzLnkgT1JERVIgQlkgdDMueTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU29y dAorICAgT3V0cHV0OiB0My55LCAoc3VtKCh0Mi55ICsgdDMueSkpKSwgKGNvdW50KCopKQorICAg U29ydCBLZXk6IHQzLnkKKyAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRlCisgICAgICAgICBP dXRwdXQ6IHQzLnksIHN1bSgodDIueSArIHQzLnkpKSwgY291bnQoKikKKyAgICAgICAgIEdyb3Vw IEtleTogdDMueQorICAgICAgICAgLT4gIEFwcGVuZAorICAgICAgICAgICAgICAgLT4gIEhhc2gg Sm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0M18xLnksIChQQVJUSUFMIHN1bSgo dDJfMS55ICsgdDNfMS55KSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAg ICAgIEhhc2ggQ29uZDogKHQxXzEueCA9IHQyXzEueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMSB0MV8xCisgICAgICAgICAg ICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzEueAorICAgICAgICAgICAgICAgICAgICAgLT4g IEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNfMS55LCB0Ml8xLngs IHQzXzEueCwgKFBBUlRJQUwgc3VtKCh0Ml8xLnkgKyB0M18xLnkpKSksIChQQVJUSUFMIGNvdW50 KCopKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0 ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0M18xLnksIHQyXzEu eCwgdDNfMS54LCBQQVJUSUFMIHN1bSgodDJfMS55ICsgdDNfMS55KSksIFBBUlRJQUwgY291bnQo KikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDNfMS55LCB0 Ml8xLngsIHQzXzEueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gg Sm9pbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8x LnksIHQzXzEueSwgdDJfMS54LCB0M18xLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEhhc2ggQ29uZDogKHQyXzEueCA9IHQzXzEueCkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3Rh Yl9tbF9wMSB0Ml8xCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBPdXRwdXQ6IHQyXzEueSwgdDJfMS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgT3V0cHV0OiB0M18xLnksIHQzXzEueAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21s X3AxIHQzXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE91dHB1dDogdDNfMS55LCB0M18xLngKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4K KyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNfMi55LCAoUEFSVElBTCBzdW0oKHQyXzIu eSArIHQzXzIueSkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICBI YXNoIENvbmQ6ICh0MV8yLnggPSB0Ml8yLngpCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2Vx IFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDJfczEgdDFfMgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8yLngKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBI YXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzIueSwgdDJfMi54LCB0 M18yLngsIChQQVJUSUFMIHN1bSgodDJfMi55ICsgdDNfMi55KSkpLCAoUEFSVElBTCBjb3VudCgq KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNfMi55LCB0Ml8yLngs IHQzXzIueCwgUEFSVElBTCBzdW0oKHQyXzIueSArIHQzXzIueSkpLCBQQVJUSUFMIGNvdW50KCop CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQzXzIueSwgdDJf Mi54LCB0M18yLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoIEpv aW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMi55 LCB0M18yLnksIHQyXzIueCwgdDNfMi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBIYXNoIENvbmQ6ICh0Ml8yLnggPSB0M18yLngpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJf bWxfcDJfczEgdDJfMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgT3V0cHV0OiB0Ml8yLnksIHQyXzIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIE91dHB1dDogdDNfMi55LCB0M18yLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9t bF9wMl9zMSB0M18yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBPdXRwdXQ6IHQzXzIueSwgdDNfMi54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBK b2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzMueSwgKFBBUlRJQUwgc3VtKCh0 Ml8zLnkgKyB0M18zLnkpKSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAg ICAgSGFzaCBDb25kOiAodDFfMy54ID0gdDJfMy54KQorICAgICAgICAgICAgICAgICAgICAgLT4g IFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AyX3MyIHQxXzMKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMy54CisgICAgICAgICAgICAgICAgICAgICAt PiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0M18zLnksIHQyXzMu eCwgdDNfMy54LCAoUEFSVElBTCBzdW0oKHQyXzMueSArIHQzXzMueSkpKSwgKFBBUlRJQUwgY291 bnQoKikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVn YXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzMueSwgdDJf My54LCB0M18zLngsIFBBUlRJQUwgc3VtKCh0Ml8zLnkgKyB0M18zLnkpKSwgUEFSVElBTCBjb3Vu dCgqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0M18zLnks IHQyXzMueCwgdDNfMy54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFz aCBKb2luCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQy XzMueSwgdDNfMy55LCB0Ml8zLngsIHQzXzMueAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgSGFzaCBDb25kOiAodDJfMy54ID0gdDNfMy54KQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2df dGFiX21sX3AyX3MyIHQyXzMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIE91dHB1dDogdDJfMy55LCB0Ml8zLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IHQzXzMueSwgdDNfMy54CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190 YWJfbWxfcDJfczIgdDNfMworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgT3V0cHV0OiB0M18zLnksIHQzXzMueAorICAgICAgICAgICAgICAgLT4gIEhh c2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0M180LnksIChQQVJUSUFMIHN1 bSgodDJfNC55ICsgdDNfNC55KSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAg ICAgICAgIEhhc2ggQ29uZDogKHQxXzQueCA9IHQyXzQueCkKKyAgICAgICAgICAgICAgICAgICAg IC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wM19zMSB0MV80CisgICAg ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzQueAorICAgICAgICAgICAgICAgICAg ICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNfNC55LCB0 Ml80LngsIHQzXzQueCwgKFBBUlRJQUwgc3VtKCh0Ml80LnkgKyB0M180LnkpKSksIChQQVJUSUFM IGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFn Z3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0M180Lnks IHQyXzQueCwgdDNfNC54LCBQQVJUSUFMIHN1bSgodDJfNC55ICsgdDNfNC55KSksIFBBUlRJQUwg Y291bnQoKikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDNf NC55LCB0Ml80LngsIHQzXzQueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4g IEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0 OiB0Ml80LnksIHQzXzQueSwgdDJfNC54LCB0M180LngKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQyXzQueCA9IHQzXzQueCkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJf YWdnX3RhYl9tbF9wM19zMSB0Ml80CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IHQyXzQueSwgdDJfNC54CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgT3V0cHV0OiB0M180LnksIHQzXzQueAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9h Z2dfdGFiX21sX3AzX3MxIHQzXzQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE91dHB1dDogdDNfNC55LCB0M180LngKKyAgICAgICAgICAgICAgIC0+ ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNfNS55LCAoUEFSVElB TCBzdW0oKHQyXzUueSArIHQzXzUueSkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAg ICAgICAgICAgICBIYXNoIENvbmQ6ICh0MV81LnggPSB0Ml81LngpCisgICAgICAgICAgICAgICAg ICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDNfczIgdDFfNQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV81LngKKyAgICAgICAgICAgICAg ICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzUu eSwgdDJfNS54LCB0M181LngsIChQQVJUSUFMIHN1bSgodDJfNS55ICsgdDNfNS55KSkpLCAoUEFS VElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhh c2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNf NS55LCB0Ml81LngsIHQzXzUueCwgUEFSVElBTCBzdW0oKHQyXzUueSArIHQzXzUueSkpLCBQQVJU SUFMIGNvdW50KCopCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6 IHQzXzUueSwgdDJfNS54LCB0M181LngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91 dHB1dDogdDJfNS55LCB0M181LnksIHQyXzUueCwgdDNfNS54CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0Ml81LnggPSB0M181LngpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVh Z2VyX2FnZ190YWJfbWxfcDNfczIgdDJfNQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml81LnksIHQyXzUueAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNfNS55LCB0M181LngKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFn ZXJfYWdnX3RhYl9tbF9wM19zMiB0M181CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzUueSwgdDNfNS54CisoMTAyIHJvd3MpCisK K1NFTEVDVCB0My55LCBzdW0odDIueSArIHQzLnkpLCBjb3VudCgqKSBGUk9NIGVhZ2VyX2FnZ190 YWJfbWwgdDEgSk9JTiBlYWdlcl9hZ2dfdGFiX21sIHQyIE9OIHQxLnggPSB0Mi54IEpPSU4gZWFn ZXJfYWdnX3RhYl9tbCB0MyBvbiB0Mi54ID0gdDMueCBHUk9VUCBCWSB0My55IE9SREVSIEJZIHQz Lnk7CisgeSAgfCAgIHN1bSAgIHwgY291bnQgCistLS0tKy0tLS0tLS0tLSstLS0tLS0tCisgIDAg fCAgICAgICAwIHwgMzU5MzcKKyAgMSB8ICAgNzg2MDggfCAzOTMwNAorICAyIHwgIDE1NzIxNiB8 IDM5MzA0CisgIDMgfCAgMjM1ODI0IHwgMzkzMDQKKyAgNCB8ICAzMTQ0MzIgfCAzOTMwNAorICA1 IHwgIDM5MzA0MCB8IDM5MzA0CisgIDYgfCAgNDcxNjQ4IHwgMzkzMDQKKyAgNyB8ICA1NTAyNTYg fCAzOTMwNAorICA4IHwgIDYyODg2NCB8IDM5MzA0CisgIDkgfCAgNzA3NDcyIHwgMzkzMDQKKyAx MCB8ICA3ODYwODAgfCAzOTMwNAorIDExIHwgIDc5MDYxNCB8IDM1OTM3CisgMTIgfCAgODYyNDg4 IHwgMzU5MzcKKyAxMyB8ICA5MzQzNjIgfCAzNTkzNworIDE0IHwgMTAwNjIzNiB8IDM1OTM3Cisg MTUgfCAxMDc4MTEwIHwgMzU5MzcKKyAxNiB8IDExNDk5ODQgfCAzNTkzNworIDE3IHwgMTIyMTg1 OCB8IDM1OTM3CisgMTggfCAxMjkzNzMyIHwgMzU5MzcKKyAxOSB8IDEzNjU2MDYgfCAzNTkzNwor IDIwIHwgMTQzNzQ4MCB8IDM1OTM3CisgMjEgfCAxNTA5MzU0IHwgMzU5MzcKKyAyMiB8IDE1ODEy MjggfCAzNTkzNworIDIzIHwgMTY1MzEwMiB8IDM1OTM3CisgMjQgfCAxNzI0OTc2IHwgMzU5MzcK KyAyNSB8IDE3OTY4NTAgfCAzNTkzNworIDI2IHwgMTg2ODcyNCB8IDM1OTM3CisgMjcgfCAxOTQw NTk4IHwgMzU5MzcKKyAyOCB8IDIwMTI0NzIgfCAzNTkzNworIDI5IHwgMjA4NDM0NiB8IDM1OTM3 CisoMzAgcm93cykKKworRFJPUCBUQUJMRSBlYWdlcl9hZ2dfdGFiX21sOwpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFy YWxsZWxfc2NoZWR1bGUKaW5kZXggMWQ4YTQxNGVlYS4uMjUwYTlkYmEyMSAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQorKysgYi9zcmMvdGVzdC9yZWdyZXNz L3BhcmFsbGVsX3NjaGVkdWxlCkBAIC0xMTksNyArMTE5LDcgQEAgdGVzdDogcGxhbmNhY2hlIGxp bWl0IHBscGdzcWwgY29weTIgdGVtcCBkb21haW4gcmFuZ2VmdW5jcyBwcmVwYXJlIGNvbnZlcnNp b24gdHIKICMgVGhlIHN0YXRzIHRlc3QgcmVzZXRzIHN0YXRzLCBzbyBub3RoaW5nIGVsc2UgbmVl ZGluZyBzdGF0cyBhY2Nlc3MgY2FuIGJlIGluCiAjIHRoaXMgZ3JvdXAuCiAjIC0tLS0tLS0tLS0K LXRlc3Q6IHBhcnRpdGlvbl9qb2luIHBhcnRpdGlvbl9wcnVuZSByZWxvcHRpb25zIGhhc2hfcGFy dCBpbmRleGluZyBwYXJ0aXRpb25fYWdncmVnYXRlIHBhcnRpdGlvbl9pbmZvIHR1cGxlc29ydCBl eHBsYWluIGNvbXByZXNzaW9uIG1lbW9pemUgc3RhdHMgcHJlZGljYXRlCit0ZXN0OiBwYXJ0aXRp b25fam9pbiBwYXJ0aXRpb25fcHJ1bmUgcmVsb3B0aW9ucyBoYXNoX3BhcnQgaW5kZXhpbmcgcGFy dGl0aW9uX2FnZ3JlZ2F0ZSBwYXJ0aXRpb25faW5mbyB0dXBsZXNvcnQgZXhwbGFpbiBjb21wcmVz c2lvbiBtZW1vaXplIHN0YXRzIHByZWRpY2F0ZSBlYWdlcl9hZ2dyZWdhdGUKIAogIyBldmVudF90 cmlnZ2VyIGRlcGVuZHMgb24gY3JlYXRlX2FtIGFuZCBjYW5ub3QgcnVuIGNvbmN1cnJlbnRseSB3 aXRoCiAjIGFueSB0ZXN0IHRoYXQgcnVucyBEREwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL2VhZ2VyX2FnZ3JlZ2F0ZS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9lYWdlcl9h Z2dyZWdhdGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjQwNTBl NGRmNDQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9lYWdlcl9hZ2dy ZWdhdGUuc3FsCkBAIC0wLDAgKzEsMTkyIEBACistLQorLS0gRUFHRVIgQUdHUkVHQVRJT04KKy0t IFRlc3Qgd2UgY2FuIHB1c2ggYWdncmVnYXRpb24gZG93biBiZWxvdyBqb2luCistLQorCistLSBF bmFibGUgZWFnZXIgYWdncmVnYXRpb24sIHdoaWNoIGJ5IGRlZmF1bHQgaXMgZGlzYWJsZWQuCitT RVQgZW5hYmxlX2VhZ2VyX2FnZ3JlZ2F0ZSBUTyBvbjsKKworQ1JFQVRFIFRBQkxFIGVhZ2VyX2Fn Z190MSAoYSBpbnQsIGIgaW50LCBjIGRvdWJsZSBwcmVjaXNpb24pOworQ1JFQVRFIFRBQkxFIGVh Z2VyX2FnZ190MiAoYSBpbnQsIGIgaW50LCBjIGRvdWJsZSBwcmVjaXNpb24pOworQ1JFQVRFIFRB QkxFIGVhZ2VyX2FnZ190MyAoYSBpbnQsIGIgaW50LCBjIGRvdWJsZSBwcmVjaXNpb24pOworCitJ TlNFUlQgSU5UTyBlYWdlcl9hZ2dfdDEgU0VMRUNUIGksIGksIGkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMSwgMTAwMClpOworSU5TRVJUIElOVE8gZWFnZXJfYWdnX3QyIFNFTEVDVCBpLCBpJTEwLCBp IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDApaTsKK0lOU0VSVCBJTlRPIGVhZ2VyX2FnZ190 MyBTRUxFQ1QgaSUxMCwgaSUxMCwgaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDAwKWk7CisK K0FOQUxZWkUgZWFnZXJfYWdnX3QxOworQU5BTFlaRSBlYWdlcl9hZ2dfdDI7CitBTkFMWVpFIGVh Z2VyX2FnZ190MzsKKworCistLQorLS0gVGVzdCBlYWdlciBhZ2dyZWdhdGlvbiBvdmVyIGJhc2Ug cmVsCistLQorCistLSBQZXJmb3JtIHNjYW4gb2YgYSB0YWJsZSwgYWdncmVnYXRlIHRoZSByZXN1 bHQsIGpvaW4gaXQgdG8gdGhlIG90aGVyIHRhYmxlCistLSBhbmQgZmluYWxpemUgdGhlIGFnZ3Jl Z2F0aW9uLgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQxLmEsIGF2Zyh0 Mi5jKSBGUk9NIGVhZ2VyX2FnZ190MSB0MSBKT0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0g dDIuYiBHUk9VUCBCWSB0MS5hIE9SREVSIEJZIHQxLmE7CitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMp IEZST00gZWFnZXJfYWdnX3QxIHQxIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5i IEdST1VQIEJZIHQxLmEgT1JERVIgQlkgdDEuYTsKKworLS0gUHJvZHVjZSByZXN1bHRzIHdpdGgg c29ydGluZyBhZ2dyZWdhdGlvbgorU0VUIGVuYWJsZV9oYXNoYWdnIFRPIG9mZjsKKworRVhQTEFJ TiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQxLmEsIGF2Zyh0Mi5jKSBGUk9NIGVhZ2Vy X2FnZ190MSB0MSBKT0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0gdDIuYiBHUk9VUCBCWSB0 MS5hIE9SREVSIEJZIHQxLmE7CitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMpIEZST00gZWFnZXJfYWdn X3QxIHQxIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iIEdST1VQIEJZIHQxLmEg T1JERVIgQlkgdDEuYTsKKworUkVTRVQgZW5hYmxlX2hhc2hhZ2c7CisKKworLS0KKy0tIFRlc3Qg ZWFnZXIgYWdncmVnYXRpb24gb3ZlciBqb2luIHJlbAorLS0KKworLS0gUGVyZm9ybSBqb2luIG9m IHRhYmxlcywgYWdncmVnYXRlIHRoZSByZXN1bHQsIGpvaW4gaXQgdG8gdGhlIG90aGVyIHRhYmxl CistLSBhbmQgZmluYWxpemUgdGhlIGFnZ3JlZ2F0aW9uLgorRVhQTEFJTiAoVkVSQk9TRSwgQ09T VFMgT0ZGKQorU0VMRUNUIHQxLmEsIGF2Zyh0Mi5jICsgdDMuYykgRlJPTSBlYWdlcl9hZ2dfdDEg dDEgSk9JTiBlYWdlcl9hZ2dfdDIgdDIgT04gdDEuYiA9IHQyLmIgSk9JTiBlYWdlcl9hZ2dfdDMg dDMgT04gdDIuYSA9IHQzLmEgR1JPVVAgQlkgdDEuYSBPUkRFUiBCWSB0MS5hOworU0VMRUNUIHQx LmEsIGF2Zyh0Mi5jICsgdDMuYykgRlJPTSBlYWdlcl9hZ2dfdDEgdDEgSk9JTiBlYWdlcl9hZ2df dDIgdDIgT04gdDEuYiA9IHQyLmIgSk9JTiBlYWdlcl9hZ2dfdDMgdDMgT04gdDIuYSA9IHQzLmEg R1JPVVAgQlkgdDEuYSBPUkRFUiBCWSB0MS5hOworCistLSBQcm9kdWNlIHJlc3VsdHMgd2l0aCBz b3J0aW5nIGFnZ3JlZ2F0aW9uCitTRVQgZW5hYmxlX2hhc2hhZ2cgVE8gb2ZmOworCitFWFBMQUlO IChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMgKyB0My5jKSBGUk9N IGVhZ2VyX2FnZ190MSB0MSBKT0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0gdDIuYiBKT0lO IGVhZ2VyX2FnZ190MyB0MyBPTiB0Mi5hID0gdDMuYSBHUk9VUCBCWSB0MS5hIE9SREVSIEJZIHQx LmE7CitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMgKyB0My5jKSBGUk9NIGVhZ2VyX2FnZ190MSB0MSBK T0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0gdDIuYiBKT0lOIGVhZ2VyX2FnZ190MyB0MyBP TiB0Mi5hID0gdDMuYSBHUk9VUCBCWSB0MS5hIE9SREVSIEJZIHQxLmE7CisKK1JFU0VUIGVuYWJs ZV9oYXNoYWdnOworCisKKy0tCistLSBUZXN0IHRoYXQgZWFnZXIgYWdncmVnYXRpb24gd29ya3Mg Zm9yIG91dGVyIGpvaW4KKy0tCisKKy0tIEVuc3VyZSBhZ2dyZWdhdGlvbiBjYW4gYmUgcHVzaGVk IGRvd24gdG8gdGhlIG5vbi1udWxsYWJsZSBzaWRlCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBP RkYpCitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMpIEZST00gZWFnZXJfYWdnX3QxIHQxIFJJR0hUIEpP SU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iIEdST1VQIEJZIHQxLmEgT1JERVIgQlkg dDEuYTsKK1NFTEVDVCB0MS5hLCBhdmcodDIuYykgRlJPTSBlYWdlcl9hZ2dfdDEgdDEgUklHSFQg Sk9JTiBlYWdlcl9hZ2dfdDIgdDIgT04gdDEuYiA9IHQyLmIgR1JPVVAgQlkgdDEuYSBPUkRFUiBC WSB0MS5hOworCistLSBFbnN1cmUgYWdncmVnYXRpb24gY2Fubm90IGJlIHB1c2hlZCBkb3duIHRv IHRoZSBudWxsYWJsZSBzaWRlCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1Qg dDIuYiwgYXZnKHQyLmMpIEZST00gZWFnZXJfYWdnX3QxIHQxIExFRlQgSk9JTiBlYWdlcl9hZ2df dDIgdDIgT04gdDEuYiA9IHQyLmIgR1JPVVAgQlkgdDIuYiBPUkRFUiBCWSB0Mi5iOworU0VMRUNU IHQyLmIsIGF2Zyh0Mi5jKSBGUk9NIGVhZ2VyX2FnZ190MSB0MSBMRUZUIEpPSU4gZWFnZXJfYWdn X3QyIHQyIE9OIHQxLmIgPSB0Mi5iIEdST1VQIEJZIHQyLmIgT1JERVIgQlkgdDIuYjsKKworCist LQorLS0gVGVzdCB0aGF0IGVhZ2VyIGFnZ3JlZ2F0aW9uIHdvcmtzIGZvciBwYXJhbGxlbCBwbGFu cworLS0KKworU0VUIHBhcmFsbGVsX3NldHVwX2Nvc3Q9MDsKK1NFVCBwYXJhbGxlbF90dXBsZV9j b3N0PTA7CitTRVQgbWluX3BhcmFsbGVsX3RhYmxlX3NjYW5fc2l6ZT0wOworU0VUIG1heF9wYXJh bGxlbF93b3JrZXJzX3Blcl9nYXRoZXI9NDsKKworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZG KQorU0VMRUNUIHQxLmEsIGF2Zyh0Mi5jKSBGUk9NIGVhZ2VyX2FnZ190MSB0MSBKT0lOIGVhZ2Vy X2FnZ190MiB0MiBPTiB0MS5iID0gdDIuYiBHUk9VUCBCWSB0MS5hIE9SREVSIEJZIHQxLmE7CitT RUxFQ1QgdDEuYSwgYXZnKHQyLmMpIEZST00gZWFnZXJfYWdnX3QxIHQxIEpPSU4gZWFnZXJfYWdn X3QyIHQyIE9OIHQxLmIgPSB0Mi5iIEdST1VQIEJZIHQxLmEgT1JERVIgQlkgdDEuYTsKKworUkVT RVQgcGFyYWxsZWxfc2V0dXBfY29zdDsKK1JFU0VUIHBhcmFsbGVsX3R1cGxlX2Nvc3Q7CitSRVNF VCBtaW5fcGFyYWxsZWxfdGFibGVfc2Nhbl9zaXplOworUkVTRVQgbWF4X3BhcmFsbGVsX3dvcmtl cnNfcGVyX2dhdGhlcjsKKworCitEUk9QIFRBQkxFIGVhZ2VyX2FnZ190MTsKK0RST1AgVEFCTEUg ZWFnZXJfYWdnX3QyOworRFJPUCBUQUJMRSBlYWdlcl9hZ2dfdDM7CisKKworLS0KKy0tIFRlc3Qg ZWFnZXIgYWdncmVnYXRpb24gZm9yIHBhcnRpdGlvbndpc2Ugam9pbgorLS0KKworLS0gRW5hYmxl IHBhcnRpdGlvbndpc2UgYWdncmVnYXRlLCB3aGljaCBieSBkZWZhdWx0IGlzIGRpc2FibGVkLgor U0VUIGVuYWJsZV9wYXJ0aXRpb253aXNlX2FnZ3JlZ2F0ZSBUTyB0cnVlOworLS0gRW5hYmxlIHBh cnRpdGlvbndpc2Ugam9pbiwgd2hpY2ggYnkgZGVmYXVsdCBpcyBkaXNhYmxlZC4KK1NFVCBlbmFi bGVfcGFydGl0aW9ud2lzZV9qb2luIFRPIHRydWU7CisKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2df dGFiMSh4IGludCwgeSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSh4KTsKK0NSRUFURSBUQUJMRSBl YWdlcl9hZ2dfdGFiMV9wMSBQQVJUSVRJT04gT0YgZWFnZXJfYWdnX3RhYjEgRk9SIFZBTFVFUyBG Uk9NICgwKSBUTyAoMTApOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWIxX3AyIFBBUlRJVElP TiBPRiBlYWdlcl9hZ2dfdGFiMSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApOworQ1JFQVRF IFRBQkxFIGVhZ2VyX2FnZ190YWIxX3AzIFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiMSBGT1Ig VkFMVUVTIEZST00gKDIwKSBUTyAoMzApOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWIyKHgg aW50LCB5IGludCkgUEFSVElUSU9OIEJZIFJBTkdFKHkpOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2Fn Z190YWIyX3AxIFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiMiBGT1IgVkFMVUVTIEZST00gKDAp IFRPICgxMCk7CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3RhYjJfcDIgUEFSVElUSU9OIE9GIGVh Z2VyX2FnZ190YWIyIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCk7CitDUkVBVEUgVEFCTEUg ZWFnZXJfYWdnX3RhYjJfcDMgUEFSVElUSU9OIE9GIGVhZ2VyX2FnZ190YWIyIEZPUiBWQUxVRVMg RlJPTSAoMjApIFRPICgzMCk7CitJTlNFUlQgSU5UTyBlYWdlcl9hZ2dfdGFiMSBTRUxFQ1QgaSAl IDMwLCBpICUgMjAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMCwgMjk5LCAyKSBpOworSU5TRVJUIElO VE8gZWFnZXJfYWdnX3RhYjIgU0VMRUNUIGkgJSAyMCwgaSAlIDMwIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDAsIDI5OSwgMykgaTsKKworQU5BTFlaRSBlYWdlcl9hZ2dfdGFiMTsKK0FOQUxZWkUgZWFn ZXJfYWdnX3RhYjI7CisKKy0tIFdoZW4gR1JPVVAgQlkgY2xhdXNlIG1hdGNoZXM7IGZ1bGwgYWdn cmVnYXRpb24gaXMgcGVyZm9ybWVkIGZvciBlYWNoIHBhcnRpdGlvbi4KK0VYUExBSU4gKFZFUkJP U0UsIENPU1RTIE9GRikKK1NFTEVDVCB0MS54LCBzdW0odDEueSksIGNvdW50KCopIEZST00gZWFn ZXJfYWdnX3RhYjEgdDEsIGVhZ2VyX2FnZ190YWIyIHQyIFdIRVJFIHQxLnggPSB0Mi55IEdST1VQ IEJZIHQxLnggT1JERVIgQlkgdDEueDsKK1NFTEVDVCB0MS54LCBzdW0odDEueSksIGNvdW50KCop IEZST00gZWFnZXJfYWdnX3RhYjEgdDEsIGVhZ2VyX2FnZ190YWIyIHQyIFdIRVJFIHQxLnggPSB0 Mi55IEdST1VQIEJZIHQxLnggT1JERVIgQlkgdDEueDsKKworLS0gR1JPVVAgQlkgaGF2aW5nIG90 aGVyIG1hdGNoaW5nIGtleQorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQy LnksIHN1bSh0MS55KSwgY291bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiMSB0MSwgZWFnZXJfYWdn X3RhYjIgdDIgV0hFUkUgdDEueCA9IHQyLnkgR1JPVVAgQlkgdDIueSBPUkRFUiBCWSB0Mi55Owor U0VMRUNUIHQyLnksIHN1bSh0MS55KSwgY291bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiMSB0MSwg ZWFnZXJfYWdnX3RhYjIgdDIgV0hFUkUgdDEueCA9IHQyLnkgR1JPVVAgQlkgdDIueSBPUkRFUiBC WSB0Mi55OworCistLSBXaGVuIEdST1VQIEJZIGNsYXVzZSBkb2VzIG5vdCBtYXRjaDsgcGFydGlh bCBhZ2dyZWdhdGlvbiBpcyBwZXJmb3JtZWQgZm9yIGVhY2ggcGFydGl0aW9uLgorRVhQTEFJTiAo VkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQyLngsIHN1bSh0MS54KSwgY291bnQoKikgRlJP TSBlYWdlcl9hZ2dfdGFiMSB0MSwgZWFnZXJfYWdnX3RhYjIgdDIgV0hFUkUgdDEueCA9IHQyLnkg R1JPVVAgQlkgdDIueCBIQVZJTkcgYXZnKHQxLngpID4gMTAgT1JERVIgQlkgdDIueDsKK1NFTEVD VCB0Mi54LCBzdW0odDEueCksIGNvdW50KCopIEZST00gZWFnZXJfYWdnX3RhYjEgdDEsIGVhZ2Vy X2FnZ190YWIyIHQyIFdIRVJFIHQxLnggPSB0Mi55IEdST1VQIEJZIHQyLnggSEFWSU5HIGF2Zyh0 MS54KSA+IDEwIE9SREVSIEJZIHQyLng7CisKKy0tIENoZWNrIHdpdGggZWFnZXIgYWdncmVnYXRp b24gb3ZlciBqb2luIHJlbAorLS0gZnVsbCBhZ2dyZWdhdGlvbgorRVhQTEFJTiAoVkVSQk9TRSwg Q09TVFMgT0ZGKQorU0VMRUNUIHQxLngsIHN1bSh0Mi55ICsgdDMueSkgRlJPTSBlYWdlcl9hZ2df dGFiMSB0MSBKT0lOIGVhZ2VyX2FnZ190YWIxIHQyIE9OIHQxLnggPSB0Mi54IEpPSU4gZWFnZXJf YWdnX3RhYjEgdDMgT04gdDIueCA9IHQzLnggR1JPVVAgQlkgdDEueCBPUkRFUiBCWSB0MS54Owor U0VMRUNUIHQxLngsIHN1bSh0Mi55ICsgdDMueSkgRlJPTSBlYWdlcl9hZ2dfdGFiMSB0MSBKT0lO IGVhZ2VyX2FnZ190YWIxIHQyIE9OIHQxLnggPSB0Mi54IEpPSU4gZWFnZXJfYWdnX3RhYjEgdDMg T04gdDIueCA9IHQzLnggR1JPVVAgQlkgdDEueCBPUkRFUiBCWSB0MS54OworCistLSBwYXJ0aWFs IGFnZ3JlZ2F0aW9uCitTRVQgZW5hYmxlX2hhc2hhZ2cgVE8gb2ZmOworRVhQTEFJTiAoVkVSQk9T RSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQzLnksIHN1bSh0Mi55ICsgdDMueSkgRlJPTSBlYWdlcl9h Z2dfdGFiMSB0MSBKT0lOIGVhZ2VyX2FnZ190YWIxIHQyIE9OIHQxLnggPSB0Mi54IEpPSU4gZWFn ZXJfYWdnX3RhYjEgdDMgT04gdDIueCA9IHQzLnggR1JPVVAgQlkgdDMueSBPUkRFUiBCWSB0My55 OworU0VMRUNUIHQzLnksIHN1bSh0Mi55ICsgdDMueSkgRlJPTSBlYWdlcl9hZ2dfdGFiMSB0MSBK T0lOIGVhZ2VyX2FnZ190YWIxIHQyIE9OIHQxLnggPSB0Mi54IEpPSU4gZWFnZXJfYWdnX3RhYjEg dDMgT04gdDIueCA9IHQzLnggR1JPVVAgQlkgdDMueSBPUkRFUiBCWSB0My55OworUkVTRVQgZW5h YmxlX2hhc2hhZ2c7CisKK0RST1AgVEFCTEUgZWFnZXJfYWdnX3RhYjE7CitEUk9QIFRBQkxFIGVh Z2VyX2FnZ190YWIyOworCisKKy0tCistLSBUZXN0IHdpdGggbXVsdGktbGV2ZWwgcGFydGl0aW9u aW5nIHNjaGVtZQorLS0KK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiX21sKHggaW50LCB5IGlu dCkgUEFSVElUSU9OIEJZIFJBTkdFKHgpOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWJfbWxf cDEgUEFSVElUSU9OIE9GIGVhZ2VyX2FnZ190YWJfbWwgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAo MTApOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWJfbWxfcDIgUEFSVElUSU9OIE9GIGVhZ2Vy X2FnZ190YWJfbWwgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIwKSBQQVJUSVRJT04gQlkgUkFO R0UoeCk7CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3RhYl9tbF9wMl9zMSBQQVJUSVRJT04gT0Yg ZWFnZXJfYWdnX3RhYl9tbF9wMiBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUpOworQ1JFQVRF IFRBQkxFIGVhZ2VyX2FnZ190YWJfbWxfcDJfczIgUEFSVElUSU9OIE9GIGVhZ2VyX2FnZ190YWJf bWxfcDIgRk9SIFZBTFVFUyBGUk9NICgxNSkgVE8gKDIwKTsKK0NSRUFURSBUQUJMRSBlYWdlcl9h Z2dfdGFiX21sX3AzIFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiX21sIEZPUiBWQUxVRVMgRlJP TSAoMjApIFRPICgzMCkgUEFSVElUSU9OIEJZIFJBTkdFKHgpOworQ1JFQVRFIFRBQkxFIGVhZ2Vy X2FnZ190YWJfbWxfcDNfczEgUEFSVElUSU9OIE9GIGVhZ2VyX2FnZ190YWJfbWxfcDMgRk9SIFZB TFVFUyBGUk9NICgyMCkgVE8gKDI1KTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiX21sX3Az X3MyIFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiX21sX3AzIEZPUiBWQUxVRVMgRlJPTSAoMjUp IFRPICgzMCk7CitJTlNFUlQgSU5UTyBlYWdlcl9hZ2dfdGFiX21sIFNFTEVDVCBpICUgMzAsIGkg JSAzMCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDAwKSBpOworCitBTkFMWVpFIGVhZ2VyX2Fn Z190YWJfbWw7CisKKy0tIFdoZW4gR1JPVVAgQlkgY2xhdXNlIG1hdGNoZXM7IGZ1bGwgYWdncmVn YXRpb24gaXMgcGVyZm9ybWVkIGZvciBlYWNoIHBhcnRpdGlvbi4KK0VYUExBSU4gKFZFUkJPU0Us IENPU1RTIE9GRikKK1NFTEVDVCB0MS54LCBzdW0odDIueSksIGNvdW50KCopIEZST00gZWFnZXJf YWdnX3RhYl9tbCB0MSBKT0lOIGVhZ2VyX2FnZ190YWJfbWwgdDIgT04gdDEueCA9IHQyLnggR1JP VVAgQlkgdDEueCBPUkRFUiBCWSB0MS54OworU0VMRUNUIHQxLngsIHN1bSh0Mi55KSwgY291bnQo KikgRlJPTSBlYWdlcl9hZ2dfdGFiX21sIHQxIEpPSU4gZWFnZXJfYWdnX3RhYl9tbCB0MiBPTiB0 MS54ID0gdDIueCBHUk9VUCBCWSB0MS54IE9SREVSIEJZIHQxLng7CisKKy0tIFdoZW4gR1JPVVAg QlkgY2xhdXNlIGRvZXMgbm90IG1hdGNoOyBwYXJ0aWFsIGFnZ3JlZ2F0aW9uIGlzIHBlcmZvcm1l ZCBmb3IgZWFjaCBwYXJ0aXRpb24uCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxF Q1QgdDEueSwgc3VtKHQyLnkpLCBjb3VudCgqKSBGUk9NIGVhZ2VyX2FnZ190YWJfbWwgdDEgSk9J TiBlYWdlcl9hZ2dfdGFiX21sIHQyIE9OIHQxLnggPSB0Mi54IEdST1VQIEJZIHQxLnkgT1JERVIg QlkgdDEueTsKK1NFTEVDVCB0MS55LCBzdW0odDIueSksIGNvdW50KCopIEZST00gZWFnZXJfYWdn X3RhYl9tbCB0MSBKT0lOIGVhZ2VyX2FnZ190YWJfbWwgdDIgT04gdDEueCA9IHQyLnggR1JPVVAg QlkgdDEueSBPUkRFUiBCWSB0MS55OworCistLSBDaGVjayB3aXRoIGVhZ2VyIGFnZ3JlZ2F0aW9u IG92ZXIgam9pbiByZWwKKy0tIGZ1bGwgYWdncmVnYXRpb24KK0VYUExBSU4gKFZFUkJPU0UsIENP U1RTIE9GRikKK1NFTEVDVCB0MS54LCBzdW0odDIueSArIHQzLnkpLCBjb3VudCgqKSBGUk9NIGVh Z2VyX2FnZ190YWJfbWwgdDEgSk9JTiBlYWdlcl9hZ2dfdGFiX21sIHQyIE9OIHQxLnggPSB0Mi54 IEpPSU4gZWFnZXJfYWdnX3RhYl9tbCB0MyBvbiB0Mi54ID0gdDMueCBHUk9VUCBCWSB0MS54IE9S REVSIEJZIHQxLng7CitTRUxFQ1QgdDEueCwgc3VtKHQyLnkgKyB0My55KSwgY291bnQoKikgRlJP TSBlYWdlcl9hZ2dfdGFiX21sIHQxIEpPSU4gZWFnZXJfYWdnX3RhYl9tbCB0MiBPTiB0MS54ID0g dDIueCBKT0lOIGVhZ2VyX2FnZ190YWJfbWwgdDMgb24gdDIueCA9IHQzLnggR1JPVVAgQlkgdDEu eCBPUkRFUiBCWSB0MS54OworCistLSBwYXJ0aWFsIGFnZ3JlZ2F0aW9uCitFWFBMQUlOIChWRVJC T1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgdDMueSwgc3VtKHQyLnkgKyB0My55KSwgY291bnQoKikg RlJPTSBlYWdlcl9hZ2dfdGFiX21sIHQxIEpPSU4gZWFnZXJfYWdnX3RhYl9tbCB0MiBPTiB0MS54 ID0gdDIueCBKT0lOIGVhZ2VyX2FnZ190YWJfbWwgdDMgb24gdDIueCA9IHQzLnggR1JPVVAgQlkg dDMueSBPUkRFUiBCWSB0My55OworU0VMRUNUIHQzLnksIHN1bSh0Mi55ICsgdDMueSksIGNvdW50 KCopIEZST00gZWFnZXJfYWdnX3RhYl9tbCB0MSBKT0lOIGVhZ2VyX2FnZ190YWJfbWwgdDIgT04g dDEueCA9IHQyLnggSk9JTiBlYWdlcl9hZ2dfdGFiX21sIHQzIG9uIHQyLnggPSB0My54IEdST1VQ IEJZIHQzLnkgT1JERVIgQlkgdDMueTsKKworRFJPUCBUQUJMRSBlYWdlcl9hZ2dfdGFiX21sOwot LSAKMi4zMS4wCgo= --00000000000075de670612e805e8 Content-Type: application/octet-stream; name="v3-0009-Add-README.patch" Content-Disposition: attachment; filename="v3-0009-Add-README.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ltea1xle8 RnJvbSA0ZmRkNTJjMDM1ZTc5OTA4ZDIxZmUxYmNlYTY3NjZhZTYyYmZkZDM0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4K RGF0ZTogRnJpLCAyMyBGZWIgMjAyNCAxMzo0MTozNiArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjMg OS85XSBBZGQgUkVBRE1FCgotLS0KIHNyYy9iYWNrZW5kL29wdGltaXplci9SRUFETUUgfCA4OCAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCA4OCBp bnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL1JFQURNRSBi L3NyYy9iYWNrZW5kL29wdGltaXplci9SRUFETUUKaW5kZXggMmFiNGYzZGJmMy4uZGFlN2I4N2Yz MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL1JFQURNRQorKysgYi9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvUkVBRE1FCkBAIC0xNDk3LDMgKzE0OTcsOTEgQEAgYnJlYWtpbmcgZG93 biBhZ2dyZWdhdGlvbiBvciBncm91cGluZyBvdmVyIGEgcGFydGl0aW9uZWQgcmVsYXRpb24gaW50 bwogYWdncmVnYXRpb24gb3IgZ3JvdXBpbmcgb3ZlciBpdHMgcGFydGl0aW9ucyBpcyBjYWxsZWQg cGFydGl0aW9ud2lzZQogYWdncmVnYXRpb24uICBFc3BlY2lhbGx5IHdoZW4gdGhlIHBhcnRpdGlv biBrZXlzIG1hdGNoIHRoZSBHUk9VUCBCWSBjbGF1c2UsCiB0aGlzIGNhbiBiZSBzaWduaWZpY2Fu dGx5IGZhc3RlciB0aGFuIHRoZSByZWd1bGFyIG1ldGhvZC4KKworRWFnZXIgYWdncmVnYXRpb24K Ky0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIG9idmlvdXMgd2F5IHRvIGV2YWx1YXRlIGFnZ3Jl Z2F0ZXMgaXMgdG8gZXZhbHVhdGUgdGhlIEZST00gY2xhdXNlIG9mIHRoZQorU1FMIHF1ZXJ5ICh0 aGlzIGlzIHdoYXQgcXVlcnlfcGxhbm5lciBkb2VzKSBhbmQgdXNlIHRoZSByZXN1bHRpbmcgcGF0 aHMgYXMgdGhlCitpbnB1dCBvZiBBZ2cgbm9kZS4gSG93ZXZlciwgaWYgdGhlIGdyb3VwcyBhcmUg bGFyZ2UgZW5vdWdoLCBpdCBtYXkgYmUgbW9yZQorZWZmaWNpZW50IHRvIGFwcGx5IHRoZSBwYXJ0 aWFsIGFnZ3JlZ2F0aW9uIHRvIHRoZSBvdXRwdXQgb2YgYmFzZSByZWxhdGlvbgorc2NhbiwgYW5k IGZpbmFsaXplIGl0IHdoZW4gd2UgaGF2ZSBhbGwgcmVsYXRpb25zIG9mIHRoZSBxdWVyeSBqb2lu ZWQ6CisKKyBFWFBMQUlOIChDT1NUUyBPRkYpCisgU0VMRUNUIGEuaSwgYXZnKGIueSkKKyBGUk9N IGEgSk9JTiBiIE9OIGEuaSA9IGIuagorIEdST1VQIEJZIGEuaTsKKworIEZpbmFsaXplIEhhc2hB Z2dyZWdhdGUKKyAgIEdyb3VwIEtleTogYS5pCisgICAtPiAgTmVzdGVkIExvb3AKKyAgICAgICAg IC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIEdyb3VwIEtleTogYi5q CisgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gYgorICAgICAgICAgLT4gIEluZGV4IE9u bHkgU2NhbiB1c2luZyBhX3BrZXkgb24gYQorICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGkg PSBiLmopCisKK1RodXMgdGhlIGpvaW4gYWJvdmUgdGhlIHBhcnRpYWwgYWdncmVnYXRlIG5vZGUg cmVjZWl2ZXMgZmV3ZXIgaW5wdXQgcm93cywgYW5kCitzbyB0aGUgbnVtYmVyIG9mIG91dGVyLXRv LWlubmVyIHBhaXJzIG9mIHR1cGxlcyB0byBiZSBjaGVja2VkIGNhbiBiZQorc2lnbmlmaWNhbnRs eSBsb3dlciwgd2hpY2ggY2FuIGluIHR1cm4gbGVhZCB0byBjb25zaWRlcmFibHkgbG93ZXIgam9p biBjb3N0LgorCitOb3RlIHRoYXQgdGhlIEdST1VQIEJZIGV4cHJlc3Npb24gbWlnaHQgbm90IGJl IHVzZWZ1bCBmb3IgdGhlIHBhcnRpYWwKK2FnZ3JlZ2F0ZS4gSW4gdGhlIGV4YW1wbGUgYWJvdmUs IHRoZSBhZ2dyZWdhdGUgYXZnKGIueSkgcmVmZXJlbmNlcyB0YWJsZSAiYiIsCitidXQgdGhlIEdS T1VQIEJZIGV4cHJlc3Npb24gbWVudGlvbnMgImEiLiBIb3dldmVyLCB0aGUgZXF1aXZhbGVuY2Ug Y2xhc3Mge2EuaSwKK2Iuan0gYWxsb3dzIHVzIHRvIHVzZSB0aGUgYi5qIGNvbHVtbiBhcyBhIGdy b3VwaW5nIGtleSBmb3IgdGhlIHBhcnRpYWwKK2FnZ3JlZ2F0aW9uIG9mIHRoZSAiYiIgdGFibGUu IFRoZSBlcXVpdmFsZW5jZSBjbGFzcyBtZWNoYW5pc20gaXMgc3VpdGFibGUKK2JlY2F1c2UgaXQn cyBkZXNpZ25lZCB0byBkZXJpdmUgam9pbiBjbGF1c2VzLCBhbmQgYXQgdGhlIHNhbWUgdGltZSB0 aGUgam9pbgorY2xhdXNlcyBkZXRlcm1pbmUgdGhlIGNob2ljZSBvZiBncm91cGluZyBjb2x1bW5z IG9mIHRoZSBwYXJ0aWFsIGFnZ3JlZ2F0ZTogdGhlCitvbmx5IHdheSBmb3IgdGhlIHBhcnRpYWwg YWdncmVnYXRlIHRvIHByb3ZpZGUgdXBwZXIgam9pbihzKSB3aXRoIGlucHV0IHZhbHVlcworaXMg dG8gaGF2ZSB0aGUgam9pbiBpbnB1dCBleHByZXNzaW9uKHMpIGluIHRoZSBncm91cGluZyBrZXk7 IGJlc2lkZXMgZ3JvdXBpbmcKK2NvbHVtbnMsIHRoZSBwYXJ0aWFsIGFnZ3JlZ2F0ZSBjYW4gb25s eSBwcm9kdWNlIHRoZSB0cmFuc2llbnQgc3RhdGVzIG9mIHRoZQorYWdncmVnYXRlIGZ1bmN0aW9u cywgYnV0IGFnZ3JlZ2F0ZSBmdW5jdGlvbnMgY2Fubm90IGJlIHJlZmVyZW5jZWQgYnkgdGhlIEpP SU4KK2NsYXVzZXMuCisKK1JlZ2FyZGluZyBjb3JyZWN0bmVzcywgam9pbiBub2RlIGNvbnNpZGVy cyB0aGUgb3V0cHV0IG9mIHRoZSBwYXJ0aWFsIGFnZ3JlZ2F0ZQordG8gYmUgZXF1aXZhbGVudCB0 byB0aGUgb3V0cHV0IG9mIGEgcGxhaW4gKG5vbi1hZ2dyZWdhdGVkKSByZWxhdGlvbiBzY2FuLiBU aGF0CitpcywgYSBncm91cCAoaS5lLiBhIHJvdyBvZiB0aGUgcGFydGlhbCBhZ2dyZWdhdGUgb3V0 cHV0KSBtYXRjaGVzIHRoZSBvdGhlcgorc2lkZSBvZiB0aGUgam9pbiBpZiBhbmQgb25seSBpZiBl YWNoIHJvdyBvZiB0aGUgbm9uLWFnZ3JlZ2F0ZSByZWxhdGlvbgorZG9lcy4gSW4gb3RoZXIgd29y ZHMsIGFsbCByb3dzIGJlbG9uZ2luZyB0byB0aGUgc2FtZSBncm91cCBoYXZlIHRoZSBzYW1lIHZh bHVlCitvZiB0aGUgam9pbiBjb2x1bW5zIChBcyBtZW50aW9uZWQgYWJvdmUsIGEgam9pbiBjYW5u b3QgcmVmZXJlbmNlIG90aGVyIG91dHB1dAorZXhwcmVzc2lvbnMgb2YgdGhlIHBhcnRpYWwgYWdn cmVnYXRlIHRoYW4gdGhlIGdyb3VwaW5nIGV4cHJlc3Npb25zLikuCisKK0hvd2V2ZXIsIHRoZXJl J3MgYSByZXN0cmljdGlvbiBmcm9tIHRoZSBhZ2dyZWdhdGUncyBwZXJzcGVjdGl2ZTogdGhlIGFn Z3JlZ2F0ZQorY2Fubm90IGJlIHB1c2hlZCBkb3duIGlmIGFueSBjb2x1bW4gcmVmZXJlbmNlZCBi eSBlaXRoZXIgZ3JvdXBpbmcgZXhwcmVzc2lvbgorb3IgYWdncmVnYXRlIGZ1bmN0aW9uIGNhbiBi ZSBzZXQgdG8gTlVMTCBieSBhbiBvdXRlciBqb2luIGFib3ZlIHRoZSByZWxhdGlvbgordG8gd2hp Y2ggd2Ugd2FudCB0byBhcHBseSB0aGUgcGFydGlhbCBhZ2dyZWdhdGlvbi4gVGhlIHBvaW50IGlz IHRoYXQgdGhvc2UKK05VTEwgdmFsdWVzIHdvdWxkIG5vdCBhcHBlYXIgb24gdGhlIGlucHV0IG9m IHRoZSBwdXNoZWQtZG93biwgc28gaXQgY291bGQKK2VpdGhlciBwdXQgdGhlIHJvd3MgaW50byBn cm91cHMgaW4gYSBkaWZmZXJlbnQgd2F5IHRoYW4gdGhlIGFnZ3JlZ2F0ZSBhdCB0aGUKK3RvcCBv ZiB0aGUgcGxhbiwgb3IgaXQgY291bGQgY29tcHV0ZSB3cm9uZyB2YWx1ZXMgb2YgdGhlIGFnZ3Jl Z2F0ZSBmdW5jdGlvbnMuCisKK0Jlc2lkZXMgYmFzZSByZWxhdGlvbiwgdGhlIGFnZ3JlZ2F0aW9u IGNhbiBhbHNvIGJlIHB1c2hlZCBkb3duIHRvIGpvaW46CisKKyBFWFBMQUlOIChDT1NUUyBPRkYp CisgU0VMRUNUIGEuaSwgYXZnKGIueSArIGMueikKKyBGUk9NIGEgSk9JTiBiIE9OIGEuaSA9IGIu agorICAgICAgICBKT0lOIGMgT04gYi5qID0gYy5pCisgR1JPVVAgQlkgYS5pOworCisgRmluYWxp emUgSGFzaEFnZ3JlZ2F0ZQorICAgR3JvdXAgS2V5OiBhLmkKKyAgIC0+ICBOZXN0ZWQgTG9vcAor ICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgR3JvdXAg S2V5OiBiLmoKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAg ICAgIEhhc2ggQ29uZDogKGIuaiA9IGMuaSkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEg U2NhbiBvbiBiCisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGMKKyAgICAgICAgIC0+ICBJbmRleCBPbmx5IFNj YW4gdXNpbmcgYV9wa2V5IG9uIGEKKyAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChpID0gYi5q KQorCitXaGV0aGVyIHRoZSBBZ2cgbm9kZSBpcyBjcmVhdGVkIG91dCBvZiBiYXNlIHJlbGF0aW9u IG9yIG91dCBvZiBqb2luLCBpdCdzCithZGRlZCB0byBhIHNlcGFyYXRlIFJlbE9wdEluZm8gdGhh dCB3ZSBjYWxsICJncm91cGVkIHJlbGF0aW9uIi4gR3JvdXBlZAorcmVsYXRpb24gY2FuIGJlIGpv aW5lZCB0byBhIG5vbi1ncm91cGVkIHJlbGF0aW9uLCB3aGljaCByZXN1bHRzIGluIGEgZ3JvdXBl ZAorcmVsYXRpb24gdG9vLiBKb2luIG9mIHR3byBncm91cGVkIHJlbGF0aW9ucyBkb2VzIG5vdCBz ZWVtIHRvIGJlIHZlcnkgdXNlZnVsCithbmQgaXMgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQuCisK K0lmIHF1ZXJ5X3BsYW5uZXIgcHJvZHVjZXMgYSBncm91cGVkIHJlbGF0aW9uIHRoYXQgY29udGFp bnMgdmFsaWQgcGF0aHMsIHRoZXNlCithcmUgc2ltcGx5IGFkZGVkIHRvIHRoZSBVUFBFUlJFTF9Q QVJUSUFMX0dST1VQX0FHRyByZWxhdGlvbi4gRnVydGhlcgorcHJvY2Vzc2luZyBvZiB0aGVzZSBw YXRocyB0aGVuIGRvZXMgbm90IGRpZmZlciBmcm9tIHByb2Nlc3Npbmcgb2Ygb3RoZXIKK3BhcnRp YWxseSBncm91cGVkIHBhdGhzLgotLSAKMi4zMS4wCgo= --00000000000075de670612e805e8--