Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1qF8E3-0000bD-RJ for pgsql-hackers@arkaria.postgresql.org; Fri, 30 Jun 2023 07:07:28 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1qF8D3-0000U0-DI for pgsql-hackers@arkaria.postgresql.org; Fri, 30 Jun 2023 07:06:25 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1qF8D2-0000Tm-GL for pgsql-hackers@lists.postgresql.org; Fri, 30 Jun 2023 07:06:24 +0000 Received: from mail-wr1-x42e.google.com ([2a00:1450:4864:20::42e]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1qF8Cz-001Jhb-1J for pgsql-hackers@lists.postgresql.org; Fri, 30 Jun 2023 07:06:23 +0000 Received: by mail-wr1-x42e.google.com with SMTP id ffacd0b85a97d-307d20548adso1750633f8f.0 for ; Fri, 30 Jun 2023 00:06:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1688108779; x=1690700779; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=C5rD/FZPvPHW3VPFx74rPfYky89Y+pkTC/Lsm1Te7bs=; b=KUxBVmKILF/yEFR49ZYRQ4kD1f89POROZ7kzoTxVEXzyp+9Pby5pFEQhzz14Z9Mrli 7A2cz3rI4CXJMkqPkek0CX+tf6x3xMAuQrT+XmtptO8rOliFtKQ8r7IEtuinE8iLg52R Iu2imN+sJA+p0wq/E1/lxdex1Ijzfk6uOFdrjOxgQAKXzNU+ncNbnZwyAEd18ibjvn96 n5/rMu+FTUu/j4eByTAKaLXYzDC7cNoaQJDpk2hwVHVgMXiMNkdAtx15pzo0Nngx5ZhW auJuHVB92IuxIqF9CMk6mziKpMBI69b91t3jkwMqDPR7oNiA+/bEkZzQS9KXxb5jaBfX hOPA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1688108779; x=1690700779; 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=C5rD/FZPvPHW3VPFx74rPfYky89Y+pkTC/Lsm1Te7bs=; b=i/rm8sOwNftraLU/h8C+YPH83rquK+AU00LpEtlk03X4yFMZmqpKU4FgbWQLkl3+T9 1LzjDuRwv8FV5H2qacVBdt0/4ICofzZShburFJsQKOjq+xEr/vzDTrroZa9AyHX0cgk+ uEvHrMA8ubpGC4qr/4AqgIlYmLdqDD/HmAO3OfwSJTaZRhpWEKKbadm+rN/DcsDZV3jZ c7oFU7Wltb3lp3Fop+ohSG0yNoEv0DAjJi/lZd/iQLlhQP3/givvvbDZ9VCsfxtEpIK6 81PR39h7KMgvyuu9m4EVowyOxVOrjYIonrD5H2hgIluec3+Bn6Ar5MjO9PBsLd6p+z6T kb4g== X-Gm-Message-State: ABy/qLZxWIQmOcW88lLQ/km/39K4ZcRiQby1H1P6jINtMuSa4RcnQpxT 6e6Tcb6nrCh406CST63w3Tegqf2flT+TwVnjAbQ= X-Google-Smtp-Source: APBJJlHIpUv6UnoIfXoKeqyO2VE/X2cMx01aDrrJxZ9xfD5mpCAqF8rNZbnDtx9G8pUfP26B2qpn86Iz/hBxuyOPjdc= X-Received: by 2002:a5d:640d:0:b0:313:eb09:c029 with SMTP id z13-20020a5d640d000000b00313eb09c029mr1452338wru.43.1688108779378; Fri, 30 Jun 2023 00:06:19 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: shveta malik Date: Fri, 30 Jun 2023 12:36:07 +0530 Message-ID: Subject: Re: Support logical replication of DDLs To: Amit Kapila Cc: Michael Paquier , "Wei Wang (Fujitsu)" , "Yu Shi (Fujitsu)" , vignesh C , "Zhijie Hou (Fujitsu)" , Ajin Cherian , Runqi Tian , Peter Smith , Tom Lane , li jie , Dilip Kumar , Alvaro Herrera , Masahiko Sawada , Japin Li , rajesh singarapu , PostgreSQL Hackers , Zheng Li , shveta malik Content-Type: multipart/mixed; boundary="00000000000023744d05ff537465" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000023744d05ff537465 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Jun 22, 2023 at 9:39=E2=80=AFAM shveta malik wrote: > > On Mon, Jun 19, 2023 at 3:04=E2=80=AFPM Amit Kapila wrote: > > > > > > In insert_table_elements(), sometimes we access system twice for each > > of the columns and this is to identify the above case where no > > elements are present. Would it be better if simply for zero element > > object array in this case and detect the same on the receiving side? > > If this is feasible then we can simply name the function as > > add_table_elems/add_table_elements. Also, in this context, can we > > change the variable name telems to telems_present to make it bit easy > > to follow. > > Modified telems to telems_present. I am reviewing the first part. > Please allow some more time. > Fixed this. Now we always add table_elements array. If there are no elements then it will be empty []. Regarding '()' around table-elements, we take a call once we are done adding table-elements. We peek into jsonb parse-state to figure out if we have actually added anything and then decide what goes to "fmt" string. Different scenarios are mentioned in code-comments in add_table_elems(). Apart from this, addressed below: 1) Fixed a bug where tables with serial columns (sequences) were not replicated. Thanks Ajin for providing the fix. 2) Fixed a few more things: a) Removed 'toJsonb' from all function names. Earlier it was this way to distinguish from object-tree functions since we were maintaining both the patches. b) Renamed and moved a few helper functions which were not actually for deparsing purposes to relevant files. c) Removed role_to_jsonb_element(), 'myowner' can now be added like any other key-value pair using new_jsonb_VA(). d) Optimized and refactored code at many places. e) Improved/corrected comments. The given patches do not include Vignesh's auto-generation work in [1], but if there is interest from reviewers, we can rebase those as well. [1]: https://www.postgresql.org/message-id/CALDaNm0Rvv2EWOOQeGc_1j3b3ENceDR= O8jd%2Bgbf0Y_J7d1FGGw%40mail.gmail.com thanks Shveta --00000000000023744d05ff537465 Content-Type: application/octet-stream; name="0003-Enhance-the-event-trigger-to-support-DDL--2023_06_30.patch" Content-Disposition: attachment; filename="0003-Enhance-the-event-trigger-to-support-DDL--2023_06_30.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lji8c4bf2 RnJvbSBlNzMzOThjNjVkZjljYjM5MDc2YjIwOTIzNWFkMWI5MGZjN2JjOTMxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaHZldGEgTWFsaWsgPHNodmV0YS5tYWxpa0BnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMjEgSnVuIDIwMjMgMDk6MTg6NDkgKzA1MzAKU3ViamVjdDogW1BBVENIIDMv NV0gRW5oYW5jZSB0aGUgZXZlbnQgdHJpZ2dlciB0byBzdXBwb3J0IERETCBkZXBhcnNpbmcKCkFM VEVSIFRBQkxFIGNhbiBoYXZlIG11bHRpcGxlIHN1YmNvbW1hbmRzIHdoaWNoIG1pZ2h0IGluY2x1 ZGUgRFJPUCBDT0xVTU4KY29tbWFuZCBhbmQgQUxURVIgVFlQRSByZWZlcnJpbmcgdGhlIGRyb3Ag Y29sdW1uIGluIFVTSU5HIGV4cHJlc3Npb24uIEFzIHRoZQpkcm9wcGVkIGNvbHVtbiBjYW5ub3Qg YmUgYWNjZXNzZWQgYWZ0ZXIgdGhlIGV4ZWN1dGlvbiBvZiBEUk9QIENPTFVNTiwgYSBzcGVjaWFs CnRyaWdnZXIgaXMgYWRkZWQgdG8gaGFuZGxlIHRoaXMgY2FzZSBiZWZvcmUgdGhlIGRyb3AgY29s dW1uIGlzIGV4ZWN1dGVkLgotLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2RkbGRlcGFyc2UuYyAg ICB8ICAxMSArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5jIHwgMTg4ICsr KysrKysrKysrKysrKysrKysrKy0tLS0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRz LmMgICAgIHwgIDEwICstCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmggfCAg NDYgKysrKysrLQogc3JjL2luY2x1ZGUvdGNvcC9kZXBhcnNlX3V0aWxpdHkuaCAgIHwgICAyICsK IDUgZmlsZXMgY2hhbmdlZCwgMjA0IGluc2VydGlvbnMoKyksIDUzIGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2RkbGRlcGFyc2UuYyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2RkbGRlcGFyc2UuYwppbmRleCBjYjAyNGI0NWI4Li42NWMyNTUwYWU1IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9kZGxkZXBhcnNlLmMKKysrIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvZGRsZGVwYXJzZS5jCkBAIC0yMzI2LDIyICsyMzI2LDEzIEBAIGRlcGFyc2Vf QWx0ZXJUYWJsZVN0bXQoQ29sbGVjdGVkQ29tbWFuZCAqY21kKQogCQkJCQkgKi8KIAkJCQkJaWYg KGRlZi0+cmF3X2RlZmF1bHQpCiAJCQkJCXsKLQkJCQkJCURhdHVtCQlkZXBhcnNlZDsKLQkJCQkJ CWNoYXIJICAgKmRlZmV4cHI7Ci0JCQkJCQlMaXN0CSAgICpleHBycyA9IE5JTDsKLQotCQkJCQkJ ZXhwcnMgPSBsYXBwZW5kKGV4cHJzLCBkZWYtPmNvb2tlZF9kZWZhdWx0KTsKLQkJCQkJCWRlZmV4 cHIgPSBub2RlVG9TdHJpbmcoZGVmLT5jb29rZWRfZGVmYXVsdCk7Ci0JCQkJCQlkZXBhcnNlZCA9 IERpcmVjdEZ1bmN0aW9uQ2FsbDIocGdfZ2V0X2V4cHIsCi0JCQkJCQkJCQkJCQkJICAgQ1N0cmlu Z0dldFRleHREYXR1bShkZWZleHByKSwKLQkJCQkJCQkJCQkJCQkgICBSZWxhdGlvbkdldFJlbGlk KHJlbCkpOwogCQkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmZm10U3ViLCAiICV7dXNpbmd9 cyIpOwogCQkJCQkJaW5zZXJ0X2pzb25iX2tleShzdGF0ZSwgInVzaW5nIik7CiAJCQkJCQlwdXNo SnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9PQkpFQ1QsIE5VTEwpOwogCQkJCQkJbmV3X2pz b25iX1ZBKHN0YXRlLCAyLAogCQkJCQkJCQkJICJmbXQiLCBqYnZTdHJpbmcsICJVU0lORyAle2V4 cHJlc3Npb259cyIsCiAJCQkJCQkJCQkgImV4cHJlc3Npb24iLCBqYnZTdHJpbmcsCi0JCQkJCQkJ CQkgVGV4dERhdHVtR2V0Q1N0cmluZyhkZXBhcnNlZCkpOworCQkJCQkJCQkJIHN1Yi0+dXNpbmdl eHByKTsKIAkJCQkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0VORF9PQkpFQ1QsIE5VTEwp OwogCQkJCQl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50X3RyaWdn ZXIuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuYwppbmRleCA0ZDQ4ZTQ5 MGVkLi44YzJhNDk0ZGNiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90 cmlnZ2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5jCkBAIC0z Niw2ICszNiw3IEBACiAjaW5jbHVkZSAibGliL2lsaXN0LmgiCiAjaW5jbHVkZSAibWlzY2FkbWlu LmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX2Z1bmMuaCIKKyNpbmNsdWRlICJwYXJzZXIvcGFy c2VyLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAidGNvcC9kZGxkZXBhcnNlLmgi CiAjaW5jbHVkZSAidGNvcC9kZXBhcnNlX3V0aWxpdHkuaCIKQEAgLTQ5LDQ1ICs1MCw3IEBACiAj aW5jbHVkZSAidXRpbHMvcmVsLmgiCiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKIAotdHlw ZWRlZiBzdHJ1Y3QgRXZlbnRUcmlnZ2VyUXVlcnlTdGF0ZQotewotCS8qIG1lbW9yeSBjb250ZXh0 IGZvciB0aGlzIHN0YXRlJ3Mgb2JqZWN0cyAqLwotCU1lbW9yeUNvbnRleHQgY3h0OwotCi0JLyog c3FsX2Ryb3AgKi8KLQlzbGlzdF9oZWFkCVNRTERyb3BMaXN0OwotCWJvb2wJCWluX3NxbF9kcm9w OwotCi0JLyogdGFibGVfcmV3cml0ZSAqLwotCU9pZAkJCXRhYmxlX3Jld3JpdGVfb2lkOwkvKiBJ bnZhbGlkT2lkLCBvciBzZXQgZm9yIHRhYmxlX3Jld3JpdGUKLQkJCQkJCQkJCSAqIGV2ZW50ICov Ci0JaW50CQkJdGFibGVfcmV3cml0ZV9yZWFzb247CS8qIEFUX1JFV1JJVEUgcmVhc29uICovCi0K LQkvKiBTdXBwb3J0IGZvciBjb21tYW5kIGNvbGxlY3Rpb24gKi8KLQlib29sCQljb21tYW5kQ29s bGVjdGlvbkluaGliaXRlZDsKLQlDb2xsZWN0ZWRDb21tYW5kICpjdXJyZW50Q29tbWFuZDsKLQlM aXN0CSAgICpjb21tYW5kTGlzdDsJLyogbGlzdCBvZiBDb2xsZWN0ZWRDb21tYW5kOyBzZWUKLQkJ CQkJCQkJICogZGVwYXJzZV91dGlsaXR5LmggKi8KLQlzdHJ1Y3QgRXZlbnRUcmlnZ2VyUXVlcnlT dGF0ZSAqcHJldmlvdXM7Ci19IEV2ZW50VHJpZ2dlclF1ZXJ5U3RhdGU7Ci0KLXN0YXRpYyBFdmVu dFRyaWdnZXJRdWVyeVN0YXRlICpjdXJyZW50RXZlbnRUcmlnZ2VyU3RhdGUgPSBOVUxMOwotCi0v KiBTdXBwb3J0IGZvciBkcm9wcGVkIG9iamVjdHMgKi8KLXR5cGVkZWYgc3RydWN0IFNRTERyb3BP YmplY3QKLXsKLQlPYmplY3RBZGRyZXNzIGFkZHJlc3M7Ci0JY29uc3QgY2hhciAqc2NoZW1hbmFt ZTsKLQljb25zdCBjaGFyICpvYmpuYW1lOwotCWNvbnN0IGNoYXIgKm9iamlkZW50aXR5OwotCWNv bnN0IGNoYXIgKm9iamVjdHR5cGU7Ci0JTGlzdAkgICAqYWRkcm5hbWVzOwotCUxpc3QJICAgKmFk ZHJhcmdzOwotCWJvb2wJCW9yaWdpbmFsOwotCWJvb2wJCW5vcm1hbDsKLQlib29sCQlpc3RlbXA7 Ci0Jc2xpc3Rfbm9kZQluZXh0OwotfSBTUUxEcm9wT2JqZWN0OworRXZlbnRUcmlnZ2VyUXVlcnlT dGF0ZSAqY3VycmVudEV2ZW50VHJpZ2dlclN0YXRlID0gTlVMTDsKIAogc3RhdGljIHZvaWQgQWx0 ZXJFdmVudFRyaWdnZXJPd25lcl9pbnRlcm5hbChSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkJCUhl YXBUdXBsZSB0dXAsCkBAIC0xNTM4LDYgKzE1MDEsNyBAQCBFdmVudFRyaWdnZXJBbHRlclRhYmxl U3RhcnQoTm9kZSAqcGFyc2V0cmVlKQogCiAJY29tbWFuZC0+ZC5hbHRlclRhYmxlLmNsYXNzSWQg PSBSZWxhdGlvblJlbGF0aW9uSWQ7CiAJY29tbWFuZC0+ZC5hbHRlclRhYmxlLm9iamVjdElkID0g SW52YWxpZE9pZDsKKwljb21tYW5kLT5kLmFsdGVyVGFibGUucmV3cml0ZSA9IGZhbHNlOwogCWNv bW1hbmQtPmQuYWx0ZXJUYWJsZS5zdWJjbWRzID0gTklMOwogCWNvbW1hbmQtPnBhcnNldHJlZSA9 IGNvcHlPYmplY3QocGFyc2V0cmVlKTsKIApAQCAtMTU3MSw3ICsxNTM1LDcgQEAgRXZlbnRUcmln Z2VyQWx0ZXJUYWJsZVJlbGlkKE9pZCBvYmplY3RJZCkKICAqIGludGVybmFsbHksIHNvIHRoYXQn cyBhbGwgdGhhdCB0aGlzIGNvZGUgbmVlZHMgdG8gaGFuZGxlIGF0IHRoZSBtb21lbnQuCiAgKi8K IHZvaWQKLUV2ZW50VHJpZ2dlckNvbGxlY3RBbHRlclRhYmxlU3ViY21kKE5vZGUgKnN1YmNtZCwg T2JqZWN0QWRkcmVzcyBhZGRyZXNzKQorRXZlbnRUcmlnZ2VyQ29sbGVjdEFsdGVyVGFibGVTdWJj bWQoTm9kZSAqc3ViY21kLCBPYmplY3RBZGRyZXNzIGFkZHJlc3MsIGJvb2wgcmV3cml0ZSkKIHsK IAlNZW1vcnlDb250ZXh0IG9sZGN4dDsKIAlDb2xsZWN0ZWRBVFN1YmNtZCAqbmV3c3ViOwpAQCAt MTU5MSwxMiArMTU1NSwxNTYgQEAgRXZlbnRUcmlnZ2VyQ29sbGVjdEFsdGVyVGFibGVTdWJjbWQo Tm9kZSAqc3ViY21kLCBPYmplY3RBZGRyZXNzIGFkZHJlc3MpCiAJbmV3c3ViLT5hZGRyZXNzID0g YWRkcmVzczsKIAluZXdzdWItPnBhcnNldHJlZSA9IGNvcHlPYmplY3Qoc3ViY21kKTsKIAorCWN1 cnJlbnRFdmVudFRyaWdnZXJTdGF0ZS0+Y3VycmVudENvbW1hbmQtPmQuYWx0ZXJUYWJsZS5yZXdy aXRlIHw9IHJld3JpdGU7CiAJY3VycmVudEV2ZW50VHJpZ2dlclN0YXRlLT5jdXJyZW50Q29tbWFu ZC0+ZC5hbHRlclRhYmxlLnN1YmNtZHMgPQogCQlsYXBwZW5kKGN1cnJlbnRFdmVudFRyaWdnZXJT dGF0ZS0+Y3VycmVudENvbW1hbmQtPmQuYWx0ZXJUYWJsZS5zdWJjbWRzLCBuZXdzdWIpOwogCiAJ TWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7CiB9CiAKKy8qCisgKiBFdmVudFRyaWdnZXJB bHRlclR5cGVTdGFydAorICoJCVNhdmUgZGF0YSBhYm91dCBhIHNpbmdsZSBwYXJ0IG9mIGFuIEFM VEVSIFRZUEUuCisgKgorICogQUxURVIgVEFCTEUgY2FuIGhhdmUgbXVsdGlwbGUgc3ViY29tbWFu ZHMgd2hpY2ggbWlnaHQgaW5jbHVkZSBEUk9QIENPTFVNTgorICogY29tbWFuZCBhbmQgQUxURVIg VFlQRSByZWZlcnJpbmcgdGhlIGRyb3AgY29sdW1uIGluIFVTSU5HIGV4cHJlc3Npb24uCisgKiBB cyB0aGUgZHJvcHBlZCBjb2x1bW4gY2Fubm90IGJlIGFjY2Vzc2VkIGFmdGVyIHRoZSBleGVjdXRp b24gb2YgRFJPUCBDT0xVTU4sCisgKiBhIHNwZWNpYWwgdHJpZ2dlciBpcyByZXF1aXJlZCB0byBo YW5kbGUgdGhpcyBjYXNlIGJlZm9yZSB0aGUgZHJvcCBjb2x1bW4gaXMKKyAqIGV4ZWN1dGVkLgor ICovCit2b2lkCitFdmVudFRyaWdnZXJBbHRlclR5cGVTdGFydChBbHRlclRhYmxlQ21kICpzdWJj bWQsIFJlbGF0aW9uIHJlbCkKK3sKKwlNZW1vcnlDb250ZXh0IG9sZGN4dDsKKwlDb2xsZWN0ZWRB VFN1YmNtZCAqbmV3c3ViOworCUNvbHVtbkRlZiAgKmRlZjsKKwlSZWxhdGlvbglhdHRyZWxhdGlv bjsKKwlIZWFwVHVwbGUJaGVhcFR1cDsKKwlGb3JtX3BnX2F0dHJpYnV0ZSBhdHRUdXA7CisJQXR0 ck51bWJlcglhdHRudW07CisJT2JqZWN0QWRkcmVzcyBhZGRyZXNzOworCisJLyogaWdub3JlIGlm IGV2ZW50IHRyaWdnZXIgY29udGV4dCBub3Qgc2V0LCBvciBjb2xsZWN0aW9uIGRpc2FibGVkICov CisJaWYgKCFjdXJyZW50RXZlbnRUcmlnZ2VyU3RhdGUgfHwKKwkJY3VycmVudEV2ZW50VHJpZ2dl clN0YXRlLT5jb21tYW5kQ29sbGVjdGlvbkluaGliaXRlZCkKKwkJcmV0dXJuOworCisJQXNzZXJ0 KElzQShzdWJjbWQsIEFsdGVyVGFibGVDbWQpKTsKKwlBc3NlcnQoc3ViY21kLT5zdWJ0eXBlID09 IEFUX0FsdGVyQ29sdW1uVHlwZSk7CisJQXNzZXJ0KGN1cnJlbnRFdmVudFRyaWdnZXJTdGF0ZS0+ Y3VycmVudENvbW1hbmQgIT0gTlVMTCk7CisJQXNzZXJ0KE9pZElzVmFsaWQoY3VycmVudEV2ZW50 VHJpZ2dlclN0YXRlLT5jdXJyZW50Q29tbWFuZC0+ZC5hbHRlclRhYmxlLm9iamVjdElkKSk7CisK KwlkZWYgPSAoQ29sdW1uRGVmICopIHN1YmNtZC0+ZGVmOworCUFzc2VydChJc0EoZGVmLCBDb2x1 bW5EZWYpKTsKKworCW9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhjdXJyZW50RXZlbnRU cmlnZ2VyU3RhdGUtPmN4dCk7CisKKwluZXdzdWIgPSBwYWxsb2Moc2l6ZW9mKENvbGxlY3RlZEFU U3ViY21kKSk7CisJbmV3c3ViLT5wYXJzZXRyZWUgPSAoTm9kZSAqKWNvcHlPYmplY3Qoc3ViY21k KTsKKworCWF0dHJlbGF0aW9uID0gdGFibGVfb3BlbihBdHRyaWJ1dGVSZWxhdGlvbklkLCBSb3dF eGNsdXNpdmVMb2NrKTsKKworCS8qIExvb2sgdXAgdGhlIHRhcmdldCBjb2x1bW4gKi8KKwloZWFw VHVwID0gU2VhcmNoU3lzQ2FjaGVDb3B5QXR0TmFtZShSZWxhdGlvbkdldFJlbGlkKHJlbCksIHN1 YmNtZC0+bmFtZSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKGhlYXBUdXApKSAvKiBzaG91bGRu J3QgaGFwcGVuICovCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX1VOREVG SU5FRF9DT0xVTU4pLAorCQkJCWVycm1zZygiY29sdW1uIFwiJXNcIiBvZiByZWxhdGlvbiBcIiVz XCIgZG9lcyBub3QgZXhpc3QiLAorCQkJCQkgICBzdWJjbWQtPm5hbWUsIFJlbGF0aW9uR2V0UmVs YXRpb25OYW1lKHJlbCkpKTsKKwlhdHRUdXAgPSAoRm9ybV9wZ19hdHRyaWJ1dGUpIEdFVFNUUlVD VChoZWFwVHVwKTsKKwlhdHRudW0gPSBhdHRUdXAtPmF0dG51bTsKKworCU9iamVjdEFkZHJlc3NT dWJTZXQoYWRkcmVzcywgUmVsYXRpb25SZWxhdGlvbklkLAorCQkJCQkJUmVsYXRpb25HZXRSZWxp ZChyZWwpLCBhdHRudW0pOworCWhlYXBfZnJlZXR1cGxlKGhlYXBUdXApOworCXRhYmxlX2Nsb3Nl KGF0dHJlbGF0aW9uLCBSb3dFeGNsdXNpdmVMb2NrKTsKKwluZXdzdWItPmFkZHJlc3MgPSBhZGRy ZXNzOworCisJaWYgKGRlZi0+cmF3X2RlZmF1bHQpCisJeworCQlPdmVycmlkZVNlYXJjaFBhdGgg Km92ZXJyaWRlUGF0aDsKKwkJY2hhcgkgICAqZGVmZXhwcjsKKworCQkvKgorCQkgKiBXZSB3YW50 IGFsbCBvYmplY3QgbmFtZXMgdG8gYmUgcXVhbGlmaWVkIHdoZW4gZGVwYXJzaW5nIHRoZQorCQkg KiBleHByZXNzaW9uLCBzbyB0aGF0IHJlc3VsdHMgYXJlICJwb3J0YWJsZSIgdG8gZW52aXJvbm1l bnRzIHdpdGgKKwkJICogZGlmZmVyZW50IHNlYXJjaF9wYXRoIHNldHRpbmdzLiBSYXRoZXIgdGhh biBpbmplY3Qgd2hhdCB3b3VsZCBiZQorCQkgKiByZXBldGl0aXZlIGNhbGxzIHRvIG92ZXJyaWRl IHNlYXJjaCBwYXRoIGFsbCBvdmVyIHRoZSBwbGFjZSwgd2UgZG8KKwkJICogaXQgY2VudHJhbGx5 IGhlcmUuCisJCSAqLworCQlvdmVycmlkZVBhdGggPSBHZXRPdmVycmlkZVNlYXJjaFBhdGgoQ3Vy cmVudE1lbW9yeUNvbnRleHQpOworCQlvdmVycmlkZVBhdGgtPnNjaGVtYXMgPSBOSUw7CisJCW92 ZXJyaWRlUGF0aC0+YWRkQ2F0YWxvZyA9IGZhbHNlOworCQlvdmVycmlkZVBhdGgtPmFkZFRlbXAg PSB0cnVlOworCQlQdXNoT3ZlcnJpZGVTZWFyY2hQYXRoKG92ZXJyaWRlUGF0aCk7CisKKwkJZGVm ZXhwciA9IG5vZGVUb1N0cmluZyhkZWYtPmNvb2tlZF9kZWZhdWx0KTsKKwkJbmV3c3ViLT51c2lu Z2V4cHIgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKERpcmVjdEZ1bmN0aW9uQ2FsbDIocGdfZ2V0X2V4 cHIsCisJCQkJCQkJCQkJCQkJCQkJCUNTdHJpbmdHZXRUZXh0RGF0dW0oZGVmZXhwciksCisJCQkJ CQkJCQkJCQkJCQkJCVJlbGF0aW9uR2V0UmVsaWQocmVsKSkpOworCisJCVBvcE92ZXJyaWRlU2Vh cmNoUGF0aCgpOworCX0KKwllbHNlCisJCW5ld3N1Yi0+dXNpbmdleHByID0gTlVMTDsKKworCWN1 cnJlbnRFdmVudFRyaWdnZXJTdGF0ZS0+Y3VycmVudENvbW1hbmQtPmQuYWx0ZXJUYWJsZS5zdWJj bWRzID0KKwkJbGFwcGVuZChjdXJyZW50RXZlbnRUcmlnZ2VyU3RhdGUtPmN1cnJlbnRDb21tYW5k LT5kLmFsdGVyVGFibGUuc3ViY21kcywgbmV3c3ViKTsKKworCU1lbW9yeUNvbnRleHRTd2l0Y2hU byhvbGRjeHQpOworfQorCisvKgorICogRXZlbnRUcmlnZ2VyQWx0ZXJUeXBlRW5kCisgKgkJRmlu aXNoIHVwIHNhdmluZyBhbiBBTFRFUiBUWVBFIGNvbW1hbmQsIGFuZCBhZGQgaXQgdG8gY29tbWFu ZCBsaXN0LgorICovCit2b2lkCitFdmVudFRyaWdnZXJBbHRlclR5cGVFbmQoTm9kZSAqc3ViY21k LCBPYmplY3RBZGRyZXNzIGFkZHJlc3MsIGJvb2wgcmV3cml0ZSkKK3sKKwlNZW1vcnlDb250ZXh0 IG9sZGN4dDsKKwlDb2xsZWN0ZWRBVFN1YmNtZCAqbmV3c3ViOworCUxpc3RDZWxsICAgKmNlbGw7 CisJQ29sbGVjdGVkQ29tbWFuZCAqY21kOworCUFsdGVyVGFibGVDbWQgKmFsdHN1YmNtZCA9IChB bHRlclRhYmxlQ21kICopc3ViY21kOworCisJLyogaWdub3JlIGlmIGV2ZW50IHRyaWdnZXIgY29u dGV4dCBub3Qgc2V0LCBvciBjb2xsZWN0aW9uIGRpc2FibGVkICovCisJaWYgKCFjdXJyZW50RXZl bnRUcmlnZ2VyU3RhdGUgfHwKKwkJY3VycmVudEV2ZW50VHJpZ2dlclN0YXRlLT5jb21tYW5kQ29s bGVjdGlvbkluaGliaXRlZCkKKwkJcmV0dXJuOworCisJY21kID0gY3VycmVudEV2ZW50VHJpZ2dl clN0YXRlLT5jdXJyZW50Q29tbWFuZDsKKworCUFzc2VydChJc0Eoc3ViY21kLCBBbHRlclRhYmxl Q21kKSk7CisJQXNzZXJ0KGNtZCAhPSBOVUxMKTsKKwlBc3NlcnQoT2lkSXNWYWxpZChjbWQtPmQu YWx0ZXJUYWJsZS5vYmplY3RJZCkpOworCisJZm9yZWFjaChjZWxsLCBjbWQtPmQuYWx0ZXJUYWJs ZS5zdWJjbWRzKQorCXsKKwkJQ29sbGVjdGVkQVRTdWJjbWQgKnN1YiA9IChDb2xsZWN0ZWRBVFN1 YmNtZCAqKSBsZmlyc3QoY2VsbCk7CisJCUFsdGVyVGFibGVDbWQgKmNvbGxjbWQgPSAoQWx0ZXJU YWJsZUNtZCAqKSBzdWItPnBhcnNldHJlZTsKKworCQlpZiAoY29sbGNtZC0+c3VidHlwZSA9PSBh bHRzdWJjbWQtPnN1YnR5cGUgJiYKKwkJCWFkZHJlc3MuY2xhc3NJZCA9PSBzdWItPmFkZHJlc3Mu Y2xhc3NJZCAmJgorCQkJYWRkcmVzcy5vYmplY3RJZCA9PSBzdWItPmFkZHJlc3Mub2JqZWN0SWQg JiYKKwkJCWFkZHJlc3Mub2JqZWN0U3ViSWQgPT0gc3ViLT5hZGRyZXNzLm9iamVjdFN1YklkKQor CQl7CisJCQljbWQtPmQuYWx0ZXJUYWJsZS5yZXdyaXRlIHw9IHJld3JpdGU7CisJCQlyZXR1cm47 CisJCX0KKwl9CisKKwlvbGRjeHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oY3VycmVudEV2ZW50 VHJpZ2dlclN0YXRlLT5jeHQpOworCisJbmV3c3ViID0gcGFsbG9jKHNpemVvZihDb2xsZWN0ZWRB VFN1YmNtZCkpOworCW5ld3N1Yi0+YWRkcmVzcyA9IGFkZHJlc3M7CisJbmV3c3ViLT5wYXJzZXRy ZWUgPSBjb3B5T2JqZWN0KHN1YmNtZCk7CisKKwljbWQtPmQuYWx0ZXJUYWJsZS5yZXdyaXRlIHw9 IHJld3JpdGU7CisJY21kLT5kLmFsdGVyVGFibGUuc3ViY21kcyA9IGxhcHBlbmQoY21kLT5kLmFs dGVyVGFibGUuc3ViY21kcywgbmV3c3ViKTsKKworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRj eHQpOworfQorCiAvKgogICogRXZlbnRUcmlnZ2VyQWx0ZXJUYWJsZUVuZAogICoJCUZpbmlzaCB1 cCBzYXZpbmcgYW4gQUxURVIgVEFCTEUgY29tbWFuZCwgYW5kIGFkZCBpdCB0byBjb21tYW5kIGxp c3QuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmluZGV4IDYwNGMxZGU0NzQuLjY3NWNhNzNmZGEg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCkBAIC00NzQyLDYgKzQ3NDIsOSBAQCBBVFByZXBD bWQoTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcmVsLCBBbHRlclRhYmxlQ21kICpjbWQsCiAJCQlj bWQgPSBBVFBhcnNlVHJhbnNmb3JtQ21kKHdxdWV1ZSwgdGFiLCByZWwsIGNtZCwgcmVjdXJzZSwg bG9ja21vZGUsCiAJCQkJCQkJCQkgIEFUX1BBU1NfVU5TRVQsIGNvbnRleHQpOwogCQkJQXNzZXJ0 KGNtZCAhPSBOVUxMKTsKKworCQkJRXZlbnRUcmlnZ2VyQWx0ZXJUeXBlU3RhcnQoY21kLCByZWwp OworCiAJCQkvKiBQZXJmb3JtcyBvd24gcmVjdXJzaW9uICovCiAJCQlBVFByZXBBbHRlckNvbHVt blR5cGUod3F1ZXVlLCB0YWIsIHJlbCwgcmVjdXJzZSwgcmVjdXJzaW5nLCBjbWQsCiAJCQkJCQkJ CSAgbG9ja21vZGUsIGNvbnRleHQpOwpAQCAtNTAxMyw2ICs1MDE2LDcgQEAgQVRFeGVjQ21kKExp c3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwKIHsKIAlPYmplY3RBZGRyZXNzIGFk ZHJlc3MgPSBJbnZhbGlkT2JqZWN0QWRkcmVzczsKIAlSZWxhdGlvbglyZWwgPSB0YWItPnJlbDsK Kwlib29sCQljb21tYW5kQ29sbGVjdGVkID0gZmFsc2U7CiAKIAlzd2l0Y2ggKGNtZC0+c3VidHlw ZSkKIAl7CkBAIC01MTM2LDYgKzUxNDAsOCBAQCBBVEV4ZWNDbWQoTGlzdCAqKndxdWV1ZSwgQWx0 ZXJlZFRhYmxlSW5mbyAqdGFiLAogCQljYXNlIEFUX0FsdGVyQ29sdW1uVHlwZToJLyogQUxURVIg Q09MVU1OIFRZUEUgKi8KIAkJCS8qIHBhcnNlIHRyYW5zZm9ybWF0aW9uIHdhcyBkb25lIGVhcmxp ZXIgKi8KIAkJCWFkZHJlc3MgPSBBVEV4ZWNBbHRlckNvbHVtblR5cGUodGFiLCByZWwsIGNtZCwg bG9ja21vZGUpOworCQkJRXZlbnRUcmlnZ2VyQWx0ZXJUeXBlRW5kKChOb2RlICopIGNtZCwgYWRk cmVzcywgdGFiLT5yZXdyaXRlKTsKKwkJCWNvbW1hbmRDb2xsZWN0ZWQgPSB0cnVlOwogCQkJYnJl YWs7CiAJCWNhc2UgQVRfQWx0ZXJDb2x1bW5HZW5lcmljT3B0aW9uczoJLyogQUxURVIgQ09MVU1O IE9QVElPTlMgKi8KIAkJCWFkZHJlc3MgPQpAQCAtNTMwOCw4ICs1MzE0LDggQEAgQVRFeGVjQ21k KExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwKIAkvKgogCSAqIFJlcG9ydCB0 aGUgc3ViY29tbWFuZCB0byBpbnRlcmVzdGVkIGV2ZW50IHRyaWdnZXJzLgogCSAqLwotCWlmIChj bWQpCi0JCUV2ZW50VHJpZ2dlckNvbGxlY3RBbHRlclRhYmxlU3ViY21kKChOb2RlICopIGNtZCwg YWRkcmVzcyk7CisJaWYgKGNtZCAmJiAhY29tbWFuZENvbGxlY3RlZCkKKwkJRXZlbnRUcmlnZ2Vy Q29sbGVjdEFsdGVyVGFibGVTdWJjbWQoKE5vZGUgKikgY21kLCBhZGRyZXNzLCB0YWItPnJld3Jp dGUpOwogCiAJLyoKIAkgKiBCdW1wIHRoZSBjb21tYW5kIGNvdW50ZXIgdG8gZW5zdXJlIHRoZSBu ZXh0IHN1YmNvbW1hbmQgaW4gdGhlIHNlcXVlbmNlCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9j b21tYW5kcy9ldmVudF90cmlnZ2VyLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9ldmVudF90cmln Z2VyLmgKaW5kZXggNWVkNmVjZTU1NS4uMjhiMzQ4NmI5ZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V2 ZW50X3RyaWdnZXIuaApAQCAtMTYsNiArMTYsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvZGVwZW5k ZW5jeS5oIgogI2luY2x1ZGUgImNhdGFsb2cvb2JqZWN0YWRkcmVzcy5oIgogI2luY2x1ZGUgImNh dGFsb2cvcGdfZXZlbnRfdHJpZ2dlci5oIgorI2luY2x1ZGUgImxpYi9pbGlzdC5oIgogI2luY2x1 ZGUgIm5vZGVzL3BhcnNlbm9kZXMuaCIKICNpbmNsdWRlICJ0Y29wL2NtZHRhZy5oIgogI2luY2x1 ZGUgInRjb3AvZGVwYXJzZV91dGlsaXR5LmgiCkBAIC0yOSw2ICszMCw0NCBAQCB0eXBlZGVmIHN0 cnVjdCBFdmVudFRyaWdnZXJEYXRhCiAJQ29tbWFuZFRhZwl0YWc7CiB9IEV2ZW50VHJpZ2dlckRh dGE7CiAKK3R5cGVkZWYgc3RydWN0IEV2ZW50VHJpZ2dlclF1ZXJ5U3RhdGUKK3sKKwkvKiBtZW1v cnkgY29udGV4dCBmb3IgdGhpcyBzdGF0ZSdzIG9iamVjdHMgKi8KKwlNZW1vcnlDb250ZXh0IGN4 dDsKKworCS8qIHNxbF9kcm9wICovCisJc2xpc3RfaGVhZAlTUUxEcm9wTGlzdDsKKwlib29sCQlp bl9zcWxfZHJvcDsKKworCS8qIHRhYmxlX3Jld3JpdGUgKi8KKwlPaWQJCQl0YWJsZV9yZXdyaXRl X29pZDsJLyogSW52YWxpZE9pZCwgb3Igc2V0IGZvciB0YWJsZV9yZXdyaXRlCisJCQkJCQkJCQkg KiBldmVudCAqLworCWludAkJCXRhYmxlX3Jld3JpdGVfcmVhc29uOwkvKiBBVF9SRVdSSVRFIHJl YXNvbiAqLworCisJLyogU3VwcG9ydCBmb3IgY29tbWFuZCBjb2xsZWN0aW9uICovCisJYm9vbAkJ Y29tbWFuZENvbGxlY3Rpb25JbmhpYml0ZWQ7CisJQ29sbGVjdGVkQ29tbWFuZCAqY3VycmVudENv bW1hbmQ7CisJTGlzdAkgICAqY29tbWFuZExpc3Q7CS8qIGxpc3Qgb2YgQ29sbGVjdGVkQ29tbWFu ZDsgc2VlCisJCQkJCQkJCSAqIGRlcGFyc2VfdXRpbGl0eS5oICovCisJc3RydWN0IEV2ZW50VHJp Z2dlclF1ZXJ5U3RhdGUgKnByZXZpb3VzOworfSBFdmVudFRyaWdnZXJRdWVyeVN0YXRlOworCisv KiBTdXBwb3J0IGZvciBkcm9wcGVkIG9iamVjdHMgKi8KK3R5cGVkZWYgc3RydWN0IFNRTERyb3BP YmplY3QKK3sKKwlPYmplY3RBZGRyZXNzIGFkZHJlc3M7CisJY29uc3QgY2hhciAqc2NoZW1hbmFt ZTsKKwljb25zdCBjaGFyICpvYmpuYW1lOworCWNvbnN0IGNoYXIgKm9iamlkZW50aXR5OworCWNv bnN0IGNoYXIgKm9iamVjdHR5cGU7CisJTGlzdAkgICAqYWRkcm5hbWVzOworCUxpc3QJICAgKmFk ZHJhcmdzOworCWJvb2wJCW9yaWdpbmFsOworCWJvb2wJCW5vcm1hbDsKKwlib29sCQlpc3RlbXA7 CisJc2xpc3Rfbm9kZQluZXh0OworfSBTUUxEcm9wT2JqZWN0OworCiAjZGVmaW5lIEFUX1JFV1JJ VEVfQUxURVJfUEVSU0lTVEVOQ0UJMHgwMQogI2RlZmluZSBBVF9SRVdSSVRFX0RFRkFVTFRfVkFM CQkJMHgwMgogI2RlZmluZSBBVF9SRVdSSVRFX0NPTFVNTl9SRVdSSVRFCQkweDA0CkBAIC03MSw3 ICsxMTAsMTIgQEAgZXh0ZXJuIHZvaWQgRXZlbnRUcmlnZ2VyQ29sbGVjdFNpbXBsZUNvbW1hbmQo T2JqZWN0QWRkcmVzcyBhZGRyZXNzLAogZXh0ZXJuIHZvaWQgRXZlbnRUcmlnZ2VyQWx0ZXJUYWJs ZVN0YXJ0KE5vZGUgKnBhcnNldHJlZSk7CiBleHRlcm4gdm9pZCBFdmVudFRyaWdnZXJBbHRlclRh YmxlUmVsaWQoT2lkIG9iamVjdElkKTsKIGV4dGVybiB2b2lkIEV2ZW50VHJpZ2dlckNvbGxlY3RB bHRlclRhYmxlU3ViY21kKE5vZGUgKnN1YmNtZCwKLQkJCQkJCQkJCQkJCU9iamVjdEFkZHJlc3Mg YWRkcmVzcyk7CisJCQkJCQkJCQkJCQlPYmplY3RBZGRyZXNzIGFkZHJlc3MsCisJCQkJCQkJCQkJ CQlib29sIHJld3JpdGUpOworCitleHRlcm4gdm9pZCBFdmVudFRyaWdnZXJBbHRlclR5cGVTdGFy dChBbHRlclRhYmxlQ21kICpzdWJjbWQsIFJlbGF0aW9uIHJlbCk7CitleHRlcm4gdm9pZCBFdmVu dFRyaWdnZXJBbHRlclR5cGVFbmQoTm9kZSAqc3ViY21kLCBPYmplY3RBZGRyZXNzIGFkZHJlc3Ms CisJCQkJCQkJCQkgYm9vbCByZXdyaXRlKTsKIGV4dGVybiB2b2lkIEV2ZW50VHJpZ2dlckFsdGVy VGFibGVFbmQodm9pZCk7CiAKIGV4dGVybiB2b2lkIEV2ZW50VHJpZ2dlckNvbGxlY3RHcmFudChJ bnRlcm5hbEdyYW50ICppc3RtdCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS90Y29wL2RlcGFy c2VfdXRpbGl0eS5oIGIvc3JjL2luY2x1ZGUvdGNvcC9kZXBhcnNlX3V0aWxpdHkuaAppbmRleCBi NTg1ODEwYjlhLi4xODMxZWM5YWFlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS90Y29wL2RlcGFy c2VfdXRpbGl0eS5oCisrKyBiL3NyYy9pbmNsdWRlL3Rjb3AvZGVwYXJzZV91dGlsaXR5LmgKQEAg LTM5LDYgKzM5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQ29sbGVjdGVkQVRTdWJjbWQKIHsKIAlPYmpl Y3RBZGRyZXNzIGFkZHJlc3M7CQkvKiBhZmZlY3RlZCBjb2x1bW4sIGNvbnN0cmFpbnQsIGluZGV4 LCAuLi4gKi8KIAlOb2RlCSAgICpwYXJzZXRyZWU7CisJY2hhcgkgICAqdXNpbmdleHByOwogfSBD b2xsZWN0ZWRBVFN1YmNtZDsKIAogdHlwZWRlZiBzdHJ1Y3QgQ29sbGVjdGVkQ29tbWFuZApAQCAt NjIsNiArNjMsNyBAQCB0eXBlZGVmIHN0cnVjdCBDb2xsZWN0ZWRDb21tYW5kCiAJCXsKIAkJCU9p ZAkJCW9iamVjdElkOwogCQkJT2lkCQkJY2xhc3NJZDsKKwkJCWJvb2wJCXJld3JpdGU7CiAJCQlM aXN0CSAgICpzdWJjbWRzOwogCQl9CQkJYWx0ZXJUYWJsZTsKIAotLSAKMi4zNC4xCgo= --00000000000023744d05ff537465 Content-Type: application/octet-stream; name="0002-Deparser-for-Alter-Table-DDL-commands-2023_06_30.patch" Content-Disposition: attachment; filename="0002-Deparser-for-Alter-Table-DDL-commands-2023_06_30.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lji8c4bf1 RnJvbSBhZjhkNGEzOGM0MTFkOGQ5MmM2YzVmZDI3NWZkZTdlMmE4NTIwOWZjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaHZldGEgTWFsaWsgPHNodmV0YS5tYWxpa0BnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMjggSnVuIDIwMjMgMTQ6Mzc6MDIgKzA1MzAKU3ViamVjdDogW1BBVENIIDIv NV0gRGVwYXJzZXIgZm9yIEFsdGVyIFRhYmxlIERETCBjb21tYW5kcy4KClRoaXMgcGF0Y2ggY29u c3RydWN0cyBKU09OIGJsb2JzIHJlcHJlc2VudGluZyB0aGUgQWx0ZXIgVGFibGUKRERMIGNvbW1h bmRzIHdoaWNoIGNhbiBsYXRlciBiZSByZS1wcm9jZXNzZWQgaW50byBwbGFpbiBzdHJpbmdzCmJ5 IHdlbGwtZGVmaW5lZCBzcHJpbnRmLWxpa2UgZXhwYW5zaW9uLgotLS0KIHNyYy9iYWNrZW5kL2Nv bW1hbmRzL2RkbGRlcGFyc2UuYyB8IDE3MDUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0K IHNyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jICAgICAgICB8ICAgMTcgKwogc3JjL2luY2x1ZGUv dGNvcC91dGlsaXR5LmggICAgICAgIHwgICAgMiArCiAzIGZpbGVzIGNoYW5nZWQsIDE2ODMgaW5z ZXJ0aW9ucygrKSwgNDEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvZGRsZGVwYXJzZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZGRsZGVwYXJzZS5jCmlu ZGV4IGM4ZTg4NWNhMWEuLmNiMDI0YjQ1YjggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2RkbGRlcGFyc2UuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9kZGxkZXBhcnNlLmMK QEAgLTM2MywxMSArMzYzLDE2IEBAIGluc2VydF9pZGVudGl0eV9vYmplY3QoSnNvbmJQYXJzZVN0 YXRlICpzdGF0ZSwgT2lkIG5zcGlkLCBjaGFyICpyZWxuYW1lKQogICogQ0FDSEUgJXt2YWx1ZX0K ICAqLwogc3RhdGljIGlubGluZSB2b2lkCi1kZXBhcnNlX1NlcV9DYWNoZShKc29uYlBhcnNlU3Rh dGUgKnN0YXRlLCBGb3JtX3BnX3NlcXVlbmNlIHNlcWRhdGEpCitkZXBhcnNlX1NlcV9DYWNoZShK c29uYlBhcnNlU3RhdGUgKnN0YXRlLCBGb3JtX3BnX3NlcXVlbmNlIHNlcWRhdGEsCisJCQkJICBi b29sIGFsdGVyX3RhYmxlKQogeworCWNoYXIJICAgKmZtdDsKKworCWZtdCA9IGFsdGVyX3RhYmxl ID8gIlNFVCBDQUNIRSAle3ZhbHVlfXMiIDogIkNBQ0hFICV7dmFsdWV9cyI7CisKIAlwdXNoSnNv bmJWYWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9PQkpFQ1QsIE5VTEwpOwogCW5ld19qc29uYl9WQShz dGF0ZSwgMywKLQkJCQkgImZtdCIsIGpidlN0cmluZywgIkNBQ0hFICV7dmFsdWV9cyIsCisJCQkJ ICJmbXQiLCBqYnZTdHJpbmcsIGZtdCwKIAkJCQkgImNsYXVzZSIsIGpidlN0cmluZywgImNhY2hl IiwKIAkJCQkgInZhbHVlIiwgamJ2U3RyaW5nLAogCQkJCSBwc3ByaW50ZihJTlQ2NF9GT1JNQVQs IHNlcWRhdGEtPnNlcWNhY2hlKSk7CkBAIC0zNzgsMTAgKzM4MywxMyBAQCBkZXBhcnNlX1NlcV9D YWNoZShKc29uYlBhcnNlU3RhdGUgKnN0YXRlLCBGb3JtX3BnX3NlcXVlbmNlIHNlcWRhdGEpCiAg KiBEZXBhcnNlIHRoZSBzZXF1ZW5jZSBDWUNMRSBvcHRpb24gdG8gSnNvbmIuCiAgKgogICogVmVy Ym9zZSBzeW50YXgKKyAqIFNFVCAle25vfXMgQ1lDTEUKKyAqIE9SCiAgKiAle25vfXMgQ1lDTEUK ICAqLwogc3RhdGljIGlubGluZSB2b2lkCi1kZXBhcnNlX1NlcV9DeWNsZShKc29uYlBhcnNlU3Rh dGUgKnN0YXRlLCBGb3JtX3BnX3NlcXVlbmNlIHNlcWRhdGEpCitkZXBhcnNlX1NlcV9DeWNsZShK c29uYlBhcnNlU3RhdGUgKnN0YXRlLCBGb3JtX3BnX3NlcXVlbmNlIHNlcWRhdGEsCisJCQkJICBi b29sIGFsdGVyX3RhYmxlKQogewogCVN0cmluZ0luZm9EYXRhIGZtdFN0cjsKIApAQCAtMzg5LDYg KzM5Nyw5IEBAIGRlcGFyc2VfU2VxX0N5Y2xlKEpzb25iUGFyc2VTdGF0ZSAqc3RhdGUsIEZvcm1f cGdfc2VxdWVuY2Ugc2VxZGF0YSkKIAogCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lO X09CSkVDVCwgTlVMTCk7CiAKKwlpZiAoYWx0ZXJfdGFibGUpCisJCWFwcGVuZFN0cmluZ0luZm9T dHJpbmcoJmZtdFN0ciwgIlNFVCAiKTsKKwogCWlmICghc2VxZGF0YS0+c2VxY3ljbGUpCiAJewog CQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZmbXRTdHIsICIle25vfXMgIik7CkBAIC00MDgsMTQg KzQxOSwyMiBAQCBkZXBhcnNlX1NlcV9DeWNsZShKc29uYlBhcnNlU3RhdGUgKnN0YXRlLCBGb3Jt X3BnX3NlcXVlbmNlIHNlcWRhdGEpCiAgKiBEZXBhcnNlIHRoZSBzZXF1ZW5jZSBJTkNSRU1FTlQg Qlkgb3B0aW9uIHRvIEpzb25iCiAgKgogICogVmVyYm9zZSBzeW50YXgKKyAqIFNFVCBJTkNSRU1F TlQgQlkgJXt2YWx1ZX1zCisgKiBPUgogICogSU5DUkVNRU5UIEJZICV7dmFsdWV9cwogICovCiBz dGF0aWMgaW5saW5lIHZvaWQKLWRlcGFyc2VfU2VxX0luY3JlbWVudEJ5KEpzb25iUGFyc2VTdGF0 ZSAqc3RhdGUsIEZvcm1fcGdfc2VxdWVuY2Ugc2VxZGF0YSkKK2RlcGFyc2VfU2VxX0luY3JlbWVu dEJ5KEpzb25iUGFyc2VTdGF0ZSAqc3RhdGUsIEZvcm1fcGdfc2VxdWVuY2Ugc2VxZGF0YSwKKwkJ CQkJCWJvb2wgYWx0ZXJfdGFibGUpCiB7CisJY2hhcgkgICAqZm10OworCisJZm10ID0gYWx0ZXJf dGFibGUgPyAiU0VUIElOQ1JFTUVOVCBCWSAle3ZhbHVlfXMiCisJCTogIklOQ1JFTUVOVCBCWSAl e3ZhbHVlfXMiOworCiAJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfQkVHSU5fT0JKRUNULCBO VUxMKTsKIAluZXdfanNvbmJfVkEoc3RhdGUsIDMsCi0JCQkJICJmbXQiLCBqYnZTdHJpbmcsICJJ TkNSRU1FTlQgQlkgJXt2YWx1ZX1zIiwKKwkJCQkgImZtdCIsIGpidlN0cmluZywgZm10LAogCQkJ CSAiY2xhdXNlIiwgamJ2U3RyaW5nLCAic2VxaW5jcmVtZW50IiwKIAkJCQkgInZhbHVlIiwgamJ2 U3RyaW5nLAogCQkJCSBwc3ByaW50ZihJTlQ2NF9GT1JNQVQsIHNlcWRhdGEtPnNlcWluY3JlbWVu dCkpOwpAQCAtNDI2LDE0ICs0NDUsMjEgQEAgZGVwYXJzZV9TZXFfSW5jcmVtZW50QnkoSnNvbmJQ YXJzZVN0YXRlICpzdGF0ZSwgRm9ybV9wZ19zZXF1ZW5jZSBzZXFkYXRhKQogICogRGVwYXJzZSB0 aGUgc2VxdWVuY2UgTUFYVkFMVUUgb3B0aW9uIHRvIEpzb25iLgogICoKICAqIFZlcmJvc2Ugc3lu dGF4CisgKiBTRVQgTUFYVkFMVUUgJXt2YWx1ZX1zCisgKiBPUgogICogTUFYVkFMVUUgJXt2YWx1 ZX1zCiAgKi8KIHN0YXRpYyBpbmxpbmUgdm9pZAotZGVwYXJzZV9TZXFfTWF4dmFsdWUoSnNvbmJQ YXJzZVN0YXRlICpzdGF0ZSwgRm9ybV9wZ19zZXF1ZW5jZSBzZXFkYXRhKQorZGVwYXJzZV9TZXFf TWF4dmFsdWUoSnNvbmJQYXJzZVN0YXRlICpzdGF0ZSwgRm9ybV9wZ19zZXF1ZW5jZSBzZXFkYXRh LAorCQkJCQkgYm9vbCBhbHRlcl90YWJsZSkKIHsKKwljaGFyCSAgICpmbXQ7CisKKwlmbXQgPSBh bHRlcl90YWJsZSA/ICJTRVQgTUFYVkFMVUUgJXt2YWx1ZX1zIiA6ICJNQVhWQUxVRSAle3ZhbHVl fXMiOworCiAJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfQkVHSU5fT0JKRUNULCBOVUxMKTsK IAluZXdfanNvbmJfVkEoc3RhdGUsIDMsCi0JCQkJICJmbXQiLCBqYnZTdHJpbmcsICJNQVhWQUxV RSAle3ZhbHVlfXMiLAorCQkJCSAiZm10IiwgamJ2U3RyaW5nLCBmbXQsCiAJCQkJICJjbGF1c2Ui LCBqYnZTdHJpbmcsICJtYXh2YWx1ZSIsCiAJCQkJICJ2YWx1ZSIsIGpidlN0cmluZywKIAkJCQkg cHNwcmludGYoSU5UNjRfRk9STUFULCBzZXFkYXRhLT5zZXFtYXgpKTsKQEAgLTQ0NCwxNCArNDcw LDIxIEBAIGRlcGFyc2VfU2VxX01heHZhbHVlKEpzb25iUGFyc2VTdGF0ZSAqc3RhdGUsIEZvcm1f cGdfc2VxdWVuY2Ugc2VxZGF0YSkKICAqIERlcGFyc2UgdGhlIHNlcXVlbmNlIE1JTlZBTFVFIG9w dGlvbiB0byBKc29uYgogICoKICAqIFZlcmJvc2Ugc3ludGF4CisgKiBTRVQgTUlOVkFMVUUgJXt2 YWx1ZX1zCisgKiBPUgogICogTUlOVkFMVUUgJXt2YWx1ZX1zCiAgKi8KIHN0YXRpYyBpbmxpbmUg dm9pZAotZGVwYXJzZV9TZXFfTWludmFsdWUoSnNvbmJQYXJzZVN0YXRlICpzdGF0ZSwgRm9ybV9w Z19zZXF1ZW5jZSBzZXFkYXRhKQorZGVwYXJzZV9TZXFfTWludmFsdWUoSnNvbmJQYXJzZVN0YXRl ICpzdGF0ZSwgRm9ybV9wZ19zZXF1ZW5jZSBzZXFkYXRhLAorCQkJCQkgYm9vbCBhbHRlcl90YWJs ZSkKIHsKKwljaGFyCSAgICpmbXQ7CisKKwlmbXQgPSBhbHRlcl90YWJsZSA/ICJTRVQgTUlOVkFM VUUgJXt2YWx1ZX1zIiA6ICJNSU5WQUxVRSAle3ZhbHVlfXMiOworCiAJcHVzaEpzb25iVmFsdWUo JnN0YXRlLCBXSkJfQkVHSU5fT0JKRUNULCBOVUxMKTsKIAluZXdfanNvbmJfVkEoc3RhdGUsIDMs Ci0JCQkJICJmbXQiLCBqYnZTdHJpbmcsICJNSU5WQUxVRSAle3ZhbHVlfXMiLAorCQkJCSAiZm10 IiwgamJ2U3RyaW5nLCBmbXQsCiAJCQkJICJjbGF1c2UiLCBqYnZTdHJpbmcsICJtaW52YWx1ZSIs CiAJCQkJICJ2YWx1ZSIsIGpidlN0cmluZywKIAkJCQkgcHNwcmludGYoSU5UNjRfRk9STUFULCBz ZXFkYXRhLT5zZXFtaW4pKTsKQEAgLTQ2NSw3ICs0OTgsOCBAQCBkZXBhcnNlX1NlcV9NaW52YWx1 ZShKc29uYlBhcnNlU3RhdGUgKnN0YXRlLCBGb3JtX3BnX3NlcXVlbmNlIHNlcWRhdGEpCiAgKiBP V05FRCBCWSAle293bmVyfUQKICAqLwogc3RhdGljIHZvaWQKLWRlcGFyc2VfU2VxX093bmVkQnko SnNvbmJQYXJzZVN0YXRlICpzdGF0ZSwgT2lkIHNlcXVlbmNlSWQpCitkZXBhcnNlX1NlcV9Pd25l ZEJ5KEpzb25iUGFyc2VTdGF0ZSAqc3RhdGUsIE9pZCBzZXF1ZW5jZUlkLAorCQkJCQlib29sIGFs dGVyX3RhYmxlKQogewogCVJlbGF0aW9uCWRlcFJlbDsKIAlTeXNTY2FuRGVzYyBzY2FuOwpAQCAt NTUwLDE0ICs1ODQsMjEgQEAgZGVwYXJzZV9TZXFfT3duZWRCeShKc29uYlBhcnNlU3RhdGUgKnN0 YXRlLCBPaWQgc2VxdWVuY2VJZCkKICAqIERlcGFyc2UgdGhlIHNlcXVlbmNlIFNUQVJUIFdJVEgg b3B0aW9uIHRvIEpzb25iLgogICoKICAqIFZlcmJvc2Ugc3ludGF4CisgKiBTRVQgU1RBUlQgV0lU SCAle3ZhbHVlfXMKKyAqIE9SCiAgKiBTVEFSVCBXSVRIICV7dmFsdWV9cwogICovCiBzdGF0aWMg aW5saW5lIHZvaWQKLWRlcGFyc2VfU2VxX1N0YXJ0d2l0aChKc29uYlBhcnNlU3RhdGUgKnN0YXRl LCBGb3JtX3BnX3NlcXVlbmNlIHNlcWRhdGEpCitkZXBhcnNlX1NlcV9TdGFydHdpdGgoSnNvbmJQ YXJzZVN0YXRlICpzdGF0ZSwKKwkJCQkJICBGb3JtX3BnX3NlcXVlbmNlIHNlcWRhdGEsIGJvb2wg YWx0ZXJfdGFibGUpCiB7CisJY2hhcgkgICAqZm10OworCisJZm10ID0gYWx0ZXJfdGFibGUgPyAi U0VUIFNUQVJUIFdJVEggJXt2YWx1ZX1zIiA6ICJTVEFSVCBXSVRIICV7dmFsdWV9cyI7CisKIAlw dXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9PQkpFQ1QsIE5VTEwpOwogCW5ld19qc29u Yl9WQShzdGF0ZSwgMywKLQkJCQkgImZtdCIsIGpidlN0cmluZywgIlNUQVJUIFdJVEggJXt2YWx1 ZX1zIiwKKwkJCQkgImZtdCIsIGpidlN0cmluZywgZm10LAogCQkJCSAiY2xhdXNlIiwgamJ2U3Ry aW5nLCAic3RhcnQiLAogCQkJCSAidmFsdWUiLCBqYnZTdHJpbmcsCiAJCQkJIHBzcHJpbnRmKElO VDY0X0ZPUk1BVCwgc2VxZGF0YS0+c2Vxc3RhcnQpKTsKQEAgLTYwMSwxNSArNjQyLDE3IEBAIGRl cGFyc2VfU2VxX0FzKEpzb25iUGFyc2VTdGF0ZSAqc3RhdGUsIEZvcm1fcGdfc2VxdWVuY2Ugc2Vx ZGF0YSkKICAqIERlcGFyc2UgdGhlIGRlZmluaXRpb24gb2YgY29sdW1uIGlkZW50aXR5IHRvIEpz b25iLgogICoKICAqIFZlcmJvc2Ugc3ludGF4Ci0gKiAle2lkZW50aXR5X3R5cGV9cyAoICV7c2Vx X2RlZmluaXRpb246IH1zICkKLSAqIHdoZXJlIGlkZW50aXR5X3R5cGUgaXM6ICJHRU5FUkFURUQg JXtvcHRpb259cyBBUyBJREVOVElUWSIKKyAqIFNFVCBHRU5FUkFURUQgJXtvcHRpb259cyAle3Nl cV9kZWZpbml0aW9uOiB9cworICogT1IKKyAqIEdFTkVSQVRFRCAle29wdGlvbn1zIEFTIElERU5U SVRZICggJXtzZXFfZGVmaW5pdGlvbjogfXMgKQogICovCiBzdGF0aWMgdm9pZAogZGVwYXJzZV9D b2x1bW5JZGVudGl0eShKc29uYlBhcnNlU3RhdGUgKnN0YXRlLCBjaGFyICpwYXJlbnRLZXksCi0J CQkJCSAgIE9pZCBzZXFyZWxpZCwgY2hhciBpZGVudGl0eSkKKwkJCQkJICAgT2lkIHNlcXJlbGlk LCBjaGFyIGlkZW50aXR5LCBib29sIGFsdGVyX3RhYmxlKQogewogCUZvcm1fcGdfc2VxdWVuY2Ug c2VxZm9ybTsKIAlTZXF1ZW5jZV92YWx1ZXMgKnNlcXZhbHVlczsKKwljaGFyCSAgICppZGVudGZt dDsKIAlTdHJpbmdJbmZvRGF0YSBmbXRTdHI7CiAKIAlpbml0U3RyaW5nSW5mbygmZm10U3RyKTsK QEAgLTYzMSwxMCArNjc0LDExIEBAIGRlcGFyc2VfQ29sdW1uSWRlbnRpdHkoSnNvbmJQYXJzZVN0 YXRlICpzdGF0ZSwgY2hhciAqcGFyZW50S2V5LAogCQlpbnNlcnRfanNvbmJfa2V5KHN0YXRlLCAi aWRlbnRpdHlfdHlwZSIpOwogCiAJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lOX09C SkVDVCwgTlVMTCk7CisJCWlkZW50Zm10ID0gYWx0ZXJfdGFibGUgPyAiU0VUIEdFTkVSQVRFRCAl e29wdGlvbn1zIiA6CisJCQkiR0VORVJBVEVEICV7b3B0aW9ufXMgQVMgSURFTlRJVFkiOwogCiAJ CW5ld19qc29uYl9WQShzdGF0ZSwgMiwKLQkJCQkJICJmbXQiLCBqYnZTdHJpbmcsCi0JCQkJCSAi R0VORVJBVEVEICV7b3B0aW9ufXMgQVMgSURFTlRJVFkiLAorCQkJCQkgImZtdCIsIGpidlN0cmlu ZywgaWRlbnRmbXQsCiAJCQkJCSAib3B0aW9uIiwgamJ2U3RyaW5nLAogCQkJCQkgKGlkZW50aXR5 ID09IEFUVFJJQlVURV9JREVOVElUWV9BTFdBWVMgPwogCQkJCQkgICJBTFdBWVMiIDogIkJZIERF RkFVTFQiKSk7CkBAIC02NDQsNyArNjg4LDggQEAgZGVwYXJzZV9Db2x1bW5JZGVudGl0eShKc29u YlBhcnNlU3RhdGUgKnN0YXRlLCBjaGFyICpwYXJlbnRLZXksCiAJLyogc2VxX2RlZmluaXRpb24g YXJyYXkgb2JqZWN0IGNyZWF0aW9uICovCiAJaW5zZXJ0X2pzb25iX2tleShzdGF0ZSwgInNlcV9k ZWZpbml0aW9uIik7CiAKLQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZmbXRTdHIsICIgKCAle3Nl cV9kZWZpbml0aW9uOiB9cyApIik7CisJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmZm10U3RyLCBh bHRlcl90YWJsZSA/ICIgJXtzZXFfZGVmaW5pdGlvbjogfXMiIDoKKwkJCQkJCSAgICIgKCAle3Nl cV9kZWZpbml0aW9uOiB9cyApIik7CiAKIAlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9CRUdJ Tl9BUlJBWSwgTlVMTCk7CiAKQEAgLTY1MiwxMiArNjk3LDEyIEBAIGRlcGFyc2VfQ29sdW1uSWRl bnRpdHkoSnNvbmJQYXJzZVN0YXRlICpzdGF0ZSwgY2hhciAqcGFyZW50S2V5LAogCXNlcWZvcm0g PSBzZXF2YWx1ZXMtPnNlcWZvcm07CiAKIAkvKiBEZWZpbml0aW9uIGVsZW1lbnRzICovCi0JZGVw YXJzZV9TZXFfQ2FjaGUoc3RhdGUsIHNlcWZvcm0pOwotCWRlcGFyc2VfU2VxX0N5Y2xlKHN0YXRl LCBzZXFmb3JtKTsKLQlkZXBhcnNlX1NlcV9JbmNyZW1lbnRCeShzdGF0ZSwgc2VxZm9ybSk7Ci0J ZGVwYXJzZV9TZXFfTWludmFsdWUoc3RhdGUsIHNlcWZvcm0pOwotCWRlcGFyc2VfU2VxX01heHZh bHVlKHN0YXRlLCBzZXFmb3JtKTsKLQlkZXBhcnNlX1NlcV9TdGFydHdpdGgoc3RhdGUsIHNlcWZv cm0pOworCWRlcGFyc2VfU2VxX0NhY2hlKHN0YXRlLCBzZXFmb3JtLCBhbHRlcl90YWJsZSk7CisJ ZGVwYXJzZV9TZXFfQ3ljbGUoc3RhdGUsIHNlcWZvcm0sIGFsdGVyX3RhYmxlKTsKKwlkZXBhcnNl X1NlcV9JbmNyZW1lbnRCeShzdGF0ZSwgc2VxZm9ybSwgYWx0ZXJfdGFibGUpOworCWRlcGFyc2Vf U2VxX01pbnZhbHVlKHN0YXRlLCBzZXFmb3JtLCBhbHRlcl90YWJsZSk7CisJZGVwYXJzZV9TZXFf TWF4dmFsdWUoc3RhdGUsIHNlcWZvcm0sIGFsdGVyX3RhYmxlKTsKKwlkZXBhcnNlX1NlcV9TdGFy dHdpdGgoc3RhdGUsIHNlcWZvcm0sIGFsdGVyX3RhYmxlKTsKIAlkZXBhcnNlX1NlcV9SZXN0YXJ0 KHN0YXRlLCBzZXF2YWx1ZXMtPmxhc3RfdmFsdWUpOwogCS8qIFdlIHB1cnBvc2VmdWxseSBkbyBu b3QgZW1pdCBPV05FRCBCWSBoZXJlICovCiAKQEAgLTY4NSw3ICs3MzAsOCBAQCBkZXBhcnNlX0Nv bHVtbklkZW50aXR5KEpzb25iUGFyc2VTdGF0ZSAqc3RhdGUsIGNoYXIgKnBhcmVudEtleSwKICAq Lwogc3RhdGljIHZvaWQKIGRlcGFyc2VfQ29sdW1uRGVmKEpzb25iUGFyc2VTdGF0ZSAqc3RhdGUs IFJlbGF0aW9uIHJlbGF0aW9uLAotCQkJCSAgTGlzdCAqZHBjb250ZXh0LCBib29sIGNvbXBvc2l0 ZSwgQ29sdW1uRGVmICpjb2xkZWYpCisJCQkJICBMaXN0ICpkcGNvbnRleHQsIGJvb2wgY29tcG9z aXRlLCBDb2x1bW5EZWYgKmNvbGRlZiwKKwkJCQkgIGJvb2wgaXNfYWx0ZXIpCiB7CiAJT2lkCQkJ cmVsaWQgPSBSZWxhdGlvbkdldFJlbGlkKHJlbGF0aW9uKTsKIAlIZWFwVHVwbGUJYXR0clR1cDsK QEAgLTc5MCw2ICs4MzYsOSBAQCBkZXBhcnNlX0NvbHVtbkRlZihKc29uYlBhcnNlU3RhdGUgKnN0 YXRlLCBSZWxhdGlvbiByZWxhdGlvbiwKIAkJCX0KIAkJfQogCisJCWlmIChpc19hbHRlciAmJiBj b2xkZWYtPmlzX25vdF9udWxsKQorCQkJc2F3X25vdG51bGwgPSB0cnVlOworCiAJCS8qIE5PVCBO VUxMICovCiAJCWlmIChzYXdfbm90bnVsbCkKIAkJewpAQCAtODM2LDcgKzg4NSw3IEBAIGRlcGFy c2VfQ29sdW1uRGVmKEpzb25iUGFyc2VTdGF0ZSAqc3RhdGUsIFJlbGF0aW9uIHJlbGF0aW9uLAog CQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmZtdFN0ciwgIiAle2lkZW50aXR5X2NvbHVtbn1z Iik7CiAJCQkJZGVwYXJzZV9Db2x1bW5JZGVudGl0eShzdGF0ZSwgImlkZW50aXR5X2NvbHVtbiIs CiAJCQkJCQkJCQkgICBzZXFyZWxpZCwKLQkJCQkJCQkJCSAgIGNvbGRlZi0+aWRlbnRpdHkpOwor CQkJCQkJCQkJICAgY29sZGVmLT5pZGVudGl0eSwgaXNfYWx0ZXIpOwogCQkJfQogCQl9CiAKQEAg LTEwMzYsNyArMTA4NSw3IEBAIGRlcGFyc2VfVGFibGVFbGVtcyhKc29uYlBhcnNlU3RhdGUgKnN0 YXRlLCBSZWxhdGlvbiByZWxhdGlvbiwKIAkJCQkJCQkJCQkJCShDb2x1bW5EZWYgKikgZWx0KTsK IAkJCQkJZWxzZQogCQkJCQkJZGVwYXJzZV9Db2x1bW5EZWYoc3RhdGUsIHJlbGF0aW9uLCBkcGNv bnRleHQsCi0JCQkJCQkJCQkJICBjb21wb3NpdGUsIChDb2x1bW5EZWYgKikgZWx0KTsKKwkJCQkJ CQkJCQkgIGNvbXBvc2l0ZSwgKENvbHVtbkRlZiAqKSBlbHQsIGZhbHNlKTsKIAkJCQl9CiAJCQkJ YnJlYWs7CiAJCQljYXNlIFRfQ29uc3RyYWludDoKQEAgLTEyNzUsNiArMTMyNCw5MyBAQCBkZXBh cnNlX0RlZkVsZW0oSnNvbmJQYXJzZVN0YXRlICpzdGF0ZSwgRGVmRWxlbSAqZWxlbSwgYm9vbCBp c19yZXNldCkKIAlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9FTkRfT0JKRUNULCBOVUxMKTsK IH0KIAorLyoKKyAqIERlcGFyc2UgU0VUL1JFU0VUIGFzIHVzZWQgYnkKKyAqIEFMVEVSIFRBQkxF IC4uLiBBTFRFUiBDT0xVTU4gLi4uIFNFVC9SRVNFVCAoLi4uKQorICoKKyAqIFZlcmJvc2Ugc3lu dGF4CisgKiBBTFRFUiBDT0xVTU4gJXtjb2x1bW59SSBSRVNFVHxTRVQgKCV7b3B0aW9uczosIH1z KQorICovCitzdGF0aWMgdm9pZAorZGVwYXJzZV9Db2x1bW5TZXRPcHRpb25zKEpzb25iUGFyc2VT dGF0ZSAqc3RhdGUsIEFsdGVyVGFibGVDbWQgKnN1YmNtZCkKK3sKKwlMaXN0Q2VsbCAgICpjZWxs OworCWJvb2wJCWlzX3Jlc2V0ID0gc3ViY21kLT5zdWJ0eXBlID09IEFUX1Jlc2V0T3B0aW9uczsK Kwlib29sCQllbGVtX2ZvdW5kIFBHX1VTRURfRk9SX0FTU0VSVFNfT05MWSA9IGZhbHNlOworCisJ cHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfQkVHSU5fT0JKRUNULCBOVUxMKTsKKworCW5ld19q c29uYl9WQShzdGF0ZSwgMywKKwkJCQkgImZtdCIsIGpidlN0cmluZywgIkFMVEVSIENPTFVNTiAl e2NvbHVtbn1JIgorCQkJCSAiICV7b3B0aW9ufXMgKCV7b3B0aW9uczosIH1zKSIsCisJCQkJICJj b2x1bW4iLCBqYnZTdHJpbmcsIHN1YmNtZC0+bmFtZSwKKwkJCQkgIm9wdGlvbiIsIGpidlN0cmlu ZywgaXNfcmVzZXQgPyAiUkVTRVQiIDogIlNFVCIpOworCisJaW5zZXJ0X2pzb25iX2tleShzdGF0 ZSwgIm9wdGlvbnMiKTsKKwlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9BUlJBWSwg TlVMTCk7CisKKwlmb3JlYWNoKGNlbGwsIChMaXN0ICopIHN1YmNtZC0+ZGVmKQorCXsKKwkJRGVm RWxlbSAgICAqZWxlbTsKKworCQllbGVtID0gKERlZkVsZW0gKikgbGZpcnN0KGNlbGwpOworCQlk ZXBhcnNlX0RlZkVsZW0oc3RhdGUsIGVsZW0sIGlzX3Jlc2V0KTsKKworI2lmZGVmIFVTRV9BU1NF UlRfQ0hFQ0tJTkcKKwkJZWxlbV9mb3VuZCA9IHRydWU7CisjZW5kaWYKKwl9CisKKwlwdXNoSnNv bmJWYWx1ZSgmc3RhdGUsIFdKQl9FTkRfQVJSQVksIE5VTEwpOworCisJQXNzZXJ0KGVsZW1fZm91 bmQpOworCisJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfRU5EX09CSkVDVCwgTlVMTCk7Cit9 CisKKy8qCisgKiBEZXBhcnNlIFNFVC9SRVNFVCBhcyB1c2VkIGJ5IEFMVEVSIFRBQkxFIC4uLiBT RVQvUkVTRVQgKC4uLikKKyAqCisgKiBWZXJib3NlIHN5bnRheAorICogUkVTRVR8U0VUICgle29w dGlvbnM6LCB9cykKKyAqLworc3RhdGljIHZvaWQKK2RlcGFyc2VfUmVsU2V0T3B0aW9ucyhKc29u YlBhcnNlU3RhdGUgKnN0YXRlLCBBbHRlclRhYmxlQ21kICpzdWJjbWQpCit7CisJTGlzdENlbGwg ICAqY2VsbDsKKwlib29sCQlpc19yZXNldCA9IHN1YmNtZC0+c3VidHlwZSA9PSBBVF9SZXNldFJl bE9wdGlvbnM7CisJYm9vbAkJZWxlbV9mb3VuZCBQR19VU0VEX0ZPUl9BU1NFUlRTX09OTFkgPSBm YWxzZTsKKworCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7 CisKKwluZXdfanNvbmJfVkEoc3RhdGUsIDIsCisJCQkJICJmbXQiLCBqYnZTdHJpbmcsICIle3Nl dF9yZXNldH1zICgle29wdGlvbnM6LCB9cykiLAorCQkJCSAic2V0X3Jlc2V0IiwgamJ2U3RyaW5n LCBpc19yZXNldCA/ICJSRVNFVCIgOiAiU0VUIik7CisKKwkvKiBpbnNlcnQgb3B0aW9ucyBhcnJh eSAqLworCWluc2VydF9qc29uYl9rZXkoc3RhdGUsICJvcHRpb25zIik7CisKKwlwdXNoSnNvbmJW YWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9BUlJBWSwgTlVMTCk7CisKKwlmb3JlYWNoKGNlbGwsIChM aXN0ICopIHN1YmNtZC0+ZGVmKQorCXsKKwkJRGVmRWxlbSAgICAqZWxlbTsKKworCQllbGVtID0g KERlZkVsZW0gKikgbGZpcnN0KGNlbGwpOworCQlkZXBhcnNlX0RlZkVsZW0oc3RhdGUsIGVsZW0s IGlzX3Jlc2V0KTsKKworI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKKwkJZWxlbV9mb3VuZCA9 IHRydWU7CisjZW5kaWYKKwl9CisKKwlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9FTkRfQVJS QVksIE5VTEwpOworCisJQXNzZXJ0KGVsZW1fZm91bmQpOworCisJcHVzaEpzb25iVmFsdWUoJnN0 YXRlLCBXSkJfRU5EX09CSkVDVCwgTlVMTCk7Cit9CisKIC8qCiAgKiBEZXBhcnNlIFdJVEggY2xh dXNlLCBhcyB1c2VkIGJ5IENyZWF0ZSBUYWJsZS4KICAqCkBAIC0xNTc1LDYgKzE3MTEsMTI4MSBA QCBkZXBhcnNlX2Ryb3BfdGFibGUoY29uc3QgY2hhciAqb2JqaWRlbnRpdHksIE5vZGUgKnBhcnNl dHJlZSkKIAlyZXR1cm4gSnNvbmJUb0NTdHJpbmcoJnN0ciwgJmpzb25iLT5yb290LCBKU09OQl9F U1RJTUFURURfTEVOKTsKIH0KIAorLyoKKyAqIERlcGFyc2UgYWxsIHRoZSBjb2xsZWN0ZWQgc3Vi Y29tbWFuZHMgYW5kIHJldHVybiBqc29uYiBzdHJpbmcgcmVwcmVzZW50aW5nCisgKiB0aGUgYWx0 ZXIgY29tbWFuZC4KKyAqCisgKiBWZXJib3NlIHN5bnRheAorICogQUxURVIgVEFCTEUgJXtvbmx5 fXMgJXtpZGVudGl0eX1EICV7c3ViY21kczosIH1zCisgKi8KK3N0YXRpYyBKc29uYiAqCitkZXBh cnNlX0FsdGVyVGFibGVTdG10KENvbGxlY3RlZENvbW1hbmQgKmNtZCkKK3sKKwlMaXN0CSAgICpk cGNvbnRleHQ7CisJUmVsYXRpb24JcmVsOworCUxpc3RDZWxsICAgKmNlbGw7CisJT2lkCQkJcmVs SWQgPSBjbWQtPmQuYWx0ZXJUYWJsZS5vYmplY3RJZDsKKwlBbHRlclRhYmxlU3RtdCAqc3RtdCA9 IE5VTEw7CisJU3RyaW5nSW5mb0RhdGEgZm10U3RyOworCUpzb25iUGFyc2VTdGF0ZSAqc3RhdGUg PSBOVUxMOworCWJvb2wJCXN1YkNtZEFycmF5ID0gZmFsc2U7CisJSnNvbmJWYWx1ZSAqdmFsdWU7 CisKKwlBc3NlcnQoY21kLT50eXBlID09IFNDVF9BbHRlclRhYmxlKTsKKwlzdG10ID0gKEFsdGVy VGFibGVTdG10ICopIGNtZC0+cGFyc2V0cmVlOworCisJQXNzZXJ0KElzQShzdG10LCBBbHRlclRh YmxlU3RtdCkgfHwgSXNBKHN0bXQsIEFsdGVyVGFibGVNb3ZlQWxsU3RtdCkpOworCisJaW5pdFN0 cmluZ0luZm8oJmZtdFN0cik7CisKKwkvKgorCSAqIEFMVEVSIFRBQkxFIHN1YmNvbW1hbmRzIGdl bmVyYXRlZCBmb3IgVGFibGVMaWtlQ2xhdXNlIGlzIHByb2Nlc3NlZCBpbgorCSAqIHRoZSB0b3Ag bGV2ZWwgQ1JFQVRFIFRBQkxFIGNvbW1hbmQ7IHJldHVybiBlbXB0eSBoZXJlLgorCSAqLworCWlm IChJc0Eoc3RtdCwgQWx0ZXJUYWJsZVN0bXQpICYmIHN0bXQtPnRhYmxlX2xpa2UpCisJCXJldHVy biBOVUxMOworCisJcmVsID0gcmVsYXRpb25fb3BlbihyZWxJZCwgQWNjZXNzU2hhcmVMb2NrKTsK KworCWlmIChyZWwtPnJkX3JlbC0+cmVsa2luZCAhPSBSRUxLSU5EX1JFTEFUSU9OICYmCisJCXJl bC0+cmRfcmVsLT5yZWxraW5kICE9IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpCisJeworCQkv KiB1bnN1cHBvcnRlZCByZWxraW5kICovCisJCXRhYmxlX2Nsb3NlKHJlbCwgQWNjZXNzU2hhcmVM b2NrKTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCisJZHBjb250ZXh0ID0gZGVwYXJzZV9jb250ZXh0 X2ZvcihSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpLCByZWxJZCk7CisKKwlwdXNoSnNvbmJW YWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9PQkpFQ1QsIE5VTEwpOworCisJLyogU3RhcnQgY29uc3Ry dWN0aW5nIGZtdCBzdHJpbmcgKi8KKwlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZmbXRTdHIsICJB TFRFUiBUQUJMRSIpOworCisJaWYgKCFzdG10LT5yZWxhdGlvbi0+aW5oKQorCXsKKwkJYXBwZW5k U3RyaW5nSW5mb1N0cmluZygmZm10U3RyLCAiICV7b25seX1zIik7CisJCW5ld19qc29uYl9WQShz dGF0ZSwgMSwgIm9ubHkiLCBqYnZTdHJpbmcsICJPTkxZIik7CisJfQorCisJYXBwZW5kU3RyaW5n SW5mb1N0cmluZygmZm10U3RyLCAiICV7aWRlbnRpdHl9RCIpOworCWluc2VydF9pZGVudGl0eV9v YmplY3Qoc3RhdGUsIHJlbC0+cmRfcmVsLT5yZWxuYW1lc3BhY2UsCisJCQkJCQkgICBSZWxhdGlv bkdldFJlbGF0aW9uTmFtZShyZWwpKTsKKworCWZvcmVhY2goY2VsbCwgY21kLT5kLmFsdGVyVGFi bGUuc3ViY21kcykKKwl7CisJCUNvbGxlY3RlZEFUU3ViY21kICpzdWIgPSAoQ29sbGVjdGVkQVRT dWJjbWQgKikgbGZpcnN0KGNlbGwpOworCQlBbHRlclRhYmxlQ21kICpzdWJjbWQgPSAoQWx0ZXJU YWJsZUNtZCAqKSBzdWItPnBhcnNldHJlZTsKKworCQlBc3NlcnQoSXNBKHN1YmNtZCwgQWx0ZXJU YWJsZUNtZCkpOworCisJCS8qCisJCSAqIFNraXAgZGVwYXJzZSBvZiB0aGUgc3ViY29tbWFuZCBp ZiB0aGUgb2JqZWN0SWQgZG9lc24ndCBtYXRjaCB0aGUKKwkJICogdGFyZ2V0IHJlbGF0aW9uIElE LiBJdCBjYW4gaGFwcGVuIGZvciBpbmhlcml0ZWQgdGFibGVzIHdoZW4KKwkJICogc3ViY29tbWFu ZHMgZm9yIGluaGVyaXRlZCB0YWJsZXMgYW5kIHRoZSBwYXJlbnQgdGFibGUgYXJlIGJvdGgKKwkJ ICogY29sbGVjdGVkIGluIHRoZSBBTFRFUiBUQUJMRSBjb21tYW5kIGZvciB0aGUgcGFyZW50IHRh YmxlLgorCQkgKi8KKwkJaWYgKHN1YmNtZC0+c3VidHlwZSAhPSBBVF9BdHRhY2hQYXJ0aXRpb24g JiYKKwkJCXN1Yi0+YWRkcmVzcy5vYmplY3RJZCAhPSByZWxJZCAmJgorCQkJaGFzX3N1cGVyY2xh c3Moc3ViLT5hZGRyZXNzLm9iamVjdElkKSkKKwkJCWNvbnRpbnVlOworCisJCS8qIE1hcmsgdGhl IGJlZ2luIG9mIHN1YmNtZHMgYXJyYXkgKi8KKwkJaWYgKCFzdWJDbWRBcnJheSkKKwkJeworCQkJ YXBwZW5kU3RyaW5nSW5mb1N0cmluZygmZm10U3RyLCAiICV7c3ViY21kczosIH1zIik7CisJCQlp bnNlcnRfanNvbmJfa2V5KHN0YXRlLCAic3ViY21kcyIpOworCQkJcHVzaEpzb25iVmFsdWUoJnN0 YXRlLCBXSkJfQkVHSU5fQVJSQVksIE5VTEwpOworCQkJc3ViQ21kQXJyYXkgPSB0cnVlOworCQl9 CisKKwkJc3dpdGNoIChzdWJjbWQtPnN1YnR5cGUpCisJCXsKKwkJCWNhc2UgQVRfQWRkQ29sdW1u OgorCQkJCXsKKwkJCQkJU3RyaW5nSW5mb0RhdGEgZm10U3ViOworCisJCQkJCWluaXRTdHJpbmdJ bmZvKCZmbXRTdWIpOworCisJCQkJCS8qIFhYWCBuZWVkIHRvIHNldCB0aGUgInJlY3Vyc2UiIGJp dCBzb21ld2hlcmU/ICovCisJCQkJCUFzc2VydChJc0Eoc3ViY21kLT5kZWYsIENvbHVtbkRlZikp OworCisJCQkJCS8qCisJCQkJCSAqIFN5bnRheDogQUREIENPTFVNTiAle2lmX25vdF9leGlzdHN9 cyAle2RlZmluaXRpb259cyIKKwkJCQkJICogd2hlcmUgZGVmaW5pdGlvbjogIiV7bmFtZX1JICV7 Y29sdHlwZX1UIFNUT1JBR0UKKwkJCQkJICogJXtjb2xzdG9yYWdlfXMgJXtjb21wcmVzc2lvbn1z ICV7Y29sbGF0aW9ufXMKKwkJCQkJICogJXtub3RfbnVsbH1zICV7ZGVmYXVsdH1zICV7aWRlbnRp dHlfY29sdW1ufXMKKwkJCQkJICogJXtnZW5lcmF0ZWRfY29sdW1ufXMiCisJCQkJCSAqLworCQkJ CQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9PQkpFQ1QsIE5VTEwpOworCisJCQkJ CWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmZtdFN1YiwgIkFERCBDT0xVTU4iKTsKKwkJCQkJbmV3 X2pzb25iX1ZBKHN0YXRlLCAxLCAidHlwZSIsIGpidlN0cmluZywgImFkZCBjb2x1bW4iKTsKKwor CQkJCQlpZiAoc3ViY21kLT5taXNzaW5nX29rKQorCQkJCQl7CisJCQkJCQlhcHBlbmRTdHJpbmdJ bmZvU3RyaW5nKCZmbXRTdWIsICIgJXtpZl9ub3RfZXhpc3RzfXMiKTsKKwkJCQkJCW5ld19qc29u Yl9WQShzdGF0ZSwgMSwKKwkJCQkJCQkJCSAiaWZfbm90X2V4aXN0cyIsIGpidlN0cmluZywgIklG IE5PVCBFWElTVFMiKTsKKwkJCQkJfQorCisJCQkJCS8qIFB1c2ggZGVmaW5pdGlvbiBrZXktdmFs dWUgcGFpciAqLworCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZmbXRTdWIsICIgJXtkZWZp bml0aW9ufXMiKTsKKwkJCQkJaW5zZXJ0X2pzb25iX2tleShzdGF0ZSwgImRlZmluaXRpb24iKTsK KworCQkJCQlkZXBhcnNlX0NvbHVtbkRlZihzdGF0ZSwgcmVsLCBkcGNvbnRleHQsCisJCQkJCQkJ CQkgIGZhbHNlLCAoQ29sdW1uRGVmICopIHN1YmNtZC0+ZGVmLAorCQkJCQkJCQkJICB0cnVlKTsK KworCQkJCQkvKiBXZSBoYXZlIGZ1bGwgZm10IGJ5IG5vdywgc28gYWRkIGpzb25iIGVsZW1lbnQg Zm9yIHRoYXQgKi8KKwkJCQkJbmV3X2pzb25iX1ZBKHN0YXRlLCAxLCAiZm10IiwgamJ2U3RyaW5n LCBmbXRTdWIuZGF0YSk7CisJCQkJCXBmcmVlKGZtdFN1Yi5kYXRhKTsKKworCQkJCQlwdXNoSnNv bmJWYWx1ZSgmc3RhdGUsIFdKQl9FTkRfT0JKRUNULCBOVUxMKTsKKwkJCQkJYnJlYWs7CisJCQkJ fQorCisJCQljYXNlIEFUX0FkZEluZGV4Q29uc3RyYWludDoKKwkJCQl7CisJCQkJCUluZGV4U3Rt dCAgKmlzdG10OworCQkJCQlSZWxhdGlvbglpZHg7CisJCQkJCU9pZAkJCWNvbk9pZCA9IHN1Yi0+ YWRkcmVzcy5vYmplY3RJZDsKKworCQkJCQlBc3NlcnQoSXNBKHN1YmNtZC0+ZGVmLCBJbmRleFN0 bXQpKTsKKwkJCQkJaXN0bXQgPSAoSW5kZXhTdG10ICopIHN1YmNtZC0+ZGVmOworCisJCQkJCUFz c2VydChpc3RtdC0+aXNjb25zdHJhaW50ICYmIGlzdG10LT51bmlxdWUpOworCisJCQkJCWlkeCA9 IHJlbGF0aW9uX29wZW4oaXN0bXQtPmluZGV4T2lkLCBBY2Nlc3NTaGFyZUxvY2spOworCisJCQkJ CS8qCisJCQkJCSAqIFN5bnRheDogQUREIENPTlNUUkFJTlQgJXtuYW1lfUkgJXtjb25zdHJhaW50 X3R5cGV9cworCQkJCQkgKiBVU0lORyBJTkRFWCAlaW5kZXhfbmFtZX1JICV7ZGVmZXJyYWJsZX1z CisJCQkJCSAqICV7aW5pdF9kZWZlcnJlZH1zCisJCQkJCSAqLworCQkJCQlwdXNoSnNvbmJWYWx1 ZSgmc3RhdGUsIFdKQl9CRUdJTl9PQkpFQ1QsIE5VTEwpOworCisJCQkJCW5ld19qc29uYl9WQShz dGF0ZSwgNywKKwkJCQkJCQkJICJmbXQiLCBqYnZTdHJpbmcsCisJCQkJCQkJCSAiQUREIENPTlNU UkFJTlQgJXtuYW1lfUkgJXtjb25zdHJhaW50X3R5cGV9cyIKKwkJCQkJCQkJICIgVVNJTkcgSU5E RVggJXtpbmRleF9uYW1lfUkgJXtkZWZlcnJhYmxlfXMiCisJCQkJCQkJCSAiICV7aW5pdF9kZWZl cnJlZH1zIiwKKwkJCQkJCQkJICJ0eXBlIiwgamJ2U3RyaW5nLCAiYWRkIGNvbnN0cmFpbnQgdXNp bmcgaW5kZXgiLAorCQkJCQkJCQkgIm5hbWUiLCBqYnZTdHJpbmcsIGdldF9jb25zdHJhaW50X25h bWUoY29uT2lkKSwKKwkJCQkJCQkJICJjb25zdHJhaW50X3R5cGUiLCBqYnZTdHJpbmcsCisJCQkJ CQkJCSBpc3RtdC0+cHJpbWFyeSA/ICJQUklNQVJZIEtFWSIgOiAiVU5JUVVFIiwKKwkJCQkJCQkJ ICJpbmRleF9uYW1lIiwgamJ2U3RyaW5nLAorCQkJCQkJCQkgUmVsYXRpb25HZXRSZWxhdGlvbk5h bWUoaWR4KSwKKwkJCQkJCQkJICJkZWZlcnJhYmxlIiwgamJ2U3RyaW5nLAorCQkJCQkJCQkgaXN0 bXQtPmRlZmVycmFibGUgPyAiREVGRVJSQUJMRSIgOgorCQkJCQkJCQkgIk5PVCBERUZFUlJBQkxF IiwKKwkJCQkJCQkJICJpbml0X2RlZmVycmVkIiwgamJ2U3RyaW5nLAorCQkJCQkJCQkgaXN0bXQt PmluaXRkZWZlcnJlZCA/ICJJTklUSUFMTFkgREVGRVJSRUQiIDoKKwkJCQkJCQkJICJJTklUSUFM TFkgSU1NRURJQVRFIik7CisKKwkJCQkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfRU5EX09C SkVDVCwgTlVMTCk7CisJCQkJCXJlbGF0aW9uX2Nsb3NlKGlkeCwgQWNjZXNzU2hhcmVMb2NrKTsK KwkJCQkJYnJlYWs7CisJCQkJfQorCQkJY2FzZSBBVF9SZUFkZEluZGV4OgorCQkJY2FzZSBBVF9S ZUFkZENvbnN0cmFpbnQ6CisJCQljYXNlIEFUX1JlQWRkRG9tYWluQ29uc3RyYWludDoKKwkJCWNh c2UgQVRfUmVBZGRDb21tZW50OgorCQkJY2FzZSBBVF9SZXBsYWNlUmVsT3B0aW9uczoKKwkJCWNh c2UgQVRfQ2hlY2tOb3ROdWxsOgorCQkJY2FzZSBBVF9SZUFkZFN0YXRpc3RpY3M6CisJCQkJLyog U3VidHlwZXMgdXNlZCBmb3IgaW50ZXJuYWwgb3BlcmF0aW9uczsgbm90aGluZyB0byBkbyBoZXJl ICovCisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfQ29sdW1uRGVmYXVsdDoKKwkJCQlpZiAoc3Vi Y21kLT5kZWYgPT0gTlVMTCkKKwkJCQl7CisJCQkJCS8qCisJCQkJCSAqIFN5bnRheDogQUxURVIg Q09MVU1OICV7Y29sdW1ufUkgRFJPUCBERUZBVUxUCisJCQkJCSAqLworCQkJCQlwdXNoSnNvbmJW YWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9PQkpFQ1QsIE5VTEwpOworCQkJCQluZXdfanNvbmJfVkEo c3RhdGUsIDMsCisJCQkJCQkJCSAiZm10IiwgamJ2U3RyaW5nLAorCQkJCQkJCQkgIkFMVEVSIENP TFVNTiAle2NvbHVtbn1JIERST1AgREVGQVVMVCIsCisJCQkJCQkJCSAidHlwZSIsIGpidlN0cmlu ZywgImRyb3AgZGVmYXVsdCIsCisJCQkJCQkJCSAiY29sdW1uIiwgamJ2U3RyaW5nLCBzdWJjbWQt Pm5hbWUpOworCQkJCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9FTkRfT0JKRUNULCBOVUxM KTsKKwkJCQl9CisJCQkJZWxzZQorCQkJCXsKKwkJCQkJTGlzdAkgICAqZHBjb250ZXh0X3JlbDsK KwkJCQkJSGVhcFR1cGxlCWF0dHJ0dXA7CisJCQkJCUF0dHJOdW1iZXIJYXR0bm87CisKKwkJCQkJ ZHBjb250ZXh0X3JlbCA9IGRlcGFyc2VfY29udGV4dF9mb3IoCisJCQkJCQkJCQkJCQkJCVJlbGF0 aW9uR2V0UmVsYXRpb25OYW1lKHJlbCksCisJCQkJCQkJCQkJCQkJCVJlbGF0aW9uR2V0UmVsaWQo cmVsKSk7CisJCQkJCWF0dHJ0dXAgPSBTZWFyY2hTeXNDYWNoZUF0dE5hbWUoUmVsYXRpb25HZXRS ZWxpZChyZWwpLAorCQkJCQkJCQkJCQkJCXN1YmNtZC0+bmFtZSk7CisJCQkJCWF0dG5vID0gKChG b3JtX3BnX2F0dHJpYnV0ZSkgR0VUU1RSVUNUKGF0dHJ0dXApKS0+YXR0bnVtOworCisJCQkJCS8q CisJCQkJCSAqIFN5bnRheDogQUxURVIgQ09MVU1OICV7Y29sdW1ufUkgU0VUIERFRkFVTFQKKwkJ CQkJICogJXtkZWZpbml0aW9ufXMKKwkJCQkJICovCisJCQkJCXB1c2hKc29uYlZhbHVlKCZzdGF0 ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CisKKwkJCQkJbmV3X2pzb25iX1ZBKHN0YXRlLCA0 LAorCQkJCQkJCQkgImZtdCIsIGpidlN0cmluZywKKwkJCQkJCQkJICJBTFRFUiBDT0xVTU4gJXtj b2x1bW59SSBTRVQgREVGQVVMVCIKKwkJCQkJCQkJICIgJXtkZWZpbml0aW9ufXMiLAorCQkJCQkJ CQkgInR5cGUiLCBqYnZTdHJpbmcsICJzZXQgZGVmYXVsdCIsCisJCQkJCQkJCSAiY29sdW1uIiwg amJ2U3RyaW5nLCBzdWJjbWQtPm5hbWUsCisJCQkJCQkJCSAiZGVmaW5pdGlvbiIsIGpidlN0cmlu ZywKKwkJCQkJCQkJIHJlbGF0aW9uX2dldF9jb2x1bW5fZGVmYXVsdChyZWwsIGF0dG5vLAorCQkJ CQkJCQkJCQkJCQkJIGRwY29udGV4dF9yZWwpKTsKKworCQkJCQlwdXNoSnNvbmJWYWx1ZSgmc3Rh dGUsIFdKQl9FTkRfT0JKRUNULCBOVUxMKTsKKwkJCQkJUmVsZWFzZVN5c0NhY2hlKGF0dHJ0dXAp OworCQkJCX0KKworCQkJCWJyZWFrOworCisJCQljYXNlIEFUX0Ryb3BOb3ROdWxsOgorCisJCQkJ LyoKKwkJCQkgKiBTeW50YXg6IEFMVEVSIENPTFVNTiAle2NvbHVtbn1JIERST1AgTk9UIE5VTEwK KwkJCQkgKi8KKwkJCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9PQkpFQ1QsIE5V TEwpOworCQkJCW5ld19qc29uYl9WQShzdGF0ZSwgMywKKwkJCQkJCQkgImZtdCIsIGpidlN0cmlu ZywKKwkJCQkJCQkgIkFMVEVSIENPTFVNTiAle2NvbHVtbn1JIERST1AgTk9UIE5VTEwiLAorCQkJ CQkJCSAidHlwZSIsIGpidlN0cmluZywgImRyb3Agbm90IG51bGwiLAorCQkJCQkJCSAiY29sdW1u IiwgamJ2U3RyaW5nLCBzdWJjbWQtPm5hbWUpOworCQkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwg V0pCX0VORF9PQkpFQ1QsIE5VTEwpOworCQkJCWJyZWFrOworCisJCQljYXNlIEFUX0ZvcmNlUm93 U2VjdXJpdHk6CisKKwkJCQkvKgorCQkJCSAqIFN5bnRheDogRk9SQ0UgUk9XIExFVkVMIFNFQ1VS SVRZCisJCQkJICovCisJCQkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfQkVHSU5fT0JKRUNU LCBOVUxMKTsKKwkJCQluZXdfanNvbmJfVkEoc3RhdGUsIDEsICJmbXQiLCBqYnZTdHJpbmcsCisJ CQkJCQkJICJGT1JDRSBST1cgTEVWRUwgU0VDVVJJVFkiKTsKKwkJCQlwdXNoSnNvbmJWYWx1ZSgm c3RhdGUsIFdKQl9FTkRfT0JKRUNULCBOVUxMKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBBVF9O b0ZvcmNlUm93U2VjdXJpdHk6CisKKwkJCQkvKgorCQkJCSAqIFN5bnRheDogTk8gRk9SQ0UgUk9X IExFVkVMIFNFQ1VSSVRZCisJCQkJICovCisJCQkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJf QkVHSU5fT0JKRUNULCBOVUxMKTsKKwkJCQluZXdfanNvbmJfVkEoc3RhdGUsIDEsICJmbXQiLCBq YnZTdHJpbmcsCisJCQkJCQkJICJOTyBGT1JDRSBST1cgTEVWRUwgU0VDVVJJVFkiKTsKKwkJCQlw dXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9FTkRfT0JKRUNULCBOVUxMKTsKKwkJCQlicmVhazsK KworCQkJY2FzZSBBVF9TZXROb3ROdWxsOgorCisJCQkJLyoKKwkJCQkgKiBTeW50YXg6IEFMVEVS IENPTFVNTiAle2NvbHVtbn1JIFNFVCBOT1QgTlVMTAorCQkJCSAqLworCQkJCXB1c2hKc29uYlZh bHVlKCZzdGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CisJCQkJbmV3X2pzb25iX1ZBKHN0 YXRlLCAzLAorCQkJCQkJCSAiZm10IiwgamJ2U3RyaW5nLAorCQkJCQkJCSAiQUxURVIgQ09MVU1O ICV7Y29sdW1ufUkgU0VUIE5PVCBOVUxMIiwKKwkJCQkJCQkgInR5cGUiLCBqYnZTdHJpbmcsICJz ZXQgbm90IG51bGwiLAorCQkJCQkJCSAiY29sdW1uIiwgamJ2U3RyaW5nLCBzdWJjbWQtPm5hbWUp OworCQkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0VORF9PQkpFQ1QsIE5VTEwpOworCQkJ CWJyZWFrOworCisJCQljYXNlIEFUX0Ryb3BFeHByZXNzaW9uOgorCQkJCXsKKwkJCQkJU3RyaW5n SW5mb0RhdGEgZm10U3ViOworCisJCQkJCWluaXRTdHJpbmdJbmZvKCZmbXRTdWIpOworCisJCQkJ CS8qCisJCQkJCSAqIFN5bnRheDogQUxURVIgQ09MVU1OICV7Y29sdW1ufUkgRFJPUCBFWFBSRVNT SU9OCisJCQkJCSAqICV7aWZfZXhpc3RzfXMKKwkJCQkJICovCisJCQkJCXB1c2hKc29uYlZhbHVl KCZzdGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CisJCQkJCWFwcGVuZFN0cmluZ0luZm9T dHJpbmcoJmZtdFN1YiwgIkFMVEVSIENPTFVNTiIKKwkJCQkJCQkJCQkgICAiICV7Y29sdW1ufUkg RFJPUCBFWFBSRVNTSU9OIik7CisJCQkJCW5ld19qc29uYl9WQShzdGF0ZSwgMiwKKwkJCQkJCQkJ ICJ0eXBlIiwgamJ2U3RyaW5nLCAiZHJvcCBleHByZXNzaW9uIiwKKwkJCQkJCQkJICJjb2x1bW4i LCBqYnZTdHJpbmcsIHN1YmNtZC0+bmFtZSk7CisKKwkJCQkJaWYgKHN1YmNtZC0+bWlzc2luZ19v aykKKwkJCQkJeworCQkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmZm10U3ViLCAiICV7aWZf ZXhpc3RzfXMiKTsKKwkJCQkJCW5ld19qc29uYl9WQShzdGF0ZSwgMSwKKwkJCQkJCQkJCSAiaWZf ZXhpc3RzIiwgamJ2U3RyaW5nLCAiSUYgRVhJU1RTIik7CisJCQkJCX0KKworCQkJCQkvKiBXZSBo YXZlIGZ1bGwgZm10IGJ5IG5vdywgc28gYWRkIGpzb25iIGVsZW1lbnQgZm9yIHRoYXQgKi8KKwkJ CQkJbmV3X2pzb25iX1ZBKHN0YXRlLCAxLCAiZm10IiwgamJ2U3RyaW5nLCBmbXRTdWIuZGF0YSk7 CisJCQkJCXBmcmVlKGZtdFN1Yi5kYXRhKTsKKworCQkJCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUs IFdKQl9FTkRfT0JKRUNULCBOVUxMKTsKKwkJCQkJYnJlYWs7CisJCQkJfQorCisJCQljYXNlIEFU X1NldFN0YXRpc3RpY3M6CisJCQkJQXNzZXJ0KElzQShzdWJjbWQtPmRlZiwgSW50ZWdlcikpOwor CisJCQkJLyoKKwkJCQkgKiBTeW50YXg6IEFMVEVSIENPTFVNTiAle2NvbHVtbn1JIFNFVCBTVEFU SVNUSUNTCisJCQkJICogJXtzdGF0aXN0aWNzfW4KKwkJCQkgKi8KKwkJCQlwdXNoSnNvbmJWYWx1 ZSgmc3RhdGUsIFdKQl9CRUdJTl9PQkpFQ1QsIE5VTEwpOworCQkJCW5ld19qc29uYl9WQShzdGF0 ZSwgNCwKKwkJCQkJCQkgImZtdCIsIGpidlN0cmluZywKKwkJCQkJCQkgIkFMVEVSIENPTFVNTiAl e2NvbHVtbn1JIFNFVCBTVEFUSVNUSUNTIgorCQkJCQkJCSAiICV7c3RhdGlzdGljc31uIiwKKwkJ CQkJCQkgInR5cGUiLCBqYnZTdHJpbmcsICJzZXQgc3RhdGlzdGljcyIsCisJCQkJCQkJICJjb2x1 bW4iLCBqYnZTdHJpbmcsIHN1YmNtZC0+bmFtZSwKKwkJCQkJCQkgInN0YXRpc3RpY3MiLCBqYnZO dW1lcmljLAorCQkJCQkJCSBpbnRWYWwoKEludGVnZXIgKikgc3ViY21kLT5kZWYpKTsKKwkJCQlw dXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9FTkRfT0JKRUNULCBOVUxMKTsKKwkJCQlicmVhazsK KworCQkJY2FzZSBBVF9TZXRPcHRpb25zOgorCQkJY2FzZSBBVF9SZXNldE9wdGlvbnM6CisKKwkJ CQkvKgorCQkJCSAqIFN5bnRheDogQUxURVIgQ09MVU1OICV7Y29sdW1ufUkgUkVTRVR8U0VUICgl e29wdGlvbnM6LCB9cykKKwkJCQkgKi8KKwkJCQlkZXBhcnNlX0NvbHVtblNldE9wdGlvbnMoc3Rh dGUsIHN1YmNtZCk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfU2V0U3RvcmFnZToKKwkJCQlB c3NlcnQoSXNBKHN1YmNtZC0+ZGVmLCBTdHJpbmcpKTsKKworCQkJCS8qCisJCQkJICogU3ludGF4 OiBBTFRFUiBDT0xVTU4gJXtjb2x1bW59SSBTRVQgU1RPUkFHRSAle3N0b3JhZ2V9cworCQkJCSAq LworCQkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CisJ CQkJbmV3X2pzb25iX1ZBKHN0YXRlLCA0LAorCQkJCQkJCSAiZm10IiwgamJ2U3RyaW5nLAorCQkJ CQkJCSAiQUxURVIgQ09MVU1OICV7Y29sdW1ufUkgU0VUIFNUT1JBR0UiCisJCQkJCQkJICIgJXtz dG9yYWdlfXMiLAorCQkJCQkJCSAidHlwZSIsIGpidlN0cmluZywgInNldCBzdG9yYWdlIiwKKwkJ CQkJCQkgImNvbHVtbiIsIGpidlN0cmluZywgc3ViY21kLT5uYW1lLAorCQkJCQkJCSAic3RvcmFn ZSIsIGpidlN0cmluZywKKwkJCQkJCQkgc3RyVmFsKChTdHJpbmcgKikgc3ViY21kLT5kZWYpKTsK KwkJCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9FTkRfT0JKRUNULCBOVUxMKTsKKwkJCQli cmVhazsKKworCQkJY2FzZSBBVF9TZXRDb21wcmVzc2lvbjoKKwkJCQlBc3NlcnQoSXNBKHN1YmNt ZC0+ZGVmLCBTdHJpbmcpKTsKKworCQkJCS8qCisJCQkJICogU3ludGF4OiBBTFRFUiBDT0xVTU4g JXtjb2x1bW59SSBTRVQgQ09NUFJFU1NJT04KKwkJCQkgKiAle2NvbXByZXNzaW9uX21ldGhvZH1z CisJCQkJICovCisJCQkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfQkVHSU5fT0JKRUNULCBO VUxMKTsKKwkJCQluZXdfanNvbmJfVkEoc3RhdGUsIDQsCisJCQkJCQkJICJmbXQiLCBqYnZTdHJp bmcsCisJCQkJCQkJICJBTFRFUiBDT0xVTU4gJXtjb2x1bW59SSBTRVQgQ09NUFJFU1NJT04iCisJ CQkJCQkJICIgJXtjb21wcmVzc2lvbl9tZXRob2R9cyIsCisJCQkJCQkJICJ0eXBlIiwgamJ2U3Ry aW5nLCAic2V0IGNvbXByZXNzaW9uIiwKKwkJCQkJCQkgImNvbHVtbiIsIGpidlN0cmluZywgc3Vi Y21kLT5uYW1lLAorCQkJCQkJCSAiY29tcHJlc3Npb25fbWV0aG9kIiwgamJ2U3RyaW5nLAorCQkJ CQkJCSBzdHJWYWwoKFN0cmluZyAqKSBzdWJjbWQtPmRlZikpOworCQkJCXB1c2hKc29uYlZhbHVl KCZzdGF0ZSwgV0pCX0VORF9PQkpFQ1QsIE5VTEwpOworCQkJCWJyZWFrOworCisJCQljYXNlIEFU X0Ryb3BDb2x1bW46CisJCQkJeworCQkJCQlTdHJpbmdJbmZvRGF0YSBmbXRTdWI7CisKKwkJCQkJ aW5pdFN0cmluZ0luZm8oJmZtdFN1Yik7CisKKwkJCQkJLyoKKwkJCQkJICogU3ludGF4OiBEUk9Q IENPTFVNTiAle2lmX2V4aXN0c31zICV7Y29sdW1ufUkKKwkJCQkJICogJXtjYXNjYWRlfXMKKwkJ CQkJICovCisJCQkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVM TCk7CisKKwkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmZm10U3ViLCAiRFJPUCBDT0xVTU4i KTsKKwkJCQkJbmV3X2pzb25iX1ZBKHN0YXRlLCAxLCAidHlwZSIsIGpidlN0cmluZywgImRyb3Ag Y29sdW1uIik7CisKKwkJCQkJaWYgKHN1YmNtZC0+bWlzc2luZ19vaykKKwkJCQkJeworCQkJCQkJ YXBwZW5kU3RyaW5nSW5mb1N0cmluZygmZm10U3ViLCAiICV7aWZfZXhpc3RzfXMiKTsKKwkJCQkJ CW5ld19qc29uYl9WQShzdGF0ZSwgMSwKKwkJCQkJCQkJCSAiaWZfZXhpc3RzIiwgamJ2U3RyaW5n LCAiSUYgRVhJU1RTIik7CisJCQkJCX0KKworCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZm bXRTdWIsICIgJXtjb2x1bW59SSIpOworCQkJCQluZXdfanNvbmJfVkEoc3RhdGUsIDEsICJjb2x1 bW4iLCBqYnZTdHJpbmcsIHN1YmNtZC0+bmFtZSk7CisKKwkJCQkJaWYgKHN1YmNtZC0+YmVoYXZp b3IgPT0gRFJPUF9DQVNDQURFKQorCQkJCQl7CisJCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5n KCZmbXRTdWIsICIgJXtjYXNjYWRlfXMiKTsKKwkJCQkJCW5ld19qc29uYl9WQShzdGF0ZSwgMSwK KwkJCQkJCQkJCSAiY2FzY2FkZSIsIGpidlN0cmluZywgIkNBU0NBREUiKTsKKwkJCQkJfQorCisJ CQkJCS8qIFdlIGhhdmUgZnVsbCBmbXQgYnkgbm93LCBzbyBhZGQganNvbmIgZWxlbWVudCBmb3Ig dGhhdCAqLworCQkJCQluZXdfanNvbmJfVkEoc3RhdGUsIDEsICJmbXQiLCBqYnZTdHJpbmcsIGZt dFN1Yi5kYXRhKTsKKwkJCQkJcGZyZWUoZm10U3ViLmRhdGEpOworCisJCQkJCXB1c2hKc29uYlZh bHVlKCZzdGF0ZSwgV0pCX0VORF9PQkpFQ1QsIE5VTEwpOworCisJCQkJCWJyZWFrOworCQkJCX0K KwkJCWNhc2UgQVRfQWRkSW5kZXg6CisJCQkJeworCQkJCQlPaWQJCQlpZHhPaWQgPSBzdWItPmFk ZHJlc3Mub2JqZWN0SWQ7CisJCQkJCUluZGV4U3RtdCAgKmlzdG10IFBHX1VTRURfRk9SX0FTU0VS VFNfT05MWSA9CisJCQkJCQkoSW5kZXhTdG10ICopIHN1YmNtZC0+ZGVmOworCQkJCQlSZWxhdGlv bglpZHg7CisJCQkJCWNvbnN0IGNoYXIgKmlkeG5hbWU7CisJCQkJCU9pZAkJCWNvbnN0ck9pZDsK KworCQkJCQlBc3NlcnQoSXNBKHN1YmNtZC0+ZGVmLCBJbmRleFN0bXQpKTsKKwkJCQkJQXNzZXJ0 KGlzdG10LT5pc2NvbnN0cmFpbnQpOworCisJCQkJCWlkeCA9IHJlbGF0aW9uX29wZW4oaWR4T2lk LCBBY2Nlc3NTaGFyZUxvY2spOworCQkJCQlpZHhuYW1lID0gUmVsYXRpb25HZXRSZWxhdGlvbk5h bWUoaWR4KTsKKworCQkJCQljb25zdHJPaWQgPSBnZXRfcmVsYXRpb25fY29uc3RyYWludF9vaWQo CisJCQkJCQkJCQkJCQkJCQljbWQtPmQuYWx0ZXJUYWJsZS5vYmplY3RJZCwKKwkJCQkJCQkJCQkJ CQkJCWlkeG5hbWUsIGZhbHNlKTsKKworCQkJCQkvKgorCQkJCQkgKiBTeW50YXg6IEFERCBDT05T VFJBSU5UICV7bmFtZX1JICV7ZGVmaW5pdGlvbn1zCisJCQkJCSAqLworCQkJCQlwdXNoSnNvbmJW YWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9PQkpFQ1QsIE5VTEwpOworCisJCQkJCW5ld19qc29uYl9W QShzdGF0ZSwgNCwKKwkJCQkJCQkJICJmbXQiLCBqYnZTdHJpbmcsCisJCQkJCQkJCSAiQUREIENP TlNUUkFJTlQgJXtuYW1lfUkgJXtkZWZpbml0aW9ufXMiLAorCQkJCQkJCQkgInR5cGUiLCBqYnZT dHJpbmcsICJhZGQgY29uc3RyYWludCIsCisJCQkJCQkJCSAibmFtZSIsIGpidlN0cmluZywgaWR4 bmFtZSwKKwkJCQkJCQkJICJkZWZpbml0aW9uIiwgamJ2U3RyaW5nLAorCQkJCQkJCQkgcGdfZ2V0 X2NvbnN0cmFpbnRkZWZfc3RyaW5nKGNvbnN0ck9pZCkpOworCisJCQkJCXB1c2hKc29uYlZhbHVl KCZzdGF0ZSwgV0pCX0VORF9PQkpFQ1QsIE5VTEwpOworCisJCQkJCXJlbGF0aW9uX2Nsb3NlKGlk eCwgQWNjZXNzU2hhcmVMb2NrKTsKKwkJCQl9CisJCQkJYnJlYWs7CisJCQljYXNlIEFUX0FkZENv bnN0cmFpbnQ6CisJCQkJeworCQkJCQkvKiBYWFggbmVlZCB0byBzZXQgdGhlICJyZWN1cnNlIiBi aXQgc29tZXdoZXJlPyAqLworCQkJCQlPaWQJCQljb25zdHJPaWQgPSBzdWItPmFkZHJlc3Mub2Jq ZWN0SWQ7CisKKwkJCQkJLyogU2tpcCBhZGRpbmcgY29uc3RyYWludCBmb3IgaW5oZXJpdHMgdGFi bGUgc3ViIGNvbW1hbmQgKi8KKwkJCQkJaWYgKCFPaWRJc1ZhbGlkKGNvbnN0ck9pZCkpCisJCQkJ CQljb250aW51ZTsKKworCQkJCQlBc3NlcnQoSXNBKHN1YmNtZC0+ZGVmLCBDb25zdHJhaW50KSk7 CisKKwkJCQkJLyoKKwkJCQkJICogU3ludGF4OiBBREQgQ09OU1RSQUlOVCAle25hbWV9SSAle2Rl ZmluaXRpb259cworCQkJCQkgKi8KKwkJCQkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfQkVH SU5fT0JKRUNULCBOVUxMKTsKKwkJCQkJbmV3X2pzb25iX1ZBKHN0YXRlLCA0LAorCQkJCQkJCQkg ImZtdCIsIGpidlN0cmluZywKKwkJCQkJCQkJICJBREQgQ09OU1RSQUlOVCAle25hbWV9SSAle2Rl ZmluaXRpb259cyIsCisJCQkJCQkJCSAidHlwZSIsIGpidlN0cmluZywgImFkZCBjb25zdHJhaW50 IiwKKwkJCQkJCQkJICJuYW1lIiwgamJ2U3RyaW5nLCBnZXRfY29uc3RyYWludF9uYW1lKGNvbnN0 ck9pZCksCisJCQkJCQkJCSAiZGVmaW5pdGlvbiIsIGpidlN0cmluZywKKwkJCQkJCQkJIHBnX2dl dF9jb25zdHJhaW50ZGVmX3N0cmluZyhjb25zdHJPaWQpKTsKKwkJCQkJcHVzaEpzb25iVmFsdWUo JnN0YXRlLCBXSkJfRU5EX09CSkVDVCwgTlVMTCk7CisKKwkJCQkJYnJlYWs7CisJCQkJfQorCisJ CQljYXNlIEFUX0FsdGVyQ29uc3RyYWludDoKKwkJCQl7CisJCQkJCU9pZAkJCWNvbk9pZCA9IHN1 Yi0+YWRkcmVzcy5vYmplY3RJZDsKKwkJCQkJQ29uc3RyYWludCAqYyA9IChDb25zdHJhaW50ICop IHN1YmNtZC0+ZGVmOworCisJCQkJCS8qIElmIG5vIGNvbnN0cmFpbnQgd2FzIGFsdGVyZWQsIHNp bGVudGx5IHNraXAgaXQgKi8KKwkJCQkJaWYgKCFPaWRJc1ZhbGlkKGNvbk9pZCkpCisJCQkJCQli cmVhazsKKworCQkJCQlBc3NlcnQoSXNBKGMsIENvbnN0cmFpbnQpKTsKKworCQkJCQkvKgorCQkJ CQkgKiBTeW50YXg6IEFMVEVSIENPTlNUUkFJTlQgJXtuYW1lfUkgJXtkZWZlcnJhYmxlfXMKKwkJ CQkJICogJXtpbml0X2RlZmVycmVkfXMKKwkJCQkJICovCisJCQkJCXB1c2hKc29uYlZhbHVlKCZz dGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CisJCQkJCW5ld19qc29uYl9WQShzdGF0ZSwg NSwKKwkJCQkJCQkJICJmbXQiLCBqYnZTdHJpbmcsCisJCQkJCQkJCSAiQUxURVIgQ09OU1RSQUlO VCAle25hbWV9SSAle2RlZmVycmFibGV9cyIKKwkJCQkJCQkJICIgJXtpbml0X2RlZmVycmVkfXMi LAorCQkJCQkJCQkgInR5cGUiLCBqYnZTdHJpbmcsICJhbHRlciBjb25zdHJhaW50IiwKKwkJCQkJ CQkJICJuYW1lIiwgamJ2U3RyaW5nLCBnZXRfY29uc3RyYWludF9uYW1lKGNvbk9pZCksCisJCQkJ CQkJCSAiZGVmZXJyYWJsZSIsIGpidlN0cmluZywKKwkJCQkJCQkJIGMtPmRlZmVycmFibGUgPyAi REVGRVJSQUJMRSIgOiAiTk9UIERFRkVSUkFCTEUiLAorCQkJCQkJCQkgImluaXRfZGVmZXJyZWQi LCBqYnZTdHJpbmcsCisJCQkJCQkJCSBjLT5pbml0ZGVmZXJyZWQgPyAiSU5JVElBTExZIERFRkVS UkVEIiA6CisJCQkJCQkJCSAiSU5JVElBTExZIElNTUVESUFURSIpOworCQkJCQlwdXNoSnNvbmJW YWx1ZSgmc3RhdGUsIFdKQl9FTkRfT0JKRUNULCBOVUxMKTsKKwkJCQl9CisJCQkJYnJlYWs7CisK KwkJCWNhc2UgQVRfVmFsaWRhdGVDb25zdHJhaW50OgorCisJCQkJLyoKKwkJCQkgKiBTeW50YXg6 IFZBTElEQVRFIENPTlNUUkFJTlQgJXtjb25zdHJhaW50fUkKKwkJCQkgKi8KKwkJCQlwdXNoSnNv bmJWYWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9PQkpFQ1QsIE5VTEwpOworCQkJCW5ld19qc29uYl9W QShzdGF0ZSwgMywKKwkJCQkJCQkgImZtdCIsIGpidlN0cmluZywKKwkJCQkJCQkgIlZBTElEQVRF IENPTlNUUkFJTlQgJXtjb25zdHJhaW50fUkiLAorCQkJCQkJCSAidHlwZSIsIGpidlN0cmluZywg InZhbGlkYXRlIGNvbnN0cmFpbnQiLAorCQkJCQkJCSAiY29uc3RyYWludCIsIGpidlN0cmluZywg c3ViY21kLT5uYW1lKTsKKwkJCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9FTkRfT0JKRUNU LCBOVUxMKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBBVF9Ecm9wQ29uc3RyYWludDoKKwkJCQl7 CisJCQkJCVN0cmluZ0luZm9EYXRhIGZtdFN1YjsKKworCQkJCQlpbml0U3RyaW5nSW5mbygmZm10 U3ViKTsKKworCQkJCQkvKgorCQkJCQkgKiBTeW50YXg6IERST1AgQ09OU1RSQUlOVCAle2lmX2V4 aXN0c31zICV7Y29uc3RyYWludH1JCisJCQkJCSAqICV7Y2FzY2FkZX1zCisJCQkJCSAqLworCQkJ CQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9PQkpFQ1QsIE5VTEwpOworCQkJCQlh cHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZmbXRTdWIsICJEUk9QIENPTlNUUkFJTlQiKTsKKwkJCQkJ bmV3X2pzb25iX1ZBKHN0YXRlLCAxLCAidHlwZSIsIGpidlN0cmluZywgImRyb3AgY29uc3RyYWlu dCIpOworCisJCQkJCWlmIChzdWJjbWQtPm1pc3Npbmdfb2spCisJCQkJCXsKKwkJCQkJCWFwcGVu ZFN0cmluZ0luZm9TdHJpbmcoJmZtdFN1YiwgIiAle2lmX2V4aXN0c31zIik7CisJCQkJCQluZXdf anNvbmJfVkEoc3RhdGUsIDEsCisJCQkJCQkJCQkgImlmX2V4aXN0cyIsIGpidlN0cmluZywgIklG IEVYSVNUUyIpOworCQkJCQl9CisKKwkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmZm10U3Vi LCAiICV7Y29uc3RyYWludH1JIik7CisJCQkJCW5ld19qc29uYl9WQShzdGF0ZSwgMSwKKwkJCQkJ CQkJICJjb25zdHJhaW50IiwgamJ2U3RyaW5nLCBzdWJjbWQtPm5hbWUpOworCisJCQkJCWlmIChz dWJjbWQtPmJlaGF2aW9yID09IERST1BfQ0FTQ0FERSkKKwkJCQkJeworCQkJCQkJYXBwZW5kU3Ry aW5nSW5mb1N0cmluZygmZm10U3ViLCAiICV7Y2FzY2FkZX1zIik7CisJCQkJCQluZXdfanNvbmJf VkEoc3RhdGUsIDEsICJjYXNjYWRlIiwgamJ2U3RyaW5nLCAiQ0FTQ0FERSIpOworCQkJCQl9CisK KwkJCQkJLyogV2UgaGF2ZSBmdWxsIGZtdCBieSBub3csIHNvIGFkZCBqc29uYiBlbGVtZW50IGZv ciB0aGF0ICovCisJCQkJCW5ld19qc29uYl9WQShzdGF0ZSwgMSwgImZtdCIsIGpidlN0cmluZywg Zm10U3ViLmRhdGEpOworCQkJCQlwZnJlZShmbXRTdWIuZGF0YSk7CisKKwkJCQkJcHVzaEpzb25i VmFsdWUoJnN0YXRlLCBXSkJfRU5EX09CSkVDVCwgTlVMTCk7CisJCQkJfQorCQkJCWJyZWFrOwor CisJCQljYXNlIEFUX0FsdGVyQ29sdW1uVHlwZToKKwkJCQl7CisJCQkJCVR1cGxlRGVzYwl0dXBk ZXNjID0gUmVsYXRpb25HZXREZXNjcihyZWwpOworCQkJCQlGb3JtX3BnX2F0dHJpYnV0ZSBhdHQ7 CisJCQkJCUNvbHVtbkRlZiAgKmRlZjsKKwkJCQkJU3RyaW5nSW5mb0RhdGEgZm10U3ViOworCisJ CQkJCWluaXRTdHJpbmdJbmZvKCZmbXRTdWIpOworCisJCQkJCWF0dCA9ICYodHVwZGVzYy0+YXR0 cnNbc3ViLT5hZGRyZXNzLm9iamVjdFN1YklkIC0gMV0pOworCQkJCQlkZWYgPSAoQ29sdW1uRGVm ICopIHN1YmNtZC0+ZGVmOworCQkJCQlBc3NlcnQoSXNBKGRlZiwgQ29sdW1uRGVmKSk7CisKKwkJ CQkJLyoKKwkJCQkJICogU3ludGF4OiBBTFRFUiBDT0xVTU4gJXtjb2x1bW59SSBTRVQgREFUQSBU WVBFCisJCQkJCSAqICV7ZGF0YXR5cGV9VCAle2NvbGxhdGlvbn1zICV7dXNpbmd9cyB3aGVyZSB1 c2luZzogVVNJTkcKKwkJCQkJICogJXtleHByZXNzaW9ufXMKKwkJCQkJICovCisJCQkJCXB1c2hK c29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CisJCQkJCWFwcGVuZFN0 cmluZ0luZm9TdHJpbmcoJmZtdFN1YiwgIkFMVEVSIENPTFVNTiAle2NvbHVtbn1JIgorCQkJCQkJ CQkJCSAgICIgU0VUIERBVEEgVFlQRSAle2RhdGF0eXBlfVQiKTsKKwkJCQkJbmV3X2pzb25iX1ZB KHN0YXRlLCAyLAorCQkJCQkJCQkgInR5cGUiLCBqYnZTdHJpbmcsICJhbHRlciBjb2x1bW4gdHlw ZSIsCisJCQkJCQkJCSAiY29sdW1uIiwgamJ2U3RyaW5nLCBzdWJjbWQtPm5hbWUpOworCisJCQkJ CW5ld19qc29uYl9mb3JfdHlwZShzdGF0ZSwgImRhdGF0eXBlIiwKKwkJCQkJCQkJCSAgIGF0dC0+ YXR0dHlwaWQsIGF0dC0+YXR0dHlwbW9kKTsKKworCQkJCQkvKiBBZGQgYSBDT0xMQVRFIGNsYXVz ZSwgaWYgbmVlZGVkICovCisJCQkJCWlmIChPaWRJc1ZhbGlkKGF0dC0+YXR0Y29sbGF0aW9uKSkK KwkJCQkJeworCQkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmZm10U3ViLCAiICV7Y29sbGF0 aW9ufXMiKTsKKwkJCQkJCWluc2VydF9jb2xsYXRlX29iamVjdChzdGF0ZSwgImNvbGxhdGlvbiIs CisJCQkJCQkJCQkJCSAgIkNPTExBVEUgJXtuYW1lfUQiLAorCQkJCQkJCQkJCQkgIENvbGxhdGlv blJlbGF0aW9uSWQsCisJCQkJCQkJCQkJCSAgYXR0LT5hdHRjb2xsYXRpb24sICJuYW1lIik7CisJ CQkJCX0KKworCQkJCQkvKgorCQkJCQkgKiBJZiB0aGVyZSdzIGEgVVNJTkcgY2xhdXNlLCB0cmFu c2Zvcm1BbHRlclRhYmxlU3RtdCByYW4KKwkJCQkJICogaXQgdGhyb3VnaCB0cmFuc2Zvcm1FeHBy IGFuZCBzdG9yZWQgdGhlIHJlc3VsdGluZyBub2RlCisJCQkJCSAqIGluIGNvb2tlZF9kZWZhdWx0 LCB3aGljaCB3ZSBjYW4gdXNlIGhlcmUuCisJCQkJCSAqLworCQkJCQlpZiAoZGVmLT5yYXdfZGVm YXVsdCkKKwkJCQkJeworCQkJCQkJRGF0dW0JCWRlcGFyc2VkOworCQkJCQkJY2hhcgkgICAqZGVm ZXhwcjsKKwkJCQkJCUxpc3QJICAgKmV4cHJzID0gTklMOworCisJCQkJCQlleHBycyA9IGxhcHBl bmQoZXhwcnMsIGRlZi0+Y29va2VkX2RlZmF1bHQpOworCQkJCQkJZGVmZXhwciA9IG5vZGVUb1N0 cmluZyhkZWYtPmNvb2tlZF9kZWZhdWx0KTsKKwkJCQkJCWRlcGFyc2VkID0gRGlyZWN0RnVuY3Rp b25DYWxsMihwZ19nZXRfZXhwciwKKwkJCQkJCQkJCQkJCQkgICBDU3RyaW5nR2V0VGV4dERhdHVt KGRlZmV4cHIpLAorCQkJCQkJCQkJCQkJCSAgIFJlbGF0aW9uR2V0UmVsaWQocmVsKSk7CisJCQkJ CQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZmbXRTdWIsICIgJXt1c2luZ31zIik7CisJCQkJCQlp bnNlcnRfanNvbmJfa2V5KHN0YXRlLCAidXNpbmciKTsKKwkJCQkJCXB1c2hKc29uYlZhbHVlKCZz dGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CisJCQkJCQluZXdfanNvbmJfVkEoc3RhdGUs IDIsCisJCQkJCQkJCQkgImZtdCIsIGpidlN0cmluZywgIlVTSU5HICV7ZXhwcmVzc2lvbn1zIiwK KwkJCQkJCQkJCSAiZXhwcmVzc2lvbiIsIGpidlN0cmluZywKKwkJCQkJCQkJCSBUZXh0RGF0dW1H ZXRDU3RyaW5nKGRlcGFyc2VkKSk7CisJCQkJCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9F TkRfT0JKRUNULCBOVUxMKTsKKwkJCQkJfQorCisJCQkJCS8qIFdlIGhhdmUgZnVsbCBmbXQgYnkg bm93LCBzbyBhZGQganNvbmIgZWxlbWVudCBmb3IgdGhhdCAqLworCQkJCQluZXdfanNvbmJfVkEo c3RhdGUsIDEsICJmbXQiLCBqYnZTdHJpbmcsIGZtdFN1Yi5kYXRhKTsKKworCQkJCQlwZnJlZShm bXRTdWIuZGF0YSk7CisJCQkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0VORF9PQkpFQ1Qs IE5VTEwpOworCQkJCX0KKwkJCQlicmVhazsKKworCQkJY2FzZSBBVF9DaGFuZ2VPd25lcjoKKwor CQkJCS8qCisJCQkJICogU3ludGF4OiBPV05FUiBUTyAle293bmVyfUkKKwkJCQkgKi8KKwkJCQlw dXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9PQkpFQ1QsIE5VTEwpOworCQkJCW5ld19q c29uYl9WQShzdGF0ZSwgMywKKwkJCQkJCQkgImZtdCIsIGpidlN0cmluZywgIk9XTkVSIFRPICV7 b3duZXJ9SSIsCisJCQkJCQkJICJ0eXBlIiwgamJ2U3RyaW5nLCAiY2hhbmdlIG93bmVyIiwKKwkJ CQkJCQkgIm93bmVyIiwgamJ2U3RyaW5nLAorCQkJCQkJCSBnZXRfcm9sZXNwZWNfbmFtZShzdWJj bWQtPm5ld293bmVyKSk7CisJCQkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfRU5EX09CSkVD VCwgTlVMTCk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfQ2x1c3Rlck9uOgorCisJCQkJLyoK KwkJCQkgKiBTeW50YXg6IENMVVNURVIgT04gJXtpbmRleH1JCisJCQkJICovCisJCQkJcHVzaEpz b25iVmFsdWUoJnN0YXRlLCBXSkJfQkVHSU5fT0JKRUNULCBOVUxMKTsKKwkJCQluZXdfanNvbmJf VkEoc3RhdGUsIDMsCisJCQkJCQkJICJmbXQiLCBqYnZTdHJpbmcsICJDTFVTVEVSIE9OICV7aW5k ZXh9SSIsCisJCQkJCQkJICJ0eXBlIiwgamJ2U3RyaW5nLCAiY2x1c3RlciBvbiIsCisJCQkJCQkJ ICJpbmRleCIsIGpidlN0cmluZywgc3ViY21kLT5uYW1lKTsKKwkJCQlwdXNoSnNvbmJWYWx1ZSgm c3RhdGUsIFdKQl9FTkRfT0JKRUNULCBOVUxMKTsKKwkJCQlicmVhazsKKworCisJCQljYXNlIEFU X0Ryb3BDbHVzdGVyOgorCisJCQkJLyoKKwkJCQkgKiBTeW50YXg6IFNFVCBXSVRIT1VUIENMVVNU RVIKKwkJCQkgKi8KKwkJCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9PQkpFQ1Qs IE5VTEwpOworCQkJCW5ld19qc29uYl9WQShzdGF0ZSwgMiwKKwkJCQkJCQkgImZtdCIsIGpidlN0 cmluZywgIlNFVCBXSVRIT1VUIENMVVNURVIiLAorCQkJCQkJCSAidHlwZSIsIGpidlN0cmluZywg InNldCB3aXRob3V0IGNsdXN0ZXIiKTsKKwkJCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9F TkRfT0JKRUNULCBOVUxMKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBBVF9TZXRMb2dnZWQ6CisK KwkJCQkvKgorCQkJCSAqIFN5bnRheDogU0VUIExPR0dFRAorCQkJCSAqLworCQkJCXB1c2hKc29u YlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CisJCQkJbmV3X2pzb25iX1ZB KHN0YXRlLCAyLAorCQkJCQkJCSAiZm10IiwgamJ2U3RyaW5nLCAiU0VUIExPR0dFRCIsCisJCQkJ CQkJICJ0eXBlIiwgamJ2U3RyaW5nLCAic2V0IGxvZ2dlZCIpOworCQkJCXB1c2hKc29uYlZhbHVl KCZzdGF0ZSwgV0pCX0VORF9PQkpFQ1QsIE5VTEwpOworCQkJCWJyZWFrOworCisJCQljYXNlIEFU X1NldFVuTG9nZ2VkOgorCisJCQkJLyoKKwkJCQkgKiBTeW50YXg6IFNFVCBVTkxPR0dFRAorCQkJ CSAqLworCQkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7 CisJCQkJbmV3X2pzb25iX1ZBKHN0YXRlLCAyLAorCQkJCQkJCSAiZm10IiwgamJ2U3RyaW5nLCAi U0VUIFVOTE9HR0VEIiwKKwkJCQkJCQkgInR5cGUiLCBqYnZTdHJpbmcsICJzZXQgdW5sb2dnZWQi KTsKKwkJCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9FTkRfT0JKRUNULCBOVUxMKTsKKwkJ CQlicmVhazsKKworCQkJY2FzZSBBVF9Ecm9wT2lkczoKKworCQkJCS8qCisJCQkJICogU3ludGF4 OiBTRVQgV0lUSE9VVCBPSURTCisJCQkJICovCisJCQkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBX SkJfQkVHSU5fT0JKRUNULCBOVUxMKTsKKwkJCQluZXdfanNvbmJfVkEoc3RhdGUsIDIsCisJCQkJ CQkJICJmbXQiLCBqYnZTdHJpbmcsICJTRVQgV0lUSE9VVCBPSURTIiwKKwkJCQkJCQkgInR5cGUi LCBqYnZTdHJpbmcsICJzZXQgd2l0aG91dCBvaWRzIik7CisJCQkJcHVzaEpzb25iVmFsdWUoJnN0 YXRlLCBXSkJfRU5EX09CSkVDVCwgTlVMTCk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfU2V0 QWNjZXNzTWV0aG9kOgorCisJCQkJLyoKKwkJCQkgKiBTeW50YXg6IFNFVCBBQ0NFU1MgTUVUSE9E ICV7YWNjZXNzX21ldGhvZH1JCisJCQkJICovCisJCQkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBX SkJfQkVHSU5fT0JKRUNULCBOVUxMKTsKKwkJCQluZXdfanNvbmJfVkEoc3RhdGUsIDMsCisJCQkJ CQkJICJmbXQiLCBqYnZTdHJpbmcsCisJCQkJCQkJICJTRVQgQUNDRVNTIE1FVEhPRCAle2FjY2Vz c19tZXRob2R9SSIsCisJCQkJCQkJICJ0eXBlIiwgamJ2U3RyaW5nLCAic2V0IGFjY2VzcyBtZXRo b2QiLAorCQkJCQkJCSAiYWNjZXNzX21ldGhvZCIsIGpidlN0cmluZywgc3ViY21kLT5uYW1lKTsK KwkJCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9FTkRfT0JKRUNULCBOVUxMKTsKKwkJCQli cmVhazsKKworCQkJY2FzZSBBVF9TZXRUYWJsZVNwYWNlOgorCisJCQkJLyoKKwkJCQkgKiBTeW50 YXg6IFNFVCBUQUJMRVNQQUNFICV7dGFibGVzcGFjZX1JCisJCQkJICovCisJCQkJcHVzaEpzb25i VmFsdWUoJnN0YXRlLCBXSkJfQkVHSU5fT0JKRUNULCBOVUxMKTsKKwkJCQluZXdfanNvbmJfVkEo c3RhdGUsIDMsCisJCQkJCQkJICJmbXQiLCBqYnZTdHJpbmcsICJTRVQgVEFCTEVTUEFDRSAle3Rh Ymxlc3BhY2V9SSIsCisJCQkJCQkJICJ0eXBlIiwgamJ2U3RyaW5nLCAic2V0IHRhYmxlc3BhY2Ui LAorCQkJCQkJCSAidGFibGVzcGFjZSIsIGpidlN0cmluZywgc3ViY21kLT5uYW1lKTsKKwkJCQlw dXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9FTkRfT0JKRUNULCBOVUxMKTsKKwkJCQlicmVhazsK KworCQkJY2FzZSBBVF9TZXRSZWxPcHRpb25zOgorCQkJY2FzZSBBVF9SZXNldFJlbE9wdGlvbnM6 CisKKwkJCQkvKgorCQkJCSAqIFN5bnRheDogU0VUfFJFU0VUICgle29wdGlvbnM6LCB9cykKKwkJ CQkgKi8KKwkJCQlkZXBhcnNlX1JlbFNldE9wdGlvbnMoc3RhdGUsIHN1YmNtZCk7CisJCQkJYnJl YWs7CisKKwkJCWNhc2UgQVRfRW5hYmxlVHJpZzoKKworCQkJCS8qCisJCQkJICogU3ludGF4OiBF TkFCTEUgVFJJR0dFUiAle3RyaWdnZXJ9SQorCQkJCSAqLworCQkJCXB1c2hKc29uYlZhbHVlKCZz dGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CisJCQkJbmV3X2pzb25iX1ZBKHN0YXRlLCAz LAorCQkJCQkJCSAiZm10IiwgamJ2U3RyaW5nLCAiRU5BQkxFIFRSSUdHRVIgJXt0cmlnZ2VyfUki LAorCQkJCQkJCSAidHlwZSIsIGpidlN0cmluZywgImVuYWJsZSB0cmlnZ2VyIiwKKwkJCQkJCQkg InRyaWdnZXIiLCBqYnZTdHJpbmcsIHN1YmNtZC0+bmFtZSk7CisJCQkJcHVzaEpzb25iVmFsdWUo JnN0YXRlLCBXSkJfRU5EX09CSkVDVCwgTlVMTCk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRf RW5hYmxlQWx3YXlzVHJpZzoKKworCQkJCS8qCisJCQkJICogU3ludGF4OiBFTkFCTEUgQUxXQVlT IFRSSUdHRVIgJXt0cmlnZ2VyfUkKKwkJCQkgKi8KKwkJCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUs IFdKQl9CRUdJTl9PQkpFQ1QsIE5VTEwpOworCQkJCW5ld19qc29uYl9WQShzdGF0ZSwgMywKKwkJ CQkJCQkgImZtdCIsIGpidlN0cmluZywKKwkJCQkJCQkgIkVOQUJMRSBBTFdBWVMgVFJJR0dFUiAl e3RyaWdnZXJ9SSIsCisJCQkJCQkJICJ0eXBlIiwgamJ2U3RyaW5nLCAiZW5hYmxlIGFsd2F5cyB0 cmlnZ2VyIiwKKwkJCQkJCQkgInRyaWdnZXIiLCBqYnZTdHJpbmcsIHN1YmNtZC0+bmFtZSk7CisJ CQkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfRU5EX09CSkVDVCwgTlVMTCk7CisJCQkJYnJl YWs7CisKKwkJCWNhc2UgQVRfRW5hYmxlUmVwbGljYVRyaWc6CisKKwkJCQkvKgorCQkJCSAqIFN5 bnRheDogRU5BQkxFIFJFUExJQ0EgVFJJR0dFUiAle3RyaWdnZXJ9SQorCQkJCSAqLworCQkJCXB1 c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CisJCQkJbmV3X2pz b25iX1ZBKHN0YXRlLCAzLAorCQkJCQkJCSAiZm10IiwgamJ2U3RyaW5nLAorCQkJCQkJCSAiRU5B QkxFIFJFUExJQ0EgVFJJR0dFUiAle3RyaWdnZXJ9SSIsCisJCQkJCQkJICJ0eXBlIiwgamJ2U3Ry aW5nLCAiZW5hYmxlIHJlcGxpY2EgdHJpZ2dlciIsCisJCQkJCQkJICJ0cmlnZ2VyIiwgamJ2U3Ry aW5nLCBzdWJjbWQtPm5hbWUpOworCQkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0VORF9P QkpFQ1QsIE5VTEwpOworCQkJCWJyZWFrOworCisJCQljYXNlIEFUX0Rpc2FibGVUcmlnOgorCisJ CQkJLyoKKwkJCQkgKiBTeW50YXg6IERJU0FCTEUgVFJJR0dFUiAle3RyaWdnZXJ9SQorCQkJCSAq LworCQkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CisJ CQkJbmV3X2pzb25iX1ZBKHN0YXRlLCAzLAorCQkJCQkJCSAiZm10IiwgamJ2U3RyaW5nLCAiRElT QUJMRSBUUklHR0VSICV7dHJpZ2dlcn1JIiwKKwkJCQkJCQkgInR5cGUiLCBqYnZTdHJpbmcsICJk aXNhYmxlIHRyaWdnZXIiLAorCQkJCQkJCSAidHJpZ2dlciIsIGpidlN0cmluZywgc3ViY21kLT5u YW1lKTsKKwkJCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9FTkRfT0JKRUNULCBOVUxMKTsK KwkJCQlicmVhazsKKworCQkJY2FzZSBBVF9FbmFibGVUcmlnQWxsOgorCisJCQkJLyoKKwkJCQkg KiBTeW50YXg6IEVOQUJMRSBUUklHR0VSIEFMTAorCQkJCSAqLworCQkJCXB1c2hKc29uYlZhbHVl KCZzdGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CisJCQkJbmV3X2pzb25iX1ZBKHN0YXRl LCAyLAorCQkJCQkJCSAiZm10IiwgamJ2U3RyaW5nLCAiRU5BQkxFIFRSSUdHRVIgQUxMIiwKKwkJ CQkJCQkgInR5cGUiLCBqYnZTdHJpbmcsICJlbmFibGUgdHJpZ2dlciBhbGwiKTsKKwkJCQlwdXNo SnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9FTkRfT0JKRUNULCBOVUxMKTsKKwkJCQlicmVhazsKKwor CQkJY2FzZSBBVF9EaXNhYmxlVHJpZ0FsbDoKKworCQkJCS8qCisJCQkJICogU3ludGF4OiBESVNB QkxFIFRSSUdHRVIgQUxMCisJCQkJICovCisJCQkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJf QkVHSU5fT0JKRUNULCBOVUxMKTsKKwkJCQluZXdfanNvbmJfVkEoc3RhdGUsIDIsCisJCQkJCQkJ ICJmbXQiLCBqYnZTdHJpbmcsICJESVNBQkxFIFRSSUdHRVIgQUxMIiwKKwkJCQkJCQkgInR5cGUi LCBqYnZTdHJpbmcsICJkaXNhYmxlIHRyaWdnZXIgYWxsIik7CisJCQkJcHVzaEpzb25iVmFsdWUo JnN0YXRlLCBXSkJfRU5EX09CSkVDVCwgTlVMTCk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRf RW5hYmxlVHJpZ1VzZXI6CisKKwkJCQkvKgorCQkJCSAqIFN5bnRheDogRU5BQkxFIFRSSUdHRVIg VVNFUgorCQkJCSAqLworCQkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lOX09CSkVD VCwgTlVMTCk7CisJCQkJbmV3X2pzb25iX1ZBKHN0YXRlLCAyLAorCQkJCQkJCSAiZm10IiwgamJ2 U3RyaW5nLCAiRU5BQkxFIFRSSUdHRVIgVVNFUiIsCisJCQkJCQkJICJ0eXBlIiwgamJ2U3RyaW5n LCAiZW5hYmxlIHRyaWdnZXIgdXNlciIpOworCQkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pC X0VORF9PQkpFQ1QsIE5VTEwpOworCQkJCWJyZWFrOworCisJCQljYXNlIEFUX0Rpc2FibGVUcmln VXNlcjoKKworCQkJCS8qCisJCQkJICogU3ludGF4OiBESVNBQkxFIFRSSUdHRVIgVVNFUgorCQkJ CSAqLworCQkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7 CisJCQkJbmV3X2pzb25iX1ZBKHN0YXRlLCAyLAorCQkJCQkJCSAiZm10IiwgamJ2U3RyaW5nLCAi RElTQUJMRSBUUklHR0VSIFVTRVIiLAorCQkJCQkJCSAidHlwZSIsIGpidlN0cmluZywgImRpc2Fi bGUgdHJpZ2dlciB1c2VyIik7CisJCQkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfRU5EX09C SkVDVCwgTlVMTCk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfRW5hYmxlUnVsZToKKworCQkJ CS8qCisJCQkJICogU3ludGF4OiBFTkFCTEUgUlVMRSAle3J1bGV9SQorCQkJCSAqLworCQkJCXB1 c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CisJCQkJbmV3X2pz b25iX1ZBKHN0YXRlLCAzLAorCQkJCQkJCSAiZm10IiwgamJ2U3RyaW5nLCAiRU5BQkxFIFJVTEUg JXtydWxlfUkiLAorCQkJCQkJCSAidHlwZSIsIGpidlN0cmluZywgImVuYWJsZSBydWxlIiwKKwkJ CQkJCQkgInJ1bGUiLCBqYnZTdHJpbmcsIHN1YmNtZC0+bmFtZSk7CisJCQkJcHVzaEpzb25iVmFs dWUoJnN0YXRlLCBXSkJfRU5EX09CSkVDVCwgTlVMTCk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2Ug QVRfRW5hYmxlQWx3YXlzUnVsZToKKworCQkJCS8qCisJCQkJICogU3ludGF4OiBFTkFCTEUgQUxX QVlTIFJVTEUgJXtydWxlfUkKKwkJCQkgKi8KKwkJCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdK Ql9CRUdJTl9PQkpFQ1QsIE5VTEwpOworCQkJCW5ld19qc29uYl9WQShzdGF0ZSwgMywKKwkJCQkJ CQkgImZtdCIsIGpidlN0cmluZywgIkVOQUJMRSBBTFdBWVMgUlVMRSAle3J1bGV9SSIsCisJCQkJ CQkJICJ0eXBlIiwgamJ2U3RyaW5nLCAiZW5hYmxlIGFsd2F5cyBydWxlIiwKKwkJCQkJCQkgInJ1 bGUiLCBqYnZTdHJpbmcsIHN1YmNtZC0+bmFtZSk7CisJCQkJcHVzaEpzb25iVmFsdWUoJnN0YXRl LCBXSkJfRU5EX09CSkVDVCwgTlVMTCk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfRW5hYmxl UmVwbGljYVJ1bGU6CisKKwkJCQkvKgorCQkJCSAqIFN5bnRheDogRU5BQkxFIFJFUExJQ0EgUlVM RSAle3J1bGV9SQorCQkJCSAqLworCQkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lO X09CSkVDVCwgTlVMTCk7CisJCQkJbmV3X2pzb25iX1ZBKHN0YXRlLCAzLAorCQkJCQkJCSAiZm10 IiwgamJ2U3RyaW5nLCAiRU5BQkxFIFJFUExJQ0EgUlVMRSAle3J1bGV9SSIsCisJCQkJCQkJICJ0 eXBlIiwgamJ2U3RyaW5nLCAiZW5hYmxlIHJlcGxpY2EgcnVsZSIsCisJCQkJCQkJICJydWxlIiwg amJ2U3RyaW5nLCBzdWJjbWQtPm5hbWUpOworCQkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pC X0VORF9PQkpFQ1QsIE5VTEwpOworCQkJCWJyZWFrOworCisJCQljYXNlIEFUX0Rpc2FibGVSdWxl OgorCisJCQkJLyoKKwkJCQkgKiBTeW50YXg6IERJU0FCTEUgUlVMRSAle3J1bGV9SQorCQkJCSAq LworCQkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CisJ CQkJbmV3X2pzb25iX1ZBKHN0YXRlLCAzLAorCQkJCQkJCSAiZm10IiwgamJ2U3RyaW5nLCAiRElT QUJMRSBSVUxFICV7cnVsZX1JIiwKKwkJCQkJCQkgInR5cGUiLCBqYnZTdHJpbmcsICJkaXNhYmxl IHJ1bGUiLAorCQkJCQkJCSAicnVsZSIsIGpidlN0cmluZywgc3ViY21kLT5uYW1lKTsKKwkJCQlw dXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9FTkRfT0JKRUNULCBOVUxMKTsKKwkJCQlicmVhazsK KworCQkJY2FzZSBBVF9BZGRJbmhlcml0OgorCisJCQkJLyoKKwkJCQkgKiBTeW50YXg6IElOSEVS SVQgJXtwYXJlbnR9RAorCQkJCSAqLworCQkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JF R0lOX09CSkVDVCwgTlVMTCk7CisJCQkJbmV3X2pzb25iX1ZBKHN0YXRlLCAyLAorCQkJCQkJCSAi Zm10IiwgamJ2U3RyaW5nLCAiSU5IRVJJVCAle3BhcmVudH1EIiwKKwkJCQkJCQkgInR5cGUiLCBq YnZTdHJpbmcsICJpbmhlcml0Iik7CisJCQkJbmV3X2pzb25iX2Zvcl9xdWFsbmFtZV9pZChzdGF0 ZSwgUmVsYXRpb25SZWxhdGlvbklkLAorCQkJCQkJCQkJCSAgc3ViLT5hZGRyZXNzLm9iamVjdElk LCAicGFyZW50IiwgdHJ1ZSk7CisJCQkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfRU5EX09C SkVDVCwgTlVMTCk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfRHJvcEluaGVyaXQ6CisKKwkJ CQkvKgorCQkJCSAqIFN5bnRheDogTk8gSU5IRVJJVCAle3BhcmVudH1ECisJCQkJICovCisJCQkJ cHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfQkVHSU5fT0JKRUNULCBOVUxMKTsKKwkJCQluZXdf anNvbmJfVkEoc3RhdGUsIDIsCisJCQkJCQkJICJmbXQiLCBqYnZTdHJpbmcsICJOTyBJTkhFUklU ICV7cGFyZW50fUQiLAorCQkJCQkJCSAidHlwZSIsIGpidlN0cmluZywgImRyb3AgaW5oZXJpdCIp OworCQkJCW5ld19qc29uYl9mb3JfcXVhbG5hbWVfaWQoc3RhdGUsIFJlbGF0aW9uUmVsYXRpb25J ZCwKKwkJCQkJCQkJCQkgIHN1Yi0+YWRkcmVzcy5vYmplY3RJZCwgInBhcmVudCIsIHRydWUpOwor CQkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0VORF9PQkpFQ1QsIE5VTEwpOworCQkJCWJy ZWFrOworCisJCQljYXNlIEFUX0FkZE9mOgorCisJCQkJLyoKKwkJCQkgKiBTeW50YXg6IE9GICV7 dHlwZV9vZn1UCisJCQkJICovCisJCQkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfQkVHSU5f T0JKRUNULCBOVUxMKTsKKwkJCQluZXdfanNvbmJfVkEoc3RhdGUsIDIsCisJCQkJCQkJICJmbXQi LCBqYnZTdHJpbmcsICJPRiAle3R5cGVfb2Z9VCIsCisJCQkJCQkJICJ0eXBlIiwgamJ2U3RyaW5n LCAiYWRkIG9mIik7CisJCQkJbmV3X2pzb25iX2Zvcl90eXBlKHN0YXRlLCAidHlwZV9vZiIsIHN1 Yi0+YWRkcmVzcy5vYmplY3RJZCwgLTEpOworCQkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pC X0VORF9PQkpFQ1QsIE5VTEwpOworCQkJCWJyZWFrOworCisJCQljYXNlIEFUX0Ryb3BPZjoKKwor CQkJCS8qCisJCQkJICogU3ludGF4OiBOT1QgT0YKKwkJCQkgKi8KKwkJCQlwdXNoSnNvbmJWYWx1 ZSgmc3RhdGUsIFdKQl9CRUdJTl9PQkpFQ1QsIE5VTEwpOworCQkJCW5ld19qc29uYl9WQShzdGF0 ZSwgMiwKKwkJCQkJCQkgImZtdCIsIGpidlN0cmluZywgIk5PVCBPRiIsCisJCQkJCQkJICJ0eXBl IiwgamJ2U3RyaW5nLCAibm90IG9mIik7CisJCQkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJf RU5EX09CSkVDVCwgTlVMTCk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfUmVwbGljYUlkZW50 aXR5OgorCisJCQkJLyoKKwkJCQkgKiBTeW50YXg6IFJFUExJQ0EgSURFTlRJVFkgJXtpZGVudH1z CisJCQkJICovCisJCQkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfQkVHSU5fT0JKRUNULCBO VUxMKTsKKwkJCQluZXdfanNvbmJfVkEoc3RhdGUsIDIsCisJCQkJCQkJICJmbXQiLCBqYnZTdHJp bmcsCisJCQkJCQkJICJSRVBMSUNBIElERU5USVRZICV7aWRlbnR9cyIsCisJCQkJCQkJICJ0eXBl IiwgamJ2U3RyaW5nLCAicmVwbGljYSBpZGVudGl0eSIpOworCQkJCXN3aXRjaCAoKChSZXBsaWNh SWRlbnRpdHlTdG10ICopIHN1YmNtZC0+ZGVmKS0+aWRlbnRpdHlfdHlwZSkKKwkJCQl7CisJCQkJ CWNhc2UgUkVQTElDQV9JREVOVElUWV9ERUZBVUxUOgorCQkJCQkJbmV3X2pzb25iX1ZBKHN0YXRl LCAxLCAiaWRlbnQiLCBqYnZTdHJpbmcsICJERUZBVUxUIik7CisJCQkJCQlicmVhazsKKwkJCQkJ Y2FzZSBSRVBMSUNBX0lERU5USVRZX0ZVTEw6CisJCQkJCQluZXdfanNvbmJfVkEoc3RhdGUsIDEs ICJpZGVudCIsIGpidlN0cmluZywgIkZVTEwiKTsKKwkJCQkJCWJyZWFrOworCQkJCQljYXNlIFJF UExJQ0FfSURFTlRJVFlfTk9USElORzoKKwkJCQkJCW5ld19qc29uYl9WQShzdGF0ZSwgMSwgImlk ZW50IiwgamJ2U3RyaW5nLCAiTk9USElORyIpOworCQkJCQkJYnJlYWs7CisJCQkJCWNhc2UgUkVQ TElDQV9JREVOVElUWV9JTkRFWDoKKwkJCQkJCWluc2VydF9qc29uYl9rZXkoc3RhdGUsICJpZGVu dCIpOworCQkJCQkJbmV3X2pzb25iX1ZBKHN0YXRlLCAyLAorCQkJCQkJCQkJICJmbXQiLCBqYnZT dHJpbmcsICJVU0lORyBJTkRFWCAle2luZGV4fUkiLAorCQkJCQkJCQkJICJpbmRleCIsIGpidlN0 cmluZywKKwkJCQkJCQkJCSAoKFJlcGxpY2FJZGVudGl0eVN0bXQgKikgc3ViY21kLT5kZWYpLT5u YW1lKTsKKwkJCQkJCWJyZWFrOworCQkJCX0KKwkJCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdK Ql9FTkRfT0JKRUNULCBOVUxMKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBBVF9FbmFibGVSb3dT ZWN1cml0eToKKworCQkJCS8qCisJCQkJICogU3ludGF4OiBFTkFCTEUgUk9XIExFVkVMIFNFQ1VS SVRZCisJCQkJICovCisJCQkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfQkVHSU5fT0JKRUNU LCBOVUxMKTsKKwkJCQluZXdfanNvbmJfVkEoc3RhdGUsIDIsCisJCQkJCQkJICJmbXQiLCBqYnZT dHJpbmcsCisJCQkJCQkJICJFTkFCTEUgUk9XIExFVkVMIFNFQ1VSSVRZIiwKKwkJCQkJCQkgInR5 cGUiLCBqYnZTdHJpbmcsICJlbmFibGUgcm93IHNlY3VyaXR5Iik7CisJCQkJcHVzaEpzb25iVmFs dWUoJnN0YXRlLCBXSkJfRU5EX09CSkVDVCwgTlVMTCk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2Ug QVRfRGlzYWJsZVJvd1NlY3VyaXR5OgorCisJCQkJLyoKKwkJCQkgKiBTeW50YXg6IERJU0FCTEUg Uk9XIExFVkVMIFNFQ1VSSVRZCisJCQkJICovCisJCQkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBX SkJfQkVHSU5fT0JKRUNULCBOVUxMKTsKKwkJCQluZXdfanNvbmJfVkEoc3RhdGUsIDIsCisJCQkJ CQkJICJmbXQiLCBqYnZTdHJpbmcsCisJCQkJCQkJICJESVNBQkxFIFJPVyBMRVZFTCBTRUNVUklU WSIsCisJCQkJCQkJICJ0eXBlIiwgamJ2U3RyaW5nLCAiZGlzYWJsZSByb3cgc2VjdXJpdHkiKTsK KwkJCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9FTkRfT0JKRUNULCBOVUxMKTsKKwkJCQli cmVhazsKKworCQkJY2FzZSBBVF9BdHRhY2hQYXJ0aXRpb246CisJCQkJeworCQkJCQlTdHJpbmdJ bmZvRGF0YSBmbXRTdWI7CisKKwkJCQkJaW5pdFN0cmluZ0luZm8oJmZtdFN1Yik7CisKKwkJCQkJ LyoKKwkJCQkJICogU3ludGF4OiBBVFRBQ0ggUEFSVElUSU9OICV7cGFydGl0aW9uX2lkZW50aXR5 fUQKKwkJCQkJICogJXtwYXJ0aXRpb25fYm91bmR9cworCQkJCQkgKi8KKwkJCQkJcHVzaEpzb25i VmFsdWUoJnN0YXRlLCBXSkJfQkVHSU5fT0JKRUNULCBOVUxMKTsKKwkJCQkJYXBwZW5kU3RyaW5n SW5mb1N0cmluZygmZm10U3ViLCAiQVRUQUNIIFBBUlRJVElPTiIKKwkJCQkJCQkJCQkgICAiICV7 cGFydGl0aW9uX2lkZW50aXR5fUQiKTsKKworCQkJCQluZXdfanNvbmJfVkEoc3RhdGUsIDEsICJ0 eXBlIiwgamJ2U3RyaW5nLAorCQkJCQkJCQkgImF0dGFjaCBwYXJ0aXRpb24iKTsKKwkJCQkJbmV3 X2pzb25iX2Zvcl9xdWFsbmFtZV9pZChzdGF0ZSwgUmVsYXRpb25SZWxhdGlvbklkLAorCQkJCQkJ CQkJCQkgIHN1Yi0+YWRkcmVzcy5vYmplY3RJZCwKKwkJCQkJCQkJCQkJICAicGFydGl0aW9uX2lk ZW50aXR5IiwgdHJ1ZSk7CisKKwkJCQkJaWYgKHJlbC0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJ TkRfUEFSVElUSU9ORURfVEFCTEUpCisJCQkJCXsKKwkJCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJp bmcoJmZtdFN1YiwgIiAle3BhcnRpdGlvbl9ib3VuZH1zIik7CisJCQkJCQluZXdfanNvbmJfVkEo c3RhdGUsIDEsCisJCQkJCQkJCQkgInBhcnRpdGlvbl9ib3VuZCIsIGpidlN0cmluZywKKwkJCQkJ CQkJCSByZWxhdGlvbl9nZXRfcGFydF9ib3VuZChzdWItPmFkZHJlc3Mub2JqZWN0SWQpKTsKKwkJ CQkJfQorCisJCQkJCS8qIFdlIGhhdmUgZnVsbCBmbXQgYnkgbm93LCBzbyBhZGQganNvbmIgZWxl bWVudCBmb3IgdGhhdCAqLworCQkJCQluZXdfanNvbmJfVkEoc3RhdGUsIDEsICJmbXQiLCBqYnZT dHJpbmcsIGZtdFN1Yi5kYXRhKTsKKwkJCQkJcGZyZWUoZm10U3ViLmRhdGEpOworCisJCQkJCXB1 c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0VORF9PQkpFQ1QsIE5VTEwpOworCisJCQkJCWJyZWFr OworCQkJCX0KKwkJCWNhc2UgQVRfRGV0YWNoUGFydGl0aW9uOgorCQkJCXsKKwkJCQkJUGFydGl0 aW9uQ21kICpjbWQ7CisJCQkJCVN0cmluZ0luZm9EYXRhIGZtdFN1YjsKKworCQkJCQlpbml0U3Ry aW5nSW5mbygmZm10U3ViKTsKKworCQkJCQlBc3NlcnQoSXNBKHN1YmNtZC0+ZGVmLCBQYXJ0aXRp b25DbWQpKTsKKwkJCQkJY21kID0gKFBhcnRpdGlvbkNtZCAqKSBzdWJjbWQtPmRlZjsKKworCQkJ CQkvKgorCQkJCQkgKiBTeW50YXg6IERFVEFDSCBQQVJUSVRJT04gJXtwYXJ0aXRpb25faWRlbnRp dHl9RAorCQkJCQkgKiAle2NvbmN1cnJlbnR9cworCQkJCQkgKi8KKwkJCQkJcHVzaEpzb25iVmFs dWUoJnN0YXRlLCBXSkJfQkVHSU5fT0JKRUNULCBOVUxMKTsKKwkJCQkJYXBwZW5kU3RyaW5nSW5m b1N0cmluZygmZm10U3ViLCAiREVUQUNIIFBBUlRJVElPTiIKKwkJCQkJCQkJCQkgICAiICV7cGFy dGl0aW9uX2lkZW50aXR5fUQiKTsKKworCQkJCQluZXdfanNvbmJfVkEoc3RhdGUsIDEsICJ0eXBl IiwgamJ2U3RyaW5nLCAiZGV0YWNoIHBhcnRpdGlvbiIpOworCQkJCQluZXdfanNvbmJfZm9yX3F1 YWxuYW1lX2lkKHN0YXRlLCBSZWxhdGlvblJlbGF0aW9uSWQsCisJCQkJCQkJCQkJCSAgc3ViLT5h ZGRyZXNzLm9iamVjdElkLAorCQkJCQkJCQkJCQkgICJwYXJ0aXRpb25faWRlbnRpdHkiLCB0cnVl KTsKKwkJCQkJaWYgKGNtZC0+Y29uY3VycmVudCkKKwkJCQkJeworCQkJCQkJYXBwZW5kU3RyaW5n SW5mb1N0cmluZygmZm10U3ViLCAiICV7Y29uY3VycmVudH1zIik7CisJCQkJCQluZXdfanNvbmJf VkEoc3RhdGUsIDEsCisJCQkJCQkJCQkgImNvbmN1cnJlbnQiLCBqYnZTdHJpbmcsICJDT05DVVJS RU5UTFkiKTsKKwkJCQkJfQorCisJCQkJCS8qIFdlIGhhdmUgZnVsbCBmbXQgYnkgbm93LCBzbyBh ZGQganNvbmIgZWxlbWVudCBmb3IgdGhhdCAqLworCQkJCQluZXdfanNvbmJfVkEoc3RhdGUsIDEs ICJmbXQiLCBqYnZTdHJpbmcsIGZtdFN1Yi5kYXRhKTsKKwkJCQkJcGZyZWUoZm10U3ViLmRhdGEp OworCisJCQkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0VORF9PQkpFQ1QsIE5VTEwpOwor CQkJCQlicmVhazsKKwkJCQl9CisJCQljYXNlIEFUX0RldGFjaFBhcnRpdGlvbkZpbmFsaXplOgor CisJCQkJLyoKKwkJCQkgKiBTeW50YXg6IERFVEFDSCBQQVJUSVRJT04gJXtwYXJ0aXRpb25faWRl bnRpdHl9RCBGSU5BTElaRQorCQkJCSAqLworCQkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pC X0JFR0lOX09CSkVDVCwgTlVMTCk7CisJCQkJbmV3X2pzb25iX1ZBKHN0YXRlLCAyLAorCQkJCQkJ CSAiZm10IiwgamJ2U3RyaW5nLCAiREVUQUNIIFBBUlRJVElPTiIKKwkJCQkJCQkgIiAle3BhcnRp dGlvbl9pZGVudGl0eX1EIEZJTkFMSVpFIiwKKwkJCQkJCQkgInR5cGUiLCBqYnZTdHJpbmcsICJk ZXRhY2ggcGFydGl0aW9uIGZpbmFsaXplIik7CisKKwkJCQluZXdfanNvbmJfZm9yX3F1YWxuYW1l X2lkKHN0YXRlLCBSZWxhdGlvblJlbGF0aW9uSWQsCisJCQkJCQkJCQkJICBzdWItPmFkZHJlc3Mu b2JqZWN0SWQsCisJCQkJCQkJCQkJICAicGFydGl0aW9uX2lkZW50aXR5IiwgdHJ1ZSk7CisJCQkJ cHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfRU5EX09CSkVDVCwgTlVMTCk7CisJCQkJYnJlYWs7 CisJCQljYXNlIEFUX0FkZElkZW50aXR5OgorCQkJCXsKKwkJCQkJQXR0ck51bWJlcglhdHRudW07 CisJCQkJCU9pZAkJCXNlcV9yZWxpZDsKKwkJCQkJQ29sdW1uRGVmICAqY29sZGVmID0gKENvbHVt bkRlZiAqKSBzdWJjbWQtPmRlZjsKKwkJCQkJU3RyaW5nSW5mb0RhdGEgZm10U3ViOworCisJCQkJ CWluaXRTdHJpbmdJbmZvKCZmbXRTdWIpOworCisJCQkJCS8qCisJCQkJCSAqIFN5bnRheDogQUxU RVIgQ09MVU1OICV7Y29sdW1ufUkgJXtkZWZpbml0aW9ufXMgd2hlcmUKKwkJCQkJICogZGVmaW5p dGlvbiA6IEFERCAle2lkZW50aXR5X2NvbHVtbn1zIHdoZXJlCisJCQkJCSAqIGlkZW50aXR5X2Nv bHVtbjogJXtpZGVudGl0eV90eXBlfXMgKCAle3NlcV9kZWZpbml0aW9uOgorCQkJCQkgKiB9cyAp CisJCQkJCSAqLworCQkJCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9PQkpFQ1Qs IE5VTEwpOworCisJCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmZtdFN1YiwgIkFMVEVSIENP TFVNTiAle2NvbHVtbn1JIik7CisJCQkJCW5ld19qc29uYl9WQShzdGF0ZSwgMiwKKwkJCQkJCQkJ ICJ0eXBlIiwgamJ2U3RyaW5nLCAiYWRkIGlkZW50aXR5IiwKKwkJCQkJCQkJICJjb2x1bW4iLCBq YnZTdHJpbmcsIHN1YmNtZC0+bmFtZSk7CisKKwkJCQkJYXR0bnVtID0gZ2V0X2F0dG51bShSZWxh dGlvbkdldFJlbGlkKHJlbCksIHN1YmNtZC0+bmFtZSk7CisJCQkJCXNlcV9yZWxpZCA9IGdldElk ZW50aXR5U2VxdWVuY2UoUmVsYXRpb25HZXRSZWxpZChyZWwpLAorCQkJCQkJCQkJCQkJCWF0dG51 bSwgdHJ1ZSk7CisKKwkJCQkJaWYgKE9pZElzVmFsaWQoc2VxX3JlbGlkKSkKKwkJCQkJeworCisJ CQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZmbXRTdWIsICIgJXtkZWZpbml0aW9ufXMiKTsK KwkJCQkJCWluc2VydF9qc29uYl9rZXkoc3RhdGUsICJkZWZpbml0aW9uIik7CisKKwkJCQkJCS8q IGluc2VydCBkZWZpbml0aW9uJ3MgdmFsdWUgbm93ICovCisJCQkJCQlwdXNoSnNvbmJWYWx1ZSgm c3RhdGUsIFdKQl9CRUdJTl9PQkpFQ1QsIE5VTEwpOworCQkJCQkJbmV3X2pzb25iX1ZBKHN0YXRl LCAxLAorCQkJCQkJCQkJICJmbXQiLCBqYnZTdHJpbmcsICJBREQgJXtpZGVudGl0eV9jb2x1bW59 cyIpOworCisJCQkJCQkvKiBpbnNlcnQgaWRlbnRpdHlfY29sdW1uICovCisJCQkJCQlkZXBhcnNl X0NvbHVtbklkZW50aXR5KHN0YXRlLCAiaWRlbnRpdHlfY29sdW1uIiwKKwkJCQkJCQkJCQkJICAg c2VxX3JlbGlkLAorCQkJCQkJCQkJCQkgICBjb2xkZWYtPmlkZW50aXR5LCBmYWxzZSk7CisKKwkJ CQkJCS8qIG1hcmsgZGVmaW5pdGlvbidzIHZhbHVlIGVuZCAqLworCQkJCQkJcHVzaEpzb25iVmFs dWUoJnN0YXRlLCBXSkJfRU5EX09CSkVDVCwgTlVMTCk7CisJCQkJCX0KKworCQkJCQkvKiBXZSBo YXZlIGZ1bGwgZm10IGJ5IG5vdywgc28gYWRkIGpzb25iIGVsZW1lbnQgZm9yIHRoYXQgKi8KKwkJ CQkJbmV3X2pzb25iX1ZBKHN0YXRlLCAxLCAiZm10IiwgamJ2U3RyaW5nLCBmbXRTdWIuZGF0YSk7 CisKKwkJCQkJcGZyZWUoZm10U3ViLmRhdGEpOworCisJCQkJCXB1c2hKc29uYlZhbHVlKCZzdGF0 ZSwgV0pCX0VORF9PQkpFQ1QsIE5VTEwpOworCQkJCX0KKwkJCQlicmVhazsKKwkJCWNhc2UgQVRf U2V0SWRlbnRpdHk6CisJCQkJeworCQkJCQlEZWZFbGVtICAgICpkZWZlbDsKKwkJCQkJY2hhcgkJ aWRlbnRpdHkgPSAwOworCQkJCQlBdHRyTnVtYmVyCWF0dG51bTsKKwkJCQkJT2lkCQkJc2VxX3Jl bGlkOworCQkJCQlTdHJpbmdJbmZvRGF0YSBmbXRTdWI7CisKKwkJCQkJaW5pdFN0cmluZ0luZm8o JmZtdFN1Yik7CisKKwkJCQkJLyoKKwkJCQkJICogU3ludGF4OiBBTFRFUiBDT0xVTU4gJXtjb2x1 bW59SSAle2RlZmluaXRpb259cyB3aGVyZQorCQkJCQkgKiBkZWZpbml0aW9uIDogJXtpZGVudGl0 eV90eXBlfXMgKCAle3NlcV9kZWZpbml0aW9uOiB9cyApCisJCQkJCSAqLworCQkJCQlwdXNoSnNv bmJWYWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9PQkpFQ1QsIE5VTEwpOworCisJCQkJCWFwcGVuZFN0 cmluZ0luZm9TdHJpbmcoJmZtdFN1YiwgIkFMVEVSIENPTFVNTiAle2NvbHVtbn1JIik7CisJCQkJ CW5ld19qc29uYl9WQShzdGF0ZSwgMiwKKwkJCQkJCQkJICJ0eXBlIiwgamJ2U3RyaW5nLCAic2V0 IGlkZW50aXR5IiwKKwkJCQkJCQkJICJjb2x1bW4iLCBqYnZTdHJpbmcsIHN1YmNtZC0+bmFtZSk7 CisKKwkJCQkJaWYgKHN1YmNtZC0+ZGVmKQorCQkJCQl7CisJCQkJCQlMaXN0CSAgICpkZWYgPSAo TGlzdCAqKSBzdWJjbWQtPmRlZjsKKworCQkJCQkJQXNzZXJ0KElzQShzdWJjbWQtPmRlZiwgTGlz dCkpOworCisJCQkJCQlkZWZlbCA9IGxpbml0aWFsX25vZGUoRGVmRWxlbSwgZGVmKTsKKwkJCQkJ CWlkZW50aXR5ID0gZGVmR2V0SW50MzIoZGVmZWwpOworCQkJCQl9CisKKwkJCQkJYXR0bnVtID0g Z2V0X2F0dG51bShSZWxhdGlvbkdldFJlbGlkKHJlbCksIHN1YmNtZC0+bmFtZSk7CisJCQkJCXNl cV9yZWxpZCA9IGdldElkZW50aXR5U2VxdWVuY2UoUmVsYXRpb25HZXRSZWxpZChyZWwpLAorCQkJ CQkJCQkJCQkJCWF0dG51bSwgdHJ1ZSk7CisKKwkJCQkJaWYgKE9pZElzVmFsaWQoc2VxX3JlbGlk KSkKKwkJCQkJeworCQkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmZm10U3ViLCAiICV7ZGVm aW5pdGlvbn1zIik7CisJCQkJCQlkZXBhcnNlX0NvbHVtbklkZW50aXR5KHN0YXRlLCAiZGVmaW5p dGlvbiIsCisJCQkJCQkJCQkJCSAgIHNlcV9yZWxpZCwgaWRlbnRpdHksCisJCQkJCQkJCQkJCSAg IHRydWUpOworCQkJCQl9CisKKwkJCQkJLyogV2UgaGF2ZSBmdWxsIGZtdCBieSBub3csIHNvIGFk ZCBqc29uYiBlbGVtZW50IGZvciB0aGF0ICovCisJCQkJCW5ld19qc29uYl9WQShzdGF0ZSwgMSwg ImZtdCIsIGpidlN0cmluZywgZm10U3ViLmRhdGEpOworCisJCQkJCXBmcmVlKGZtdFN1Yi5kYXRh KTsKKwkJCQkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfRU5EX09CSkVDVCwgTlVMTCk7CisK KwkJCQkJYnJlYWs7CisJCQkJfQorCQkJY2FzZSBBVF9Ecm9wSWRlbnRpdHk6CisJCQkJeworCQkJ CQlTdHJpbmdJbmZvRGF0YSBmbXRTdWI7CisKKwkJCQkJaW5pdFN0cmluZ0luZm8oJmZtdFN1Yik7 CisKKwkJCQkJLyoKKwkJCQkJICogU3ludGF4OiBBTFRFUiBDT0xVTU4gJXtjb2x1bW59SSBEUk9Q IElERU5USVRZCisJCQkJCSAqICV7aWZfZXhpc3RzfXMKKwkJCQkJICovCisJCQkJCXB1c2hKc29u YlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CisJCQkJCWFwcGVuZFN0cmlu Z0luZm9TdHJpbmcoJmZtdFN1YiwgIkFMVEVSIENPTFVNTiIKKwkJCQkJCQkJCQkgICAiICV7Y29s dW1ufUkgRFJPUCBJREVOVElUWSIpOworCQkJCQluZXdfanNvbmJfVkEoc3RhdGUsIDIsCisJCQkJ CQkJCSAidHlwZSIsIGpidlN0cmluZywgImRyb3AgaWRlbnRpdHkiLAorCQkJCQkJCQkgImNvbHVt biIsIGpidlN0cmluZywgc3ViY21kLT5uYW1lKTsKKworCQkJCQlpZiAoc3ViY21kLT5taXNzaW5n X29rKQorCQkJCQl7CisJCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZmbXRTdWIsICIgJXtp Zl9leGlzdHN9cyIpOworCQkJCQkJbmV3X2pzb25iX1ZBKHN0YXRlLCAxLAorCQkJCQkJCQkJICJp Zl9leGlzdHMiLCBqYnZTdHJpbmcsICJJRiBFWElTVFMiKTsKKwkJCQkJfQorCisJCQkJCS8qIFdl IGhhdmUgZnVsbCBmbXQgYnkgbm93LCBzbyBhZGQganNvbmIgZWxlbWVudCBmb3IgdGhhdCAqLwor CQkJCQluZXdfanNvbmJfVkEoc3RhdGUsIDEsICJmbXQiLCBqYnZTdHJpbmcsIGZtdFN1Yi5kYXRh KTsKKwkJCQkJcGZyZWUoZm10U3ViLmRhdGEpOworCisJCQkJCXB1c2hKc29uYlZhbHVlKCZzdGF0 ZSwgV0pCX0VORF9PQkpFQ1QsIE5VTEwpOworCQkJCQlicmVhazsKKwkJCQl9CisJCQlkZWZhdWx0 OgorCQkJCWVsb2coV0FSTklORywgInVuc3VwcG9ydGVkIGFsdGVyIHRhYmxlIHN1YnR5cGUgJWQi LAorCQkJCQkgc3ViY21kLT5zdWJ0eXBlKTsKKwkJCQlicmVhazsKKwkJfQorCX0KKworCXRhYmxl X2Nsb3NlKHJlbCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCS8qIGlmIHN1YmNtZHMgYXJyYXkgaXMg bm90IGV2ZW4gY3JlYXRlZCBvciBoYXMgMCBlbGVtZW50cywgcmV0dXJuIE5VTEwgKi8KKwlpZiAo IXN1YkNtZEFycmF5IHx8CisJCSgoc3RhdGUtPmNvbnRWYWwudHlwZSA9PSBqYnZBcnJheSkgJiYK KwkJIChzdGF0ZS0+Y29udFZhbC52YWwuYXJyYXkubkVsZW1zID09IDApKSkKKwl7CisJCXBmcmVl KGZtdFN0ci5kYXRhKTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCisJLyogTWFyayB0aGUgZW5kIG9m IHN1YmNtZHMgYXJyYXkgKi8KKwlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9FTkRfQVJSQVks IE5VTEwpOworCisJLyogV2UgaGF2ZSBmdWxsIGZtdCBieSBub3csIHNvIGFkZCBqc29uYiBlbGVt ZW50IGZvciB0aGF0ICovCisJbmV3X2pzb25iX1ZBKHN0YXRlLCAxLCAiZm10IiwgamJ2U3RyaW5n LCBmbXRTdHIuZGF0YSk7CisKKwlwZnJlZShmbXRTdHIuZGF0YSk7CisKKwkvKiBNYXJrIHRoZSBl bmQgb2YgUk9PVCBvYmplY3QgKi8KKwl2YWx1ZSA9IHB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pC X0VORF9PQkpFQ1QsIE5VTEwpOworCisJcmV0dXJuIEpzb25iVmFsdWVUb0pzb25iKHZhbHVlKTsK K30KKwogLyoKICAqIERlcGFyc2UgYSBDcmVhdGVTZXFTdG10LgogICoKQEAgLTE1ODksNyArMzAw MCw4IEBAIGRlcGFyc2VfZHJvcF90YWJsZShjb25zdCBjaGFyICpvYmppZGVudGl0eSwgTm9kZSAq cGFyc2V0cmVlKQogICogdGhlIGNvbHVtbiBkZWZhdWx0IHZhbHVlIGFuZCBzZXF1ZW5jZXMgY3Jl YXRpb24gd2hpbGUgcGFyc2luZy4KICAqCiAgKiBWZXJib3NlIHN5bnRheAotICogQ1JFQVRFICV7 cGVyc2lzdGVuY2V9cyBTRVFVRU5DRSAle2lmX25vdF9leGlzdHN9cyAle2lkZW50aXR5fUQgJXtk ZWZpbml0aW9uOiB9cworICogQ1JFQVRFICV7cGVyc2lzdGVuY2V9cyBTRVFVRU5DRSAle2lmX25v dF9leGlzdHN9cyAle2lkZW50aXR5fUQKKyAqICV7ZGVmaW5pdGlvbjogfXMKICAqLwogc3RhdGlj IEpzb25iICoKIGRlcGFyc2VfQ3JlYXRlU2VxU3RtdChPaWQgb2JqZWN0SWQsIE5vZGUgKnBhcnNl dHJlZSkKQEAgLTE2NTMsMTIgKzMwNjUsMTIgQEAgZGVwYXJzZV9DcmVhdGVTZXFTdG10KE9pZCBv YmplY3RJZCwgTm9kZSAqcGFyc2V0cmVlKQogCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JF R0lOX0FSUkFZLCBOVUxMKTsKIAogCS8qIERlZmluaXRpb24gZWxlbWVudHMgKi8KLQlkZXBhcnNl X1NlcV9DYWNoZShzdGF0ZSwgc2VxZm9ybSk7Ci0JZGVwYXJzZV9TZXFfQ3ljbGUoc3RhdGUsIHNl cWZvcm0pOwotCWRlcGFyc2VfU2VxX0luY3JlbWVudEJ5KHN0YXRlLCBzZXFmb3JtKTsKLQlkZXBh cnNlX1NlcV9NaW52YWx1ZShzdGF0ZSwgc2VxZm9ybSk7Ci0JZGVwYXJzZV9TZXFfTWF4dmFsdWUo c3RhdGUsIHNlcWZvcm0pOwotCWRlcGFyc2VfU2VxX1N0YXJ0d2l0aChzdGF0ZSwgc2VxZm9ybSk7 CisJZGVwYXJzZV9TZXFfQ2FjaGUoc3RhdGUsIHNlcWZvcm0sIGZhbHNlKTsKKwlkZXBhcnNlX1Nl cV9DeWNsZShzdGF0ZSwgc2VxZm9ybSwgZmFsc2UpOworCWRlcGFyc2VfU2VxX0luY3JlbWVudEJ5 KHN0YXRlLCBzZXFmb3JtLCBmYWxzZSk7CisJZGVwYXJzZV9TZXFfTWludmFsdWUoc3RhdGUsIHNl cWZvcm0sIGZhbHNlKTsKKwlkZXBhcnNlX1NlcV9NYXh2YWx1ZShzdGF0ZSwgc2VxZm9ybSwgZmFs c2UpOworCWRlcGFyc2VfU2VxX1N0YXJ0d2l0aChzdGF0ZSwgc2VxZm9ybSwgZmFsc2UpOwogCWRl cGFyc2VfU2VxX1Jlc3RhcnQoc3RhdGUsIHNlcXZhbHVlcy0+bGFzdF92YWx1ZSk7CiAJZGVwYXJz ZV9TZXFfQXMoc3RhdGUsIHNlcWZvcm0pOwogCS8qIFdlIHB1cnBvc2VmdWxseSBkbyBub3QgZW1p dCBPV05FRCBCWSBoZXJlICovCkBAIC0xNzM3LDIxICszMTQ5LDIxIEBAIGRlcGFyc2VfQWx0ZXJT ZXFTdG10KE9pZCBvYmplY3RJZCwgTm9kZSAqcGFyc2V0cmVlKQogCQlEZWZFbGVtICAgICplbGVt ID0gKERlZkVsZW0gKikgbGZpcnN0KGNlbGwpOwogCiAJCWlmIChzdHJjbXAoZWxlbS0+ZGVmbmFt ZSwgImNhY2hlIikgPT0gMCkKLQkJCWRlcGFyc2VfU2VxX0NhY2hlKHN0YXRlLCBzZXFmb3JtKTsK KwkJCWRlcGFyc2VfU2VxX0NhY2hlKHN0YXRlLCBzZXFmb3JtLCBmYWxzZSk7CiAJCWVsc2UgaWYg KHN0cmNtcChlbGVtLT5kZWZuYW1lLCAiY3ljbGUiKSA9PSAwKQotCQkJZGVwYXJzZV9TZXFfQ3lj bGUoc3RhdGUsIHNlcWZvcm0pOworCQkJZGVwYXJzZV9TZXFfQ3ljbGUoc3RhdGUsIHNlcWZvcm0s IGZhbHNlKTsKIAkJZWxzZSBpZiAoc3RyY21wKGVsZW0tPmRlZm5hbWUsICJpbmNyZW1lbnQiKSA9 PSAwKQotCQkJZGVwYXJzZV9TZXFfSW5jcmVtZW50Qnkoc3RhdGUsIHNlcWZvcm0pOworCQkJZGVw YXJzZV9TZXFfSW5jcmVtZW50Qnkoc3RhdGUsIHNlcWZvcm0sIGZhbHNlKTsKIAkJZWxzZSBpZiAo c3RyY21wKGVsZW0tPmRlZm5hbWUsICJtaW52YWx1ZSIpID09IDApCi0JCQlkZXBhcnNlX1NlcV9N aW52YWx1ZShzdGF0ZSwgc2VxZm9ybSk7CisJCQlkZXBhcnNlX1NlcV9NaW52YWx1ZShzdGF0ZSwg c2VxZm9ybSwgZmFsc2UpOwogCQllbHNlIGlmIChzdHJjbXAoZWxlbS0+ZGVmbmFtZSwgIm1heHZh bHVlIikgPT0gMCkKLQkJCWRlcGFyc2VfU2VxX01heHZhbHVlKHN0YXRlLCBzZXFmb3JtKTsKKwkJ CWRlcGFyc2VfU2VxX01heHZhbHVlKHN0YXRlLCBzZXFmb3JtLCBmYWxzZSk7CiAJCWVsc2UgaWYg KHN0cmNtcChlbGVtLT5kZWZuYW1lLCAic3RhcnQiKSA9PSAwKQotCQkJZGVwYXJzZV9TZXFfU3Rh cnR3aXRoKHN0YXRlLCBzZXFmb3JtKTsKKwkJCWRlcGFyc2VfU2VxX1N0YXJ0d2l0aChzdGF0ZSwg c2VxZm9ybSwgZmFsc2UpOwogCQllbHNlIGlmIChzdHJjbXAoZWxlbS0+ZGVmbmFtZSwgInJlc3Rh cnQiKSA9PSAwKQogCQkJZGVwYXJzZV9TZXFfUmVzdGFydChzdGF0ZSwgc2VxdmFsdWVzLT5sYXN0 X3ZhbHVlKTsKIAkJZWxzZSBpZiAoc3RyY21wKGVsZW0tPmRlZm5hbWUsICJvd25lZF9ieSIpID09 IDApCi0JCQlkZXBhcnNlX1NlcV9Pd25lZEJ5KHN0YXRlLCBvYmplY3RJZCk7CisJCQlkZXBhcnNl X1NlcV9Pd25lZEJ5KHN0YXRlLCBvYmplY3RJZCwgZmFsc2UpOwogCQllbHNlIGlmIChzdHJjbXAo ZWxlbS0+ZGVmbmFtZSwgImFzIikgPT0gMCkKIAkJCWRlcGFyc2VfU2VxX0FzKHN0YXRlLCBzZXFm b3JtKTsKIAkJZWxzZQpAQCAtMTc2Nyw2ICszMTc5LDIwNyBAQCBkZXBhcnNlX0FsdGVyU2VxU3Rt dChPaWQgb2JqZWN0SWQsIE5vZGUgKnBhcnNldHJlZSkKIAlyZXR1cm4gSnNvbmJWYWx1ZVRvSnNv bmIodmFsdWUpOwogfQogCisvKgorICogRGVwYXJzZSBhIFJlbmFtZVN0bXQuCisgKgorICogVmVy Ym9zZSBzeW50YXgKKyAqIEFMVEVSIFRBQkxFICV7aWZfZXhpc3RzfXMgJXtpZGVudGl0eX1EIFJF TkFNRSBUTyAle25ld25hbWV9SQorICogT1IKKyAqIEFMVEVSIFRBQkxFICV7b25seX1zICV7aWRl bnRpdHl9RCBSRU5BTUUgQ09OU1RSQUlOVCAle29sZG5hbWV9SQorICogVE8gJXtuZXduYW1lfUkK KyAqIE9SCisgKiBBTFRFUiAle29ianR5cGV9cyAle2lmX2V4aXN0c31zICV7b25seX1zICV7aWRl bnRpdHl9RCBSRU5BTUUgQ09MVU1OCisgKiAle2NvbG5hbWV9SSBUTyAle25ld25hbWV9SSAle2Nh c2NhZGV9cworICovCisKK3N0YXRpYyBKc29uYiAqCitkZXBhcnNlX1JlbmFtZVN0bXQoT2JqZWN0 QWRkcmVzcyBhZGRyZXNzLCBOb2RlICpwYXJzZXRyZWUpCit7CisJUmVuYW1lU3RtdCAqbm9kZSA9 IChSZW5hbWVTdG10ICopIHBhcnNldHJlZTsKKwlSZWxhdGlvbglyZWxhdGlvbjsKKwlPaWQJCQlz Y2hlbWFJZDsKKwlKc29uYlBhcnNlU3RhdGUgKnN0YXRlID0gTlVMTDsKKwlKc29uYlZhbHVlICp2 YWx1ZTsKKworCS8qCisJICogSW4gYW4gQUxURVIgLi4gUkVOQU1FIGNvbW1hbmQsIHdlIGRvbid0 IGhhdmUgdGhlIG9yaWdpbmFsIG5hbWUgb2YgdGhlCisJICogb2JqZWN0IGluIHN5c3RlbSBjYXRh bG9nczogc2luY2Ugd2UgaW5zcGVjdCB0aGVtIGFmdGVyIHRoZSBjb21tYW5kIGhhcworCSAqIGV4 ZWN1dGVkLCB0aGUgb2xkIG5hbWUgaXMgYWxyZWFkeSBnb25lLiAgVGhlcmVmb3JlLCB3ZSBleHRy YWN0IGl0IGZyb20KKwkgKiB0aGUgcGFyc2Ugbm9kZS4gIE5vdGUgd2Ugc3RpbGwgZXh0cmFjdCB0 aGUgc2NoZW1hIG5hbWUgZnJvbSB0aGUgY2F0YWxvZworCSAqIChpdCBtaWdodCBub3QgYmUgcHJl c2VudCBpbiB0aGUgcGFyc2Ugbm9kZSk7IGl0IGNhbm5vdCBwb3NzaWJseSBoYXZlCisJICogY2hh bmdlZCBhbnl3YXkuCisJICovCisJc3dpdGNoIChub2RlLT5yZW5hbWVUeXBlKQorCXsKKwkJY2Fz ZSBPQkpFQ1RfVEFCTEU6CisJCQlyZWxhdGlvbiA9IHJlbGF0aW9uX29wZW4oYWRkcmVzcy5vYmpl Y3RJZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwkJCXNjaGVtYUlkID0gUmVsYXRpb25HZXROYW1lc3Bh Y2UocmVsYXRpb24pOworCisJCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9PQkpF Q1QsIE5VTEwpOworCQkJbmV3X2pzb25iX1ZBKHN0YXRlLCAzLAorCQkJCQkJICJmbXQiLCBqYnZT dHJpbmcsCisJCQkJCQkgIkFMVEVSIFRBQkxFICV7aWZfZXhpc3RzfXMgJXtpZGVudGl0eX1EIgor CQkJCQkJICIgUkVOQU1FIFRPICV7bmV3bmFtZX1JIiwKKwkJCQkJCSAiaWZfZXhpc3RzIiwgamJ2 U3RyaW5nLAorCQkJCQkJIG5vZGUtPm1pc3Npbmdfb2sgPyAiSUYgRVhJU1RTIiA6ICIiLAorCQkJ CQkJICJuZXduYW1lIiwgamJ2U3RyaW5nLCBub2RlLT5uZXduYW1lKTsKKworCQkJaW5zZXJ0X2lk ZW50aXR5X29iamVjdChzdGF0ZSwgc2NoZW1hSWQsIG5vZGUtPnJlbGF0aW9uLT5yZWxuYW1lKTsK KwkJCXZhbHVlID0gcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfRU5EX09CSkVDVCwgTlVMTCk7 CisKKwkJCXJlbGF0aW9uX2Nsb3NlKHJlbGF0aW9uLCBBY2Nlc3NTaGFyZUxvY2spOworCQkJYnJl YWs7CisKKwkJY2FzZSBPQkpFQ1RfVEFCQ09OU1RSQUlOVDoKKwkJCXsKKwkJCQlIZWFwVHVwbGUJ Y29uc3RydHVwOworCQkJCUZvcm1fcGdfY29uc3RyYWludCBjb25zdGZvcm07CisKKwkJCQljb25z dHJ0dXAgPSBTZWFyY2hTeXNDYWNoZTEoQ09OU1RST0lELAorCQkJCQkJCQkJCQlPYmplY3RJZEdl dERhdHVtKGFkZHJlc3Mub2JqZWN0SWQpKTsKKwkJCQlpZiAoIUhlYXBUdXBsZUlzVmFsaWQoY29u c3RydHVwKSkKKwkJCQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIGNvbnN0 cmFpbnQgd2l0aCBPSUQgJXUiLAorCQkJCQkJIGFkZHJlc3Mub2JqZWN0SWQpOworCQkJCWNvbnN0 Zm9ybSA9IChGb3JtX3BnX2NvbnN0cmFpbnQpIEdFVFNUUlVDVChjb25zdHJ0dXApOworCisJCQkJ cHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfQkVHSU5fT0JKRUNULCBOVUxMKTsKKwkJCQluZXdf anNvbmJfVkEoc3RhdGUsIDQsCisJCQkJCQkJICJmbXQiLCBqYnZTdHJpbmcsCisJCQkJCQkJICJB TFRFUiBUQUJMRSAle29ubHl9cyAle2lkZW50aXR5fUQgUkVOQU1FIgorCQkJCQkJCSAiIENPTlNU UkFJTlQgJXtvbGRuYW1lfUkgVE8gJXtuZXduYW1lfUkiLAorCQkJCQkJCSAib25seSIsIGpidlN0 cmluZywKKwkJCQkJCQkgbm9kZS0+cmVsYXRpb24tPmluaCA/ICIiIDogIk9OTFkiLAorCQkJCQkJ CSAib2xkbmFtZSIsIGpidlN0cmluZywgbm9kZS0+c3VibmFtZSwKKwkJCQkJCQkgIm5ld25hbWUi LCBqYnZTdHJpbmcsIG5vZGUtPm5ld25hbWUpOworCisJCQkJbmV3X2pzb25iX2Zvcl9xdWFsbmFt ZV9pZChzdGF0ZSwgUmVsYXRpb25SZWxhdGlvbklkLAorCQkJCQkJCQkJCSAgY29uc3Rmb3JtLT5j b25yZWxpZCwgImlkZW50aXR5IiwgdHJ1ZSk7CisJCQkJdmFsdWUgPSBwdXNoSnNvbmJWYWx1ZSgm c3RhdGUsIFdKQl9FTkRfT0JKRUNULCBOVUxMKTsKKworCQkJCVJlbGVhc2VTeXNDYWNoZShjb25z dHJ0dXApOworCQkJfQorCQkJYnJlYWs7CisKKwkJY2FzZSBPQkpFQ1RfQ09MVU1OOgorCQkJewor CQkJCVN0cmluZ0luZm9EYXRhIGZtdFN0cjsKKworCQkJCWluaXRTdHJpbmdJbmZvKCZmbXRTdHIp OworCisJCQkJcmVsYXRpb24gPSByZWxhdGlvbl9vcGVuKGFkZHJlc3Mub2JqZWN0SWQsIEFjY2Vz c1NoYXJlTG9jayk7CisJCQkJc2NoZW1hSWQgPSBSZWxhdGlvbkdldE5hbWVzcGFjZShyZWxhdGlv bik7CisKKwkJCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9PQkpFQ1QsIE5VTEwp OworCisJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmZm10U3RyLCAiQUxURVIgJXtvYmp0eXBl fXMiKTsKKworCQkJCW5ld19qc29uYl9WQShzdGF0ZSwgMSwKKwkJCQkJCQkgIm9ianR5cGUiLCBq YnZTdHJpbmcsCisJCQkJCQkJIHN0cmluZ2lmeV9vYmp0eXBlKG5vZGUtPnJlbGF0aW9uVHlwZSkp OworCisJCQkJLyogQ29tcG9zaXRlIHR5cGVzIGRvIG5vdCBzdXBwb3J0IElGIEVYSVNUUyAqLwor CQkJCWlmIChub2RlLT5yZW5hbWVUeXBlID09IE9CSkVDVF9DT0xVTU4pCisJCQkJeworCQkJCQlh cHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZmbXRTdHIsICIgJXtpZl9leGlzdHN9cyIpOworCQkJCQlu ZXdfanNvbmJfVkEoc3RhdGUsIDEsCisJCQkJCQkJCSAiaWZfZXhpc3RzIiwgamJ2U3RyaW5nLAor CQkJCQkJCQkgbm9kZS0+bWlzc2luZ19vayA/ICJJRiBFWElTVFMiIDogIiIpOworCQkJCX0KKwor CQkJCWlmICghbm9kZS0+cmVsYXRpb24tPmluaCkKKwkJCQl7CisJCQkJCWFwcGVuZFN0cmluZ0lu Zm9TdHJpbmcoJmZtdFN0ciwgIiAle29ubHl9cyIpOworCQkJCQluZXdfanNvbmJfVkEoc3RhdGUs IDEsICJvbmx5IiwgamJ2U3RyaW5nLCAiT05MWSIpOworCQkJCX0KKworCQkJCWFwcGVuZFN0cmlu Z0luZm9TdHJpbmcoJmZtdFN0ciwgIiAle2lkZW50aXR5fUQgUkVOQU1FIENPTFVNTiIKKwkJCQkJ CQkJCSAgICIgJXtjb2xuYW1lfUkgVE8gJXtuZXduYW1lfUkiKTsKKwkJCQlpbnNlcnRfaWRlbnRp dHlfb2JqZWN0KHN0YXRlLCBzY2hlbWFJZCwgbm9kZS0+cmVsYXRpb24tPnJlbG5hbWUpOworCQkJ CW5ld19qc29uYl9WQShzdGF0ZSwgMiwKKwkJCQkJCQkgImNvbG5hbWUiLCBqYnZTdHJpbmcsIG5v ZGUtPnN1Ym5hbWUsCisJCQkJCQkJICJuZXduYW1lIiwgamJ2U3RyaW5nLCBub2RlLT5uZXduYW1l KTsKKworCQkJCWlmIChub2RlLT5yZW5hbWVUeXBlID09IE9CSkVDVF9BVFRSSUJVVEUpCisJCQkJ eworCisJCQkJCWlmIChub2RlLT5iZWhhdmlvciA9PSBEUk9QX0NBU0NBREUpCisJCQkJCXsKKwkJ CQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmZtdFN0ciwgIiAle2Nhc2NhZGV9cyIpOworCQkJ CQkJbmV3X2pzb25iX1ZBKHN0YXRlLCAxLCAiY2FzY2FkZSIsIGpidlN0cmluZywgIkNBU0NBREUi KTsKKwkJCQkJfQorCQkJCX0KKworCQkJCS8qIFdlIGhhdmUgZnVsbCBmbXQgYnkgbm93LCBzbyBh ZGQganNvbmIgZWxlbWVudCBmb3IgdGhhdCAqLworCQkJCW5ld19qc29uYl9WQShzdGF0ZSwgMSwg ImZtdCIsIGpidlN0cmluZywgZm10U3RyLmRhdGEpOworCisJCQkJcGZyZWUoZm10U3RyLmRhdGEp OworCisJCQkJdmFsdWUgPSBwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9FTkRfT0JKRUNULCBO VUxMKTsKKworCQkJCXJlbGF0aW9uX2Nsb3NlKHJlbGF0aW9uLCBBY2Nlc3NTaGFyZUxvY2spOwor CQkJCWJyZWFrOworCQkJfQorCisJCWRlZmF1bHQ6CisJCQllbG9nKEVSUk9SLCAidW5zdXBwb3J0 ZWQgb2JqZWN0IHR5cGUgJWQiLCBub2RlLT5yZW5hbWVUeXBlKTsKKwl9CisKKwlyZXR1cm4gSnNv bmJWYWx1ZVRvSnNvbmIodmFsdWUpOworfQorCisvKgorICogRGVwYXJzZSBhbiBBbHRlck9iamVj dFNjaGVtYVN0bXQgKEFMVEVSIFRBQkxFLi4uIFNFVCBTQ0hFTUEgY29tbWFuZCkKKyAqCisgKiBH aXZlbiB0aGUgb2JqZWN0KHRhYmxlKSBhZGRyZXNzIGFuZCB0aGUgcGFyc2UgdHJlZSB0aGF0IGNy ZWF0ZWQgaXQsIHJldHVybgorICogSnNvbmIgcmVwcmVzZW50aW5nIHRoZSBhbHRlciBjb21tYW5k LgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBBTFRFUiAle29ianR5cGV9cyAle2lkZW50aXR5 fXMgU0VUIFNDSEVNQSAle25ld3NjaGVtYX1JCisgKi8KK3N0YXRpYyBKc29uYiAqCitkZXBhcnNl X0FsdGVyT2JqZWN0U2NoZW1hU3RtdChPYmplY3RBZGRyZXNzIGFkZHJlc3MsIE5vZGUgKnBhcnNl dHJlZSwKKwkJCQkJCQkgIE9iamVjdEFkZHJlc3Mgb2xkX3NjaGVtYSkKK3sKKwlBbHRlck9iamVj dFNjaGVtYVN0bXQgKm5vZGUgPSAoQWx0ZXJPYmplY3RTY2hlbWFTdG10ICopIHBhcnNldHJlZTsK KwljaGFyCSAgICppZGVudGl0eTsKKwljaGFyCSAgICpuZXdfc2NoZW1hID0gbm9kZS0+bmV3c2No ZW1hOworCWNoYXIJICAgKm9sZF9zY2huYW1lOworCWNoYXIJICAgKmlkZW50OworCUpzb25iUGFy c2VTdGF0ZSAqc3RhdGUgPSBOVUxMOworCUpzb25iVmFsdWUgKnZhbHVlOworCisJLyoKKwkgKiBT aW5jZSB0aGUgY29tbWFuZCBoYXMgYWxyZWFkeSB0YWtlbiBwbGFjZSBmcm9tIHRoZSBwb2ludCBv ZiB2aWV3IG9mCisJICogY2F0YWxvZ3MsIGdldE9iamVjdElkZW50aXR5IHJldHVybnMgdGhlIG9i amVjdCBuYW1lIHdpdGggdGhlIGFscmVhZHkKKwkgKiBjaGFuZ2VkIHNjaGVtYS4gIFRoZSBvdXRw dXQgb2Ygb3VyIGRlcGFyc2luZyBtdXN0IHJldHVybiB0aGUgb3JpZ2luYWwKKwkgKiBzY2hlbWEg bmFtZSwgaG93ZXZlciwgc28gd2UgY2hvcCB0aGUgc2NoZW1hIG5hbWUgb2ZmIHRoZSBpZGVudGl0 eQorCSAqIHN0cmluZyBhbmQgdGhlbiBwcmVwZW5kIHRoZSBxdW90ZWQgc2NoZW1hIG5hbWUuCisJ ICoKKwkgKiBYWFggVGhpcyBpcyBwcmV0dHkgY2x1bmt5LiBDYW4gd2UgZG8gYmV0dGVyPworCSAq LworCWlkZW50aXR5ID0gZ2V0T2JqZWN0SWRlbnRpdHkoJmFkZHJlc3MsIGZhbHNlKTsKKwlvbGRf c2NobmFtZSA9IGdldF9uYW1lc3BhY2VfbmFtZShvbGRfc2NoZW1hLm9iamVjdElkKTsKKwlpZiAo IW9sZF9zY2huYW1lKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3Igc2No ZW1hIHdpdGggT0lEICV1IiwKKwkJCSBvbGRfc2NoZW1hLm9iamVjdElkKTsKKworCWlkZW50ID0g cHNwcmludGYoIiVzJXMiLCBxdW90ZV9pZGVudGlmaWVyKG9sZF9zY2huYW1lKSwKKwkJCQkJIGlk ZW50aXR5ICsgc3RybGVuKHF1b3RlX2lkZW50aWZpZXIobmV3X3NjaGVtYSkpKTsKKworCXB1c2hK c29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CisJbmV3X2pzb25iX1ZB KHN0YXRlLCA0LAorCQkJCSAiZm10IiwgamJ2U3RyaW5nLAorCQkJCSAiQUxURVIgJXtvYmp0eXBl fXMgJXtpZGVudGl0eX1zIFNFVCBTQ0hFTUEiCisJCQkJICIgJXtuZXdzY2hlbWF9SSIsCisJCQkJ ICJvYmp0eXBlIiwgamJ2U3RyaW5nLAorCQkJCSBzdHJpbmdpZnlfb2JqdHlwZShub2RlLT5vYmpl Y3RUeXBlKSwKKwkJCQkgImlkZW50aXR5IiwgamJ2U3RyaW5nLCBpZGVudCwKKwkJCQkgIm5ld3Nj aGVtYSIsIGpidlN0cmluZywgbmV3X3NjaGVtYSk7CisJdmFsdWUgPSBwdXNoSnNvbmJWYWx1ZSgm c3RhdGUsIFdKQl9FTkRfT0JKRUNULCBOVUxMKTsKKworCXJldHVybiBKc29uYlZhbHVlVG9Kc29u Yih2YWx1ZSk7Cit9CisKIC8qCiAgKiBIYW5kbGUgZGVwYXJzaW5nIG9mIHNpbXBsZSBjb21tYW5k cy4KICAqCkBAIC0xNzg5LDYgKzM0MDIsMTEgQEAgZGVwYXJzZV9zaW1wbGVfY29tbWFuZChDb2xs ZWN0ZWRDb21tYW5kICpjbWQpCiAJLyogVGhpcyBzd2l0Y2ggbmVlZHMgdG8gaGFuZGxlIGV2ZXJ5 dGhpbmcgdGhhdCBQcm9jZXNzVXRpbGl0eVNsb3cgZG9lcyAqLwogCXN3aXRjaCAobm9kZVRhZyhw YXJzZXRyZWUpKQogCXsKKwkJY2FzZSBUX0FsdGVyT2JqZWN0U2NoZW1hU3RtdDoKKwkJCXJldHVy biBkZXBhcnNlX0FsdGVyT2JqZWN0U2NoZW1hU3RtdChjbWQtPmQuc2ltcGxlLmFkZHJlc3MsCisJ CQkJCQkJCQkJCQkgcGFyc2V0cmVlLAorCQkJCQkJCQkJCQkJIGNtZC0+ZC5zaW1wbGUuc2Vjb25k YXJ5T2JqZWN0KTsKKwogCQljYXNlIFRfQWx0ZXJTZXFTdG10OgogCQkJcmV0dXJuIGRlcGFyc2Vf QWx0ZXJTZXFTdG10KG9iamVjdElkLCBwYXJzZXRyZWUpOwogCkBAIC0xNzk3LDYgKzM0MTUsOCBA QCBkZXBhcnNlX3NpbXBsZV9jb21tYW5kKENvbGxlY3RlZENvbW1hbmQgKmNtZCkKIAogCQljYXNl IFRfQ3JlYXRlU3RtdDoKIAkJCXJldHVybiBkZXBhcnNlX0NyZWF0ZVN0bXQob2JqZWN0SWQsIHBh cnNldHJlZSk7CisJCWNhc2UgVF9SZW5hbWVTdG10OgorCQkJcmV0dXJuIGRlcGFyc2VfUmVuYW1l U3RtdChjbWQtPmQuc2ltcGxlLmFkZHJlc3MsIHBhcnNldHJlZSk7CiAKIAkJZGVmYXVsdDoKIAkJ CWVsb2coTE9HLCAidW5yZWNvZ25pemVkIG5vZGUgdHlwZSBpbiBkZXBhcnNlIGNvbW1hbmQ6ICVk IiwKQEAgLTE4NTEsNiArMzQ3MSw5IEBAIGRlcGFyc2VfdXRpbGl0eV9jb21tYW5kKENvbGxlY3Rl ZENvbW1hbmQgKmNtZCkKIAkJY2FzZSBTQ1RfU2ltcGxlOgogCQkJanNvbmIgPSBkZXBhcnNlX3Np bXBsZV9jb21tYW5kKGNtZCk7CiAJCQlicmVhazsKKwkJY2FzZSBTQ1RfQWx0ZXJUYWJsZToKKwkJ CWpzb25iID0gZGVwYXJzZV9BbHRlclRhYmxlU3RtdChjbWQpOworCQkJYnJlYWs7CiAJCWRlZmF1 bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBkZXBhcnNlIG5vZGUgdHlwZSAlZCIsIGNt ZC0+dHlwZSk7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMgYi9z cmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYwppbmRleCAzMGI1MWJmNGQzLi5jMGY3ZjI5NzQ3IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYworKysgYi9zcmMvYmFja2VuZC90 Y29wL3V0aWxpdHkuYwpAQCAtMjIwNiw2ICsyMjA2LDIzIEBAIFV0aWxpdHlDb250YWluc1F1ZXJ5 KE5vZGUgKnBhcnNldHJlZSkKIAl9CiB9CiAKKy8qCisgKiBzdHJpbmdpZnlfb2JqdHlwZQorICog CQlSZXR1cm4gdGhlIGdpdmVuIG9iamVjdCB0eXBlIGFzIGEgc3RyaW5nLgorICovCitjb25zdCBj aGFyICoKK3N0cmluZ2lmeV9vYmp0eXBlKE9iamVjdFR5cGUgb2JqdHlwZSkKK3sKKwlzd2l0Y2gg KG9ianR5cGUpCisJeworCQljYXNlIE9CSkVDVF9UQUJMRToKKwkJCXJldHVybiAiVEFCTEUiOwor CQlkZWZhdWx0OgorCQkJZWxvZyhFUlJPUiwgInVuc3VwcG9ydGVkIG9iamVjdCB0eXBlICVkIiwg b2JqdHlwZSk7CisJfQorCisJcmV0dXJuICI/Pz8iOwkJCQkvKiBrZWVwIGNvbXBpbGVyIHF1aWV0 ICovCit9CiAKIC8qCiAgKiBBbHRlck9iamVjdFR5cGVDb21tYW5kVGFnCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS90Y29wL3V0aWxpdHkuaCBiL3NyYy9pbmNsdWRlL3Rjb3AvdXRpbGl0eS5oCmlu ZGV4IDU5ZTY0YWVhMDcuLjIyY2UzZTFiNmYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Rjb3Av dXRpbGl0eS5oCisrKyBiL3NyYy9pbmNsdWRlL3Rjb3AvdXRpbGl0eS5oCkBAIC05OSw2ICs5OSw4 IEBAIGV4dGVybiBRdWVyeSAqVXRpbGl0eUNvbnRhaW5zUXVlcnkoTm9kZSAqcGFyc2V0cmVlKTsK IAogZXh0ZXJuIENvbW1hbmRUYWcgQ3JlYXRlQ29tbWFuZFRhZyhOb2RlICpwYXJzZXRyZWUpOwog CitleHRlcm4gY29uc3QgY2hhciAqc3RyaW5naWZ5X29ianR5cGUoT2JqZWN0VHlwZSBvYmp0eXBl KTsKKwogc3RhdGljIGlubGluZSBjb25zdCBjaGFyICoKIENyZWF0ZUNvbW1hbmROYW1lKE5vZGUg KnBhcnNldHJlZSkKIHsKLS0gCjIuMzQuMQoK --00000000000023744d05ff537465 Content-Type: application/octet-stream; name="0001-Deparser-for-Create-And-Drop-Table-DDL-co-2023_06_30.patch" Content-Disposition: attachment; filename="0001-Deparser-for-Create-And-Drop-Table-DDL-co-2023_06_30.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lji8c4ay0 RnJvbSBiNGVjNzNkNDI1OThlNzIxODI1MWQzNWRhMjljOGFhYzc3ODFhMzgxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaHZldGEgTWFsaWsgPHNodmV0YS5tYWxpa0BnbWFpbC5jb20+ CkRhdGU6IE1vbiwgMjIgTWF5IDIwMjMgMDg6MzY6NDkgKzA1MzAKU3ViamVjdDogW1BBVENIIDEv NV0gRGVwYXJzZXIgZm9yIENyZWF0ZSBBbmQgRHJvcCBUYWJsZSBEREwgY29tbWFuZHMuCgpUaGlz IHBhdGNoIGNvbnN0cnVjdHMgSlNPTiBibG9icyByZXByZXNlbnRpbmcgRERMIGNvbW1hbmRzLCB3 aGljaCBjYW4KbGF0ZXIgYmUgcmUtcHJvY2Vzc2VkIGludG8gcGxhaW4gc3RyaW5ncyBieSB3ZWxs LWRlZmluZWQgc3ByaW50Zi1saWtlCmV4cGFuc2lvbi4gVGhlc2UgSlNPTiBvYmplY3RzIGFyZSBp bnRlbmRlZCB0byBhbGxvdyBmb3IgbWFjaGluZS1lZGl0aW5nIG9mCnRoZSBjb21tYW5kcywgYnkg cmVwbGFjaW5nIGNlcnRhaW4gbm9kZXMgd2l0aGluIHRoZSBvYmplY3RzLgoKTXVjaCBvZiB0aGUg aW5mb3JtYXRpb24gaW4gdGhlIG91dHB1dCBibG9iIGFjdHVhbGx5IGNvbWVzIGZyb20gc3lzdGVt CmNhdGFsb2dzLCBub3QgZnJvbSB0aGUgY29tbWFuZCBwYXJzZSBub2RlLCBhcyBpdCBpcyBpbXBv c3NpYmxlIHRvIHJlbGlhYmx5CmNvbnN0cnVjdCBhIGZ1bGx5LXNwZWNpZmllZCBjb21tYW5kIChp LmUuIG9uZSBub3QgZGVwZW5kZW50IG9uIHNlYXJjaF9wYXRoCmV0YykgbG9va2luZyBvbmx5IGF0 IHRoZSBwYXJzZSBub2RlLgoKVGhpcyBwcm92aWRlcyBhIGJhc2UgZm9yIGxvZ2ljYWwgcmVwbGlj YXRpb24gb2YgRERMIHN0YXRlbWVudHMuIEN1cnJlbnRseSwKdGhlIHBhdGNoIGhhcyBzdXBwb3J0 IGZvciBDUkVBVEUgYW5kIERST1AgVEFCTEUKLS0tCiBzcmMvYmFja2VuZC9jYXRhbG9nL3BnX2lu aGVyaXRzLmMgICAgIHwgICAzNiArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9NYWtlZmlsZSAgICAg ICAgIHwgICAgMiArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9kZGxkZXBhcnNlLmMgICAgIHwgMTg5 MSArKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC9jb21tYW5kcy9kZGxqc29u LmMgICAgICAgIHwgIDc1OSArKysrKysrKysrCiBzcmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90 cmlnZ2VyLmMgIHwgICAgMSArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9tZXNvbi5idWlsZCAgICAg IHwgICAgMiArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9zZXF1ZW5jZS5jICAgICAgIHwgICA0MyAr CiBzcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAgIHwgICAgMyArLQogc3JjL2Jh Y2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYyAgICB8ICAgIDEgKwogc3JjL2JhY2tlbmQvcGFy dGl0aW9uaW5nL3BhcnRib3VuZHMuYyB8ICAgMjggKwogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2Zv cm1hdF90eXBlLmMgICB8ICAxMDggKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMu YyAgICAgfCAgIDUyICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2luaGVyaXRzLmggICAgIHwg ICAgMiArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgIHwgICAgNyArCiBz cmMvaW5jbHVkZS9jb21tYW5kcy9zZXF1ZW5jZS5oICAgICAgIHwgICAgOSArCiBzcmMvaW5jbHVk ZS9jb21tYW5kcy90YWJsZWNtZHMuaCAgICAgIHwgICAgMiArCiBzcmMvaW5jbHVkZS9ub2Rlcy9w YXJzZW5vZGVzLmggICAgICAgIHwgICAgMSArCiBzcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFy dGJvdW5kcy5oIHwgICAgMiArCiBzcmMvaW5jbHVkZS90Y29wL2RkbGRlcGFyc2UuaCAgICAgICAg IHwgICAyMSArCiBzcmMvaW5jbHVkZS91dGlscy9idWlsdGlucy5oICAgICAgICAgIHwgICAgNSAr CiBzcmMvaW5jbHVkZS91dGlscy9ydWxldXRpbHMuaCAgICAgICAgIHwgICAxMyArCiBzcmMvdG9v bHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgIHwgICAgMiArCiAyMiBmaWxlcyBjaGFuZ2Vk LCAyOTc0IGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyYy9iYWNrZW5kL2NvbW1hbmRzL2RkbGRlcGFyc2UuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Yy9iYWNrZW5kL2NvbW1hbmRzL2RkbGpzb24uYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbmNs dWRlL3Rjb3AvZGRsZGVwYXJzZS5oCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9w Z19pbmhlcml0cy5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19pbmhlcml0cy5jCmluZGV4IGRh OTY5YmQyZjkuLjM2YjE2NDU3NWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdf aW5oZXJpdHMuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2luaGVyaXRzLmMKQEAgLTY1 NSwzICs2NTUsMzkgQEAgUGFydGl0aW9uSGFzUGVuZGluZ0RldGFjaChPaWQgcGFydG9pZCkKIAll bG9nKEVSUk9SLCAicmVsYXRpb24gJXUgaXMgbm90IGEgcGFydGl0aW9uIiwgcGFydG9pZCk7CiAJ cmV0dXJuIGZhbHNlOwkJCQkvKiBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCiB9CisKKy8qCisgKiBH aXZlbiBhIHRhYmxlIE9JRCwgcmV0dXJuIGEgc2NoZW1hLXF1YWxpZmllZCB0YWJsZSBsaXN0IHJl cHJlc2VudGluZworICogdGhlIHBhcmVudCB0YWJsZXMuCisgKi8KK0xpc3QgKgorcmVsYXRpb25f Z2V0X2luaF9wYXJlbnRzKE9pZCBvYmplY3RJZCkKK3sKKwlMaXN0CSAgICpwYXJlbnRzID0gTklM OworCVJlbGF0aW9uCWluaFJlbDsKKwlTeXNTY2FuRGVzYyBzY2FuOworCVNjYW5LZXlEYXRhIGtl eTsKKwlIZWFwVHVwbGUJdHVwbGU7CisKKwlpbmhSZWwgPSB0YWJsZV9vcGVuKEluaGVyaXRzUmVs YXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7CisKKwlTY2FuS2V5SW5pdCgma2V5LAorCQkJCUFu dW1fcGdfaW5oZXJpdHNfaW5ocmVsaWQsCisJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX09J REVRLAorCQkJCU9iamVjdElkR2V0RGF0dW0ob2JqZWN0SWQpKTsKKworCXNjYW4gPSBzeXN0YWJs ZV9iZWdpbnNjYW4oaW5oUmVsLCBJbmhlcml0c1JlbGlkU2Vxbm9JbmRleElkLAorCQkJCQkJCSAg dHJ1ZSwgTlVMTCwgMSwgJmtleSk7CisKKwl3aGlsZSAoSGVhcFR1cGxlSXNWYWxpZCh0dXBsZSA9 IHN5c3RhYmxlX2dldG5leHQoc2NhbikpKQorCXsKKwkJRm9ybV9wZ19pbmhlcml0cyBmb3JtSW5o ID0gKEZvcm1fcGdfaW5oZXJpdHMpIEdFVFNUUlVDVCh0dXBsZSk7CisKKwkJcGFyZW50cyA9IGxh cHBlbmRfb2lkKHBhcmVudHMsIGZvcm1JbmgtPmluaHBhcmVudCk7CisJfQorCisJc3lzdGFibGVf ZW5kc2NhbihzY2FuKTsKKwl0YWJsZV9jbG9zZShpbmhSZWwsIFJvd0V4Y2x1c2l2ZUxvY2spOwor CisJcmV0dXJuIHBhcmVudHM7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9N YWtlZmlsZSBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL01ha2VmaWxlCmluZGV4IDQ4ZjczNDhmOTEu LjA3NmFjNGViMzEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL01ha2VmaWxlCisr KyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL01ha2VmaWxlCkBAIC0yOSw2ICsyOSw4IEBAIE9CSlMg PSBcCiAJY29weXRvLm8gXAogCWNyZWF0ZWFzLm8gXAogCWRiY29tbWFuZHMubyBcCisJZGRsZGVw YXJzZS5vIFwKKwlkZGxqc29uLm8gXAogCWRlZmluZS5vIFwKIAlkaXNjYXJkLm8gXAogCWRyb3Bj bWRzLm8gXApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZGRsZGVwYXJzZS5jIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvZGRsZGVwYXJzZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAuLmM4ZTg4NWNhMWEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9kZGxkZXBhcnNlLmMKQEAgLTAsMCArMSwxODkxIEBACisvKi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAqCisgKiBkZGxkZXBhcnNlLmMKKyAqCSAgRnVuY3Rpb25zIHRvIGNvbnZlcnQgdXRp bGl0eSBjb21tYW5kcyB0byBtYWNoaW5lLXBhcnNlYWJsZQorICoJICByZXByZXNlbnRhdGlvbgor ICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDIzLCBQb3N0Z3JlU1FMIEdsb2Jh bCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdl bnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAqCisgKiBOT1RFUworICoKKyAq IFRoaXMgaXMgaW50ZW5kZWQgdG8gcHJvdmlkZSBKU09OIGJsb2JzIHJlcHJlc2VudGluZyBEREwg Y29tbWFuZHMsIHdoaWNoIGNhbgorICogbGF0ZXIgYmUgcmUtcHJvY2Vzc2VkIGludG8gcGxhaW4g c3RyaW5ncyBieSB3ZWxsLWRlZmluZWQgc3ByaW50Zi1saWtlCisgKiBleHBhbnNpb24uICBUaGVz ZSBKU09OIG9iamVjdHMgYXJlIGludGVuZGVkIHRvIGFsbG93IGZvciBtYWNoaW5lLWVkaXRpbmcg b2YKKyAqIHRoZSBjb21tYW5kcywgYnkgcmVwbGFjaW5nIGNlcnRhaW4gbm9kZXMgd2l0aGluIHRo ZSBvYmplY3RzLgorICoKKyAqIE11Y2ggb2YgdGhlIGluZm9ybWF0aW9uIGluIHRoZSBvdXRwdXQg YmxvYiBhY3R1YWxseSBjb21lcyBmcm9tIHN5c3RlbQorICogY2F0YWxvZ3MsIG5vdCBmcm9tIHRo ZSBjb21tYW5kIHBhcnNlIG5vZGUsIGFzIGl0IGlzIGltcG9zc2libGUgdG8gcmVsaWFibHkKKyAq IGNvbnN0cnVjdCBhIGZ1bGx5LXNwZWNpZmllZCBjb21tYW5kIChpLmUuIG9uZSBub3QgZGVwZW5k ZW50IG9uIHNlYXJjaF9wYXRoCisgKiBldGMpIGxvb2tpbmcgb25seSBhdCB0aGUgcGFyc2Ugbm9k ZS4KKyAqCisgKiBEZXBhcnNlZCBKc29uYlZhbHVlIGlzIGNyZWF0ZWQgYnkgdXNpbmc6CisgKiAJ bmV3X2pzb25iX1ZBIHdoZXJlIHRoZSBrZXktdmFsdWUgcGFpcnMgY29tcG9zaW5nIGFuIGpzb25i IG9iamVjdCBjYW4gYmUKKyAqIAlkZXJpdmVkIHVzaW5nIHRoZSBwYXNzZWQgdmFyaWFibGUgYXJn dW1lbnRzLiBJbiBvcmRlciB0byBzdWNjZXNzZnVsbHkKKyAqICBjb25zdHJ1Y3Qgb25lIGtleTp2 YWx1ZSBwYWlyLCBhIHNldCBvZiB0aHJlZSBhcmd1bWVudHMgY29uc2lzdGluZyBvZiBhIG5hbWUK KyAqIAkoc3RyaW5nKSwgdHlwZSAoZnJvbSB0aGUgamJ2VHlwZSBlbnVtKSBhbmQgdmFsdWUgbXVz dCBiZSBzdXBwbGllZC4gSXQgY2FuCisgKiAgdGFrZSBtdWx0aXBsZSBzdWNoIHNldHMgYW5kIGNv bnN0cnVjdCBtdWx0aXBsZSBrZXktdmFsdWUgcGFpcnMgYW5kIGFwcGVuZAorICogIHRob3NlIHRv IG91dHB1dCBwYXJzZS1zdGF0ZS4KKyAqCisgKiBJREVOVElGSUNBVElPTgorICoJICBzcmMvYmFj a2VuZC9jb21tYW5kcy9kZGxkZXBhcnNlLmMKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLwor I2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRlICJhY2Nlc3MvYW1hcGkuaCIKKyNpbmNs dWRlICJhY2Nlc3MvcmVsYXRpb24uaCIKKyNpbmNsdWRlICJhY2Nlc3MvdGFibGUuaCIKKyNpbmNs dWRlICJjYXRhbG9nL25hbWVzcGFjZS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfY29sbGF0aW9u LmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb25zdHJhaW50LmgiCisjaW5jbHVkZSAiY2F0YWxv Zy9wZ19kZXBlbmQuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX2luaGVyaXRzLmgiCisjaW5jbHVk ZSAiY2F0YWxvZy9wZ19uYW1lc3BhY2UuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3Byb2MuaCIK KyNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKKyNpbmNsdWRlICJjb21tYW5kcy9kZWZyZW0u aCIKKyNpbmNsdWRlICJjb21tYW5kcy9zZXF1ZW5jZS5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3Rh Ymxlc3BhY2UuaCIKKyNpbmNsdWRlICJjb21tYW5kcy90YWJsZWNtZHMuaCIKKyNpbmNsdWRlICJm dW5jYXBpLmgiCisjaW5jbHVkZSAicGFydGl0aW9uaW5nL3BhcnRib3VuZHMuaCIKKyNpbmNsdWRl ICJ0Y29wL2RkbGRlcGFyc2UuaCIKKyNpbmNsdWRlICJ0Y29wL3V0aWxpdHkuaCIKKyNpbmNsdWRl ICJ1dGlscy9idWlsdGlucy5oIgorI2luY2x1ZGUgInV0aWxzL2ZtZ3JvaWRzLmgiCisjaW5jbHVk ZSAidXRpbHMvanNvbmIuaCIKKyNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKKyNpbmNsdWRl ICJ1dGlscy9yZWwuaCIKKyNpbmNsdWRlICJ1dGlscy9ydWxldXRpbHMuaCIKKyNpbmNsdWRlICJ1 dGlscy9zeXNjYWNoZS5oIgorCisvKiBFc3RpbWF0ZWQgbGVuZ3RoIG9mIHRoZSBnZW5lcmF0ZWQg anNvbmIgc3RyaW5nICovCisjZGVmaW5lIEpTT05CX0VTVElNQVRFRF9MRU4gMTI4CisKKy8qCisg KiBSZXR1cm4gdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gUkVMUEVSU0lT VEVOQ0UgdmFsdWUuCisgKi8KK3N0YXRpYyBjaGFyICoKK2dldF9wZXJzaXN0ZW5jZV9zdHIoY2hh ciBwZXJzaXN0ZW5jZSkKK3sKKwlzd2l0Y2ggKHBlcnNpc3RlbmNlKQorCXsKKwkJY2FzZSBSRUxQ RVJTSVNURU5DRV9URU1QOgorCQkJcmV0dXJuICJURU1QT1JBUlkiOworCQljYXNlIFJFTFBFUlNJ U1RFTkNFX1VOTE9HR0VEOgorCQkJcmV0dXJuICJVTkxPR0dFRCI7CisJCWNhc2UgUkVMUEVSU0lT VEVOQ0VfUEVSTUFORU5UOgorCQkJcmV0dXJuIE5VTEw7CisJCWRlZmF1bHQ6CisJCQllbG9nKEVS Uk9SLCAidW5leHBlY3RlZCBwZXJzaXN0ZW5jZSBtYXJraW5nICVjIiwKKwkJCQkgcGVyc2lzdGVu Y2UpOworCQkJcmV0dXJuIE5VTEw7CQkvKiBtYWtlIGNvbXBpbGVyIGhhcHB5ICovCisJfQorfQor CisvKgorICogSW5zZXJ0IEpzb25iVmFsdWUga2V5IHRvIHRoZSBvdXRwdXQgcGFyc2Ugc3RhdGUu CisgKi8KK3N0YXRpYyB2b2lkCitpbnNlcnRfanNvbmJfa2V5KEpzb25iUGFyc2VTdGF0ZSAqc3Rh dGUsIGNoYXIgKm5hbWUpCit7CisJSnNvbmJWYWx1ZQlrZXk7CisKKwkvKiBQdXNoIHRoZSBrZXkg Ki8KKwlrZXkudHlwZSA9IGpidlN0cmluZzsKKwlrZXkudmFsLnN0cmluZy52YWwgPSBuYW1lOwor CWtleS52YWwuc3RyaW5nLmxlbiA9IHN0cmxlbihuYW1lKTsKKwlwdXNoSnNvbmJWYWx1ZSgmc3Rh dGUsIFdKQl9LRVksICZrZXkpOworfQorCisvKgorICogQXBwZW5kIG5ldyBqc29uYiBrZXk6dmFs dWUgcGFpcnMgdG8gdGhlIG91dHB1dCBwYXJzZSBzdGF0ZSAtLSB2YXJhcmdzCisgKiBmdW5jdGlv bgorICoKKyAqIEFyZ3VtZW50czoKKyAqICJzdGF0ZSI6IHRoZSBvdXRwdXQganNvbmIgc3RhdGUg d2hlcmUgZWFjaCBrZXktdmFsdWUgcGFpciBpcyBwdXNoZWQuCisgKgorICogIm51bW9ianMiOiB0 aGUgbnVtYmVyIG9mIGtleTp2YWx1ZSBwYWlycyB0byBiZSBwdXNoZWQgdG8gSnNvbmJQYXJzZVN0 YXRlOworICogZm9yIGVhY2ggb25lLCBhIG5hbWUgKHN0cmluZyksIHR5cGUgKGZyb20gdGhlIGpi dlR5cGUgZW51bSkgYW5kIHZhbHVlIG11c3QKKyAqIGJlIHN1cHBsaWVkLiAgVGhlIHZhbHVlIG11 c3QgbWF0Y2ggdGhlIHR5cGUgZ2l2ZW47IGZvciBpbnN0YW5jZSwgamJ2Qm9vbAorICogcmVxdWly ZXMgYW4gYm9vbCwgamJ2U3RyaW5nIHJlcXVpcmVzIGEgY2hhciAqIGFuZCBzbyBvbi4KKyAqIEVh Y2ggZWxlbWVudCB0eXBlIG11c3QgbWF0Y2ggdGhlIGNvbnZlcnNpb24gc3BlY2lmaWVyIGdpdmVu IGluIHRoZSBmb3JtYXQKKyAqIHN0cmluZywgYXMgZGVzY3JpYmVkIGluIGRkbF9kZXBhcnNlX2V4 cGFuZF9jb21tYW5kLgorICoKKyAqIE5vdGVzOgorICogYSkgVGhlIGNhbGxlciBjYW4gcGFzcyAi Zm10IjoiZm10c3RyIiBhcyBhIHJlZ3VsYXIga2V5OnZhbHVlIHBhaXIgdG8gdGhpcywKKyAqIG5v IHNwZWNpYWwgaGFuZGxpbmcgbmVlZGVkIGZvciB0aGF0LgorICogYikgVGhlIGNhbGxlciBuZWVk IHRvIGNhcmVmdWxseSBwYXNzIHNldHMgb2YgYXJndW1lbnRzLCB3ZSBkb24ndCBoYXZlIHRoZQor ICogbHV4dXJ5IG9mIHNwcmludGYtbGlrZSBjb21waWxlciB3YXJuaW5ncyBmb3IgbWFsZm9ybWVk IGFyZ3VtZW50IGxpc3RzLgorICovCitzdGF0aWMgdm9pZAorbmV3X2pzb25iX1ZBKEpzb25iUGFy c2VTdGF0ZSAqc3RhdGUsIGludCBudW1vYmpzLC4uLikKK3sKKwl2YV9saXN0CQlhcmdzOworCWlu dAkJCWk7CisJSnNvbmJWYWx1ZQl2YWw7CisKKwkvKiBQcm9jZXNzIHRoZSBnaXZlbiB2YXJhcmdz ICovCisJdmFfc3RhcnQoYXJncywgbnVtb2Jqcyk7CisKKwlmb3IgKGkgPSAwOyBpIDwgbnVtb2Jq czsgaSsrKQorCXsKKwkJY2hhcgkgICAqbmFtZTsKKwkJZW51bSBqYnZUeXBlIHR5cGU7CisKKwkJ bmFtZSA9IHZhX2FyZyhhcmdzLCBjaGFyICopOworCQl0eXBlID0gdmFfYXJnKGFyZ3MsIGVudW0g amJ2VHlwZSk7CisKKwkJLyogUHVzaCB0aGUga2V5IGZpcnN0ICovCisJCWluc2VydF9qc29uYl9r ZXkoc3RhdGUsIG5hbWUpOworCisJCS8qCisJCSAqIEZvciBhbGwgcGFyYW0gdHlwZXMgb3RoZXIg dGhhbiBqYnZOdWxsLCB0aGVyZSBtdXN0IGJlIGEgdmFsdWUgaW4KKwkJICogdGhlIHZhcmFyZ3Mu IEZldGNoIGl0IGFuZCBhZGQgdGhlIGZ1bGx5IGZvcm1lZCBzdWJvYmplY3QgaW50byB0aGUKKwkJ ICogbWFpbiBvYmplY3QuCisJCSAqLworCQlzd2l0Y2ggKHR5cGUpCisJCXsKKwkJCWNhc2UgamJ2 TnVsbDoKKwkJCQkvKiBOdWxsIHBhcmFtcyBkb24ndCBoYXZlIGEgdmFsdWUgKG9idmlvdXNseSkg Ki8KKwkJCQl2YWwudHlwZSA9IGpidk51bGw7CisJCQkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBX SkJfVkFMVUUsICZ2YWwpOworCQkJCWJyZWFrOworCisJCQljYXNlIGpidkJvb2w6CisJCQkJLyog UHVzaCB0aGUgYm9vbCB2YWx1ZSAqLworCQkJCXZhbC50eXBlID0gamJ2Qm9vbDsKKwkJCQl2YWwu dmFsLmJvb2xlYW4gPSB2YV9hcmcoYXJncywgaW50KTsKKwkJCQlwdXNoSnNvbmJWYWx1ZSgmc3Rh dGUsIFdKQl9WQUxVRSwgJnZhbCk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgamJ2U3RyaW5nOgor CQkJCS8qIFB1c2ggdGhlIHN0cmluZyB2YWx1ZSAqLworCQkJCXZhbC50eXBlID0gamJ2U3RyaW5n OworCQkJCXZhbC52YWwuc3RyaW5nLnZhbCA9IHBzdHJkdXAodmFfYXJnKGFyZ3MsIGNoYXIgKikp OworCQkJCXZhbC52YWwuc3RyaW5nLmxlbiA9IHN0cmxlbih2YWwudmFsLnN0cmluZy52YWwpOwor CQkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX1ZBTFVFLCAmdmFsKTsKKwkJCQlicmVhazsK KworCQkJY2FzZSBqYnZOdW1lcmljOgorCQkJCS8qIFB1c2ggdGhlIG51bWVyaWMgdmFsdWUgKi8K KwkJCQl2YWwudHlwZSA9IGpidk51bWVyaWM7CisJCQkJdmFsLnZhbC5udW1lcmljID0gKE51bWVy aWMpCisJCQkJCURhdHVtR2V0TnVtZXJpYyhEaXJlY3RGdW5jdGlvbkNhbGwxKAorCQkJCQkJCQkJ CQkJCQlpbnQ4X251bWVyaWMsCisJCQkJCQkJCQkJCQkJCXZhX2FyZyhhcmdzLCBpbnQpKSk7CisK KwkJCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9WQUxVRSwgJnZhbCk7CisJCQkJYnJlYWs7 CisKKwkJCWRlZmF1bHQ6CisJCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBqYnZUeXBlICVk IiwgdHlwZSk7CisJCX0KKwl9CisKKwl2YV9lbmQoYXJncyk7Cit9CisKKy8qCisgKiBBIGhlbHBl ciByb3V0aW5lIHRvIGluc2VydCBqc29uYiBmb3IgdHlwSWQgdG8gdGhlIG91dHB1dCBwYXJzZSBz dGF0ZS4KKyAqLworc3RhdGljIHZvaWQKK25ld19qc29uYl9mb3JfdHlwZShKc29uYlBhcnNlU3Rh dGUgKnN0YXRlLCBjaGFyICpwYXJlbnRLZXksCisJCQkJICAgT2lkIHR5cElkLCBpbnQzMiB0eXBt b2QpCit7CisJT2lkCQkJdHlwbnNwaWQ7CisJY2hhcgkgICAqdHlwZV9uc3A7CisJY2hhcgkgICAq dHlwZV9uYW1lID0gTlVMTDsKKwljaGFyCSAgICp0eXBtb2RzdHI7CisJYm9vbAkJdHlwZV9hcnJh eTsKKworCUFzc2VydChwYXJlbnRLZXkpOworCisJZm9ybWF0X3R5cGVfZGV0YWlsZWQodHlwSWQs IHR5cG1vZCwgJnR5cG5zcGlkLCAmdHlwZV9uYW1lLCAmdHlwbW9kc3RyLAorCQkJCQkJICZ0eXBl X2FycmF5KTsKKworCWlmIChPaWRJc1ZhbGlkKHR5cG5zcGlkKSkKKwkJdHlwZV9uc3AgPSBnZXRf bmFtZXNwYWNlX25hbWVfb3JfdGVtcCh0eXBuc3BpZCk7CisJZWxzZQorCQl0eXBlX25zcCA9IHBz dHJkdXAoIiIpOworCisJaW5zZXJ0X2pzb25iX2tleShzdGF0ZSwgcGFyZW50S2V5KTsKKwlwdXNo SnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9PQkpFQ1QsIE5VTEwpOworCW5ld19qc29uYl9W QShzdGF0ZSwgNCwKKwkJCQkgInNjaGVtYW5hbWUiLCBqYnZTdHJpbmcsIHR5cGVfbnNwLAorCQkJ CSAidHlwZW5hbWUiLCBqYnZTdHJpbmcsIHR5cGVfbmFtZSwKKwkJCQkgInR5cG1vZCIsIGpidlN0 cmluZywgdHlwbW9kc3RyLAorCQkJCSAidHlwYXJyYXkiLCBqYnZCb29sLCB0eXBlX2FycmF5KTsK KwlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9FTkRfT0JKRUNULCBOVUxMKTsKK30KKworLyoK KyAqIEEgaGVscGVyIHJvdXRpbmUgdG8gc2V0IHVwIG5hbWU6IHNjaGVtYW5hbWUsIG9iam5hbWUK KyAqCisgKiBFbGVtZW50cyAic2NoZW1hX25hbWUiIGFuZCAib2JqX25hbWUiIGFyZSBzZXQuICBJ ZiB0aGUgbmFtZXNwYWNlIE9JRAorICogY29ycmVzcG9uZHMgdG8gYSB0ZW1wIHNjaGVtYSwgdGhh dCdzIHNldCB0byAicGdfdGVtcCIuCisgKgorICogVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aG9z ZSB0d28gZWxlbWVudCB0eXBlcyBpcyB3aGV0aGVyIHRoZSBvYmpfbmFtZSB3aWxsCisgKiBiZSBx dW90ZWQgYXMgYW4gaWRlbnRpZmllciBvciBub3QsIHdoaWNoIGlzIG5vdCBzb21ldGhpbmcgdGhh dCB0aGlzIHJvdXRpbmUKKyAqIGNvbmNlcm5zIGl0c2VsZiB3aXRoOyB0aGF0IHdpbGwgYmUgdXAg dG8gdGhlIGV4cGFuZCBmdW5jdGlvbi4KKyAqLworc3RhdGljIHZvaWQKK25ld19qc29uYl9mb3Jf cXVhbG5hbWUoSnNvbmJQYXJzZVN0YXRlICpzdGF0ZSwgT2lkIG5zcGlkLCBjaGFyICpvYmpOYW1l LAorCQkJCQkgICBjaGFyICprZXlOYW1lLCBib29sIGNyZWF0ZU9iamVjdCkKK3sKKwljaGFyCSAg ICpuYW1lc3BhY2U7CisKKwlpZiAoaXNBbnlUZW1wTmFtZXNwYWNlKG5zcGlkKSkKKwkJbmFtZXNw YWNlID0gcHN0cmR1cCgicGdfdGVtcCIpOworCWVsc2UKKwkJbmFtZXNwYWNlID0gZ2V0X25hbWVz cGFjZV9uYW1lKG5zcGlkKTsKKworCS8qIFB1c2ggdGhlIGtleSBmaXJzdCAqLworCWlmIChrZXlO YW1lKQorCQlpbnNlcnRfanNvbmJfa2V5KHN0YXRlLCBrZXlOYW1lKTsKKworCWlmIChjcmVhdGVP YmplY3QpCisJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7 CisKKwluZXdfanNvbmJfVkEoc3RhdGUsIDIsCisJCQkJICJzY2hlbWFuYW1lIiwgamJ2U3RyaW5n LCBuYW1lc3BhY2UsCisJCQkJICJvYmpuYW1lIiwgamJ2U3RyaW5nLCBvYmpOYW1lKTsKKworCWlm IChjcmVhdGVPYmplY3QpCisJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0VORF9PQkpFQ1Qs IE5VTEwpOworfQorCisvKgorICogQSBoZWxwZXIgcm91dGluZSB0byBzZXQgdXAgbmFtZTogJ3Nj aGVtYW5hbWUsIG9iam5hbWUnIHdoZXJlIHRoZSBvYmplY3QgaXMKKyAqIHNwZWNpZmllZCBieSBj bGFzc0lkIGFuZCBvYmpJZC4KKyAqLworc3RhdGljIHZvaWQKK25ld19qc29uYl9mb3JfcXVhbG5h bWVfaWQoSnNvbmJQYXJzZVN0YXRlICpzdGF0ZSwgT2lkIGNsYXNzSWQsIE9pZCBvYmplY3RJZCwK KwkJCQkJCSAgY2hhciAqa2V5TmFtZSwgYm9vbCBjcmVhdGVPYmplY3QpCit7CisJUmVsYXRpb24J Y2F0YWxvZzsKKwlIZWFwVHVwbGUJY2F0b2JqOworCURhdHVtCQlvYmpfbnNwOworCURhdHVtCQlv YmpfbmFtZTsKKwlBdHRyTnVtYmVyCUFudW1fbmFtZTsKKwlBdHRyTnVtYmVyCUFudW1fbmFtZXNw YWNlOworCUF0dHJOdW1iZXIJQW51bV9vaWQgPSBnZXRfb2JqZWN0X2F0dG51bV9vaWQoY2xhc3NJ ZCk7CisJYm9vbAkJaXNudWxsOworCisJY2F0YWxvZyA9IHRhYmxlX29wZW4oY2xhc3NJZCwgQWNj ZXNzU2hhcmVMb2NrKTsKKworCWNhdG9iaiA9IGdldF9jYXRhbG9nX29iamVjdF9ieV9vaWQoY2F0 YWxvZywgQW51bV9vaWQsIG9iamVjdElkKTsKKwlpZiAoIWNhdG9iaikKKwkJZWxvZyhFUlJPUiwg ImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIG9iamVjdCB3aXRoIE9JRCAldSBvZiBjYXRhbG9nIFwi JXNcIiIsCisJCQkgb2JqZWN0SWQsIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGNhdGFsb2cpKTsK KwlBbnVtX25hbWUgPSBnZXRfb2JqZWN0X2F0dG51bV9uYW1lKGNsYXNzSWQpOworCUFudW1fbmFt ZXNwYWNlID0gZ2V0X29iamVjdF9hdHRudW1fbmFtZXNwYWNlKGNsYXNzSWQpOworCisJb2JqX25z cCA9IGhlYXBfZ2V0YXR0cihjYXRvYmosIEFudW1fbmFtZXNwYWNlLCBSZWxhdGlvbkdldERlc2Ny KGNhdGFsb2cpLAorCQkJCQkJICAgJmlzbnVsbCk7CisJaWYgKGlzbnVsbCkKKwkJZWxvZyhFUlJP UiwgIm51bGwgbmFtZXNwYWNlIGZvciBvYmplY3QgJXUiLCBvYmplY3RJZCk7CisKKwlvYmpfbmFt ZSA9IGhlYXBfZ2V0YXR0cihjYXRvYmosIEFudW1fbmFtZSwgUmVsYXRpb25HZXREZXNjcihjYXRh bG9nKSwKKwkJCQkJCQkmaXNudWxsKTsKKwlpZiAoaXNudWxsKQorCQllbG9nKEVSUk9SLCAibnVs bCBhdHRyaWJ1dGUgbmFtZSBmb3Igb2JqZWN0ICV1Iiwgb2JqZWN0SWQpOworCisJbmV3X2pzb25i X2Zvcl9xdWFsbmFtZShzdGF0ZSwgRGF0dW1HZXRPYmplY3RJZChvYmpfbnNwKSwKKwkJCQkJCSAg IE5hbWVTdHIoKkRhdHVtR2V0TmFtZShvYmpfbmFtZSkpLAorCQkJCQkJICAga2V5TmFtZSwgY3Jl YXRlT2JqZWN0KTsKKwl0YWJsZV9jbG9zZShjYXRhbG9nLCBBY2Nlc3NTaGFyZUxvY2spOworfQor CisvKgorICogQSBoZWxwZXIgcm91dGluZSB0byBpbnNlcnQga2V5OnZhbHVlIHdoZXJlIHZhbHVl IGlzIGFycmF5IG9mIHF1YWxuYW1lIHRvCisgKiB0aGUgb3V0cHV0IHBhcnNlIHN0YXRlLgorICov CitzdGF0aWMgdm9pZAorbmV3X2pzb25iQXJyYXlfZm9yX3F1YWxuYW1lX2lkKEpzb25iUGFyc2VT dGF0ZSAqc3RhdGUsCisJCQkJCQkJICAgY2hhciAqa2V5bmFtZSwgTGlzdCAqYXJyYXkpCit7CisJ TGlzdENlbGwgICAqbGM7CisKKwkvKiBQdXNoIHRoZSBrZXkgZmlyc3QgKi8KKwlpbnNlcnRfanNv bmJfa2V5KHN0YXRlLCBrZXluYW1lKTsKKworCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JF R0lOX0FSUkFZLCBOVUxMKTsKKworCS8qIFB1c2ggdGhlIGFycmF5IGVsZW1lbnRzIG5vdyAqLwor CWZvcmVhY2gobGMsIGFycmF5KQorCQluZXdfanNvbmJfZm9yX3F1YWxuYW1lX2lkKHN0YXRlLCBS ZWxhdGlvblJlbGF0aW9uSWQsIGxmaXJzdF9vaWQobGMpLAorCQkJCQkJCQkgIE5VTEwsIHRydWUp OworCisJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfRU5EX0FSUkFZLCBOVUxMKTsKK30KKwor LyoKKyAqIEEgaGVscGVyIHJvdXRpbmUgdG8gaW5zZXJ0IGNvbGxhdGUgb2JqZWN0IGZvciBjb2x1 bW4KKyAqIGRlZmluaXRpb24gdG8gdGhlIG91dHB1dCBwYXJzZSBzdGF0ZS4KKyAqLworc3RhdGlj IHZvaWQKK2luc2VydF9jb2xsYXRlX29iamVjdChKc29uYlBhcnNlU3RhdGUgKnN0YXRlLCBjaGFy ICpwYXJlbnRLZXksIGNoYXIgKmZtdCwKKwkJCQkJICBPaWQgY2xhc3NJZCwgT2lkIG9iamVjdElk LCBjaGFyICprZXkpCit7CisJLyoKKwkgKiBJbnNlcnQgcGFyZW50IGtleSBmb3Igd2hpY2ggd2Ug YXJlIGdvaW5nIHRvIGNyZWF0ZSB2YWx1ZSBvYmplY3QgaGVyZS4KKwkgKi8KKwlpZiAocGFyZW50 S2V5KQorCQlpbnNlcnRfanNvbmJfa2V5KHN0YXRlLCBwYXJlbnRLZXkpOworCisJcHVzaEpzb25i VmFsdWUoJnN0YXRlLCBXSkJfQkVHSU5fT0JKRUNULCBOVUxMKTsKKworCW5ld19qc29uYl9WQShz dGF0ZSwgMSwgImZtdCIsIGpidlN0cmluZywgZm10KTsKKworCS8qIHB1c2ggb2JqZWN0IG5vdyAq LworCW5ld19qc29uYl9mb3JfcXVhbG5hbWVfaWQoc3RhdGUsIGNsYXNzSWQsIG9iamVjdElkLCBr ZXksIHRydWUpOworCisJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfRU5EX09CSkVDVCwgTlVM TCk7Cit9CisKKy8qCisgKiBBIGhlbHBlciByb3V0aW5lIHRvIGluc2VydCBpZGVudGl0eSBvYmpl Y3QgZm9yIHRoZSB0YWJsZSBkZWZpbml0aW9uCisgKiB0byB0aGUgb3V0cHV0IHBhcnNlIHN0YXRl LgorICovCitzdGF0aWMgdm9pZAoraW5zZXJ0X2lkZW50aXR5X29iamVjdChKc29uYlBhcnNlU3Rh dGUgKnN0YXRlLCBPaWQgbnNwaWQsIGNoYXIgKnJlbG5hbWUpCit7CisJbmV3X2pzb25iX2Zvcl9x dWFsbmFtZShzdGF0ZSwgbnNwaWQsIHJlbG5hbWUsICJpZGVudGl0eSIsIHRydWUpOworfQorCisv KgorICogRGVwYXJzZSB0aGUgc2VxdWVuY2UgQ0FDSEUgb3B0aW9uIHRvIEpzb25iCisgKgorICog VmVyYm9zZSBzeW50YXgKKyAqIENBQ0hFICV7dmFsdWV9CisgKi8KK3N0YXRpYyBpbmxpbmUgdm9p ZAorZGVwYXJzZV9TZXFfQ2FjaGUoSnNvbmJQYXJzZVN0YXRlICpzdGF0ZSwgRm9ybV9wZ19zZXF1 ZW5jZSBzZXFkYXRhKQoreworCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lOX09CSkVD VCwgTlVMTCk7CisJbmV3X2pzb25iX1ZBKHN0YXRlLCAzLAorCQkJCSAiZm10IiwgamJ2U3RyaW5n LCAiQ0FDSEUgJXt2YWx1ZX1zIiwKKwkJCQkgImNsYXVzZSIsIGpidlN0cmluZywgImNhY2hlIiwK KwkJCQkgInZhbHVlIiwgamJ2U3RyaW5nLAorCQkJCSBwc3ByaW50ZihJTlQ2NF9GT1JNQVQsIHNl cWRhdGEtPnNlcWNhY2hlKSk7CisJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfRU5EX09CSkVD VCwgTlVMTCk7Cit9CisKKy8qCisgKiBEZXBhcnNlIHRoZSBzZXF1ZW5jZSBDWUNMRSBvcHRpb24g dG8gSnNvbmIuCisgKgorICogVmVyYm9zZSBzeW50YXgKKyAqICV7bm99cyBDWUNMRQorICovCitz dGF0aWMgaW5saW5lIHZvaWQKK2RlcGFyc2VfU2VxX0N5Y2xlKEpzb25iUGFyc2VTdGF0ZSAqc3Rh dGUsIEZvcm1fcGdfc2VxdWVuY2Ugc2VxZGF0YSkKK3sKKwlTdHJpbmdJbmZvRGF0YSBmbXRTdHI7 CisKKwlpbml0U3RyaW5nSW5mbygmZm10U3RyKTsKKworCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwg V0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CisKKwlpZiAoIXNlcWRhdGEtPnNlcWN5Y2xlKQorCXsK KwkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmZm10U3RyLCAiJXtub31zICIpOworCQluZXdfanNv bmJfVkEoc3RhdGUsIDEsICJubyIsIGpidlN0cmluZywgIk5PIik7CisJfQorCisJYXBwZW5kU3Ry aW5nSW5mb1N0cmluZygmZm10U3RyLCAiQ1lDTEUiKTsKKwluZXdfanNvbmJfVkEoc3RhdGUsIDIs CisJCQkJICJmbXQiLCBqYnZTdHJpbmcsIGZtdFN0ci5kYXRhLAorCQkJCSAiY2xhdXNlIiwgamJ2 U3RyaW5nLCAiY3ljbGUiKTsKKworCXBmcmVlKGZtdFN0ci5kYXRhKTsKKwlwdXNoSnNvbmJWYWx1 ZSgmc3RhdGUsIFdKQl9FTkRfT0JKRUNULCBOVUxMKTsKK30KKworLyoKKyAqIERlcGFyc2UgdGhl IHNlcXVlbmNlIElOQ1JFTUVOVCBCWSBvcHRpb24gdG8gSnNvbmIKKyAqCisgKiBWZXJib3NlIHN5 bnRheAorICogSU5DUkVNRU5UIEJZICV7dmFsdWV9cworICovCitzdGF0aWMgaW5saW5lIHZvaWQK K2RlcGFyc2VfU2VxX0luY3JlbWVudEJ5KEpzb25iUGFyc2VTdGF0ZSAqc3RhdGUsIEZvcm1fcGdf c2VxdWVuY2Ugc2VxZGF0YSkKK3sKKwlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9P QkpFQ1QsIE5VTEwpOworCW5ld19qc29uYl9WQShzdGF0ZSwgMywKKwkJCQkgImZtdCIsIGpidlN0 cmluZywgIklOQ1JFTUVOVCBCWSAle3ZhbHVlfXMiLAorCQkJCSAiY2xhdXNlIiwgamJ2U3RyaW5n LCAic2VxaW5jcmVtZW50IiwKKwkJCQkgInZhbHVlIiwgamJ2U3RyaW5nLAorCQkJCSBwc3ByaW50 ZihJTlQ2NF9GT1JNQVQsIHNlcWRhdGEtPnNlcWluY3JlbWVudCkpOworCXB1c2hKc29uYlZhbHVl KCZzdGF0ZSwgV0pCX0VORF9PQkpFQ1QsIE5VTEwpOworfQorCisvKgorICogRGVwYXJzZSB0aGUg c2VxdWVuY2UgTUFYVkFMVUUgb3B0aW9uIHRvIEpzb25iLgorICoKKyAqIFZlcmJvc2Ugc3ludGF4 CisgKiBNQVhWQUxVRSAle3ZhbHVlfXMKKyAqLworc3RhdGljIGlubGluZSB2b2lkCitkZXBhcnNl X1NlcV9NYXh2YWx1ZShKc29uYlBhcnNlU3RhdGUgKnN0YXRlLCBGb3JtX3BnX3NlcXVlbmNlIHNl cWRhdGEpCit7CisJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfQkVHSU5fT0JKRUNULCBOVUxM KTsKKwluZXdfanNvbmJfVkEoc3RhdGUsIDMsCisJCQkJICJmbXQiLCBqYnZTdHJpbmcsICJNQVhW QUxVRSAle3ZhbHVlfXMiLAorCQkJCSAiY2xhdXNlIiwgamJ2U3RyaW5nLCAibWF4dmFsdWUiLAor CQkJCSAidmFsdWUiLCBqYnZTdHJpbmcsCisJCQkJIHBzcHJpbnRmKElOVDY0X0ZPUk1BVCwgc2Vx ZGF0YS0+c2VxbWF4KSk7CisJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfRU5EX09CSkVDVCwg TlVMTCk7Cit9CisKKy8qCisgKiBEZXBhcnNlIHRoZSBzZXF1ZW5jZSBNSU5WQUxVRSBvcHRpb24g dG8gSnNvbmIKKyAqCisgKiBWZXJib3NlIHN5bnRheAorICogTUlOVkFMVUUgJXt2YWx1ZX1zCisg Ki8KK3N0YXRpYyBpbmxpbmUgdm9pZAorZGVwYXJzZV9TZXFfTWludmFsdWUoSnNvbmJQYXJzZVN0 YXRlICpzdGF0ZSwgRm9ybV9wZ19zZXF1ZW5jZSBzZXFkYXRhKQoreworCXB1c2hKc29uYlZhbHVl KCZzdGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CisJbmV3X2pzb25iX1ZBKHN0YXRlLCAz LAorCQkJCSAiZm10IiwgamJ2U3RyaW5nLCAiTUlOVkFMVUUgJXt2YWx1ZX1zIiwKKwkJCQkgImNs YXVzZSIsIGpidlN0cmluZywgIm1pbnZhbHVlIiwKKwkJCQkgInZhbHVlIiwgamJ2U3RyaW5nLAor CQkJCSBwc3ByaW50ZihJTlQ2NF9GT1JNQVQsIHNlcWRhdGEtPnNlcW1pbikpOworCXB1c2hKc29u YlZhbHVlKCZzdGF0ZSwgV0pCX0VORF9PQkpFQ1QsIE5VTEwpOworfQorCisvKgorICogRGVwYXJz ZSB0aGUgc2VxdWVuY2UgT1dORUQgQlkgY29tbWFuZC4KKyAqCisgKiBWZXJib3NlIHN5bnRheAor ICogT1dORUQgQlkgJXtvd25lcn1ECisgKi8KK3N0YXRpYyB2b2lkCitkZXBhcnNlX1NlcV9Pd25l ZEJ5KEpzb25iUGFyc2VTdGF0ZSAqc3RhdGUsIE9pZCBzZXF1ZW5jZUlkKQoreworCVJlbGF0aW9u CWRlcFJlbDsKKwlTeXNTY2FuRGVzYyBzY2FuOworCVNjYW5LZXlEYXRhIGtleXNbM107CisJSGVh cFR1cGxlCXR1cGxlOworCWJvb2wJCWVsZW1fZm91bmQgUEdfVVNFRF9GT1JfQVNTRVJUU19PTkxZ ID0gZmFsc2U7CisKKwlkZXBSZWwgPSB0YWJsZV9vcGVuKERlcGVuZFJlbGF0aW9uSWQsIEFjY2Vz c1NoYXJlTG9jayk7CisJU2NhbktleUluaXQoJmtleXNbMF0sCisJCQkJQW51bV9wZ19kZXBlbmRf Y2xhc3NpZCwKKwkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1iZXIsIEZfT0lERVEsCisJCQkJT2JqZWN0 SWRHZXREYXR1bShSZWxhdGlvblJlbGF0aW9uSWQpKTsKKwlTY2FuS2V5SW5pdCgma2V5c1sxXSwK KwkJCQlBbnVtX3BnX2RlcGVuZF9vYmppZCwKKwkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1iZXIsIEZf T0lERVEsCisJCQkJT2JqZWN0SWRHZXREYXR1bShzZXF1ZW5jZUlkKSk7CisJU2NhbktleUluaXQo JmtleXNbMl0sCisJCQkJQW51bV9wZ19kZXBlbmRfb2Jqc3ViaWQsCisJCQkJQlRFcXVhbFN0cmF0 ZWd5TnVtYmVyLCBGX0lOVDRFUSwKKwkJCQlJbnQzMkdldERhdHVtKDApKTsKKworCXNjYW4gPSBz eXN0YWJsZV9iZWdpbnNjYW4oZGVwUmVsLCBEZXBlbmREZXBlbmRlckluZGV4SWQsIHRydWUsCisJ CQkJCQkJICBOVUxMLCAzLCBrZXlzKTsKKwl3aGlsZSAoSGVhcFR1cGxlSXNWYWxpZCh0dXBsZSA9 IHN5c3RhYmxlX2dldG5leHQoc2NhbikpKQorCXsKKwkJT2lkCQkJb3duZXJJZDsKKwkJRm9ybV9w Z19kZXBlbmQgZGVwZm9ybTsKKwkJY2hhcgkgICAqY29sbmFtZTsKKworCQlkZXBmb3JtID0gKEZv cm1fcGdfZGVwZW5kKSBHRVRTVFJVQ1QodHVwbGUpOworCisJCS8qIE9ubHkgY29uc2lkZXIgQVVU TyBkZXBlbmRlbmNpZXMgb24gcGdfY2xhc3MgKi8KKwkJaWYgKGRlcGZvcm0tPmRlcHR5cGUgIT0g REVQRU5ERU5DWV9BVVRPKQorCQkJY29udGludWU7CisJCWlmIChkZXBmb3JtLT5yZWZjbGFzc2lk ICE9IFJlbGF0aW9uUmVsYXRpb25JZCkKKwkJCWNvbnRpbnVlOworCQlpZiAoZGVwZm9ybS0+cmVm b2Jqc3ViaWQgPD0gMCkKKwkJCWNvbnRpbnVlOworCisJCW93bmVySWQgPSBkZXBmb3JtLT5yZWZv YmppZDsKKwkJY29sbmFtZSA9IGdldF9hdHRuYW1lKG93bmVySWQsIGRlcGZvcm0tPnJlZm9ianN1 YmlkLCBmYWxzZSk7CisKKwkJLyogbWFyayB0aGUgYmVnaW4gb2Ygb3duZXIncyBkZWZpbml0aW9u IG9iamVjdCAqLworCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9PQkpFQ1QsIE5V TEwpOworCisJCW5ld19qc29uYl9WQShzdGF0ZSwgMiwKKwkJCQkJICJmbXQiLCBqYnZTdHJpbmcs ICJPV05FRCBCWSAle293bmVyfUQiLAorCQkJCQkgImNsYXVzZSIsIGpidlN0cmluZywgIm93bmVk Iik7CisKKwkJLyogb3duZXIga2V5ICovCisJCWluc2VydF9qc29uYl9rZXkoc3RhdGUsICJvd25l ciIpOworCisJCS8qIG93bmVyIHZhbHVlIGJlZ2luICovCisJCXB1c2hKc29uYlZhbHVlKCZzdGF0 ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CisKKwkJbmV3X2pzb25iX2Zvcl9xdWFsbmFtZV9p ZChzdGF0ZSwgUmVsYXRpb25SZWxhdGlvbklkLAorCQkJCQkJCQkgIG93bmVySWQsIE5VTEwsIGZh bHNlKTsKKwkJbmV3X2pzb25iX1ZBKHN0YXRlLCAxLCAiYXR0cm5hbWUiLCBqYnZTdHJpbmcsIGNv bG5hbWUpOworCisJCS8qIG93bmVyIHZhbHVlIGVuZCAqLworCQlwdXNoSnNvbmJWYWx1ZSgmc3Rh dGUsIFdKQl9FTkRfT0JKRUNULCBOVUxMKTsKKworCQkvKiBtYXJrIHRoZSBlbmQgb2Ygb3duZXIn cyBkZWZpbml0aW9uIG9iamVjdCAqLworCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9FTkRf T0JKRUNULCBOVUxMKTsKKworI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKKwkJZWxlbV9mb3Vu ZCA9IHRydWU7CisjZW5kaWYKKwl9CisKKwlzeXN0YWJsZV9lbmRzY2FuKHNjYW4pOworCXJlbGF0 aW9uX2Nsb3NlKGRlcFJlbCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCS8qCisJICogSWYgdGhlcmUn cyBubyBvd25lciBjb2x1bW4sIGFzc2VydC4gVGhlIGNhbGxlciBtdXN0IGhhdmUgY2hlY2tlZAor CSAqIHByZXNlbmNlIG9mIG93bmVkX2J5IGVsZW1lbnQgYmVmb3JlIGludm9raW5nIHRoaXMuCisJ ICovCisJQXNzZXJ0KGVsZW1fZm91bmQpOworfQorCisvKgorICogRGVwYXJzZSB0aGUgc2VxdWVu Y2UgU1RBUlQgV0lUSCBvcHRpb24gdG8gSnNvbmIuCisgKgorICogVmVyYm9zZSBzeW50YXgKKyAq IFNUQVJUIFdJVEggJXt2YWx1ZX1zCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorZGVwYXJzZV9T ZXFfU3RhcnR3aXRoKEpzb25iUGFyc2VTdGF0ZSAqc3RhdGUsIEZvcm1fcGdfc2VxdWVuY2Ugc2Vx ZGF0YSkKK3sKKwlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9PQkpFQ1QsIE5VTEwp OworCW5ld19qc29uYl9WQShzdGF0ZSwgMywKKwkJCQkgImZtdCIsIGpidlN0cmluZywgIlNUQVJU IFdJVEggJXt2YWx1ZX1zIiwKKwkJCQkgImNsYXVzZSIsIGpidlN0cmluZywgInN0YXJ0IiwKKwkJ CQkgInZhbHVlIiwgamJ2U3RyaW5nLAorCQkJCSBwc3ByaW50ZihJTlQ2NF9GT1JNQVQsIHNlcWRh dGEtPnNlcXN0YXJ0KSk7CisJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfRU5EX09CSkVDVCwg TlVMTCk7Cit9CisKKy8qCisgKiBEZXBhcnNlIHRoZSBzZXF1ZW5jZSBSRVNUQVJUIG9wdGlvbiB0 byBKc29uYgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBSRVNUQVJUICV7dmFsdWV9cworICov CitzdGF0aWMgaW5saW5lIHZvaWQKK2RlcGFyc2VfU2VxX1Jlc3RhcnQoSnNvbmJQYXJzZVN0YXRl ICpzdGF0ZSwgaW50NjQgbGFzdF92YWx1ZSkKK3sKKwlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdK Ql9CRUdJTl9PQkpFQ1QsIE5VTEwpOworCW5ld19qc29uYl9WQShzdGF0ZSwgMywKKwkJCQkgImZt dCIsIGpidlN0cmluZywgIlJFU1RBUlQgJXt2YWx1ZX1zIiwKKwkJCQkgImNsYXVzZSIsIGpidlN0 cmluZywgInJlc3RhcnQiLAorCQkJCSAidmFsdWUiLCBqYnZTdHJpbmcsCisJCQkJIHBzcHJpbnRm KElOVDY0X0ZPUk1BVCwgbGFzdF92YWx1ZSkpOworCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pC X0VORF9PQkpFQ1QsIE5VTEwpOworfQorCisvKgorICogRGVwYXJzZSB0aGUgc2VxdWVuY2UgQVMg b3B0aW9uLgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBBUyAle3NlcXR5cGV9VAorICovCitz dGF0aWMgaW5saW5lIHZvaWQKK2RlcGFyc2VfU2VxX0FzKEpzb25iUGFyc2VTdGF0ZSAqc3RhdGUs IEZvcm1fcGdfc2VxdWVuY2Ugc2VxZGF0YSkKK3sKKwlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdK Ql9CRUdJTl9PQkpFQ1QsIE5VTEwpOworCW5ld19qc29uYl9WQShzdGF0ZSwgMSwgImZtdCIsIGpi dlN0cmluZywgIkFTICV7c2VxdHlwZX1UIik7CisJbmV3X2pzb25iX2Zvcl90eXBlKHN0YXRlLCAi c2VxdHlwZSIsIHNlcWRhdGEtPnNlcXR5cGlkLCAtMSk7CisJcHVzaEpzb25iVmFsdWUoJnN0YXRl LCBXSkJfRU5EX09CSkVDVCwgTlVMTCk7Cit9CisKKy8qCisgKiBEZXBhcnNlIHRoZSBkZWZpbml0 aW9uIG9mIGNvbHVtbiBpZGVudGl0eSB0byBKc29uYi4KKyAqCisgKiBWZXJib3NlIHN5bnRheAor ICogJXtpZGVudGl0eV90eXBlfXMgKCAle3NlcV9kZWZpbml0aW9uOiB9cyApCisgKiB3aGVyZSBp ZGVudGl0eV90eXBlIGlzOiAiR0VORVJBVEVEICV7b3B0aW9ufXMgQVMgSURFTlRJVFkiCisgKi8K K3N0YXRpYyB2b2lkCitkZXBhcnNlX0NvbHVtbklkZW50aXR5KEpzb25iUGFyc2VTdGF0ZSAqc3Rh dGUsIGNoYXIgKnBhcmVudEtleSwKKwkJCQkJICAgT2lkIHNlcXJlbGlkLCBjaGFyIGlkZW50aXR5 KQoreworCUZvcm1fcGdfc2VxdWVuY2Ugc2VxZm9ybTsKKwlTZXF1ZW5jZV92YWx1ZXMgKnNlcXZh bHVlczsKKwlTdHJpbmdJbmZvRGF0YSBmbXRTdHI7CisKKwlpbml0U3RyaW5nSW5mbygmZm10U3Ry KTsKKworCS8qCisJICogSW5zZXJ0IHBhcmVudCBrZXkgZm9yIHdoaWNoIHdlIGFyZSBnb2luZyB0 byBjcmVhdGUgdmFsdWUgb2JqZWN0IGhlcmUuCisJICovCisJaWYgKHBhcmVudEtleSkKKwkJaW5z ZXJ0X2pzb25iX2tleShzdGF0ZSwgcGFyZW50S2V5KTsKKworCS8qIGNyZWF0ZSBvYmplY3Qgbm93 IGZvciB2YWx1ZSBvZiBpZGVudGl0eV9jb2x1bW4gKi8KKwlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUs IFdKQl9CRUdJTl9PQkpFQ1QsIE5VTEwpOworCisJLyogaWRlbnRpdHlfdHlwZSBvYmplY3QgY3Jl YXRpb24gKi8KKwlpZiAoaWRlbnRpdHkgPT0gQVRUUklCVVRFX0lERU5USVRZX0FMV0FZUyB8fAor CQlpZGVudGl0eSA9PSBBVFRSSUJVVEVfSURFTlRJVFlfQllfREVGQVVMVCkKKwl7CisJCWFwcGVu ZFN0cmluZ0luZm9TdHJpbmcoJmZtdFN0ciwgIiV7aWRlbnRpdHlfdHlwZX1zIik7CisJCWluc2Vy dF9qc29uYl9rZXkoc3RhdGUsICJpZGVudGl0eV90eXBlIik7CisKKwkJcHVzaEpzb25iVmFsdWUo JnN0YXRlLCBXSkJfQkVHSU5fT0JKRUNULCBOVUxMKTsKKworCQluZXdfanNvbmJfVkEoc3RhdGUs IDIsCisJCQkJCSAiZm10IiwgamJ2U3RyaW5nLAorCQkJCQkgIkdFTkVSQVRFRCAle29wdGlvbn1z IEFTIElERU5USVRZIiwKKwkJCQkJICJvcHRpb24iLCBqYnZTdHJpbmcsCisJCQkJCSAoaWRlbnRp dHkgPT0gQVRUUklCVVRFX0lERU5USVRZX0FMV0FZUyA/CisJCQkJCSAgIkFMV0FZUyIgOiAiQlkg REVGQVVMVCIpKTsKKwkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfRU5EX09CSkVDVCwgTlVM TCk7CisJfQorCisJLyogc2VxX2RlZmluaXRpb24gYXJyYXkgb2JqZWN0IGNyZWF0aW9uICovCisJ aW5zZXJ0X2pzb25iX2tleShzdGF0ZSwgInNlcV9kZWZpbml0aW9uIik7CisKKwlhcHBlbmRTdHJp bmdJbmZvU3RyaW5nKCZmbXRTdHIsICIgKCAle3NlcV9kZWZpbml0aW9uOiB9cyApIik7CisKKwlw dXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9BUlJBWSwgTlVMTCk7CisKKwlzZXF2YWx1 ZXMgPSBnZXRfc2VxdWVuY2VfdmFsdWVzKHNlcXJlbGlkKTsKKwlzZXFmb3JtID0gc2VxdmFsdWVz LT5zZXFmb3JtOworCisJLyogRGVmaW5pdGlvbiBlbGVtZW50cyAqLworCWRlcGFyc2VfU2VxX0Nh Y2hlKHN0YXRlLCBzZXFmb3JtKTsKKwlkZXBhcnNlX1NlcV9DeWNsZShzdGF0ZSwgc2VxZm9ybSk7 CisJZGVwYXJzZV9TZXFfSW5jcmVtZW50Qnkoc3RhdGUsIHNlcWZvcm0pOworCWRlcGFyc2VfU2Vx X01pbnZhbHVlKHN0YXRlLCBzZXFmb3JtKTsKKwlkZXBhcnNlX1NlcV9NYXh2YWx1ZShzdGF0ZSwg c2VxZm9ybSk7CisJZGVwYXJzZV9TZXFfU3RhcnR3aXRoKHN0YXRlLCBzZXFmb3JtKTsKKwlkZXBh cnNlX1NlcV9SZXN0YXJ0KHN0YXRlLCBzZXF2YWx1ZXMtPmxhc3RfdmFsdWUpOworCS8qIFdlIHB1 cnBvc2VmdWxseSBkbyBub3QgZW1pdCBPV05FRCBCWSBoZXJlICovCisKKwlwdXNoSnNvbmJWYWx1 ZSgmc3RhdGUsIFdKQl9FTkRfQVJSQVksIE5VTEwpOworCisJLyogV2UgaGF2ZSBmdWxsIGZtdCBi eSBub3csIHNvIGFkZCBqc29uYiBlbGVtZW50IGZvciB0aGF0ICovCisJbmV3X2pzb25iX1ZBKHN0 YXRlLCAxLCAiZm10IiwgamJ2U3RyaW5nLCBmbXRTdHIuZGF0YSk7CisKKwlwZnJlZShmbXRTdHIu ZGF0YSk7CisKKwkvKiBlbmQgb2YgaWRlbmRpdHlfY29sdW1uIG9iamVjdCAqLworCXB1c2hKc29u YlZhbHVlKCZzdGF0ZSwgV0pCX0VORF9PQkpFQ1QsIE5VTEwpOworfQorCisvKgorICogRGVwYXJz ZSBhIENvbHVtbkRlZiBub2RlIHdpdGhpbiBhIHJlZ3VsYXIgKG5vbi10eXBlZCkgdGFibGUgY3Jl YXRpb24uCisgKgorICogTk9UIE5VTEwgY29uc3RyYWludHMgaW4gdGhlIGNvbHVtbiBkZWZpbml0 aW9uIGFyZSBlbWl0dGVkIGRpcmVjdGx5IGluIHRoZQorICogY29sdW1uIGRlZmluaXRpb24gYnkg dGhpcyByb3V0aW5lOyBvdGhlciBjb25zdHJhaW50cyBtdXN0IGJlIGVtaXR0ZWQKKyAqIGVsc2V3 aGVyZSAodGhlIGluZm8gaW4gdGhlIHBhcnNlIG5vZGUgaXMgaW5jb21wbGV0ZSBhbnl3YXkpLgor ICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiAiJXtuYW1lfUkgJXtjb2x0eXBlfVQgU1RPUkFHRSAl e2NvbHN0b3JhZ2V9cyAle2NvbXByZXNzaW9ufXMgJXtjb2xsYXRpb259cworICogICV7bm90X251 bGx9cyAle2RlZmF1bHR9cyAle2lkZW50aXR5X2NvbHVtbn1zICV7Z2VuZXJhdGVkX2NvbHVtbn1z IgorICovCitzdGF0aWMgdm9pZAorZGVwYXJzZV9Db2x1bW5EZWYoSnNvbmJQYXJzZVN0YXRlICpz dGF0ZSwgUmVsYXRpb24gcmVsYXRpb24sCisJCQkJICBMaXN0ICpkcGNvbnRleHQsIGJvb2wgY29t cG9zaXRlLCBDb2x1bW5EZWYgKmNvbGRlZikKK3sKKwlPaWQJCQlyZWxpZCA9IFJlbGF0aW9uR2V0 UmVsaWQocmVsYXRpb24pOworCUhlYXBUdXBsZQlhdHRyVHVwOworCUZvcm1fcGdfYXR0cmlidXRl IGF0dHJGb3JtOworCU9pZAkJCXR5cGlkOworCWludDMyCQl0eXBtb2Q7CisJT2lkCQkJdHlwY29s bGF0aW9uOworCWJvb2wJCXNhd19ub3RudWxsOworCUxpc3RDZWxsICAgKmNlbGw7CisJU3RyaW5n SW5mb0RhdGEgZm10U3RyOworCisJaW5pdFN0cmluZ0luZm8oJmZtdFN0cik7CisKKwkvKgorCSAq IEluaGVyaXRlZCBjb2x1bW5zIHdpdGhvdXQgbG9jYWwgZGVmaW5pdGlvbnMgc2hvdWxkIGJlIHNr aXBwZWQuIFdlIGRvbid0CisJICogd2FudCB0aG9zZSB0byBiZSBwYXJ0IG9mIGZpbmFsIHN0cmlu Zy4KKwkgKi8KKwlpZiAoIWNvbGRlZi0+aXNfbG9jYWwpCisJCXJldHVybjsKKworCWF0dHJUdXAg PSBTZWFyY2hTeXNDYWNoZUF0dE5hbWUocmVsaWQsIGNvbGRlZi0+Y29sbmFtZSk7CisJaWYgKCFI ZWFwVHVwbGVJc1ZhbGlkKGF0dHJUdXApKQorCQllbG9nKEVSUk9SLCAiY291bGQgbm90IGZpbmQg Y2FjaGUgZW50cnkgZm9yIGNvbHVtbiBcIiVzXCIgb2YgcmVsYXRpb24gJXUiLAorCQkJIGNvbGRl Zi0+Y29sbmFtZSwgcmVsaWQpOworCWF0dHJGb3JtID0gKEZvcm1fcGdfYXR0cmlidXRlKSBHRVRT VFJVQ1QoYXR0clR1cCk7CisKKwlnZXRfYXR0dHlwZXR5cG1vZGNvbGwocmVsaWQsIGF0dHJGb3Jt LT5hdHRudW0sCisJCQkJCQkgICZ0eXBpZCwgJnR5cG1vZCwgJnR5cGNvbGxhdGlvbik7CisKKwkv KiBzdGFydCBtYWtpbmcgY29sdW1uIG9iamVjdCAqLworCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwg V0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CisKKwkvKiBjcmVhdGUgbmFtZSBhbmQgdHlwZSBlbGVt ZW50cyBmb3IgY29sdW1uICovCisJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmZm10U3RyLCAiJXtu YW1lfUkiKTsKKwluZXdfanNvbmJfVkEoc3RhdGUsIDIsCisJCQkJICJuYW1lIiwgamJ2U3RyaW5n LCBjb2xkZWYtPmNvbG5hbWUsCisJCQkJICJ0eXBlIiwgamJ2U3RyaW5nLCAiY29sdW1uIik7CisK KwkvKgorCSAqIGNyZWF0ZSBjb2x0eXBlIG9iamVjdCBoYXZpbmcgNCBlbGVtZW50czogc2NoZW1h bmFtZSwgdHlwZW5hbWUsIHR5cGVtb2QsCisJICogdHlwZWFycmF5CisJICovCisJYXBwZW5kU3Ry aW5nSW5mb1N0cmluZygmZm10U3RyLCAiICV7Y29sdHlwZX1UIik7CisJbmV3X2pzb25iX2Zvcl90 eXBlKHN0YXRlLCAiY29sdHlwZSIsIHR5cGlkLCB0eXBtb2QpOworCisJLyogU1RPUkFHRSBjbGF1 c2UgKi8KKwlpZiAoIWNvbXBvc2l0ZSkKKwl7CisJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmZt dFN0ciwgIiBTVE9SQUdFICV7Y29sc3RvcmFnZX1zIik7CisJCW5ld19qc29uYl9WQShzdGF0ZSwg MSwKKwkJCQkJICJjb2xzdG9yYWdlIiwgamJ2U3RyaW5nLAorCQkJCQkgc3RvcmFnZV9uYW1lKGF0 dHJGb3JtLT5hdHRzdG9yYWdlKSk7CisJfQorCisJLyogQ09NUFJFU1NJT04gY2xhdXNlICovCisJ aWYgKGNvbGRlZi0+Y29tcHJlc3Npb24pCisJeworCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZm bXRTdHIsICIgJXtjb21wcmVzc2lvbn1zIik7CisJCWluc2VydF9qc29uYl9rZXkoc3RhdGUsICJj b21wcmVzc2lvbiIpOworCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9PQkpFQ1Qs IE5VTEwpOworCQluZXdfanNvbmJfVkEoc3RhdGUsIDIsCisJCQkJCSAiZm10IiwgamJ2U3RyaW5n LCAiQ09NUFJFU1NJT04gJXtjb21wcmVzc2lvbl9tZXRob2R9SSIsCisJCQkJCSAiY29tcHJlc3Np b25fbWV0aG9kIiwgamJ2U3RyaW5nLCBjb2xkZWYtPmNvbXByZXNzaW9uKTsKKwkJcHVzaEpzb25i VmFsdWUoJnN0YXRlLCBXSkJfRU5EX09CSkVDVCwgTlVMTCk7CisJfQorCisJLyogQ09MTEFURSBj bGF1c2UgKi8KKwlpZiAoT2lkSXNWYWxpZCh0eXBjb2xsYXRpb24pKQorCXsKKwkJYXBwZW5kU3Ry aW5nSW5mb1N0cmluZygmZm10U3RyLCAiICV7Y29sbGF0aW9ufXMiKTsKKwkJaW5zZXJ0X2NvbGxh dGVfb2JqZWN0KHN0YXRlLCAiY29sbGF0aW9uIiwKKwkJCQkJCQkgICJDT0xMQVRFICV7Y29sbGF0 aW9uX25hbWV9RCIsCisJCQkJCQkJICBDb2xsYXRpb25SZWxhdGlvbklkLCB0eXBjb2xsYXRpb24s CisJCQkJCQkJICAiY29sbGF0aW9uX25hbWUiKTsKKwl9CisKKwlpZiAoIWNvbXBvc2l0ZSkKKwl7 CisJCU9pZAkJCXNlcXJlbGlkID0gSW52YWxpZE9pZDsKKworCQkvKgorCQkgKiBFbWl0IGEgTk9U IE5VTEwgZGVjbGFyYXRpb24gaWYgbmVjZXNzYXJ5LiAgTm90ZSB0aGF0IHdlIGNhbm5vdAorCQkg KiB0cnVzdCBwZ19hdHRyaWJ1dGUuYXR0bm90bnVsbCBoZXJlLCBiZWNhdXNlIHRoYXQgYml0IGlz IGFsc28gc2V0CisJCSAqIHdoZW4gcHJpbWFyeSBrZXlzIGFyZSBzcGVjaWZpZWQ7IHdlIG11c3Qg bm90IGVtaXQgYSBOT1QgTlVMTAorCQkgKiBjb25zdHJhaW50IGluIHRoYXQgY2FzZSwgdW5sZXNz IGV4cGxpY2l0bHkgc3BlY2lmaWVkLiAgVGhlcmVmb3JlLAorCQkgKiB3ZSBzY2FuIHRoZSBsaXN0 IG9mIGNvbnN0cmFpbnRzIGF0dGFjaGVkIHRvIHRoaXMgY29sdW1uIHRvCisJCSAqIGRldGVybWlu ZSB3aGV0aGVyIHdlIG5lZWQgdG8gZW1pdCBhbnl0aGluZy4gKEZvcnR1bmF0ZWx5LCBOT1QgTlVM TAorCQkgKiBjb25zdHJhaW50cyBjYW5ub3QgYmUgdGFibGUgY29uc3RyYWludHMuKQorCQkgKgor CQkgKiBJbiB0aGUgQUxURVIgVEFCTEUgY2FzZXMsIHdlIGFsc28gYWRkIGEgTk9UIE5VTEwgaWYg dGhlIGNvbERlZiBpcworCQkgKiBtYXJrZWQgaXNfbm90X251bGwuCisJCSAqLworCQlzYXdfbm90 bnVsbCA9IGZhbHNlOworCQlmb3JlYWNoKGNlbGwsIGNvbGRlZi0+Y29uc3RyYWludHMpCisJCXsK KwkJCUNvbnN0cmFpbnQgKmNvbnN0ciA9IChDb25zdHJhaW50ICopIGxmaXJzdChjZWxsKTsKKwor CQkJaWYgKGNvbnN0ci0+Y29udHlwZSA9PSBDT05TVFJfTk9UTlVMTCkKKwkJCXsKKwkJCQlzYXdf bm90bnVsbCA9IHRydWU7CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKworCQkvKiBOT1QgTlVMTCAq LworCQlpZiAoc2F3X25vdG51bGwpCisJCXsKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmZt dFN0ciwgIiAle25vdF9udWxsfXMiKTsKKwkJCW5ld19qc29uYl9WQShzdGF0ZSwgMSwKKwkJCQkJ CSAibm90X251bGwiLCBqYnZTdHJpbmcsICJOT1QgTlVMTCIpOworCQl9CisKKworCQkvKiBERUZB VUxUICovCisJCWlmIChhdHRyRm9ybS0+YXR0aGFzZGVmICYmCisJCQljb2xkZWYtPmdlbmVyYXRl ZCAhPSBBVFRSSUJVVEVfR0VORVJBVEVEX1NUT1JFRCkKKwkJeworCQkJY2hhcgkgICAqZGVmc3Ry OworCisJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZmbXRTdHIsICIgJXtkZWZhdWx0fXMiKTsK KworCQkJZGVmc3RyID0gcmVsYXRpb25fZ2V0X2NvbHVtbl9kZWZhdWx0KHJlbGF0aW9uLCBhdHRy Rm9ybS0+YXR0bnVtLAorCQkJCQkJCQkJCQkJIGRwY29udGV4dCk7CisKKwkJCWluc2VydF9qc29u Yl9rZXkoc3RhdGUsICJkZWZhdWx0Iik7CisJCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9C RUdJTl9PQkpFQ1QsIE5VTEwpOworCQkJbmV3X2pzb25iX1ZBKHN0YXRlLCAyLAorCQkJCQkJICJm bXQiLCBqYnZTdHJpbmcsICJERUZBVUxUICV7ZGVmYXVsdH1zIiwKKwkJCQkJCSAiZGVmYXVsdCIs IGpidlN0cmluZywgZGVmc3RyKTsKKworCQkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfRU5E X09CSkVDVCwgTlVMTCk7CisJCX0KKworCQkvKiBJREVOVElUWSBDT0xVTU4gKi8KKwkJaWYgKGNv bGRlZi0+aWRlbnRpdHkpCisJCXsKKwkJCS8qCisJCQkgKiBGb3IgaWRlbnRpdHkgY29sdW1uLCBm aW5kIHRoZSBzZXF1ZW5jZSBvd25lZCBieSBjb2x1bW4gaW4gb3JkZXIKKwkJCSAqIHRvIGRlcGFy c2UgdGhlIGNvbHVtbiBkZWZpbml0aW9uLgorCQkJICovCisJCQlzZXFyZWxpZCA9IGdldElkZW50 aXR5U2VxdWVuY2UocmVsaWQsIGF0dHJGb3JtLT5hdHRudW0sIHRydWUpOworCQkJaWYgKE9pZElz VmFsaWQoc2VxcmVsaWQpICYmIGNvbGRlZi0+aWRlbnRpdHlTZXF1ZW5jZSkKKwkJCQlzZXFyZWxp ZCA9IFJhbmdlVmFyR2V0UmVsaWQoY29sZGVmLT5pZGVudGl0eVNlcXVlbmNlLAorCQkJCQkJCQkJ CQlOb0xvY2ssIGZhbHNlKTsKKworCQkJaWYgKE9pZElzVmFsaWQoc2VxcmVsaWQpKQorCQkJewor CQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmZtdFN0ciwgIiAle2lkZW50aXR5X2NvbHVtbn1z Iik7CisJCQkJZGVwYXJzZV9Db2x1bW5JZGVudGl0eShzdGF0ZSwgImlkZW50aXR5X2NvbHVtbiIs CisJCQkJCQkJCQkgICBzZXFyZWxpZCwKKwkJCQkJCQkJCSAgIGNvbGRlZi0+aWRlbnRpdHkpOwor CQkJfQorCQl9CisKKworCQkvKiBHRU5FUkFURUQgQ09MVU1OIEVYUFJFU1NJT04gKi8KKwkJaWYg KGNvbGRlZi0+Z2VuZXJhdGVkID09IEFUVFJJQlVURV9HRU5FUkFURURfU1RPUkVEKQorCQl7CisJ CQljaGFyCSAgICpkZWZzdHI7CisKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmZtdFN0ciwg IiAle2dlbmVyYXRlZF9jb2x1bW59cyIpOworCQkJZGVmc3RyID0gcmVsYXRpb25fZ2V0X2NvbHVt bl9kZWZhdWx0KHJlbGF0aW9uLCBhdHRyRm9ybS0+YXR0bnVtLAorCQkJCQkJCQkJCQkJIGRwY29u dGV4dCk7CisKKwkJCWluc2VydF9qc29uYl9rZXkoc3RhdGUsICJnZW5lcmF0ZWRfY29sdW1uIik7 CisJCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9PQkpFQ1QsIE5VTEwpOworCQkJ bmV3X2pzb25iX1ZBKHN0YXRlLCAyLAorCQkJCQkJICJmbXQiLCBqYnZTdHJpbmcsICJHRU5FUkFU RUQgQUxXQVlTIEFTIgorCQkJCQkJICIgKCV7Z2VuZXJhdGlvbl9leHByfXMpIFNUT1JFRCIsCisJ CQkJCQkgImdlbmVyYXRpb25fZXhwciIsIGpidlN0cmluZywgZGVmc3RyKTsKKworCQkJcHVzaEpz b25iVmFsdWUoJnN0YXRlLCBXSkJfRU5EX09CSkVDVCwgTlVMTCk7CisJCX0KKwl9CisKKwlSZWxl YXNlU3lzQ2FjaGUoYXR0clR1cCk7CisKKwkvKiBXZSBoYXZlIGZ1bGwgZm10IGJ5IG5vdywgc28g YWRkIGpzb25iIGVsZW1lbnQgZm9yIHRoYXQgKi8KKwluZXdfanNvbmJfVkEoc3RhdGUsIDEsICJm bXQiLCBqYnZTdHJpbmcsIGZtdFN0ci5kYXRhKTsKKworCXBmcmVlKGZtdFN0ci5kYXRhKTsKKwor CS8qIG1hcmsgdGhlIGVuZCBvZiBvbmUgY29sdW1uIG9iamVjdCAqLworCXB1c2hKc29uYlZhbHVl KCZzdGF0ZSwgV0pCX0VORF9PQkpFQ1QsIE5VTEwpOworfQorCisvKgorICogSGVscGVyIGZvciBk ZXBhcnNlX0NvbHVtbkRlZl90eXBlZCgpCisgKgorICogUmV0dXJucyB0cnVlIGlmIHdlIG5lZWQg dG8gZGVwYXJzZSBhIENvbHVtbkRlZiBub2RlIHdpdGhpbiBhIHR5cGVkCisgKiB0YWJsZSBjcmVh dGlvbi4KKyAqLworc3RhdGljIGJvb2wKK2RlcGFyc2VfQ29sRGVmX3R5cGVkX25lZWRlZChSZWxh dGlvbiByZWxhdGlvbiwgQ29sdW1uRGVmICpjb2xkZWYsCisJCQkJCQkJRm9ybV9wZ19hdHRyaWJ1 dGUgKmF0Rm9ybU91dCwgYm9vbCAqbm90bnVsbCkKK3sKKwlPaWQJCQlyZWxpZCA9IFJlbGF0aW9u R2V0UmVsaWQocmVsYXRpb24pOworCUhlYXBUdXBsZQlhdHRyVHVwOworCUZvcm1fcGdfYXR0cmli dXRlIGF0dHJGb3JtOworCU9pZAkJCXR5cGlkOworCWludDMyCQl0eXBtb2Q7CisJT2lkCQkJdHlw Y29sbGF0aW9uOworCWJvb2wJCXNhd19ub3RudWxsOworCUxpc3RDZWxsICAgKmNlbGw7CisKKwlh dHRyVHVwID0gU2VhcmNoU3lzQ2FjaGVBdHROYW1lKHJlbGlkLCBjb2xkZWYtPmNvbG5hbWUpOwor CWlmICghSGVhcFR1cGxlSXNWYWxpZChhdHRyVHVwKSkKKwkJZWxvZyhFUlJPUiwgImNvdWxkIG5v dCBmaW5kIGNhY2hlIGVudHJ5IGZvciBjb2x1bW4gXCIlc1wiIG9mIHJlbGF0aW9uICV1IiwKKwkJ CSBjb2xkZWYtPmNvbG5hbWUsIHJlbGlkKTsKKworCWF0dHJGb3JtID0gKEZvcm1fcGdfYXR0cmli dXRlKSBHRVRTVFJVQ1QoYXR0clR1cCk7CisKKwlpZiAoYXRGb3JtT3V0KQorCQkqYXRGb3JtT3V0 ID0gYXR0ckZvcm07CisKKwlnZXRfYXR0dHlwZXR5cG1vZGNvbGwocmVsaWQsIGF0dHJGb3JtLT5h dHRudW0sCisJCQkJCQkgICZ0eXBpZCwgJnR5cG1vZCwgJnR5cGNvbGxhdGlvbik7CisKKwkvKgor CSAqIFNlYXJjaCBmb3IgYSBOT1QgTlVMTCBkZWNsYXJhdGlvbi4gQXMgaW4gZGVwYXJzZV9Db2x1 bW5EZWYsIHdlIHJlbHkgb24KKwkgKiBmaW5kaW5nIGEgY29uc3RyYWludCBvbiB0aGUgY29sdW1u IHJhdGhlciB0aGFuIGNvbGRlZi0+aXNfbm90X251bGwuCisJICogKFRoaXMgcm91dGluZSBpcyBu ZXZlciB1c2VkIGZvciBBTFRFUiBjYXNlcy4pCisJICovCisJc2F3X25vdG51bGwgPSBmYWxzZTsK Kwlmb3JlYWNoKGNlbGwsIGNvbGRlZi0+Y29uc3RyYWludHMpCisJeworCQlDb25zdHJhaW50ICpj b25zdHIgPSAoQ29uc3RyYWludCAqKSBsZmlyc3QoY2VsbCk7CisKKwkJaWYgKGNvbnN0ci0+Y29u dHlwZSA9PSBDT05TVFJfTk9UTlVMTCkKKwkJeworCQkJc2F3X25vdG51bGwgPSB0cnVlOworCQkJ YnJlYWs7CisJCX0KKwl9CisKKwlpZiAobm90bnVsbCkKKwkJKm5vdG51bGwgPSBzYXdfbm90bnVs bDsKKworCWlmICghc2F3X25vdG51bGwgJiYgIWF0dHJGb3JtLT5hdHRoYXNkZWYpCisJeworCQlS ZWxlYXNlU3lzQ2FjaGUoYXR0clR1cCk7CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwlSZWxlYXNl U3lzQ2FjaGUoYXR0clR1cCk7CisJcmV0dXJuIHRydWU7Cit9CisKKy8qCisgKiBEZXBhcnNlIGEg Q29sdW1uRGVmIG5vZGUgd2l0aGluIGEgdHlwZWQgdGFibGUgY3JlYXRpb24uIFRoaXMgaXMgc2lt cGxlcgorICogdGhhbiB0aGUgcmVndWxhciBjYXNlLCBiZWNhdXNlIHdlIGRvbid0IGhhdmUgdG8g ZW1pdCB0aGUgdHlwZSBkZWNsYXJhdGlvbiwKKyAqIGNvbGxhdGlvbiwgb3IgZGVmYXVsdC4gSGVy ZSB3ZSBvbmx5IHJldHVybiBzb21ldGhpbmcgaWYgdGhlIGNvbHVtbiBpcyBiZWluZworICogZGVj bGFyZWQgTk9UIE5VTEwuCisgKgorICogQXMgaW4gZGVwYXJzZV9Db2x1bW5EZWYsIGFueSBvdGhl ciBjb25zdHJhaW50IGlzIHByb2Nlc3NlZCBlbHNld2hlcmUuCisgKgorICogVmVyYm9zZSBzeW50 YXgKKyAqICV7bmFtZX1JIFdJVEggT1BUSU9OUyAle25vdF9udWxsfXMgJXtkZWZhdWx0fXMuCisg Ki8KK3N0YXRpYyB2b2lkCitkZXBhcnNlX0NvbHVtbkRlZl90eXBlZChKc29uYlBhcnNlU3RhdGUg KnN0YXRlLCBSZWxhdGlvbiByZWxhdGlvbiwKKwkJCQkJCUxpc3QgKmRwY29udGV4dCwgQ29sdW1u RGVmICpjb2xkZWYpCit7CisJYm9vbAkJbmVlZGVkOworCUZvcm1fcGdfYXR0cmlidXRlIGF0dHJG b3JtOworCWJvb2wJCXNhd19ub3RudWxsOworCVN0cmluZ0luZm9EYXRhIGZtdFN0cjsKKworCWlu aXRTdHJpbmdJbmZvKCZmbXRTdHIpOworCisJbmVlZGVkID0gZGVwYXJzZV9Db2xEZWZfdHlwZWRf bmVlZGVkKHJlbGF0aW9uLCBjb2xkZWYsCisJCQkJCQkJCQkJICZhdHRyRm9ybSwgJnNhd19ub3Ru dWxsKTsKKwlpZiAoIW5lZWRlZCkKKwkJcmV0dXJuOworCisJLyogc3RhcnQgbWFraW5nIGNvbHVt biBvYmplY3QgKi8KKwlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9PQkpFQ1QsIE5V TEwpOworCisJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmZm10U3RyLCAiJXtuYW1lfUkgV0lUSCBP UFRJT05TIik7CisKKwkvKiBUWVBFIGFuZCBOQU1FICovCisJbmV3X2pzb25iX1ZBKHN0YXRlLCAy LAorCQkJCSAidHlwZSIsIGpidlN0cmluZywgImNvbHVtbiIsCisJCQkJICJuYW1lIiwgamJ2U3Ry aW5nLCBjb2xkZWYtPmNvbG5hbWUpOworCisJLyogTk9UIE5VTEwgKi8KKwlpZiAoc2F3X25vdG51 bGwpCisJeworCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZmbXRTdHIsICIgJXtub3RfbnVsbH1z Iik7CisJCW5ld19qc29uYl9WQShzdGF0ZSwgMSwgIm5vdF9udWxsIiwgamJ2U3RyaW5nLCAiTk9U IE5VTEwiKTsKKwl9CisKKwkvKiBERUZBVUxUICovCisJaWYgKGF0dHJGb3JtLT5hdHRoYXNkZWYp CisJeworCQljaGFyCSAgICpkZWZzdHI7CisKKwkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmZm10 U3RyLCAiICV7ZGVmYXVsdH1zIik7CisJCWRlZnN0ciA9IHJlbGF0aW9uX2dldF9jb2x1bW5fZGVm YXVsdChyZWxhdGlvbiwgYXR0ckZvcm0tPmF0dG51bSwKKwkJCQkJCQkJCQkJIGRwY29udGV4dCk7 CisKKwkJaW5zZXJ0X2pzb25iX2tleShzdGF0ZSwgImRlZmF1bHQiKTsKKwkJcHVzaEpzb25iVmFs dWUoJnN0YXRlLCBXSkJfQkVHSU5fT0JKRUNULCBOVUxMKTsKKwkJbmV3X2pzb25iX1ZBKHN0YXRl LCAyLAorCQkJCQkgImZtdCIsIGpidlN0cmluZywgIkRFRkFVTFQgJXtkZWZhdWx0fXMiLAorCQkJ CQkgImRlZmF1bHQiLCBqYnZTdHJpbmcsIGRlZnN0cik7CisKKwkJcHVzaEpzb25iVmFsdWUoJnN0 YXRlLCBXSkJfRU5EX09CSkVDVCwgTlVMTCk7CisJfQorCisJLyogV2UgaGF2ZSBmdWxsIGZtdCBi eSBub3csIHNvIGFkZCBqc29uYiBlbGVtZW50IGZvciB0aGF0ICovCisJbmV3X2pzb25iX1ZBKHN0 YXRlLCAxLCAiZm10IiwgamJ2U3RyaW5nLCBmbXRTdHIuZGF0YSk7CisKKwlwZnJlZShmbXRTdHIu ZGF0YSk7CisKKwkvKiBtYXJrIHRoZSBlbmQgb2YgY29sdW1uIG9iamVjdCAqLworCXB1c2hKc29u YlZhbHVlKCZzdGF0ZSwgV0pCX0VORF9PQkpFQ1QsIE5VTEwpOworCisJLyogR2VuZXJhdGVkIGNv bHVtbnMgYXJlIG5vdCBzdXBwb3J0ZWQgb24gdHlwZWQgdGFibGVzLCBzbyB3ZSBhcmUgZG9uZSAq LworfQorCisvKgorICogU3Vicm91dGluZSBmb3IgQ1JFQVRFIFRBQkxFIGRlcGFyc2luZy4KKyAq CisgKiBEZWFsIHdpdGggYWxsIHRoZSB0YWJsZSBlbGVtZW50cyAoY29sdW1ucyBhbmQgY29uc3Ry YWludHMpLgorICoKKyAqIE5vdGUgd2UgaWdub3JlIGNvbnN0cmFpbnRzIGluIHRoZSBwYXJzZSBu b2RlIGhlcmU7IHRoZXkgYXJlIGV4dHJhY3RlZCBmcm9tCisgKiBzeXN0ZW0gY2F0YWxvZ3MgaW5z dGVhZC4KKyAqLworc3RhdGljIHZvaWQKK2RlcGFyc2VfVGFibGVFbGVtcyhKc29uYlBhcnNlU3Rh dGUgKnN0YXRlLCBSZWxhdGlvbiByZWxhdGlvbiwKKwkJCQkgICBMaXN0ICp0YWJsZUVsZW1lbnRz LCBMaXN0ICpkcGNvbnRleHQsCisJCQkJICAgYm9vbCB0eXBlZCwgYm9vbCBjb21wb3NpdGUpCit7 CisJTGlzdENlbGwgICAqbGM7CisKKwlmb3JlYWNoKGxjLCB0YWJsZUVsZW1lbnRzKQorCXsKKwkJ Tm9kZQkgICAqZWx0ID0gKE5vZGUgKikgbGZpcnN0KGxjKTsKKworCQlzd2l0Y2ggKG5vZGVUYWco ZWx0KSkKKwkJeworCQkJY2FzZSBUX0NvbHVtbkRlZjoKKwkJCQl7CisJCQkJCWlmICh0eXBlZCkK KwkJCQkJCWRlcGFyc2VfQ29sdW1uRGVmX3R5cGVkKHN0YXRlLCByZWxhdGlvbiwKKwkJCQkJCQkJ CQkJCWRwY29udGV4dCwKKwkJCQkJCQkJCQkJCShDb2x1bW5EZWYgKikgZWx0KTsKKwkJCQkJZWxz ZQorCQkJCQkJZGVwYXJzZV9Db2x1bW5EZWYoc3RhdGUsIHJlbGF0aW9uLCBkcGNvbnRleHQsCisJ CQkJCQkJCQkJICBjb21wb3NpdGUsIChDb2x1bW5EZWYgKikgZWx0KTsKKwkJCQl9CisJCQkJYnJl YWs7CisJCQljYXNlIFRfQ29uc3RyYWludDoKKwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJ ZWxvZyhFUlJPUiwgImludmFsaWQgbm9kZSB0eXBlICVkIiwgbm9kZVRhZyhlbHQpKTsKKwkJfQor CX0KK30KKworLyoKKyAqIFN1YnJvdXRpbmUgZm9yIENSRUFURSBUQUJMRSBkZXBhcnNpbmcuCisg KgorICogR2l2ZW4gYSB0YWJsZSBPSUQsIG9idGFpbiBpdHMgY29uc3RyYWludHMgYW5kIGFwcGVu ZCB0aGVtIHRvIHRoZSBnaXZlbgorICogSnNvbmJQYXJzZVN0YXRlLgorICoKKyAqIFRoaXMgd29y a3MgZm9yIHR5cGVkIHRhYmxlcywgcmVndWxhciB0YWJsZXMuCisgKgorICogTm90ZSB0aGF0IENP TlNUUkFJTlRfRk9SRUlHTiBjb25zdHJhaW50cyBhcmUgYWx3YXlzIGlnbm9yZWQuCisgKi8KK3N0 YXRpYyB2b2lkCitkZXBhcnNlX0NvbnN0cmFpbnRzKEpzb25iUGFyc2VTdGF0ZSAqc3RhdGUsIE9p ZCByZWxhdGlvbklkKQoreworCVJlbGF0aW9uCWNvblJlbDsKKwlTY2FuS2V5RGF0YSBrZXk7CisJ U3lzU2NhbkRlc2Mgc2NhbjsKKwlIZWFwVHVwbGUJdHVwbGU7CisKKwlBc3NlcnQoT2lkSXNWYWxp ZChyZWxhdGlvbklkKSk7CisKKwkvKgorCSAqIFNjYW4gcGdfY29uc3RyYWludCB0byBmZXRjaCBh bGwgY29uc3RyYWludHMgbGlua2VkIHRvIHRoZSBnaXZlbgorCSAqIHJlbGF0aW9uLgorCSAqLwor CWNvblJlbCA9IHRhYmxlX29wZW4oQ29uc3RyYWludFJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9j ayk7CisJU2NhbktleUluaXQoJmtleSwgQW51bV9wZ19jb25zdHJhaW50X2NvbnJlbGlkLCBCVEVx dWFsU3RyYXRlZ3lOdW1iZXIsCisJCQkJRl9PSURFUSwgT2JqZWN0SWRHZXREYXR1bShyZWxhdGlv bklkKSk7CisJc2NhbiA9IHN5c3RhYmxlX2JlZ2luc2Nhbihjb25SZWwsIENvbnN0cmFpbnRSZWxp ZFR5cGlkTmFtZUluZGV4SWQsIHRydWUsCisJCQkJCQkJICBOVUxMLCAxLCAma2V5KTsKKworCS8q CisJICogRm9yIGVhY2ggY29uc3RyYWludCwgYWRkIGEgbm9kZSB0byB0aGUgbGlzdCBvZiB0YWJs ZSBlbGVtZW50cy4gIEluCisJICogdGhlc2Ugbm9kZXMgd2UgaW5jbHVkZSBub3Qgb25seSB0aGUg cHJpbnRhYmxlIGluZm9ybWF0aW9uICgiZm10IiksIGJ1dAorCSAqIGFsc28gc2VwYXJhdGUgYXR0 cmlidXRlcyB0byBpbmRpY2F0ZSB0aGUgdHlwZSBvZiBjb25zdHJhaW50LCBmb3IKKwkgKiBhdXRv bWF0aWMgcHJvY2Vzc2luZy4KKwkgKi8KKwl3aGlsZSAoSGVhcFR1cGxlSXNWYWxpZCh0dXBsZSA9 IHN5c3RhYmxlX2dldG5leHQoc2NhbikpKQorCXsKKwkJRm9ybV9wZ19jb25zdHJhaW50IGNvbnN0 ckZvcm07CisJCWNoYXIJICAgKmNvbnR5cGU7CisJCVN0cmluZ0luZm9EYXRhIGZtdFN0cjsKKwor CQljb25zdHJGb3JtID0gKEZvcm1fcGdfY29uc3RyYWludCkgR0VUU1RSVUNUKHR1cGxlKTsKKwor CQlzd2l0Y2ggKGNvbnN0ckZvcm0tPmNvbnR5cGUpCisJCXsKKwkJCWNhc2UgQ09OU1RSQUlOVF9D SEVDSzoKKwkJCQljb250eXBlID0gImNoZWNrIjsKKwkJCQlicmVhazsKKwkJCWNhc2UgQ09OU1RS QUlOVF9GT1JFSUdOOgorCQkJCWNvbnRpbnVlOwkJLyogbm90IGhlcmUgKi8KKwkJCWNhc2UgQ09O U1RSQUlOVF9QUklNQVJZOgorCQkJCWNvbnR5cGUgPSAicHJpbWFyeSBrZXkiOworCQkJCWJyZWFr OworCQkJY2FzZSBDT05TVFJBSU5UX1VOSVFVRToKKwkJCQljb250eXBlID0gInVuaXF1ZSI7CisJ CQkJYnJlYWs7CisJCQljYXNlIENPTlNUUkFJTlRfRVhDTFVTSU9OOgorCQkJCWNvbnR5cGUgPSAi ZXhjbHVzaW9uIjsKKwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJZWxvZyhFUlJPUiwgInVu cmVjb2duaXplZCBjb25zdHJhaW50IHR5cGUiKTsKKwkJfQorCisJCS8qIE5vIG5lZWQgdG8gZGVw YXJzZSBjb25zdHJhaW50cyBpbmhlcml0ZWQgZnJvbSBwYXJlbnQgdGFibGUuICovCisJCWlmIChP aWRJc1ZhbGlkKGNvbnN0ckZvcm0tPmNvbnBhcmVudGlkKSkKKwkJCWNvbnRpbnVlOworCisJCS8q CisJCSAqICJ0eXBlIiBhbmQgImNvbnR5cGUiIGFyZSBub3QgcGFydCBvZiB0aGUgcHJpbnRhYmxl IG91dHB1dCwgYnV0IGFyZQorCQkgKiB1c2VmdWwgdG8gcHJvZ3JhbW1hdGljYWxseSBkaXN0aW5n dWlzaCB0aGVzZSBmcm9tIGNvbHVtbnMgYW5kIGFtb25nCisJCSAqIGRpZmZlcmVudCBjb25zdHJh aW50IHR5cGVzLgorCQkgKgorCQkgKiBYWFggaXQgbWlnaHQgYmUgdXNlZnVsIHRvIGFsc28gbGlz dCB0aGUgY29sdW1uIG5hbWVzIGluIGEgUEssIGV0Yy4KKwkJICovCisJCWluaXRTdHJpbmdJbmZv KCZmbXRTdHIpOworCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZmbXRTdHIsICJDT05TVFJBSU5U ICV7bmFtZX1JICV7ZGVmaW5pdGlvbn1zIik7CisJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pC X0JFR0lOX09CSkVDVCwgTlVMTCk7CisKKwkJbmV3X2pzb25iX1ZBKHN0YXRlLCA0LAorCQkJCQkg InR5cGUiLCBqYnZTdHJpbmcsICJjb25zdHJhaW50IiwKKwkJCQkJICJjb250eXBlIiwgamJ2U3Ry aW5nLCBjb250eXBlLAorCQkJCQkgIm5hbWUiLCBqYnZTdHJpbmcsIE5hbWVTdHIoY29uc3RyRm9y bS0+Y29ubmFtZSksCisJCQkJCSAiZGVmaW5pdGlvbiIsIGpidlN0cmluZywKKwkJCQkJIHBnX2dl dF9jb25zdHJhaW50ZGVmX3N0cmluZyhjb25zdHJGb3JtLT5vaWQpKTsKKworCQlpZiAoY29uc3Ry Rm9ybS0+Y29uaW5kaWQgJiYKKwkJCShjb25zdHJGb3JtLT5jb250eXBlID09IENPTlNUUkFJTlRf UFJJTUFSWSB8fAorCQkJIGNvbnN0ckZvcm0tPmNvbnR5cGUgPT0gQ09OU1RSQUlOVF9VTklRVUUg fHwKKwkJCSBjb25zdHJGb3JtLT5jb250eXBlID09IENPTlNUUkFJTlRfRVhDTFVTSU9OKSkKKwkJ eworCQkJT2lkCQkJdGJsc3BjID0gZ2V0X3JlbF90YWJsZXNwYWNlKGNvbnN0ckZvcm0tPmNvbmlu ZGlkKTsKKworCQkJaWYgKE9pZElzVmFsaWQodGJsc3BjKSkKKwkJCXsKKwkJCQljaGFyCSAgICp0 YmxzcGNuYW1lID0gZ2V0X3RhYmxlc3BhY2VfbmFtZSh0YmxzcGMpOworCisJCQkJaWYgKCF0Ymxz cGNuYW1lKQorCQkJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgdGFibGVz cGFjZSAldSIsCisJCQkJCQkgdGJsc3BjKTsKKworCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmco JmZtdFN0ciwKKwkJCQkJCQkJCSAgICIgVVNJTkcgSU5ERVggVEFCTEVTUEFDRSAle3RibHNwY31z Iik7CisJCQkJbmV3X2pzb25iX1ZBKHN0YXRlLCAxLAorCQkJCQkJCSAidGJsc3BjIiwgamJ2U3Ry aW5nLCB0YmxzcGNuYW1lKTsKKwkJCX0KKwkJfQorCisJCS8qIFdlIGhhdmUgZnVsbCBmbXQgYnkg bm93LCBzbyBhZGQganNvbmIgZWxlbWVudCBmb3IgdGhhdCAqLworCQluZXdfanNvbmJfVkEoc3Rh dGUsIDEsICJmbXQiLCBqYnZTdHJpbmcsIGZtdFN0ci5kYXRhKTsKKworCQlwZnJlZShmbXRTdHIu ZGF0YSk7CisKKwkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfRU5EX09CSkVDVCwgTlVMTCk7 CisJfQorCisJc3lzdGFibGVfZW5kc2NhbihzY2FuKTsKKwl0YWJsZV9jbG9zZShjb25SZWwsIEFj Y2Vzc1NoYXJlTG9jayk7Cit9CisKKy8qCisgKiBTdWJyb3V0aW5lIGZvciBDUkVBVEUgVEFCTEUg ZGVwYXJzaW5nLgorICoKKyAqIEluc2VydCBjb2x1bW5zIGFuZCBjb25zdHJhaW50cyBlbGVtZW50 cyhpZiBhbnkpIGluIG91dHB1dCBKc29uYlBhcnNlU3RhdGUKKyAqLworc3RhdGljIHZvaWQKK2Fk ZF90YWJsZV9lbGVtcyhKc29uYlBhcnNlU3RhdGUgKnN0YXRlLCBTdHJpbmdJbmZvIGZtdFN0ciwK KwkJCQkJICAgUmVsYXRpb24gcmVsYXRpb24sIExpc3QgKnRhYmxlRWx0cywgTGlzdCAqZHBjb250 ZXh0LAorCQkJCQkgICBPaWQgb2JqZWN0SWQsIGJvb2wgaW5oZXJpdCwgYm9vbCB0eXBlZCwgYm9v bCBjb21wb3NpdGUpCit7CisJaW5zZXJ0X2pzb25iX2tleShzdGF0ZSwgInRhYmxlX2VsZW1lbnRz Iik7CisKKwlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9BUlJBWSwgTlVMTCk7CisK KwkvKgorCSAqIFByb2Nlc3MgdGFibGUgZWxlbWVudHM6IGNvbHVtbiBkZWZpbml0aW9ucyBhbmQg Y29uc3RyYWludHMuIE9ubHkgdGhlCisJICogY29sdW1uIGRlZmluaXRpb25zIGFyZSBvYnRhaW5l ZCBmcm9tIHRoZSBwYXJzZSBub2RlIGl0c2VsZi4gVG8gZ2V0CisJICogY29uc3RyYWludHMgd2Ug cmVseSBvbiBwZ19jb25zdHJhaW50LCBiZWNhdXNlIHRoZSBwYXJzZSBub2RlIG1pZ2h0IGJlCisJ ICogbWlzc2luZyBzb21lIHRoaW5ncyBzdWNoIGFzIHRoZSBuYW1lIG9mIHRoZSBjb25zdHJhaW50 cy4KKwkgKi8KKwlkZXBhcnNlX1RhYmxlRWxlbXMoc3RhdGUsIHJlbGF0aW9uLCB0YWJsZUVsdHMs IGRwY29udGV4dCwKKwkJCQkJICAgdHlwZWQsCS8qIHR5cGVkIHRhYmxlICovCisJCQkJCSAgIGNv bXBvc2l0ZSk7CS8qIG5vdCBjb21wb3NpdGUgKi8KKworCWRlcGFyc2VfQ29uc3RyYWludHMoc3Rh dGUsIG9iamVjdElkKTsKKworCS8qCisJICogRGVjaWRlIGlmIHdlIG5lZWQgdG8gcHV0ICcoKScg YXJvdW5kIHRhYmxlX2VsZW1lbnRzLiBJdCBpcyBuZWVkZWQgZm9yCisJICogYmVsb3cgY2FzZXM6 CisJICoKKwkgKiBhKSB3aGVyZSBhY3R1YWwgdGFibGUtZWxlbWVudHMgYXJlIHByZXNlbnQsIGVn OiBjcmVhdGUgdGFibGUgdDEgKGEgaW50KQorCSAqCisJICogYSkgaW5oZXJpdCBjYXNlIHdpdGgg bm8gbG9jYWwgdGFibGUtZWxlbWVudHMgcHJlc2VudCwgZWc6IGNyZWF0ZSB0YWJsZQorCSAqIHQx ICgpIGluaGVyaXRzICh0MikKKwkgKgorCSAqIE9UT0gsICcoKScgaXMgbm90IG5lZWRlZCBmb3Ig YmVsb3cgY2FzZXMgd2hlbiBubyB0YWJsZS1lbGVtZW50cyBhcmUKKwkgKiBwcmVzZW50OgorCSAq CisJICogYSkgJ3BhcnRpdGlvbiBvZicgY2FzZSwgZWc6IGNyZWF0ZSB0YWJsZSB0MiBwYXJ0aXRp b24gb2YgdDEKKwkgKgorCSAqIGIpICdvZiB0eXBlJyBjYXNlLCBlZzogY3JlYXRlIHRhYmxlIHQx IG9mIHR5cGUxOworCSAqLworCWlmICgoc3RhdGUtPmNvbnRWYWwudHlwZSA9PSBqYnZBcnJheSkg JiYKKwkJKGluaGVyaXQgfHwgKHN0YXRlLT5jb250VmFsLnZhbC5hcnJheS5uRWxlbXMgPiAwKSkp CisJeworCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGZtdFN0ciwgIiAoJXt0YWJsZV9lbGVtZW50 czosIH1zKSIpOworCX0KKwllbHNlCisJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoZm10U3RyLCAi ICV7dGFibGVfZWxlbWVudHM6LCB9cyIpOworCisJLyogZW5kIG9mIHRhYmxlX2VsZW1lbnRzIGFy cmF5ICovCisJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfRU5EX0FSUkFZLCBOVUxMKTsKK30K KworLyoKKyAqIERlcGFyc2UgRGVmRWxlbXMsIGFzIHVzZWQgYnkgQ3JlYXRlIFRhYmxlCisgKgor ICogVmVyYm9zZSBzeW50YXgKKyAqICV7bGFiZWx9cyA9ICV7dmFsdWV9TAorICogd2hlcmUgbGFi ZWwgaXM6ICV7c2NoZW1hfUkgJXtsYWJlbH1JCisgKi8KK3N0YXRpYyB2b2lkCitkZXBhcnNlX0Rl ZkVsZW0oSnNvbmJQYXJzZVN0YXRlICpzdGF0ZSwgRGVmRWxlbSAqZWxlbSwgYm9vbCBpc19yZXNl dCkKK3sKKwlTdHJpbmdJbmZvRGF0YSBmbXRTdHI7CisJU3RyaW5nSW5mb0RhdGEgbGFiZWxmbXQ7 CisKKwlpbml0U3RyaW5nSW5mbygmZm10U3RyKTsKKworCWFwcGVuZFN0cmluZ0luZm9TdHJpbmco JmZtdFN0ciwgIiV7bGFiZWx9cyIpOworCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lO X09CSkVDVCwgTlVMTCk7CisKKwkvKiBMQUJFTCAqLworCWluaXRTdHJpbmdJbmZvKCZsYWJlbGZt dCk7CisKKwlpbnNlcnRfanNvbmJfa2V5KHN0YXRlLCAibGFiZWwiKTsKKwlwdXNoSnNvbmJWYWx1 ZSgmc3RhdGUsIFdKQl9CRUdJTl9PQkpFQ1QsIE5VTEwpOworCisJaWYgKGVsZW0tPmRlZm5hbWVz cGFjZSAhPSBOVUxMKQorCXsKKwkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmbGFiZWxmbXQsICIl e3NjaGVtYX1JLiIpOworCQluZXdfanNvbmJfVkEoc3RhdGUsIDEsCisJCQkJCSAic2NoZW1hIiwg amJ2U3RyaW5nLCBlbGVtLT5kZWZuYW1lc3BhY2UpOworCX0KKworCWFwcGVuZFN0cmluZ0luZm9T dHJpbmcoJmxhYmVsZm10LCAiJXtsYWJlbH1JIik7CisJbmV3X2pzb25iX1ZBKHN0YXRlLCAyLAor CQkJCSAibGFiZWwiLCBqYnZTdHJpbmcsIGVsZW0tPmRlZm5hbWUsCisJCQkJICJmbXQiLCBqYnZT dHJpbmcsIGxhYmVsZm10LmRhdGEpOworCXBmcmVlKGxhYmVsZm10LmRhdGEpOworCisJcHVzaEpz b25iVmFsdWUoJnN0YXRlLCBXSkJfRU5EX09CSkVDVCwgTlVMTCk7CisKKwkvKiBWQUxVRSAqLwor CWlmICghaXNfcmVzZXQpCisJeworCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZmbXRTdHIsICIg PSAle3ZhbHVlfUwiKTsKKwkJbmV3X2pzb25iX1ZBKHN0YXRlLCAxLCAidmFsdWUiLCBqYnZTdHJp bmcsCisJCQkJCSBlbGVtLT5hcmcgPyBkZWZHZXRTdHJpbmcoZWxlbSkgOgorCQkJCQkgZGVmR2V0 Qm9vbGVhbihlbGVtKSA/ICJ0cnVlIiA6ICJmYWxzZSIpOworCX0KKworCW5ld19qc29uYl9WQShz dGF0ZSwgMSwgImZtdCIsIGpidlN0cmluZywgZm10U3RyLmRhdGEpOworCXBmcmVlKGZtdFN0ci5k YXRhKTsKKworCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0VORF9PQkpFQ1QsIE5VTEwpOwor fQorCisvKgorICogRGVwYXJzZSBXSVRIIGNsYXVzZSwgYXMgdXNlZCBieSBDcmVhdGUgVGFibGUu CisgKgorICogVmVyYm9zZSBzeW50YXggKGZvcm11bGF0ZWQgaW4gaGVscGVyIGZ1bmN0aW9uIGRl cGFyc2VfRGVmRWxlbSkKKyAqICV7bGFiZWx9cyA9ICV7dmFsdWV9TAorICovCitzdGF0aWMgdm9p ZAorZGVwYXJzZV93aXRoT2JqKEpzb25iUGFyc2VTdGF0ZSAqc3RhdGUsIENyZWF0ZVN0bXQgKm5v ZGUpCit7CisJTGlzdENlbGwgICAqY2VsbDsKKworCS8qIFdJVEggKi8KKwlpbnNlcnRfanNvbmJf a2V5KHN0YXRlLCAid2l0aCIpOworCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lOX0FS UkFZLCBOVUxMKTsKKworCS8qIGFkZCBlbGVtZW50cyB0byBhcnJheSAqLworCWZvcmVhY2goY2Vs bCwgbm9kZS0+b3B0aW9ucykKKwl7CisJCURlZkVsZW0gICAgKm9wdCA9IChEZWZFbGVtICopIGxm aXJzdChjZWxsKTsKKworCQlkZXBhcnNlX0RlZkVsZW0oc3RhdGUsIG9wdCwgZmFsc2UpOworCX0K KworCS8qIHdpdGgncyBhcnJheSBlbmQgKi8KKwlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9F TkRfQVJSQVksIE5VTEwpOworfQorCisvKgorICogRGVwYXJzZSBhIENyZWF0ZVN0bXQgKENSRUFU RSBUQUJMRSkuCisgKgorICogR2l2ZW4gYSB0YWJsZSBPSUQgYW5kIHRoZSBwYXJzZSB0cmVlIHRo YXQgY3JlYXRlZCBpdCwgcmV0dXJuIEpzb25iVmFsdWUKKyAqIHJlcHJlc2VudGluZyB0aGUgY3Jl YXRpb24gY29tbWFuZC4KKyAqCisgKiBWZXJib3NlIHN5bnRheAorICogQ1JFQVRFICV7cGVyc2lz dGVuY2V9cyBUQUJMRSAle2lmX25vdF9leGlzdHN9cyAle2lkZW50aXR5fUQgW09GCisgKiAle29m X3R5cGV9VCB8IFBBUlRJVElPTiBPRiAle3BhcmVudF9pZGVudGl0eX1EXSAle3RhYmxlX2VsZW1l bnRzfXMKKyAqICV7aW5oZXJpdHN9cyAle3BhcnRpdGlvbl9ib3VuZH1zICV7cGFydGl0aW9uX2J5 fXMgJXthY2Nlc3NfbWV0aG9kfXMKKyAqICV7d2l0aF9jbGF1c2V9cyAle3RhYmxlc3BhY2V9cwor ICovCitzdGF0aWMgSnNvbmIgKgorZGVwYXJzZV9DcmVhdGVTdG10KE9pZCBvYmplY3RJZCwgTm9k ZSAqcGFyc2V0cmVlKQoreworCUNyZWF0ZVN0bXQgKm5vZGUgPSAoQ3JlYXRlU3RtdCAqKSBwYXJz ZXRyZWU7CisJUmVsYXRpb24JcmVsYXRpb24gPSByZWxhdGlvbl9vcGVuKG9iamVjdElkLCBBY2Nl c3NTaGFyZUxvY2spOworCU9pZAkJCW5zcGlkID0gcmVsYXRpb24tPnJkX3JlbC0+cmVsbmFtZXNw YWNlOworCWNoYXIJICAgKnJlbG5hbWUgPSBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWxhdGlv bik7CisJTGlzdAkgICAqZHBjb250ZXh0OworCWNoYXIJICAgKnBlcnN0cjsKKwlTdHJpbmdJbmZv RGF0YSBmbXRTdHI7CisJSnNvbmJQYXJzZVN0YXRlICpzdGF0ZSA9IE5VTEw7CisJSnNvbmJWYWx1 ZSAqdmFsdWU7CisKKwlpbml0U3RyaW5nSW5mbygmZm10U3RyKTsKKworCS8qIG1hcmsgdGhlIGJl Z2luIG9mIFJPT1Qgb2JqZWN0IGFuZCBzdGFydCBhZGRpbmcgZWxlbWVudHMgdG8gaXQuICovCisJ cHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfQkVHSU5fT0JKRUNULCBOVUxMKTsKKworCWFwcGVu ZFN0cmluZ0luZm9TdHJpbmcoJmZtdFN0ciwgIkNSRUFURSIpOworCisJLyogUEVSU0lTVEVOQ0Ug Ki8KKwlwZXJzdHIgPSBnZXRfcGVyc2lzdGVuY2Vfc3RyKHJlbGF0aW9uLT5yZF9yZWwtPnJlbHBl cnNpc3RlbmNlKTsKKwlpZiAocGVyc3RyKQorCXsKKwkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygm Zm10U3RyLCAiICV7cGVyc2lzdGVuY2V9cyIpOworCQluZXdfanNvbmJfVkEoc3RhdGUsIDEsCisJ CQkJCSAicGVyc2lzdGVuY2UiLCBqYnZTdHJpbmcsIHBlcnN0cik7CisJfQorCisJYXBwZW5kU3Ry aW5nSW5mb1N0cmluZygmZm10U3RyLCAiIFRBQkxFIik7CisKKwkvKiBJRiBOT1QgRVhJU1RTICov CisJaWYgKG5vZGUtPmlmX25vdF9leGlzdHMpCisJeworCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5n KCZmbXRTdHIsICIgJXtpZl9ub3RfZXhpc3RzfXMiKTsKKwkJbmV3X2pzb25iX1ZBKHN0YXRlLCAx LAorCQkJCQkgImlmX25vdF9leGlzdHMiLCBqYnZTdHJpbmcsICJJRiBOT1QgRVhJU1RTIik7CisJ fQorCisJLyogSURFTlRJVFkgKi8KKwlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZmbXRTdHIsICIg JXtpZGVudGl0eX1EIik7CisJaW5zZXJ0X2lkZW50aXR5X29iamVjdChzdGF0ZSwgbnNwaWQsIHJl bG5hbWUpOworCisJZHBjb250ZXh0ID0gZGVwYXJzZV9jb250ZXh0X2ZvcihSZWxhdGlvbkdldFJl bGF0aW9uTmFtZShyZWxhdGlvbiksCisJCQkJCQkJCQlvYmplY3RJZCk7CisKKwkvKgorCSAqIFRB QkxFLUVMRU1FTlRTIGFycmF5IGNyZWF0aW9uCisJICovCisJaWYgKG5vZGUtPm9mVHlwZW5hbWUg fHwgbm9kZS0+cGFydGJvdW5kKQorCXsKKwkJLyogSW5zZXJ0IHRoZSAib2YgdHlwZSIgb3IgInBh cnRpdGlvbiBvZiIgY2xhdXNlIHdoaWNoZXZlciBwcmVzZW50ICovCisJCWlmIChub2RlLT5vZlR5 cGVuYW1lKQorCQl7CisJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZmbXRTdHIsICIgT0YgJXtv Zl90eXBlfVQiKTsKKwkJCW5ld19qc29uYl9mb3JfdHlwZShzdGF0ZSwgIm9mX3R5cGUiLAorCQkJ CQkJCSAgIHJlbGF0aW9uLT5yZF9yZWwtPnJlbG9mdHlwZSwgLTEpOworCQl9CisJCWVsc2UKKwkJ eworCQkJTGlzdAkgICAqcGFyZW50czsKKwkJCU9pZAkJCW9iamlkOworCisJCQlhcHBlbmRTdHJp bmdJbmZvU3RyaW5nKCZmbXRTdHIsICIgUEFSVElUSU9OIE9GICV7cGFyZW50X2lkZW50aXR5fUQi KTsKKwkJCXBhcmVudHMgPSByZWxhdGlvbl9nZXRfaW5oX3BhcmVudHMob2JqZWN0SWQpOworCQkJ b2JqaWQgPSBsaW5pdGlhbF9vaWQocGFyZW50cyk7CisJCQlBc3NlcnQobGlzdF9sZW5ndGgocGFy ZW50cykgPT0gMSk7CisJCQluZXdfanNvbmJfZm9yX3F1YWxuYW1lX2lkKHN0YXRlLCBSZWxhdGlv blJlbGF0aW9uSWQsCisJCQkJCQkJCQkgIG9iamlkLCAicGFyZW50X2lkZW50aXR5IiwgdHJ1ZSk7 CisJCX0KKworCQlhZGRfdGFibGVfZWxlbXMoc3RhdGUsICZmbXRTdHIsIHJlbGF0aW9uLAorCQkJ CQkJCSAgIG5vZGUtPnRhYmxlRWx0cywgZHBjb250ZXh0LCBvYmplY3RJZCwKKwkJCQkJCQkgICBm YWxzZSwJLyogbm90IGluaGVyaXQgKi8KKwkJCQkJCQkgICB0cnVlLAkvKiB0eXBlZCB0YWJsZSAq LworCQkJCQkJCSAgIGZhbHNlKTsJLyogbm90IGNvbXBvc2l0ZSAqLworCX0KKwllbHNlCisJewor CQlMaXN0CSAgICppbmhyZWxhdGlvbnM7CisKKwkJLyoKKwkJICogVGhlcmUgaXMgbm8gbmVlZCB0 byBwcm9jZXNzIExJS0UgY2xhdXNlcyBzZXBhcmF0ZWx5OyB0aGV5IGhhdmUKKwkJICogYWxyZWFk eSBiZWVuIHRyYW5zZm9ybWVkIGludG8gY29sdW1ucyBhbmQgY29uc3RyYWludHMuCisJCSAqLwor CisJCWFkZF90YWJsZV9lbGVtcyhzdGF0ZSwgJmZtdFN0ciwgcmVsYXRpb24sCisJCQkJCQkJICAg bm9kZS0+dGFibGVFbHRzLCBkcGNvbnRleHQsIG9iamVjdElkLAorCQkJCQkJCSAgIHRydWUsCS8q IGluaGVyaXQgKi8KKwkJCQkJCQkgICBmYWxzZSwJLyogbm90IHR5cGVkIHRhYmxlICovCisJCQkJ CQkJICAgZmFsc2UpOwkvKiBub3QgY29tcG9zaXRlICovCisKKwkJLyoKKwkJICogQWRkIGluaGVy aXRhbmNlIHNwZWNpZmljYXRpb24uICBXZSBjYW5ub3Qgc2ltcGx5IHNjYW4gdGhlIGxpc3Qgb2YK KwkJICogcGFyZW50cyBmcm9tIHRoZSBwYXJzZXIgbm9kZSwgYmVjYXVzZSB0aGF0IG1heSBsYWNr IHRoZSBhY3R1YWwKKwkJICogcXVhbGlmaWVkIG5hbWVzIG9mIHRoZSBwYXJlbnQgcmVsYXRpb25z LiAgUmF0aGVyIHRoYW4gdHJ5aW5nIHRvCisJCSAqIHJlLXJlc29sdmUgdGhlbSBmcm9tIHRoZSBp bmZvcm1hdGlvbiBpbiB0aGUgcGFyc2Ugbm9kZSwgaXQgc2VlbXMKKwkJICogbW9yZSBhY2N1cmF0 ZSBhbmQgY29udmVuaWVudCB0byBncmFiIGl0IGZyb20gcGdfaW5oZXJpdHMuCisJCSAqLworCQlp ZiAobm9kZS0+aW5oUmVsYXRpb25zICE9IE5JTCkKKwkJeworCQkJYXBwZW5kU3RyaW5nSW5mb1N0 cmluZygmZm10U3RyLCAiICV7aW5oZXJpdHN9cyIpOworCQkJaW5zZXJ0X2pzb25iX2tleShzdGF0 ZSwgImluaGVyaXRzIik7CisKKwkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lOX09C SkVDVCwgTlVMTCk7CisKKwkJCW5ld19qc29uYl9WQShzdGF0ZSwgMSwgImZtdCIsIGpidlN0cmlu ZywgIklOSEVSSVRTICgle3BhcmVudHM6LCB9RCkiKTsKKwkJCWluaHJlbGF0aW9ucyA9IHJlbGF0 aW9uX2dldF9pbmhfcGFyZW50cyhvYmplY3RJZCk7CisKKwkJCW5ld19qc29uYkFycmF5X2Zvcl9x dWFsbmFtZV9pZChzdGF0ZSwgInBhcmVudHMiLCBpbmhyZWxhdGlvbnMpOworCQkJcHVzaEpzb25i VmFsdWUoJnN0YXRlLCBXSkJfRU5EX09CSkVDVCwgTlVMTCk7CisJCX0KKwl9CisKKwkvKiBGT1Ig VkFMVUVTIGNsYXVzZSAqLworCWlmIChub2RlLT5wYXJ0Ym91bmQpCisJeworCQlhcHBlbmRTdHJp bmdJbmZvU3RyaW5nKCZmbXRTdHIsICIgJXtwYXJ0aXRpb25fYm91bmR9cyIpOworCisJCS8qCisJ CSAqIEdldCBwZ19jbGFzcy5yZWxwYXJ0Ym91bmQuIFdlIGNhbm5vdCB1c2UgcGFydGJvdW5kIGlu IHRoZSBwYXJzZXRyZWUKKwkJICogZGlyZWN0bHkgYXMgaXQncyB0aGUgb3JpZ2luYWwgcGFydGJv dW5kIGV4cHJlc3Npb24gd2hpY2ggaGF2ZW4ndAorCQkgKiBiZWVuIHRyYW5zZm9ybWVkLgorCQkg Ki8KKwkJbmV3X2pzb25iX1ZBKHN0YXRlLCAxLAorCQkJCQkgInBhcnRpdGlvbl9ib3VuZCIsIGpi dlN0cmluZywKKwkJCQkJIHJlbGF0aW9uX2dldF9wYXJ0X2JvdW5kKG9iamVjdElkKSk7CisJfQor CisJLyogUEFSVElUSU9OIEJZIGNsYXVzZSAqLworCWlmIChyZWxhdGlvbi0+cmRfcmVsLT5yZWxr aW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpCisJeworCQlhcHBlbmRTdHJpbmdJbmZv U3RyaW5nKCZmbXRTdHIsICIgJXtwYXJ0aXRpb25fYnl9cyIpOworCQlpbnNlcnRfanNvbmJfa2V5 KHN0YXRlLCAicGFydGl0aW9uX2J5Iik7CisJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JF R0lOX09CSkVDVCwgTlVMTCk7CisKKwkJbmV3X2pzb25iX1ZBKHN0YXRlLCAyLAorCQkJCQkgImZt dCIsIGpidlN0cmluZywgIlBBUlRJVElPTiBCWSAle2RlZmluaXRpb259cyIsCisJCQkJCSAiZGVm aW5pdGlvbiIsIGpidlN0cmluZywKKwkJCQkJIHBnX2dldF9wYXJ0a2V5ZGVmX3N0cmluZyhvYmpl Y3RJZCkpOworCisJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0VORF9PQkpFQ1QsIE5VTEwp OworCX0KKworCS8qIFVTSU5HIGNsYXVzZSAqLworCWlmIChub2RlLT5hY2Nlc3NNZXRob2QpCisJ eworCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZmbXRTdHIsICIgJXthY2Nlc3NfbWV0aG9kfXMi KTsKKwkJaW5zZXJ0X2pzb25iX2tleShzdGF0ZSwgImFjY2Vzc19tZXRob2QiKTsKKwkJcHVzaEpz b25iVmFsdWUoJnN0YXRlLCBXSkJfQkVHSU5fT0JKRUNULCBOVUxMKTsKKworCQluZXdfanNvbmJf VkEoc3RhdGUsIDIsCisJCQkJCSAiZm10IiwgamJ2U3RyaW5nLCAiVVNJTkcgJXthY2Nlc3NfbWV0 aG9kfUkiLAorCQkJCQkgImFjY2Vzc19tZXRob2QiLCBqYnZTdHJpbmcsIG5vZGUtPmFjY2Vzc01l dGhvZCk7CisJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0VORF9PQkpFQ1QsIE5VTEwpOwor CX0KKworCS8qIFdJVEggY2xhdXNlICovCisJaWYgKG5vZGUtPm9wdGlvbnMpCisJeworCQlhcHBl bmRTdHJpbmdJbmZvU3RyaW5nKCZmbXRTdHIsICIgJXt3aXRoX2NsYXVzZX1zIik7CisJCWluc2Vy dF9qc29uYl9rZXkoc3RhdGUsICJ3aXRoX2NsYXVzZSIpOworCQlwdXNoSnNvbmJWYWx1ZSgmc3Rh dGUsIFdKQl9CRUdJTl9PQkpFQ1QsIE5VTEwpOworCQluZXdfanNvbmJfVkEoc3RhdGUsIDEsCisJ CQkJCSAiZm10IiwgamJ2U3RyaW5nLCAiV0lUSCAoJXt3aXRoOiwgfXMpIik7CisKKwkJZGVwYXJz ZV93aXRoT2JqKHN0YXRlLCBub2RlKTsKKworCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9F TkRfT0JKRUNULCBOVUxMKTsKKworCX0KKworCS8qIFRBQkxFU1BBQ0UgKi8KKwlpZiAobm9kZS0+ dGFibGVzcGFjZW5hbWUpCisJeworCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZmbXRTdHIsICIg JXt0YWJsZXNwYWNlfXMiKTsKKwkJaW5zZXJ0X2pzb25iX2tleShzdGF0ZSwgInRhYmxlc3BhY2Ui KTsKKwkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfQkVHSU5fT0JKRUNULCBOVUxMKTsKKwkJ bmV3X2pzb25iX1ZBKHN0YXRlLCAyLAorCQkJCQkgImZtdCIsIGpidlN0cmluZywgIlRBQkxFU1BB Q0UgJXt0YWJsZXNwYWNlfUkiLAorCQkJCQkgInRhYmxlc3BhY2UiLCBqYnZTdHJpbmcsIG5vZGUt PnRhYmxlc3BhY2VuYW1lKTsKKwkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfRU5EX09CSkVD VCwgTlVMTCk7CisJfQorCisJcmVsYXRpb25fY2xvc2UocmVsYXRpb24sIEFjY2Vzc1NoYXJlTG9j ayk7CisKKwkvKiBXZSBoYXZlIGZ1bGwgZm10IGJ5IG5vdywgc28gYWRkIGpzb25iIGVsZW1lbnQg Zm9yIHRoYXQgKi8KKwluZXdfanNvbmJfVkEoc3RhdGUsIDEsICJmbXQiLCBqYnZTdHJpbmcsIGZt dFN0ci5kYXRhKTsKKworCXBmcmVlKGZtdFN0ci5kYXRhKTsKKworCS8qIE1hcmsgdGhlIGVuZCBv ZiBST09UIG9iamVjdCAqLworCXZhbHVlID0gcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfRU5E X09CSkVDVCwgTlVMTCk7CisKKwlyZXR1cm4gSnNvbmJWYWx1ZVRvSnNvbmIodmFsdWUpOworfQor CisvKgorICogRGVwYXJzZSBhIERyb3BTdG10IChEUk9QIFRBQkxFKS4KKyAqCisgKiBHaXZlbiBh biBvYmplY3QgaWRlbnRpdHkgYW5kIHRoZSBwYXJzZSB0cmVlIHRoYXQgY3JlYXRlZCBpdCwgcmV0 dXJuCisgKiBqc29uYiBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBkcm9wIGNvbW1hbmQuCisgKgor ICogVmVyYm9zZSBzeW50YXgKKyAqIERST1AgVEFCTEUgJXtjb25jdXJyZW50bHl9cyAle2lmX2V4 aXN0c31zICV7b2JqaWRlbnRpdHl9cyAle2Nhc2NhZGV9cworICovCitjaGFyICoKK2RlcGFyc2Vf ZHJvcF90YWJsZShjb25zdCBjaGFyICpvYmppZGVudGl0eSwgTm9kZSAqcGFyc2V0cmVlKQorewor CURyb3BTdG10ICAgKm5vZGUgPSAoRHJvcFN0bXQgKikgcGFyc2V0cmVlOworCVN0cmluZ0luZm9E YXRhIGZtdFN0cjsKKwlKc29uYlZhbHVlICpqc29uYnZhbDsKKwlKc29uYgkgICAqanNvbmI7CisJ U3RyaW5nSW5mb0RhdGEgc3RyOworCUpzb25iUGFyc2VTdGF0ZSAqc3RhdGUgPSBOVUxMOworCisJ aW5pdFN0cmluZ0luZm8oJnN0cik7CisJaW5pdFN0cmluZ0luZm8oJmZtdFN0cik7CisKKwkvKiBt YXJrIHRoZSBiZWdpbiBvZiBST09UIG9iamVjdCBhbmQgc3RhcnQgYWRkaW5nIGVsZW1lbnRzIHRv IGl0LiAqLworCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7 CisKKwkvKiBTdGFydCBjb25zdHJ1Y3RpbmcgZm10IHN0cmluZyAqLworCWFwcGVuZFN0cmluZ0lu Zm9TdHJpbmcoJmZtdFN0ciwgIkRST1AgVEFCTEUiKTsKKworCS8qIENPTkNVUlJFTlRMWSAqLwor CWlmIChub2RlLT5jb25jdXJyZW50KQorCXsKKwkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmZm10 U3RyLCAiICV7Y29uY3VycmVudGx5fXMiKTsKKwkJbmV3X2pzb25iX1ZBKHN0YXRlLCAxLAorCQkJ CQkgImNvbmN1cnJlbnRseSIsIGpidlN0cmluZywgIkNPTkNVUlJFTlRMWSIpOworCX0KKworCS8q IElGIEVYSVNUUyAqLworCWlmIChub2RlLT5taXNzaW5nX29rKQorCXsKKwkJYXBwZW5kU3RyaW5n SW5mb1N0cmluZygmZm10U3RyLCAiICV7aWZfZXhpc3RzfXMiKTsKKwkJbmV3X2pzb25iX1ZBKHN0 YXRlLCAxLCAiaWZfZXhpc3RzIiwgamJ2U3RyaW5nLCAiSUYgRVhJU1RTIik7CisJfQorCisJLyog SURFTlRJVFkgKi8KKwlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZmbXRTdHIsICIgJXtvYmppZGVu dGl0eX1zIik7CisJbmV3X2pzb25iX1ZBKHN0YXRlLCAxLCAib2JqaWRlbnRpdHkiLCBqYnZTdHJp bmcsIG9iamlkZW50aXR5KTsKKworCS8qIENBU0NBREUgKi8KKwlpZiAobm9kZS0+YmVoYXZpb3Ig PT0gRFJPUF9DQVNDQURFKQorCXsKKwkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmZm10U3RyLCAi ICV7Y2FzY2FkZX1zIik7CisJCW5ld19qc29uYl9WQShzdGF0ZSwgMSwgImNhc2NhZGUiLCBqYnZT dHJpbmcsICJDQVNDQURFIik7CisJfQorCisJLyogV2UgaGF2ZSBmdWxsIGZtdCBieSBub3csIHNv IGFkZCBqc29uYiBlbGVtZW50IGZvciB0aGF0ICovCisJbmV3X2pzb25iX1ZBKHN0YXRlLCAxLCAi Zm10IiwgamJ2U3RyaW5nLCBmbXRTdHIuZGF0YSk7CisJcGZyZWUoZm10U3RyLmRhdGEpOworCisJ anNvbmJ2YWwgPSBwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9FTkRfT0JKRUNULCBOVUxMKTsK KworCWpzb25iID0gSnNvbmJWYWx1ZVRvSnNvbmIoanNvbmJ2YWwpOworCXJldHVybiBKc29uYlRv Q1N0cmluZygmc3RyLCAmanNvbmItPnJvb3QsIEpTT05CX0VTVElNQVRFRF9MRU4pOworfQorCisv KgorICogRGVwYXJzZSBhIENyZWF0ZVNlcVN0bXQuCisgKgorICogR2l2ZW4gYSBzZXF1ZW5jZSBP SUQgYW5kIHRoZSBwYXJzZSB0cmVlIHRoYXQgY3JlYXRlZCBpdCwgcmV0dXJuIEpzb25iCisgKiBy ZXByZXNlbnRpbmcgdGhlIGNyZWF0aW9uIGNvbW1hbmQuCisgKgorICogTm90ZTogV2UgbmVlZCB0 byBkZXBhcnNlIHRoZSBDUkVBVEUgU0VRVUVOQ0UgY29tbWFuZCBmb3IgdGhlIFRBQkxFCisgKiBj b21tYW5kcy4gRm9yIGV4YW1wbGUsIFdoZW4gY3JlYXRpbmcgYSB0YWJsZSwgaWYgd2Ugc3BlY2lm eSBhIGNvbHVtbiBhcyBhCisgKiBzZXJpYWwgdHlwZSwgdGhlbiB3ZSB3aWxsIGNyZWF0ZSBhIHNl cXVlbmNlIGZvciB0aGF0IGNvbHVtbiBhbmQgc2V0IHRoYXQKKyAqIHNlcXVlbmNlIE9XTkVEIEJZ IHRoZSB0YWJsZS4gVGhlIHNlcmlhbCBjb2x1bW4gdHlwZSBpbmZvcm1hdGlvbiBpcyBub3QKKyAq IGF2YWlsYWJsZSBkdXJpbmcgZGVwYXJzaW5nIHBoYXNlIGFzIHRoYXQgaGFzIGFscmVhZHkgYmVl biBjb252ZXJ0ZWQgdG8KKyAqIHRoZSBjb2x1bW4gZGVmYXVsdCB2YWx1ZSBhbmQgc2VxdWVuY2Vz IGNyZWF0aW9uIHdoaWxlIHBhcnNpbmcuCisgKgorICogVmVyYm9zZSBzeW50YXgKKyAqIENSRUFU RSAle3BlcnNpc3RlbmNlfXMgU0VRVUVOQ0UgJXtpZl9ub3RfZXhpc3RzfXMgJXtpZGVudGl0eX1E ICV7ZGVmaW5pdGlvbjogfXMKKyAqLworc3RhdGljIEpzb25iICoKK2RlcGFyc2VfQ3JlYXRlU2Vx U3RtdChPaWQgb2JqZWN0SWQsIE5vZGUgKnBhcnNldHJlZSkKK3sKKwlSZWxhdGlvbglyZWxhdGlv bjsKKwlGb3JtX3BnX3NlcXVlbmNlIHNlcWZvcm07CisJU2VxdWVuY2VfdmFsdWVzICpzZXF2YWx1 ZXM7CisJQ3JlYXRlU2VxU3RtdCAqY3JlYXRlU2VxU3RtdCA9IChDcmVhdGVTZXFTdG10ICopIHBh cnNldHJlZTsKKwlKc29uYlBhcnNlU3RhdGUgKnN0YXRlID0gTlVMTDsKKwlKc29uYlZhbHVlICp2 YWx1ZTsKKwlTdHJpbmdJbmZvRGF0YSBmbXRTdHI7CisJY2hhcgkgICAqcGVyc3RyOworCisJLyoK KwkgKiBPbmx5IHN1cHBvcnQgc2VxdWVuY2UgZm9yIElERU5USVRZIENPTFVNTiBvdXRwdXQgc2Vw YXJhdGVseSAodmlhIENSRUFURQorCSAqIFRBQkxFIG9yIEFMVEVSIFRBQkxFKS4gT3RoZXJ3aXNl LCByZXR1cm4gZW1wdHkgaGVyZS4KKwkgKi8KKwlpZiAoY3JlYXRlU2VxU3RtdC0+Zm9yX2lkZW50 aXR5KQorCQlyZXR1cm4gTlVMTDsKKworCWluaXRTdHJpbmdJbmZvKCZmbXRTdHIpOworCXJlbGF0 aW9uID0gcmVsYXRpb25fb3BlbihvYmplY3RJZCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCS8qIG1h cmsgdGhlIHN0YXJ0IG9mIFJPT1Qgb2JqZWN0ICovCisJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBX SkJfQkVHSU5fT0JKRUNULCBOVUxMKTsKKwlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZmbXRTdHIs ICJDUkVBVEUiKTsKKworCS8qIFBFUlNJU1RFTkNFICovCisJcGVyc3RyID0gZ2V0X3BlcnNpc3Rl bmNlX3N0cihyZWxhdGlvbi0+cmRfcmVsLT5yZWxwZXJzaXN0ZW5jZSk7CisJaWYgKHBlcnN0cikK Kwl7CisJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmZtdFN0ciwgIiAle3BlcnNpc3RlbmNlfXMi KTsKKwkJbmV3X2pzb25iX1ZBKHN0YXRlLCAxLAorCQkJCQkgInBlcnNpc3RlbmNlIiwgamJ2U3Ry aW5nLCBwZXJzdHIpOworCX0KKworCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmZtdFN0ciwgIiBT RVFVRU5DRSIpOworCisJLyogSUYgTk9UIEVYSVNUUyAqLworCWlmIChjcmVhdGVTZXFTdG10LT5p Zl9ub3RfZXhpc3RzKQorCXsKKwkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmZm10U3RyLCAiICV7 aWZfbm90X2V4aXN0c31zIik7CisJCW5ld19qc29uYl9WQShzdGF0ZSwgMSwKKwkJCQkJICJpZl9u b3RfZXhpc3RzIiwgamJ2U3RyaW5nLCAiSUYgTk9UIEVYSVNUUyIpOworCX0KKworCS8qIElERU5U SVRZICovCisJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmZm10U3RyLCAiICV7aWRlbnRpdHl9RCIp OworCWluc2VydF9pZGVudGl0eV9vYmplY3Qoc3RhdGUsIHJlbGF0aW9uLT5yZF9yZWwtPnJlbG5h bWVzcGFjZSwKKwkJCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbGF0aW9uKSk7CisK KwlyZWxhdGlvbl9jbG9zZShyZWxhdGlvbiwgQWNjZXNzU2hhcmVMb2NrKTsKKworCXNlcXZhbHVl cyA9IGdldF9zZXF1ZW5jZV92YWx1ZXMob2JqZWN0SWQpOworCXNlcWZvcm0gPSBzZXF2YWx1ZXMt PnNlcWZvcm07CisKKwkvKiBzZXF1ZW5jZSBkZWZpbml0aW9uIGFycmF5IG9iamVjdCBjcmVhdGlv biwgcHVzaCB0aGUga2V5IGZpcnN0ICovCisJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmZm10U3Ry LCAiICV7ZGVmaW5pdGlvbjogfXMiKTsKKwlpbnNlcnRfanNvbmJfa2V5KHN0YXRlLCAiZGVmaW5p dGlvbiIpOworCisJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfQkVHSU5fQVJSQVksIE5VTEwp OworCisJLyogRGVmaW5pdGlvbiBlbGVtZW50cyAqLworCWRlcGFyc2VfU2VxX0NhY2hlKHN0YXRl LCBzZXFmb3JtKTsKKwlkZXBhcnNlX1NlcV9DeWNsZShzdGF0ZSwgc2VxZm9ybSk7CisJZGVwYXJz ZV9TZXFfSW5jcmVtZW50Qnkoc3RhdGUsIHNlcWZvcm0pOworCWRlcGFyc2VfU2VxX01pbnZhbHVl KHN0YXRlLCBzZXFmb3JtKTsKKwlkZXBhcnNlX1NlcV9NYXh2YWx1ZShzdGF0ZSwgc2VxZm9ybSk7 CisJZGVwYXJzZV9TZXFfU3RhcnR3aXRoKHN0YXRlLCBzZXFmb3JtKTsKKwlkZXBhcnNlX1NlcV9S ZXN0YXJ0KHN0YXRlLCBzZXF2YWx1ZXMtPmxhc3RfdmFsdWUpOworCWRlcGFyc2VfU2VxX0FzKHN0 YXRlLCBzZXFmb3JtKTsKKwkvKiBXZSBwdXJwb3NlZnVsbHkgZG8gbm90IGVtaXQgT1dORUQgQlkg aGVyZSAqLworCisJLyogbWFyayB0aGUgZW5kIG9mIHNlcXVlbmNlIGRlZmluaXRpb24gYXJyYXkg Ki8KKwlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9FTkRfQVJSQVksIE5VTEwpOworCisJLyog V2UgaGF2ZSBmdWxsIGZtdCBieSBub3csIHNvIGFkZCBqc29uYiBlbGVtZW50IGZvciB0aGF0ICov CisJbmV3X2pzb25iX1ZBKHN0YXRlLCAxLCAiZm10IiwgamJ2U3RyaW5nLCBmbXRTdHIuZGF0YSk7 CisKKwlwZnJlZShmbXRTdHIuZGF0YSk7CisKKwkvKiBtYXJrIHRoZSBlbmQgb2YgUk9PVCBvYmpl Y3QgKi8KKwl2YWx1ZSA9IHB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0VORF9PQkpFQ1QsIE5V TEwpOworCisJcmV0dXJuIEpzb25iVmFsdWVUb0pzb25iKHZhbHVlKTsKK30KKworLyoKKyAqIERl cGFyc2UgYW4gQWx0ZXJTZXFTdG10LgorICoKKyAqIEdpdmVuIGEgc2VxdWVuY2UgT0lEIGFuZCBh IHBhcnNlIHRyZWUgdGhhdCBtb2RpZmllZCBpdCwgcmV0dXJuIEpzb25iCisgKiByZXByZXNlbnRp bmcgdGhlIGFsdGVyIGNvbW1hbmQuCisgKgorICogTm90ZTogV2UgbmVlZCB0byBkZXBhcnNlIHRo ZSBBTFRFUiBTRVFVRU5DRSBjb21tYW5kIGZvciB0aGUgVEFCTEUgY29tbWFuZHMuCisgKiBGb3Ig ZXhhbXBsZSwgV2hlbiBjcmVhdGluZyBhIHRhYmxlLCBpZiB3ZSBzcGVjaWZ5IGEgY29sdW1uIGFz IGEgc2VyaWFsCisgKiB0eXBlLCB0aGVuIHdlIHdpbGwgY3JlYXRlIGEgc2VxdWVuY2UgZm9yIHRo YXQgY29sdW1uIGFuZCBzZXQgdGhhdCBzZXF1ZW5jZQorICogT1dORUQgQlkgdGhlIHRhYmxlLiBU aGUgc2VyaWFsIGNvbHVtbiB0eXBlIGluZm9ybWF0aW9uIGlzIG5vdCBhdmFpbGFibGUKKyAqIGR1 cmluZyBkZXBhcnNpbmcgcGhhc2UgYXMgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIGNvbnZlcnRlZCB0 byB0aGUgY29sdW1uCisgKiBkZWZhdWx0IHZhbHVlIGFuZCBzZXF1ZW5jZXMgY3JlYXRpb24gd2hp bGUgcGFyc2luZy4KKyAqCisgKiBWZXJib3NlIHN5bnRheAorICogQUxURVIgU0VRVUVOQ0UgJXtp ZGVudGl0eX1EICV7ZGVmaW5pdGlvbjogfXMKKyAqLworc3RhdGljIEpzb25iICoKK2RlcGFyc2Vf QWx0ZXJTZXFTdG10KE9pZCBvYmplY3RJZCwgTm9kZSAqcGFyc2V0cmVlKQoreworCVJlbGF0aW9u CXJlbGF0aW9uOworCUxpc3RDZWxsICAgKmNlbGw7CisJRm9ybV9wZ19zZXF1ZW5jZSBzZXFmb3Jt OworCVNlcXVlbmNlX3ZhbHVlcyAqc2VxdmFsdWVzOworCUFsdGVyU2VxU3RtdCAqYWx0ZXJTZXFT dG10ID0gKEFsdGVyU2VxU3RtdCAqKSBwYXJzZXRyZWU7CisJSnNvbmJQYXJzZVN0YXRlICpzdGF0 ZSA9IE5VTEw7CisJSnNvbmJWYWx1ZSAqdmFsdWU7CisKKwkvKgorCSAqIFNlcXVlbmNlIGZvciBJ REVOVElUWSBDT0xVTU4gb3V0cHV0IHNlcGFyYXRlbHkgKHZpYSBDUkVBVEUgVEFCTEUgb3IKKwkg KiBBTFRFUiBUQUJMRSk7IHJldHVybiBlbXB0eSBoZXJlLgorCSAqLworCWlmIChhbHRlclNlcVN0 bXQtPmZvcl9pZGVudGl0eSkKKwkJcmV0dXJuIE5VTEw7CisKKwlyZWxhdGlvbiA9IHJlbGF0aW9u X29wZW4ob2JqZWN0SWQsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwkvKiBtYXJrIHRoZSBzdGFydCBv ZiBST09UIG9iamVjdCAqLworCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lOX09CSkVD VCwgTlVMTCk7CisKKwluZXdfanNvbmJfVkEoc3RhdGUsIDEsCisJCQkJICJmbXQiLCBqYnZTdHJp bmcsICJBTFRFUiBTRVFVRU5DRSAle2lkZW50aXR5fUQgJXtkZWZpbml0aW9uOiB9cyIpOworCisJ aW5zZXJ0X2lkZW50aXR5X29iamVjdChzdGF0ZSwgcmVsYXRpb24tPnJkX3JlbC0+cmVsbmFtZXNw YWNlLAorCQkJCQkJICAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsYXRpb24pKTsKKwlyZWxh dGlvbl9jbG9zZShyZWxhdGlvbiwgQWNjZXNzU2hhcmVMb2NrKTsKKworCXNlcXZhbHVlcyA9IGdl dF9zZXF1ZW5jZV92YWx1ZXMob2JqZWN0SWQpOworCXNlcWZvcm0gPSBzZXF2YWx1ZXMtPnNlcWZv cm07CisKKwkvKiBzZXF1ZW5jZSBkZWZpbml0aW9uIGFycmF5IG9iamVjdCBjcmVhdGlvbiwgcHVz aCB0aGUga2V5IGZpcnN0ICovCisJaW5zZXJ0X2pzb25iX2tleShzdGF0ZSwgImRlZmluaXRpb24i KTsKKworCS8qIG1hcmsgdGhlIHN0YXJ0IG9mIHNlcXVlbmNlIGRlZmluaXRpb24gYXJyYXkgKi8K KwlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9BUlJBWSwgTlVMTCk7CisKKwlmb3Jl YWNoKGNlbGwsICgoQWx0ZXJTZXFTdG10ICopIHBhcnNldHJlZSktPm9wdGlvbnMpCisJeworCQlE ZWZFbGVtICAgICplbGVtID0gKERlZkVsZW0gKikgbGZpcnN0KGNlbGwpOworCisJCWlmIChzdHJj bXAoZWxlbS0+ZGVmbmFtZSwgImNhY2hlIikgPT0gMCkKKwkJCWRlcGFyc2VfU2VxX0NhY2hlKHN0 YXRlLCBzZXFmb3JtKTsKKwkJZWxzZSBpZiAoc3RyY21wKGVsZW0tPmRlZm5hbWUsICJjeWNsZSIp ID09IDApCisJCQlkZXBhcnNlX1NlcV9DeWNsZShzdGF0ZSwgc2VxZm9ybSk7CisJCWVsc2UgaWYg KHN0cmNtcChlbGVtLT5kZWZuYW1lLCAiaW5jcmVtZW50IikgPT0gMCkKKwkJCWRlcGFyc2VfU2Vx X0luY3JlbWVudEJ5KHN0YXRlLCBzZXFmb3JtKTsKKwkJZWxzZSBpZiAoc3RyY21wKGVsZW0tPmRl Zm5hbWUsICJtaW52YWx1ZSIpID09IDApCisJCQlkZXBhcnNlX1NlcV9NaW52YWx1ZShzdGF0ZSwg c2VxZm9ybSk7CisJCWVsc2UgaWYgKHN0cmNtcChlbGVtLT5kZWZuYW1lLCAibWF4dmFsdWUiKSA9 PSAwKQorCQkJZGVwYXJzZV9TZXFfTWF4dmFsdWUoc3RhdGUsIHNlcWZvcm0pOworCQllbHNlIGlm IChzdHJjbXAoZWxlbS0+ZGVmbmFtZSwgInN0YXJ0IikgPT0gMCkKKwkJCWRlcGFyc2VfU2VxX1N0 YXJ0d2l0aChzdGF0ZSwgc2VxZm9ybSk7CisJCWVsc2UgaWYgKHN0cmNtcChlbGVtLT5kZWZuYW1l LCAicmVzdGFydCIpID09IDApCisJCQlkZXBhcnNlX1NlcV9SZXN0YXJ0KHN0YXRlLCBzZXF2YWx1 ZXMtPmxhc3RfdmFsdWUpOworCQllbHNlIGlmIChzdHJjbXAoZWxlbS0+ZGVmbmFtZSwgIm93bmVk X2J5IikgPT0gMCkKKwkJCWRlcGFyc2VfU2VxX093bmVkQnkoc3RhdGUsIG9iamVjdElkKTsKKwkJ ZWxzZSBpZiAoc3RyY21wKGVsZW0tPmRlZm5hbWUsICJhcyIpID09IDApCisJCQlkZXBhcnNlX1Nl cV9BcyhzdGF0ZSwgc2VxZm9ybSk7CisJCWVsc2UKKwkJCWVsb2coRVJST1IsICJpbnZhbGlkIHNl cXVlbmNlIG9wdGlvbiAlcyIsIGVsZW0tPmRlZm5hbWUpOworCX0KKworCS8qIG1hcmsgdGhlIGVu ZCBvZiBzZXF1ZW5jZSBkZWZpbml0aW9uIGFycmF5ICovCisJcHVzaEpzb25iVmFsdWUoJnN0YXRl LCBXSkJfRU5EX0FSUkFZLCBOVUxMKTsKKworCS8qIG1hcmsgdGhlIGVuZCBvZiBST09UIG9iamVj dCAqLworCXZhbHVlID0gcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfRU5EX09CSkVDVCwgTlVM TCk7CisKKwlyZXR1cm4gSnNvbmJWYWx1ZVRvSnNvbmIodmFsdWUpOworfQorCisvKgorICogSGFu ZGxlIGRlcGFyc2luZyBvZiBzaW1wbGUgY29tbWFuZHMuCisgKgorICogVGhpcyBmdW5jdGlvbiBz aG91bGQgY292ZXIgYWxsIGNhc2VzIGhhbmRsZWQgaW4gUHJvY2Vzc1V0aWxpdHlTbG93LgorICov CitzdGF0aWMgSnNvbmIgKgorZGVwYXJzZV9zaW1wbGVfY29tbWFuZChDb2xsZWN0ZWRDb21tYW5k ICpjbWQpCit7CisJT2lkCQkJb2JqZWN0SWQ7CisJTm9kZQkgICAqcGFyc2V0cmVlOworCisJQXNz ZXJ0KGNtZC0+dHlwZSA9PSBTQ1RfU2ltcGxlKTsKKworCXBhcnNldHJlZSA9IGNtZC0+cGFyc2V0 cmVlOworCW9iamVjdElkID0gY21kLT5kLnNpbXBsZS5hZGRyZXNzLm9iamVjdElkOworCisJaWYg KGNtZC0+aW5fZXh0ZW5zaW9uICYmIChub2RlVGFnKHBhcnNldHJlZSkgIT0gVF9DcmVhdGVFeHRl bnNpb25TdG10KSkKKwkJcmV0dXJuIE5VTEw7CisKKwkvKiBUaGlzIHN3aXRjaCBuZWVkcyB0byBo YW5kbGUgZXZlcnl0aGluZyB0aGF0IFByb2Nlc3NVdGlsaXR5U2xvdyBkb2VzICovCisJc3dpdGNo IChub2RlVGFnKHBhcnNldHJlZSkpCisJeworCQljYXNlIFRfQWx0ZXJTZXFTdG10OgorCQkJcmV0 dXJuIGRlcGFyc2VfQWx0ZXJTZXFTdG10KG9iamVjdElkLCBwYXJzZXRyZWUpOworCisJCWNhc2Ug VF9DcmVhdGVTZXFTdG10OgorCQkJcmV0dXJuIGRlcGFyc2VfQ3JlYXRlU2VxU3RtdChvYmplY3RJ ZCwgcGFyc2V0cmVlKTsKKworCQljYXNlIFRfQ3JlYXRlU3RtdDoKKwkJCXJldHVybiBkZXBhcnNl X0NyZWF0ZVN0bXQob2JqZWN0SWQsIHBhcnNldHJlZSk7CisKKwkJZGVmYXVsdDoKKwkJCWVsb2co TE9HLCAidW5yZWNvZ25pemVkIG5vZGUgdHlwZSBpbiBkZXBhcnNlIGNvbW1hbmQ6ICVkIiwKKwkJ CQkgKGludCkgbm9kZVRhZyhwYXJzZXRyZWUpKTsKKwl9CisKKwlyZXR1cm4gTlVMTDsKK30KKwor LyoKKyAqIFdvcmtob3JzZSB0byBkZXBhcnNlIGEgQ29sbGVjdGVkQ29tbWFuZC4KKyAqLworY2hh ciAqCitkZXBhcnNlX3V0aWxpdHlfY29tbWFuZChDb2xsZWN0ZWRDb21tYW5kICpjbWQpCit7CisJ T3ZlcnJpZGVTZWFyY2hQYXRoICpvdmVycmlkZVBhdGg7CisJTWVtb3J5Q29udGV4dCBvbGRjeHQ7 CisJTWVtb3J5Q29udGV4dCB0bXBjeHQ7CisJY2hhcgkgICAqY29tbWFuZCA9IE5VTEw7CisJU3Ry aW5nSW5mb0RhdGEgc3RyOworCUpzb25iCSAgICpqc29uYjsKKworCS8qCisJICogQWxsb2NhdGUg ZXZlcnl0aGluZyBkb25lIGJ5IHRoZSBkZXBhcnNpbmcgcm91dGluZXMgaW50byBhIHRlbXAgY29u dGV4dCwKKwkgKiB0byBhdm9pZCBoYXZpbmcgdG8gc3ByaW5rbGUgdGhlbSB3aXRoIG1lbW9yeSBo YW5kbGluZyBjb2RlLCBidXQKKwkgKiBhbGxvY2F0ZSB0aGUgb3V0cHV0IFN0cmluZ0luZm8gYmVm b3JlIHN3aXRjaGluZy4KKwkgKi8KKwlpbml0U3RyaW5nSW5mbygmc3RyKTsKKwl0bXBjeHQgPSBB bGxvY1NldENvbnRleHRDcmVhdGUoQ3VycmVudE1lbW9yeUNvbnRleHQsCisJCQkJCQkJCSAgICJk ZXBhcnNlIGN0eCIsCisJCQkJCQkJCSAgIEFMTE9DU0VUX0RFRkFVTFRfTUlOU0laRSwKKwkJCQkJ CQkJICAgQUxMT0NTRVRfREVGQVVMVF9JTklUU0laRSwKKwkJCQkJCQkJICAgQUxMT0NTRVRfREVG QVVMVF9NQVhTSVpFKTsKKwlvbGRjeHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8odG1wY3h0KTsK KworCS8qCisJICogTWFueSByb3V0aW5lcyB1bmRlcmx5aW5nIHRoaXMgb25lIHdpbGwgaW52b2tl IHJ1bGV1dGlscy5jIGZ1bmN0aW9uYWxpdHkKKwkgKiB0byBvYnRhaW4gZGVwYXJzZWQgdmVyc2lv bnMgb2YgZXhwcmVzc2lvbnMuICBJbiBzdWNoIHJlc3VsdHMsIHdlIHdhbnQKKwkgKiBhbGwgb2Jq ZWN0IG5hbWVzIHRvIGJlIHF1YWxpZmllZCwgc28gdGhhdCByZXN1bHRzIGFyZSAicG9ydGFibGUi IHRvCisJICogZW52aXJvbm1lbnRzIHdpdGggZGlmZmVyZW50IHNlYXJjaF9wYXRoIHNldHRpbmdz LiAgUmF0aGVyIHRoYW4KKwkgKiBpbmplY3Rpbmcgd2hhdCB3b3VsZCBiZSByZXBldGl0aXZlIGNh bGxzIHRvIG92ZXJyaWRlIHNlYXJjaCBwYXRoIGFsbAorCSAqIG92ZXIgdGhlIHBsYWNlLCB3ZSBk byBpdCBjZW50cmFsbHkgaGVyZS4KKwkgKi8KKwlvdmVycmlkZVBhdGggPSBHZXRPdmVycmlkZVNl YXJjaFBhdGgoQ3VycmVudE1lbW9yeUNvbnRleHQpOworCW92ZXJyaWRlUGF0aC0+c2NoZW1hcyA9 IE5JTDsKKwlvdmVycmlkZVBhdGgtPmFkZENhdGFsb2cgPSBmYWxzZTsKKwlvdmVycmlkZVBhdGgt PmFkZFRlbXAgPSB0cnVlOworCVB1c2hPdmVycmlkZVNlYXJjaFBhdGgob3ZlcnJpZGVQYXRoKTsK KworCXN3aXRjaCAoY21kLT50eXBlKQorCXsKKwkJY2FzZSBTQ1RfU2ltcGxlOgorCQkJanNvbmIg PSBkZXBhcnNlX3NpbXBsZV9jb21tYW5kKGNtZCk7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJ CWVsb2coRVJST1IsICJ1bmV4cGVjdGVkIGRlcGFyc2Ugbm9kZSB0eXBlICVkIiwgY21kLT50eXBl KTsKKwl9CisKKwlQb3BPdmVycmlkZVNlYXJjaFBhdGgoKTsKKworCWlmIChqc29uYikKKwkJY29t bWFuZCA9IEpzb25iVG9DU3RyaW5nKCZzdHIsICZqc29uYi0+cm9vdCwgSlNPTkJfRVNUSU1BVEVE X0xFTik7CisKKwkvKgorCSAqIENsZWFuIHVwLiAgTm90ZSB0aGF0IHNpbmNlIHdlIGNyZWF0ZWQg dGhlIFN0cmluZ0luZm8gaW4gdGhlIGNhbGxlcidzCisJICogY29udGV4dCwgdGhlIG91dHB1dCBz dHJpbmcgaXMgbm90IGRlbGV0ZWQgaGVyZS4KKwkgKi8KKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8o b2xkY3h0KTsKKwlNZW1vcnlDb250ZXh0RGVsZXRlKHRtcGN4dCk7CisKKwlyZXR1cm4gY29tbWFu ZDsKK30KKworLyoKKyAqIEdpdmVuIGEgQ29sbGVjdGVkQ29tbWFuZCwgcmV0dXJuIGEgSlNPTiBy ZXByZXNlbnRhdGlvbiBvZiBpdC4KKyAqCisgKiBUaGUgY29tbWFuZCBpcyBleHBhbmRlZCBmdWxs eSBzbyB0aGF0IHRoZXJlIGFyZSBubyBhbWJpZ3VpdGllcyBldmVuIGluIHRoZQorICogZmFjZSBv ZiBzZWFyY2hfcGF0aCBjaGFuZ2VzLgorICovCitEYXR1bQorZGRsX2RlcGFyc2VfdG9fanNvbihQ R19GVU5DVElPTl9BUkdTKQoreworCUNvbGxlY3RlZENvbW1hbmQgKmNtZCA9IChDb2xsZWN0ZWRD b21tYW5kICopIFBHX0dFVEFSR19QT0lOVEVSKDApOworCWNoYXIJICAgKmNvbW1hbmQ7CisKKwlj b21tYW5kID0gZGVwYXJzZV91dGlsaXR5X2NvbW1hbmQoY21kKTsKKworCWlmIChjb21tYW5kKQor CQlQR19SRVRVUk5fVEVYVF9QKGNzdHJpbmdfdG9fdGV4dChjb21tYW5kKSk7CisKKwlQR19SRVRV Uk5fTlVMTCgpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZGRsanNvbi5j IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZGRsanNvbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAuLmQ1Yzk2OGI3YzEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9kZGxqc29uLmMKQEAgLTAsMCArMSw3NTkgQEAKKy8qLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICoKKyAqIGRkbGpzb24uYworICoJICBKU09OIGNvZGUgcmVsYXRlZCB0byBEREwgY29tbWFu ZCBkZXBhcnNpbmcKKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyMywgUG9z dGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHlyaWdodCAo YykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCisgKgorICog Tk9URVMKKyAqCisgKiBFYWNoIEpTT05CIG9iamVjdCBpcyBzdXBwb3NlZCB0byBoYXZlIGEgImZt dCIgd2hpY2ggd2lsbCB0ZWxsIGV4cGFuc2lvbgorICogcm91dGluZXMgaG93IEpTT05CIGNhbiBi ZSBleHBhbmRlZCB0byBjb25zdHJ1Y3QgZGRsIGNvbW1hbmQuIE9uZSBleGFtcGxlCisgKiBzbmlw cGV0IGZyb20gSlNPTkIgb2JqZWN0IGZvciAnQUxURVIgVEFCTEUgc2FsZXMgQUREIGNvbDEgaW50 JzoKKyAqCisgKiB7ICoxLWxldmVsKgorICogICAiZm10IjogIkFMVEVSICV7b2JqdHlwZX1zICV7 b25seX1zICV7aWRlbnRpdHl9RCAle3N1YmNtZHM6LCB9cyIsCisgKiAgICJvbmx5IjogIiIsCisg KiAgIm9ianR5cGUiOiAiVEFCTEUiLAorICogICJpZGVudGl0eSI6IHsib2JqbmFtZSI6ICJzYWxl cyIsICJzY2hlbWFuYW1lIjogInB1YmxpYyJ9CisgKiAgInN1YmNtZHMiOiBbCisgKiAgICAgIHsg KjItbGV2ZWwqCisgKiAgICAgICAgICAiZm10IjogIkFERCAle29ianR5cGV9cyAle2lmX25vdF9l eGlzdHN9cyAle2RlZmluaXRpb259cyIsCisgKiAgICAgICAgICAidHlwZSI6ICJhZGQgY29sdW1u IiwKKyAqICAgICAgICAgICJvYmp0eXBlIjogIkNPTFVNTiIsCisgKiAgICAgICAgICAiZGVmaW5p dGlvbiI6IHt9CisgKiAgICAgICAgICAgLi4uCisgKiAgICAgIH0KKyAqICAgICAgLi4uCisgKiB9 CisgKgorICogRnJvbSBhYm92ZSwgd2UgY2FuIHNlZSBkaWZmZXJlbnQga2V5LXZhbHVlIHBhaXJz LgorICogbGV2ZWwtMSByZXByZXNlbnRzIFJPT1Qgb2JqZWN0IHdpdGggJ2ZtdCcsICdvbmx5Jywg J29ianR5cGUnLCdpZGVudGl0eScsCisgKiAnc3ViY21kcycgYXMgdGhlIGtleXMgd2l0aCB0aGUg dmFsdWVzIGFwcGVuZGVkIGFmdGVyICI6IiB3aXRoIGVhY2gga2V5LgorICogVmFsdWUgY2FuIGJl IHN0cmluZywgYm9vbCwgbnVtZXJpYywgYXJyYXkgb3IgYW55IG5lc3RlZCBvYmplY3QuICBBcyBh bgorICogZXhhbXBsZSwgIm9ianR5cGUiIGhhcyBzdHJpbmcgdmFsdWUgd2hpbGUgInN1YmNtZHMi IGhhcyBuZXN0ZWQtb2JqZWN0CisgKiBhcyBpdHMgdmFsdWUgd2hpY2ggY2FuIGZ1cnRoZXIgaGF2 ZSBtdWx0aXBsZSBrZXktdmFsdWUgcGFpcnMuCisgKgorICogVGhlIHZhbHVlIG9mICJmbXQiIHRl bGxzIHVzIGhvdyB0aGUgZXhwYW5zaW9uIHdpbGwgYmUgY2FycmllZCBvbi4gVGhlCisgKiB2YWx1 ZSBvZiAiZm10IiAgbWF5IGNvbnRhaW4gemVybyBvciBtb3JlICUtZXNjYXBlcywgd2hpY2ggY29u c2lzdCBvZiBrZXkKKyAqIG5hbWUgZW5jbG9zZWQgaW4geyB9LCBmb2xsb3dlZCBieSBhIGNvbnZl cnNpb24gc3BlY2lmaWVyIHdoaWNoIHRlbGxzIHVzCisgKiBob3cgdGhlIHZhbHVlIGZvciB0aGF0 IHBhcnRpY3VsYXIga2V5IHNob3VsZCBiZSBleHBhbmRlZC4KKyAqIFBvc3NpYmxlIGNvbnZlcnNp b24gc3BlY2lmaWVycyBhcmU6CisgKiAlICAgICAgICAgICAgZXhwYW5kIHRvIGEgbGl0ZXJhbCAl CisgKiBJICAgICAgICAgICAgZXhwYW5kIGFzIGEgc2luZ2xlLCBub24tcXVhbGlmaWVkIGlkZW50 aWZpZXIKKyAqIEQgICAgICAgICAgICBleHBhbmQgYXMgYSBwb3NzaWJseS1xdWFsaWZpZWQgaWRl bnRpZmllcgorICogVCAgICAgICAgICAgIGV4cGFuZCBhcyBhIHR5cGUgbmFtZQorICogTCAgICAg ICAgICAgIGV4cGFuZCBhcyBhIHN0cmluZyBsaXRlcmFsIChxdW90ZSB1c2luZyBzaW5nbGUgcXVv dGVzKQorICogcyAgICAgICAgICAgIGV4cGFuZCBhcyBhIHNpbXBsZSBzdHJpbmcgKG5vIHF1b3Rp bmcpCisgKiBuICAgICAgICAgICAgZXhwYW5kIGFzIGEgc2ltcGxlIG51bWJlciAobm8gcXVvdGlu ZykKKyAqCisgKiBJbiBvcmRlciB0byBidWlsZCBhIERETCBjb21tYW5kLCBpdCB3aWxsIGZpcnN0 IGV4dHJhY3QgImZtdCIgbm9kZSBpbgorICoganNvbmIgc3RyaW5nIGFuZCB3aWxsIHJlYWQgZWFj aCBrZXkgbmFtZSBlbmNsb3NlZCBpbiB7IH0gaW4gZm10LXN0cmluZworICogYW5kIHdpbGwgcmVw bGFjZSBpdCB3aXRoIGl0cyB2YWx1ZS4gRm9yIGVhY2ggbmFtZSBtZW50aW9uZWQgaW4geyB9IGlu CisgKiBmbXQgc3RyaW5nLCB0aGVyZSBtdXN0IGJlIGEga2V5LXZhbHVlIHBhaXIsIGluIGFic2Vu Y2Ugb2Ygd2hpY2gsIHRoZQorICogZXhwYW5zaW9uIHdpbGwgZXJyb3Igb3V0LiBXaGlsZSBkb2lu ZyB0aGlzIGV4cGFuc2lvbiwgaXQgd2lsbCBjb25zaWRlcgorICogdGhlIGNvbnZlcnNpb24tc3Bl Y2lmaWVyIG1haW50YWluZWQgd2l0aCBlYWNoIGtleSBpbiBmbXQgc3RyaW5nIHRvIGZpZ3VyZQor ICogb3V0IGhvdyB2YWx1ZSBzaG91bGQgYWN0dWFsbHkgYmUgcmVwcmVzZW50ZWQuIFRoaXMgaXMg aG93IERETCBjb21tYW5kIGNhbgorICogYmUgY29uc3RydWN0ZWQgYmFjayBmcm9tIHRoZSBqc29u Yi1zdHJpbmcuCisgKgorICogSURFTlRJRklDQVRJT04KKyAqCSAgc3JjL2JhY2tlbmQvY29tbWFu ZHMvZGRsanNvbi5jCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpbmNsdWRlICJwb3N0 Z3Jlcy5oIgorCisjaW5jbHVkZSAidGNvcC9kZGxkZXBhcnNlLmgiCisjaW5jbHVkZSAidXRpbHMv YnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1dGlscy9qc29uYi5oIgorCisKKyNkZWZpbmUgQURWQU5D RV9QQVJTRV9QT0lOVEVSKHB0cixlbmRfcHRyKSBcCisJZG8geyBcCisJCWlmICgrKyhwdHIpID49 IChlbmRfcHRyKSkgXAorCQkJZXJlcG9ydChFUlJPUiwgXAorCQkJCQllcnJjb2RlKEVSUkNPREVf SU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLCBcCisJCQkJCWVycm1zZygidW50ZXJtaW5hdGVkIGZv cm1hdCBzcGVjaWZpZXIiKSk7IFwKKwl9IHdoaWxlICgwKQorCisvKgorICogQ29udmVyc2lvbiBz cGVjaWZpZXIgd2hpY2ggZGV0ZXJtaW5lcyBob3cgdG8gZXhwYW5kIHRoZSBKU09OIGVsZW1lbnQK KyAqIGludG8gYSBzdHJpbmcuCisgKi8KK3R5cGVkZWYgZW51bQoreworCVNwZWNEb3R0ZWROYW1l LAorCVNwZWNJZGVudGlmaWVyLAorCVNwZWNOdW1iZXIsCisJU3BlY1N0cmluZywKKwlTcGVjU3Ry aW5nTGl0ZXJhbCwKKwlTcGVjVHlwZU5hbWUKK30gY29udlNwZWNpZmllcjsKKworLyoKKyAqIEEg dGVybmFyeSB2YWx1ZSB0aGF0IHJlcHJlc2VudHMgYSBib29sZWFuIHR5cGUgSnNvbmJWYWx1ZS4K KyAqLwordHlwZWRlZiBlbnVtCit7CisJdHZfYWJzZW50LAorCXR2X3RydWUsCisJdHZfZmFsc2UK K30JCQlqc29uX3RyaXZhbHVlOworCitzdGF0aWMgYm9vbCBleHBhbmRfb25lX2pzb25iX2VsZW1l bnQoU3RyaW5nSW5mbyBidWYsIGNoYXIgKnBhcmFtLAorCQkJCQkJCQkJIEpzb25iVmFsdWUgKmpz b252YWwsIGNvbnZTcGVjaWZpZXIgc3BlY2lmaWVyLAorCQkJCQkJCQkJIGNvbnN0IGNoYXIgKmZt dCk7CitzdGF0aWMgdm9pZCBleHBhbmRfanNvbmJfYXJyYXkoU3RyaW5nSW5mbyBidWYsIGNoYXIg KnBhcmFtLAorCQkJCQkJCSAgIEpzb25iVmFsdWUgKmpzb25hcnIsIGNoYXIgKmFycmF5c2VwLAor CQkJCQkJCSAgIGNvbnZTcGVjaWZpZXIgc3BlY2lmaWVyLCBjb25zdCBjaGFyICpmbXQpOworc3Rh dGljIHZvaWQgZm10c3RyX2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZyk7CisKKy8qCisgKiBHaXZl biBhIEpzb25iQ29udGFpbmVyLCBmaW5kIHRoZSBKc29uYlZhbHVlIHdpdGggdGhlIGdpdmVuIGtl eSBuYW1lIGluIGl0LgorICogSWYgaXQncyBvZiBhIHR5cGUgb3RoZXIgdGhhbiBqYnZCb29sLCBh biBlcnJvciBpcyByYWlzZWQuIElmIGl0IGRvZXNuJ3QKKyAqIGV4aXN0LCB0dl9hYnNlbnQgaXMg cmV0dXJuZWQ7IG90aGVyd2lzZSByZXR1cm4gdGhlIGFjdHVhbCBqc29uX3RyaXZhbHVlLgorICov CitzdGF0aWMganNvbl90cml2YWx1ZQorZmluZF9ib29sX2luX2pzb25iY29udGFpbmVyKEpzb25i Q29udGFpbmVyICpjb250YWluZXIsIGNoYXIgKmtleW5hbWUpCit7CisJSnNvbmJWYWx1ZQlrZXk7 CisJSnNvbmJWYWx1ZSAqdmFsdWU7CisJanNvbl90cml2YWx1ZSByZXN1bHQ7CisKKwlrZXkudHlw ZSA9IGpidlN0cmluZzsKKwlrZXkudmFsLnN0cmluZy52YWwgPSBrZXluYW1lOworCWtleS52YWwu c3RyaW5nLmxlbiA9IHN0cmxlbihrZXluYW1lKTsKKwl2YWx1ZSA9IGZpbmRKc29uYlZhbHVlRnJv bUNvbnRhaW5lcihjb250YWluZXIsCisJCQkJCQkJCQkJSkJfRk9CSkVDVCwgJmtleSk7CisJaWYg KHZhbHVlID09IE5VTEwpCisJCXJldHVybiB0dl9hYnNlbnQ7CisJaWYgKHZhbHVlLT50eXBlICE9 IGpidkJvb2wpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURf UEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQllcnJtc2coImVsZW1lbnQgXCIlc1wiIGlzIG5vdCBvZiB0 eXBlIGJvb2xlYW4iLCBrZXluYW1lKSk7CisJcmVzdWx0ID0gdmFsdWUtPnZhbC5ib29sZWFuID8g dHZfdHJ1ZSA6IHR2X2ZhbHNlOworCXBmcmVlKHZhbHVlKTsKKworCXJldHVybiByZXN1bHQ7Cit9 CisKKy8qCisgKiBHaXZlbiBhIEpzb25iQ29udGFpbmVyLCBmaW5kIHRoZSBKc29uYlZhbHVlIHdp dGggdGhlIGdpdmVuIGtleSBuYW1lIGluIGl0LgorICogSWYgaXQncyBvZiBhIHR5cGUgb3RoZXIg dGhhbiBqYnZTdHJpbmcsIGFuIGVycm9yIGlzIHJhaXNlZC4gIElmIGl0IGRvZXNuJ3QKKyAqIGV4 aXN0LCBhbiBlcnJvciBpcyByYWlzZWQgdW5sZXNzIG1pc3Npbmdfb2s7IG90aGVyd2lzZSByZXR1 cm4gTlVMTC4KKyAqCisgKiBJZiBpdCBleGlzdHMgYW5kIGlzIGEgc3RyaW5nLCBhIGZyZXNobHkg cGFsbG9jJ2VkIGNvcHkgaXMgcmV0dXJuZWQuCisgKgorICogSWYgKmxlbmd0aCBpcyBub3QgTlVM TCwgaXQgaXMgc2V0IHRvIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZy4KKyAqLworc3RhdGljIGNo YXIgKgorZmluZF9zdHJpbmdfaW5fanNvbmJjb250YWluZXIoSnNvbmJDb250YWluZXIgKmNvbnRh aW5lciwgY2hhciAqa2V5bmFtZSwKKwkJCQkJCQkgIGJvb2wgbWlzc2luZ19vaywgaW50ICpsZW5n dGgpCit7CisJSnNvbmJWYWx1ZQlrZXk7CisJSnNvbmJWYWx1ZSAqdmFsdWU7CisJY2hhcgkgICAq c3RyOworCisJLyogWFhYIHZlcmlmeSB0aGF0IHRoaXMgaXMgYW4gb2JqZWN0LCBub3QgYW4gYXJy YXkgKi8KKworCWtleS50eXBlID0gamJ2U3RyaW5nOworCWtleS52YWwuc3RyaW5nLnZhbCA9IGtl eW5hbWU7CisJa2V5LnZhbC5zdHJpbmcubGVuID0gc3RybGVuKGtleW5hbWUpOworCXZhbHVlID0g ZmluZEpzb25iVmFsdWVGcm9tQ29udGFpbmVyKGNvbnRhaW5lciwKKwkJCQkJCQkJCQlKQl9GT0JK RUNULCAma2V5KTsKKwlpZiAodmFsdWUgPT0gTlVMTCkKKwl7CisJCWlmIChtaXNzaW5nX29rKQor CQkJcmV0dXJuIE5VTEw7CisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX0lO VkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQllcnJtc2coIm1pc3NpbmcgZWxlbWVudCBcIiVz XCIgaW4gSlNPTiBvYmplY3QiLCBrZXluYW1lKSk7CisJfQorCisJaWYgKHZhbHVlLT50eXBlICE9 IGpidlN0cmluZykKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJ RF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCWVycm1zZygiZWxlbWVudCBcIiVzXCIgaXMgbm90IG9m IHR5cGUgc3RyaW5nIiwga2V5bmFtZSkpOworCisJc3RyID0gcG5zdHJkdXAodmFsdWUtPnZhbC5z dHJpbmcudmFsLCB2YWx1ZS0+dmFsLnN0cmluZy5sZW4pOworCWlmIChsZW5ndGgpCisJCSpsZW5n dGggPSB2YWx1ZS0+dmFsLnN0cmluZy5sZW47CisJcGZyZWUodmFsdWUpOworCXJldHVybiBzdHI7 Cit9CisKKy8qCisgKiBSZWN1cnNpdmUgaGVscGVyIGZvciBkZXBhcnNlX2RkbF9qc29uX3RvX3N0 cmluZy4KKyAqCisgKiBGaW5kIHRoZSAiZm10IiBlbGVtZW50IGluIHRoZSBnaXZlbiBjb250YWlu ZXIsIGFuZCBleHBhbmQgaXQgaW50byB0aGUKKyAqIHByb3ZpZGVkIFN0cmluZ0luZm8uCisgKi8K K3N0YXRpYyB2b2lkCitleHBhbmRfZm10X3JlY3Vyc2l2ZShTdHJpbmdJbmZvIGJ1ZiwgSnNvbmJD b250YWluZXIgKmNvbnRhaW5lcikKK3sKKwlKc29uYlZhbHVlCWtleTsKKwlKc29uYlZhbHVlICp2 YWx1ZTsKKwljb25zdCBjaGFyICpjcDsKKwljb25zdCBjaGFyICpzdGFydF9wdHI7CisJY29uc3Qg Y2hhciAqZW5kX3B0cjsKKwlpbnQJCQlsZW47CisKKwlzdGFydF9wdHIgPSBmaW5kX3N0cmluZ19p bl9qc29uYmNvbnRhaW5lcihjb250YWluZXIsICJmbXQiLCBmYWxzZSwgJmxlbik7CisJZW5kX3B0 ciA9IHN0YXJ0X3B0ciArIGxlbjsKKworCWZvciAoY3AgPSBzdGFydF9wdHI7IGNwIDwgZW5kX3B0 cjsgY3ArKykKKwl7CisJCWNvbnZTcGVjaWZpZXIgc3BlY2lmaWVyOworCQlib29sCQlpc19hcnJh eSA9IGZhbHNlOworCQljaGFyCSAgICpwYXJhbSA9IE5VTEw7CisJCWNoYXIJICAgKmFycmF5c2Vw ID0gTlVMTDsKKworCQlpZiAoKmNwICE9ICclJykKKwkJeworCQkJYXBwZW5kU3RyaW5nSW5mb0No YXJNYWNybyhidWYsICpjcCk7CisJCQljb250aW51ZTsKKwkJfQorCisJCUFEVkFOQ0VfUEFSU0Vf UE9JTlRFUihjcCwgZW5kX3B0cik7CisKKwkJLyogRWFzeSBjYXNlOiAlJSBvdXRwdXRzIGEgc2lu Z2xlICUgKi8KKwkJaWYgKCpjcCA9PSAnJScpCisJCXsKKwkJCWFwcGVuZFN0cmluZ0luZm9DaGFy TWFjcm8oYnVmLCAqY3ApOworCQkJY29udGludWU7CisJCX0KKworCQkvKgorCQkgKiBTY2FuIHRo ZSBtYW5kYXRvcnkgZWxlbWVudCBuYW1lLiAgQWxsb3cgZm9yIGFuIGFycmF5IHNlcGFyYXRvcgor CQkgKiAod2hpY2ggbWF5IGJlIHRoZSBlbXB0eSBzdHJpbmcpIHRvIGJlIHNwZWNpZmllZCBhZnRl ciBhIGNvbG9uLgorCQkgKi8KKwkJaWYgKCpjcCA9PSAneycpCisJCXsKKwkJCVN0cmluZ0luZm9E YXRhIHBhcmJ1ZjsKKwkJCVN0cmluZ0luZm9EYXRhIGFycmF5c2VwYnVmOworCQkJU3RyaW5nSW5m bwlhcHBlbmRUbzsKKworCQkJaW5pdFN0cmluZ0luZm8oJnBhcmJ1Zik7CisJCQlhcHBlbmRUbyA9 ICZwYXJidWY7CisKKwkJCUFEVkFOQ0VfUEFSU0VfUE9JTlRFUihjcCwgZW5kX3B0cik7CisJCQl3 aGlsZSAoY3AgPCBlbmRfcHRyKQorCQkJeworCQkJCWlmICgqY3AgPT0gJzonKQorCQkJCXsKKwkJ CQkJLyoKKwkJCQkJICogRm91bmQgYXJyYXkgc2VwYXJhdG9yIGRlbGltaXRlcjsgZWxlbWVudCBu YW1lIGlzIG5vdworCQkJCQkgKiBjb21wbGV0ZSwgc3RhcnQgZmlsbGluZyB0aGUgc2VwYXJhdG9y LgorCQkJCQkgKi8KKwkJCQkJaW5pdFN0cmluZ0luZm8oJmFycmF5c2VwYnVmKTsKKwkJCQkJYXBw ZW5kVG8gPSAmYXJyYXlzZXBidWY7CisJCQkJCWlzX2FycmF5ID0gdHJ1ZTsKKwkJCQkJQURWQU5D RV9QQVJTRV9QT0lOVEVSKGNwLCBlbmRfcHRyKTsKKwkJCQkJY29udGludWU7CisJCQkJfQorCisJ CQkJaWYgKCpjcCA9PSAnfScpCisJCQkJeworCQkJCQlBRFZBTkNFX1BBUlNFX1BPSU5URVIoY3As IGVuZF9wdHIpOworCQkJCQlicmVhazsKKwkJCQl9CisJCQkJYXBwZW5kU3RyaW5nSW5mb0NoYXJN YWNybyhhcHBlbmRUbywgKmNwKTsKKwkJCQlBRFZBTkNFX1BBUlNFX1BPSU5URVIoY3AsIGVuZF9w dHIpOworCQkJfQorCQkJcGFyYW0gPSBwYXJidWYuZGF0YTsKKwkJCWlmIChpc19hcnJheSkKKwkJ CQlhcnJheXNlcCA9IGFycmF5c2VwYnVmLmRhdGE7CisJCX0KKwkJaWYgKHBhcmFtID09IE5VTEwp CisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVU RVJfVkFMVUUpLAorCQkJCQllcnJtc2coIm1pc3NpbmcgY29udmVyc2lvbiBuYW1lIGluIGNvbnZl cnNpb24gc3BlY2lmaWVyIikpOworCisJCXN3aXRjaCAoKmNwKQorCQl7CisJCQljYXNlICdJJzoK KwkJCQlzcGVjaWZpZXIgPSBTcGVjSWRlbnRpZmllcjsKKwkJCQlicmVhazsKKwkJCWNhc2UgJ0Qn OgorCQkJCXNwZWNpZmllciA9IFNwZWNEb3R0ZWROYW1lOworCQkJCWJyZWFrOworCQkJY2FzZSAn cyc6CisJCQkJc3BlY2lmaWVyID0gU3BlY1N0cmluZzsKKwkJCQlicmVhazsKKwkJCWNhc2UgJ0wn OgorCQkJCXNwZWNpZmllciA9IFNwZWNTdHJpbmdMaXRlcmFsOworCQkJCWJyZWFrOworCQkJY2Fz ZSAnVCc6CisJCQkJc3BlY2lmaWVyID0gU3BlY1R5cGVOYW1lOworCQkJCWJyZWFrOworCQkJY2Fz ZSAnbic6CisJCQkJc3BlY2lmaWVyID0gU3BlY051bWJlcjsKKwkJCQlicmVhazsKKwkJCWRlZmF1 bHQ6CisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BB UkFNRVRFUl9WQUxVRSksCisJCQkJCQllcnJtc2coImludmFsaWQgY29udmVyc2lvbiBzcGVjaWZp ZXIgXCIlY1wiIiwgKmNwKSk7CisJCX0KKworCQkvKgorCQkgKiBPYnRhaW4gdGhlIGVsZW1lbnQg dG8gYmUgZXhwYW5kZWQuCisJCSAqLworCQlrZXkudHlwZSA9IGpidlN0cmluZzsKKwkJa2V5LnZh bC5zdHJpbmcudmFsID0gcGFyYW07CisJCWtleS52YWwuc3RyaW5nLmxlbiA9IHN0cmxlbihwYXJh bSk7CisKKwkJdmFsdWUgPSBmaW5kSnNvbmJWYWx1ZUZyb21Db250YWluZXIoY29udGFpbmVyLCBK Ql9GT0JKRUNULCAma2V5KTsKKwkJQXNzZXJ0KHZhbHVlICE9IE5VTEwpOworCisJCS8qCisJCSAq IEV4cGFuZCB0aGUgZGF0YSAocG9zc2libHkgYW4gYXJyYXkpIGludG8gdGhlIG91dHB1dCBTdHJp bmdJbmZvLgorCQkgKi8KKwkJaWYgKGlzX2FycmF5KQorCQkJZXhwYW5kX2pzb25iX2FycmF5KGJ1 ZiwgcGFyYW0sIHZhbHVlLCBhcnJheXNlcCwgc3BlY2lmaWVyLCBzdGFydF9wdHIpOworCQllbHNl CisJCQlleHBhbmRfb25lX2pzb25iX2VsZW1lbnQoYnVmLCBwYXJhbSwgdmFsdWUsIHNwZWNpZmll ciwgc3RhcnRfcHRyKTsKKworCQlwZnJlZSh2YWx1ZSk7CisJfQorfQorCisvKgorICogRXhwYW5k IGEganNvbiB2YWx1ZSBhcyBhIHF1b3RlZCBpZGVudGlmaWVyLiAgVGhlIHZhbHVlIG11c3QgYmUg b2YgdHlwZSBzdHJpbmcuCisgKi8KK3N0YXRpYyB2b2lkCitleHBhbmRfanNvbnZhbF9pZGVudGlm aWVyKFN0cmluZ0luZm8gYnVmLCBKc29uYlZhbHVlICpqc29udmFsKQoreworCWNoYXIJICAgKnN0 cjsKKworCUFzc2VydChqc29udmFsLT50eXBlID09IGpidlN0cmluZyk7CisKKwlzdHIgPSBwbnN0 cmR1cChqc29udmFsLT52YWwuc3RyaW5nLnZhbCwganNvbnZhbC0+dmFsLnN0cmluZy5sZW4pOwor CWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCBxdW90ZV9pZGVudGlmaWVyKHN0cikpOworCXBm cmVlKHN0cik7Cit9CisKKy8qCisgKiBFeHBhbmQgYSBqc29uIHZhbHVlIGFzIGEgZG90LXNlcGFy YXRlZC1uYW1lLiAgVGhlIHZhbHVlIG11c3QgYmUgb2YgdHlwZQorICogYmluYXJ5IGFuZCBtYXkg Y29udGFpbiBlbGVtZW50cyAic2NoZW1hbmFtZSIgKG9wdGlvbmFsKSwgIm9iam5hbWUiCisgKiAo bWFuZGF0b3J5KSwgImF0dHJuYW1lIiAob3B0aW9uYWwpLiAgRG91YmxlIHF1b3RlcyBhcmUgYWRk ZWQgdG8gZWFjaCBlbGVtZW50CisgKiBhcyBuZWNlc3NhcnksIGFuZCBkb3Qgc2VwYXJhdG9ycyB3 aGVyZSBuZWVkZWQuCisgKgorICogT25lIGRheSB3ZSBtaWdodCBuZWVkIGEgImNhdGFsb2ciIGVs ZW1lbnQgYXMgd2VsbCwgYnV0IG5vIGN1cnJlbnQgdXNlIGNhc2UKKyAqIG5lZWRzIHRoYXQuCisg Ki8KK3N0YXRpYyB2b2lkCitleHBhbmRfanNvbnZhbF9kb3R0ZWRuYW1lKFN0cmluZ0luZm8gYnVm LCBKc29uYlZhbHVlICpqc29udmFsKQoreworCWNoYXIJICAgKnN0cjsKKwlKc29uYkNvbnRhaW5l ciAqZGF0YSA9IGpzb252YWwtPnZhbC5iaW5hcnkuZGF0YTsKKworCUFzc2VydChqc29udmFsLT50 eXBlID09IGpidkJpbmFyeSk7CisKKwlzdHIgPSBmaW5kX3N0cmluZ19pbl9qc29uYmNvbnRhaW5l cihkYXRhLCAic2NoZW1hbmFtZSIsIHRydWUsIE5VTEwpOworCWlmIChzdHIpCisJeworCQlhcHBl bmRTdHJpbmdJbmZvKGJ1ZiwgIiVzLiIsIHF1b3RlX2lkZW50aWZpZXIoc3RyKSk7CisJCXBmcmVl KHN0cik7CisJfQorCisJc3RyID0gZmluZF9zdHJpbmdfaW5fanNvbmJjb250YWluZXIoZGF0YSwg Im9iam5hbWUiLCBmYWxzZSwgTlVMTCk7CisJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIlcyIsIHF1 b3RlX2lkZW50aWZpZXIoc3RyKSk7CisJcGZyZWUoc3RyKTsKKworCXN0ciA9IGZpbmRfc3RyaW5n X2luX2pzb25iY29udGFpbmVyKGRhdGEsICJhdHRybmFtZSIsIHRydWUsIE5VTEwpOworCWlmIChz dHIpCisJeworCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIi4lcyIsIHF1b3RlX2lkZW50aWZpZXIo c3RyKSk7CisJCXBmcmVlKHN0cik7CisJfQorfQorCisvKgorICogRXhwYW5kIGEgSlNPTiB2YWx1 ZSBhcyBhIHR5cGUgbmFtZS4KKyAqLworc3RhdGljIHZvaWQKK2V4cGFuZF9qc29udmFsX3R5cGVu YW1lKFN0cmluZ0luZm8gYnVmLCBKc29uYlZhbHVlICpqc29udmFsKQoreworCWNoYXIJICAgKnNj aGVtYSA9IE5VTEw7CisJY2hhcgkgICAqdHlwZW5hbWUgPSBOVUxMOworCWNoYXIJICAgKnR5cG1v ZHN0ciA9IE5VTEw7CisJanNvbl90cml2YWx1ZSBpc19hcnJheTsKKwljaGFyCSAgICphcnJheV9k ZWNvcjsKKwlKc29uYkNvbnRhaW5lciAqZGF0YSA9IGpzb252YWwtPnZhbC5iaW5hcnkuZGF0YTsK KworCS8qCisJICogV2Ugb21pdCBzY2hlbWEtcXVhbGlmeWluZyB0aGUgb3V0cHV0IG5hbWUgaWYg dGhlIHNjaGVtYSBlbGVtZW50IGlzCisJICogZWl0aGVyIHRoZSBlbXB0eSBzdHJpbmcgb3IgTlVM TDsgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aG9zZSB0d28gY2FzZXMKKwkgKiBpcyB0aGF0IGlu IHRoZSBsYXR0ZXIgd2UgcXVvdGUgdGhlIHR5cGUgbmFtZSwgaW4gdGhlIGZvcm1lciB3ZSBkb24n dC4KKwkgKiBUaGlzIGFsbG93cyBmb3IgdHlwZXMgd2l0aCBzcGVjaWFsIHR5cG1vZCBuZWVkcywg c3VjaCBhcyBpbnRlcnZhbCBhbmQKKwkgKiB0aW1lc3RhbXAgKHNlZSBmb3JtYXRfdHlwZV9kZXRh aWxlZCksIHdoaWxlIGF0IHRoZSBzYW1lIHRpbWUgYWxsb3dpbmcKKwkgKiBmb3IgdGhlIHNjaGVt YSBuYW1lIHRvIGJlIG9taXR0ZWQgZnJvbSB0eXBlIG5hbWVzIHRoYXQgcmVxdWlyZSBxdW90ZXMK KwkgKiBidXQgYXJlIHRvIGJlIG9idGFpbmVkIGZyb20gYSB1c2VyIHNjaGVtYS4KKwkgKi8KKwor CXNjaGVtYSA9IGZpbmRfc3RyaW5nX2luX2pzb25iY29udGFpbmVyKGRhdGEsICJzY2hlbWFuYW1l IiwgdHJ1ZSwgTlVMTCk7CisJdHlwZW5hbWUgPSBmaW5kX3N0cmluZ19pbl9qc29uYmNvbnRhaW5l cihkYXRhLCAidHlwZW5hbWUiLCBmYWxzZSwgTlVMTCk7CisJdHlwbW9kc3RyID0gZmluZF9zdHJp bmdfaW5fanNvbmJjb250YWluZXIoZGF0YSwgInR5cG1vZCIsIHRydWUsIE5VTEwpOworCWlzX2Fy cmF5ID0gZmluZF9ib29sX2luX2pzb25iY29udGFpbmVyKGRhdGEsICJ0eXBhcnJheSIpOworCXN3 aXRjaCAoaXNfYXJyYXkpCisJeworCQljYXNlIHR2X3RydWU6CisJCQlhcnJheV9kZWNvciA9ICJb XSI7CisJCQlicmVhazsKKworCQljYXNlIHR2X2ZhbHNlOgorCQkJYXJyYXlfZGVjb3IgPSAiIjsK KwkJCWJyZWFrOworCisJCWNhc2UgdHZfYWJzZW50OgorCQlkZWZhdWx0OgorCQkJZXJlcG9ydChF UlJPUiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJ CQkJZXJybXNnKCJtaXNzaW5nIHR5cGFycmF5IGVsZW1lbnQiKSk7CisJfQorCisJaWYgKHNjaGVt YSA9PSBOVUxMKQorCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiVzIiwgcXVvdGVfaWRlbnRpZmll cih0eXBlbmFtZSkpOworCWVsc2UgaWYgKHNjaGVtYVswXSA9PSAnXDAnKQorCQlhcHBlbmRTdHJp bmdJbmZvKGJ1ZiwgIiVzIiwgdHlwZW5hbWUpOwkvKiBTcGVjaWFsIHR5cG1vZCBuZWVkcyAqLwor CWVsc2UKKwkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIlcy4lcyIsIHF1b3RlX2lkZW50aWZpZXIo c2NoZW1hKSwKKwkJCQkJCSBxdW90ZV9pZGVudGlmaWVyKHR5cGVuYW1lKSk7CisKKwlhcHBlbmRT dHJpbmdJbmZvKGJ1ZiwgIiVzJXMiLCB0eXBtb2RzdHIgPyB0eXBtb2RzdHIgOiAiIiwgYXJyYXlf ZGVjb3IpOworCisJaWYgKHNjaGVtYSkKKwkJcGZyZWUoc2NoZW1hKTsKKwlpZiAodHlwZW5hbWUp CisJCXBmcmVlKHR5cGVuYW1lKTsKKwlpZiAodHlwbW9kc3RyKQorCQlwZnJlZSh0eXBtb2RzdHIp OworfQorCisvKgorICogRXhwYW5kIGEgSlNPTiB2YWx1ZSBhcyBhIHN0cmluZy4gIFRoZSB2YWx1 ZSBtdXN0IGJlIG9mIHR5cGUgc3RyaW5nIG9yIG9mCisgKiB0eXBlIEJpbmFyeS4gIEluIHRoZSBs YXR0ZXIgY2FzZSwgaXQgbXVzdCBjb250YWluIGEgImZtdCIgZWxlbWVudCB3aGljaCB3aWxsCisg KiBiZSByZWN1cnNpdmVseSBleHBhbmRlZDsgYWxzbywgaWYgdGhlIG9iamVjdCBjb250YWlucyBh biBlbGVtZW50ICJwcmVzZW50IgorICogYW5kIGl0IGlzIHNldCB0byBmYWxzZSwgdGhlIGV4cGFu c2lvbiBpcyB0aGUgZW1wdHkgc3RyaW5nLgorICoKKyAqIFJldHVybnMgZmFsc2UgaWYgbm8gYWN0 dWFsIGV4cGFuc2lvbiB3YXMgbWFkZSBkdWUgdG8gdGhlICJwcmVzZW50IiBmbGFnCisgKiBiZWlu ZyBzZXQgdG8gImZhbHNlIi4KKyAqCisgKiBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIHRvIGNo ZWNrIGpzb252YWwgaXMgb2YgdHlwZSBqYnZTdHJpbmcgb3IgamJ2QmluYXJ5LgorICovCitzdGF0 aWMgYm9vbAorZXhwYW5kX2pzb252YWxfc3RyaW5nKFN0cmluZ0luZm8gYnVmLCBKc29uYlZhbHVl ICpqc29udmFsKQoreworCWJvb2wgZXhwYW5kZWQgPSBmYWxzZTsKKworCUFzc2VydCgoanNvbnZh bC0+dHlwZSA9PSBqYnZTdHJpbmcpIHx8IChqc29udmFsLT50eXBlID09IGpidkJpbmFyeSkpOwor CisJaWYgKGpzb252YWwtPnR5cGUgPT0gamJ2U3RyaW5nKQorCXsKKwkJYXBwZW5kQmluYXJ5U3Ry aW5nSW5mbyhidWYsIGpzb252YWwtPnZhbC5zdHJpbmcudmFsLAorCQkJCQkJCSAgIGpzb252YWwt PnZhbC5zdHJpbmcubGVuKTsKKwkJZXhwYW5kZWQgPSB0cnVlOworCX0KKwllbHNlIGlmIChqc29u dmFsLT50eXBlID09IGpidkJpbmFyeSkKKwl7CisJCWpzb25fdHJpdmFsdWUgcHJlc2VudDsKKwor CQlwcmVzZW50ID0gZmluZF9ib29sX2luX2pzb25iY29udGFpbmVyKGpzb252YWwtPnZhbC5iaW5h cnkuZGF0YSwKKwkJCQkJCQkJCQkJICAicHJlc2VudCIpOworCisJCS8qCisJCSAqIElmICJwcmVz ZW50IiBpcyBzZXQgdG8gZmFsc2UsIHRoaXMgZWxlbWVudCBleHBhbmRzIHRvIGVtcHR5OworCQkg KiBvdGhlcndpc2UgKGVpdGhlciB0cnVlIG9yIGFic2VudCksIGV4cGFuZCAiZm10Ii4KKwkJICov CisJCWlmIChwcmVzZW50ICE9IHR2X2ZhbHNlKQorCQl7CisJCQlleHBhbmRfZm10X3JlY3Vyc2l2 ZShidWYsIGpzb252YWwtPnZhbC5iaW5hcnkuZGF0YSk7CisJCQlleHBhbmRlZCA9IHRydWU7CisJ CX0KKwl9CisKKwlyZXR1cm4gZXhwYW5kZWQ7Cit9CisKKy8qCisgKiBFeHBhbmQgYSBKU09OIHZh bHVlIGFzIGEgc3RyaW5nIGxpdGVyYWwuCisgKi8KK3N0YXRpYyB2b2lkCitleHBhbmRfanNvbnZh bF9zdHJsaXQoU3RyaW5nSW5mbyBidWYsIEpzb25iVmFsdWUgKmpzb252YWwpCit7CisJY2hhcgkg ICAqc3RyOworCVN0cmluZ0luZm9EYXRhIGRxZGVsaW07CisJc3RhdGljIGNvbnN0IGNoYXIgZHFz dWZmaXhlc1tdID0gIl9YWVpaWVhfIjsKKwlpbnQJCQlkcW5leHRjaGFyID0gMDsKKworCUFzc2Vy dChqc29udmFsLT50eXBlID09IGpidlN0cmluZyk7CisKKwlzdHIgPSBwbnN0cmR1cChqc29udmFs LT52YWwuc3RyaW5nLnZhbCwganNvbnZhbC0+dmFsLnN0cmluZy5sZW4pOworCisJLyogRWFzeSBj YXNlOiBpZiB0aGVyZSBhcmUgbm8gJyBhbmQgbm8gXCwganVzdCB1c2UgYSBzaW5nbGUgcXVvdGUg Ki8KKwlpZiAoc3RycGJyayhzdHIsICJcJ1xcIikgPT0gTlVMTCkKKwl7CisJCWFwcGVuZFN0cmlu Z0luZm8oYnVmLCAiJyVzJyIsIHN0cik7CisJCXBmcmVlKHN0cik7CisJCXJldHVybjsKKwl9CisK KwkvKiBPdGhlcndpc2UgbmVlZCB0byBmaW5kIGEgdXNlZnVsIGRvbGxhci1xdW90ZSBkZWxpbWl0 ZXIgKi8KKwlpbml0U3RyaW5nSW5mbygmZHFkZWxpbSk7CisJYXBwZW5kU3RyaW5nSW5mb1N0cmlu ZygmZHFkZWxpbSwgIiQiKTsKKwl3aGlsZSAoc3Ryc3RyKHN0ciwgZHFkZWxpbS5kYXRhKSAhPSBO VUxMKQorCXsKKwkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoJmRxZGVsaW0sIGRxc3VmZml4ZXNbZHFu ZXh0Y2hhcisrXSk7CisJCWRxbmV4dGNoYXIgPSBkcW5leHRjaGFyICUgKHNpemVvZihkcXN1ZmZp eGVzKSAtIDEpOworCX0KKwkvKiBBZGQgdHJhaWxpbmcgJCAqLworCWFwcGVuZFN0cmluZ0luZm9D aGFyKCZkcWRlbGltLCAnJCcpOworCisJLyogQW5kIGZpbmFsbHkgcHJvZHVjZSB0aGUgcXVvdGVk IGxpdGVyYWwgaW50byB0aGUgb3V0cHV0IFN0cmluZ0luZm8gKi8KKwlhcHBlbmRTdHJpbmdJbmZv KGJ1ZiwgIiVzJXMlcyIsIGRxZGVsaW0uZGF0YSwgc3RyLCBkcWRlbGltLmRhdGEpOworCXBmcmVl KGRxZGVsaW0uZGF0YSk7CisJcGZyZWUoc3RyKTsKK30KKworLyoKKyAqIEV4cGFuZCBhIEpTT04g dmFsdWUgYXMgYW4gaW50ZWdlciBxdWFudGl0eS4KKyAqLworc3RhdGljIHZvaWQKK2V4cGFuZF9q c29udmFsX251bWJlcihTdHJpbmdJbmZvIGJ1ZiwgSnNvbmJWYWx1ZSAqanNvbnZhbCkKK3sKKwlj aGFyCSAgICpzdHJkYXR1bTsKKworCUFzc2VydChqc29udmFsLT50eXBlID09IGpidk51bWVyaWMp OworCisJc3RyZGF0dW0gPSBEYXR1bUdldENTdHJpbmcoRGlyZWN0RnVuY3Rpb25DYWxsMShudW1l cmljX291dCwKKwkJCQkJCQkJCQkJCSAgIE51bWVyaWNHZXREYXR1bShqc29udmFsLT52YWwubnVt ZXJpYykpKTsKKwlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1Ziwgc3RyZGF0dW0pOworCXBmcmVl KHN0cmRhdHVtKTsKK30KKworLyoKKyAqIEV4cGFuZCBvbmUgSlNPTiBlbGVtZW50IGludG8gdGhl IG91dHB1dCBTdHJpbmdJbmZvIGFjY29yZGluZyB0byB0aGUKKyAqIGNvbnZlcnNpb24gc3BlY2lm aWVyLiAgVGhlIGVsZW1lbnQgdHlwZSBpcyB2YWxpZGF0ZWQsIGFuZCBhbiBlcnJvciBpcyByYWlz ZWQKKyAqIGlmIGl0IGRvZXNuJ3QgbWF0Y2ggd2hhdCB3ZSBleHBlY3QgZm9yIHRoZSBjb252ZXJz aW9uIHNwZWNpZmllci4KKyAqCisgKiBSZXR1cm5zIHRydWUsIGV4Y2VwdCBmb3IgdGhlIGZvcm1h dHRlZCBzdHJpbmcgY2FzZSBpZiBubyBhY3R1YWwgZXhwYW5zaW9uCisgKiB3YXMgbWFkZSAoZHVl IHRvIHRoZSAicHJlc2VudCIgZmxhZyBiZWluZyBzZXQgdG8gImZhbHNlIikuCisgKi8KK3N0YXRp YyBib29sCitleHBhbmRfb25lX2pzb25iX2VsZW1lbnQoU3RyaW5nSW5mbyBidWYsIGNoYXIgKnBh cmFtLCBKc29uYlZhbHVlICpqc29udmFsLAorCQkJCQkJIGNvbnZTcGVjaWZpZXIgc3BlY2lmaWVy LCBjb25zdCBjaGFyICpmbXQpCit7CisJYm9vbAkJc3RyaW5nX2V4cGFuZGVkID0gdHJ1ZTsKKwlF cnJvckNvbnRleHRDYWxsYmFjayBzcWxlcnJjb250ZXh0OworCisJLyogSWYgd2Ugd2VyZSBnaXZl biBhIGZvcm1hdCBzdHJpbmcsIHNldHVwIGFuIGVyZXBvcnQoKSBjb250ZXh0IGNhbGxiYWNrICov CisJaWYgKGZtdCkKKwl7CisJCXNxbGVycmNvbnRleHQuY2FsbGJhY2sgPSBmbXRzdHJfZXJyb3Jf Y2FsbGJhY2s7CisJCXNxbGVycmNvbnRleHQuYXJnID0gKHZvaWQgKikgZm10OworCQlzcWxlcnJj b250ZXh0LnByZXZpb3VzID0gZXJyb3JfY29udGV4dF9zdGFjazsKKwkJZXJyb3JfY29udGV4dF9z dGFjayA9ICZzcWxlcnJjb250ZXh0OworCX0KKworCWlmICghanNvbnZhbCkKKwkJZXJlcG9ydChF UlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJ CWVycm1zZygiZWxlbWVudCBcIiVzXCIgbm90IGZvdW5kIiwgcGFyYW0pKTsKKworCXN3aXRjaCAo c3BlY2lmaWVyKQorCXsKKwkJY2FzZSBTcGVjSWRlbnRpZmllcjoKKwkJCWlmIChqc29udmFsLT50 eXBlICE9IGpidlN0cmluZykKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJZXJyY29kZShFUlJD T0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJCWVycm1zZygiZXhwZWN0ZWQgSlNP TiBzdHJpbmcgZm9yICUlSSBlbGVtZW50IFwiJXNcIiwgZ290ICVkIiwKKwkJCQkJCQkgICBwYXJh bSwganNvbnZhbC0+dHlwZSkpOworCQkJZXhwYW5kX2pzb252YWxfaWRlbnRpZmllcihidWYsIGpz b252YWwpOworCQkJYnJlYWs7CisKKwkJY2FzZSBTcGVjRG90dGVkTmFtZToKKwkJCWlmIChqc29u dmFsLT50eXBlICE9IGpidkJpbmFyeSkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJZXJyY29k ZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJCWVycm1zZygiZXhwZWN0 ZWQgSlNPTiBzdHJ1Y3QgZm9yICUlRCBlbGVtZW50IFwiJXNcIiwgZ290ICVkIiwKKwkJCQkJCQkg ICBwYXJhbSwganNvbnZhbC0+dHlwZSkpOworCQkJZXhwYW5kX2pzb252YWxfZG90dGVkbmFtZShi dWYsIGpzb252YWwpOworCQkJYnJlYWs7CisKKwkJY2FzZSBTcGVjU3RyaW5nOgorCQkJaWYgKGpz b252YWwtPnR5cGUgIT0gamJ2U3RyaW5nICYmCisJCQkJanNvbnZhbC0+dHlwZSAhPSBqYnZCaW5h cnkpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BB UkFNRVRFUl9WQUxVRSksCisJCQkJCQllcnJtc2coImV4cGVjdGVkIEpTT04gc3RyaW5nIG9yIHN0 cnVjdCBmb3IgJSVzIGVsZW1lbnQgXCIlc1wiLCBnb3QgJWQiLAorCQkJCQkJCSAgIHBhcmFtLCBq c29udmFsLT50eXBlKSk7CisJCQlzdHJpbmdfZXhwYW5kZWQgPSBleHBhbmRfanNvbnZhbF9zdHJp bmcoYnVmLCBqc29udmFsKTsKKwkJCWJyZWFrOworCisJCWNhc2UgU3BlY1N0cmluZ0xpdGVyYWw6 CisJCQlpZiAoanNvbnZhbC0+dHlwZSAhPSBqYnZTdHJpbmcpCisJCQkJZXJlcG9ydChFUlJPUiwK KwkJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJCQll cnJtc2coImV4cGVjdGVkIEpTT04gc3RyaW5nIGZvciAlJUwgZWxlbWVudCBcIiVzXCIsIGdvdCAl ZCIsCisJCQkJCQkJICAgcGFyYW0sIGpzb252YWwtPnR5cGUpKTsKKwkJCWV4cGFuZF9qc29udmFs X3N0cmxpdChidWYsIGpzb252YWwpOworCQkJYnJlYWs7CisKKwkJY2FzZSBTcGVjVHlwZU5hbWU6 CisJCQlpZiAoanNvbnZhbC0+dHlwZSAhPSBqYnZCaW5hcnkpCisJCQkJZXJlcG9ydChFUlJPUiwK KwkJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJCQll cnJtc2coImV4cGVjdGVkIEpTT04gc3RydWN0IGZvciAlJVQgZWxlbWVudCBcIiVzXCIsIGdvdCAl ZCIsCisJCQkJCQkJICAgcGFyYW0sIGpzb252YWwtPnR5cGUpKTsKKwkJCWV4cGFuZF9qc29udmFs X3R5cGVuYW1lKGJ1ZiwganNvbnZhbCk7CisJCQlicmVhazsKKworCQljYXNlIFNwZWNOdW1iZXI6 CisJCQlpZiAoanNvbnZhbC0+dHlwZSAhPSBqYnZOdW1lcmljKQorCQkJCWVyZXBvcnQoRVJST1Is CisJCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCQkJ ZXJybXNnKCJleHBlY3RlZCBKU09OIG51bWVyaWMgZm9yICUlbiBlbGVtZW50IFwiJXNcIiwgZ290 ICVkIiwKKwkJCQkJCQkgICBwYXJhbSwganNvbnZhbC0+dHlwZSkpOworCQkJZXhwYW5kX2pzb252 YWxfbnVtYmVyKGJ1ZiwganNvbnZhbCk7CisJCQlicmVhazsKKwl9CisKKwlpZiAoZm10KQorCQll cnJvcl9jb250ZXh0X3N0YWNrID0gc3FsZXJyY29udGV4dC5wcmV2aW91czsKKworCXJldHVybiBz dHJpbmdfZXhwYW5kZWQ7Cit9CisKKy8qCisgKiBJdGVyYXRlIG9uIHRoZSBlbGVtZW50cyBvZiBh IEpTT04gYXJyYXksIGV4cGFuZGluZyBlYWNoIG9uZSBpbnRvIHRoZSBvdXRwdXQKKyAqIFN0cmlu Z0luZm8gcGVyIHRoZSBnaXZlbiBjb252ZXJzaW9uIHNwZWNpZmllciwgc2VwYXJhdGVkIGJ5IHRo ZSBnaXZlbgorICogc2VwYXJhdG9yLgorICovCitzdGF0aWMgdm9pZAorZXhwYW5kX2pzb25iX2Fy cmF5KFN0cmluZ0luZm8gYnVmLCBjaGFyICpwYXJhbSwKKwkJCQkgICBKc29uYlZhbHVlICpqc29u YXJyLCBjaGFyICphcnJheXNlcCwgY29udlNwZWNpZmllciBzcGVjaWZpZXIsCisJCQkJICAgY29u c3QgY2hhciAqZm10KQoreworCUVycm9yQ29udGV4dENhbGxiYWNrIHNxbGVycmNvbnRleHQ7CisJ SnNvbmJDb250YWluZXIgKmNvbnRhaW5lcjsKKwlKc29uYkl0ZXJhdG9yICppdDsKKwlKc29uYlZh bHVlCXY7CisJaW50CQkJdHlwZTsKKwlib29sCQlmaXJzdCA9IHRydWU7CisJU3RyaW5nSW5mb0Rh dGEgYXJyYXllbGVtOworCisJLyogSWYgd2Ugd2VyZSBnaXZlbiBhIGZvcm1hdCBzdHJpbmcsIHNl dHVwIGFuIGVyZXBvcnQoKSBjb250ZXh0IGNhbGxiYWNrICovCisJaWYgKGZtdCkKKwl7CisJCXNx bGVycmNvbnRleHQuY2FsbGJhY2sgPSBmbXRzdHJfZXJyb3JfY2FsbGJhY2s7CisJCXNxbGVycmNv bnRleHQuYXJnID0gKHZvaWQgKikgZm10OworCQlzcWxlcnJjb250ZXh0LnByZXZpb3VzID0gZXJy b3JfY29udGV4dF9zdGFjazsKKwkJZXJyb3JfY29udGV4dF9zdGFjayA9ICZzcWxlcnJjb250ZXh0 OworCX0KKworCWlmICghanNvbmFycikKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVS UkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCWVycm1zZygiZWxlbWVudCBcIiVz XCIgbm90IGZvdW5kIiwgcGFyYW0pKTsKKworCWlmIChqc29uYXJyLT50eXBlICE9IGpidkJpbmFy eSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVU RVJfVkFMVUUpLAorCQkJCWVycm1zZygiZWxlbWVudCBcIiVzXCIgaXMgbm90IGEgSlNPTiBhcnJh eSIsIHBhcmFtKSk7CisKKwljb250YWluZXIgPSBqc29uYXJyLT52YWwuYmluYXJ5LmRhdGE7CisJ aWYgKCFKc29uQ29udGFpbmVySXNBcnJheShjb250YWluZXIpKQorCQllcmVwb3J0KEVSUk9SLAor CQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJZXJybXNn KCJlbGVtZW50IFwiJXNcIiBpcyBub3QgYSBKU09OIGFycmF5IiwgcGFyYW0pKTsKKworCWluaXRT dHJpbmdJbmZvKCZhcnJheWVsZW0pOworCisJaXQgPSBKc29uYkl0ZXJhdG9ySW5pdChjb250YWlu ZXIpOworCXdoaWxlICgodHlwZSA9IEpzb25iSXRlcmF0b3JOZXh0KCZpdCwgJnYsIHRydWUpKSAh PSBXSkJfRE9ORSkKKwl7CisJCWlmICh0eXBlID09IFdKQl9FTEVNKQorCQl7CisJCQlyZXNldFN0 cmluZ0luZm8oJmFycmF5ZWxlbSk7CisKKwkJCWlmIChleHBhbmRfb25lX2pzb25iX2VsZW1lbnQo JmFycmF5ZWxlbSwgcGFyYW0sICZ2LCBzcGVjaWZpZXIsIE5VTEwpKQorCQkJeworCQkJCWlmICgh Zmlyc3QpCisJCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCBhcnJheXNlcCk7CisKKwkJ CQlhcHBlbmRCaW5hcnlTdHJpbmdJbmZvKGJ1ZiwgYXJyYXllbGVtLmRhdGEsIGFycmF5ZWxlbS5s ZW4pOworCQkJCWZpcnN0ID0gZmFsc2U7CisJCQl9CisJCX0KKwl9CisKKwlpZiAoZm10KQorCQll cnJvcl9jb250ZXh0X3N0YWNrID0gc3FsZXJyY29udGV4dC5wcmV2aW91czsKK30KKworLyoKKyAq IFdvcmtob3JzZSBmb3IgZGRsX2RlcGFyc2VfZXhwYW5kX2NvbW1hbmQuCisgKi8KK2NoYXIgKgor ZGVwYXJzZV9kZGxfanNvbl90b19zdHJpbmcoY2hhciAqanNvbl9zdHIpCit7CisJRGF0dW0JCWQ7 CisJSnNvbmIJICAgKmpzb25iOworCVN0cmluZ0luZm8JYnVmID0gKFN0cmluZ0luZm8pIHBhbGxv YzAoc2l6ZW9mKFN0cmluZ0luZm9EYXRhKSk7CisKKwlpbml0U3RyaW5nSW5mbyhidWYpOworCisJ ZCA9IERpcmVjdEZ1bmN0aW9uQ2FsbDEoanNvbmJfaW4sIFBvaW50ZXJHZXREYXR1bShqc29uX3N0 cikpOworCWpzb25iID0gKEpzb25iICopIERhdHVtR2V0UG9pbnRlcihkKTsKKworCWV4cGFuZF9m bXRfcmVjdXJzaXZlKGJ1ZiwgJmpzb25iLT5yb290KTsKKworCXJldHVybiBidWYtPmRhdGE7Cit9 CisKKy8qLS0tLS0tCisgKiBSZXR1cm5zIGEgZm9ybWF0dGVkIHN0cmluZyBmcm9tIGEgSlNPTiBv YmplY3QuCisgKgorICogVGhlIHN0YXJ0aW5nIHBvaW50IGlzIHRoZSBlbGVtZW50IG5hbWVkICJm bXQiICh3aGljaCBtdXN0IGJlIGEgc3RyaW5nKS4KKyAqIFRoaXMgZm9ybWF0IHN0cmluZyBtYXkg Y29udGFpbiB6ZXJvIG9yIG1vcmUgJS1lc2NhcGVzLCB3aGljaCBjb25zaXN0IG9mIGFuCisgKiBl bGVtZW50IG5hbWUgZW5jbG9zZWQgaW4geyB9LCBwb3NzaWJseSBmb2xsb3dlZCBieSBhIGNvbnZl cnNpb24gbW9kaWZpZXIsCisgKiBmb2xsb3dlZCBieSBhIGNvbnZlcnNpb24gc3BlY2lmaWVyLiAg UG9zc2libGUgY29udmVyc2lvbiBzcGVjaWZpZXJzIGFyZToKKyAqCisgKiAlCQlleHBhbmQgdG8g YSBsaXRlcmFsICUKKyAqIEkJCWV4cGFuZCBhcyBhIHNpbmdsZSwgbm9uLXF1YWxpZmllZCBpZGVu dGlmaWVyCisgKiBECQlleHBhbmQgYXMgYSBwb3NzaWJseS1xdWFsaWZpZWQgaWRlbnRpZmllcgor ICogVAkJZXhwYW5kIGFzIGEgdHlwZSBuYW1lCisgKiBMCQlleHBhbmQgYXMgYSBzdHJpbmcgbGl0 ZXJhbCAocXVvdGUgdXNpbmcgc2luZ2xlIHF1b3RlcykKKyAqIHMJCWV4cGFuZCBhcyBhIHNpbXBs ZSBzdHJpbmcgKG5vIHF1b3RpbmcpCisgKiBuCQlleHBhbmQgYXMgYSBzaW1wbGUgbnVtYmVyIChu byBxdW90aW5nKQorICoKKyAqIFRoZSBlbGVtZW50IG5hbWUgbWF5IGhhdmUgYW4gb3B0aW9uYWwg c2VwYXJhdG9yIHNwZWNpZmljYXRpb24gcHJlY2VkZWQKKyAqIGJ5IGEgY29sb24uICBJdHMgcHJl c2VuY2UgaW5kaWNhdGVzIHRoYXQgdGhlIGVsZW1lbnQgaXMgZXhwZWN0ZWQgdG8gYmUKKyAqIGFu IGFycmF5OyB0aGUgc3BlY2lmaWVkIHNlcGFyYXRvciBpcyB1c2VkIHRvIGpvaW4gdGhlIGFycmF5 IGVsZW1lbnRzLgorICoKKyAqIFRoZSBhY3R1YWwgY29udmVyc2lvbiBvZiBzaW5nbGUgSlNPTiBl bGVtZW50IGludG8gc3RyaW5nIGFjY29yZGluZyB0bworICogYWJvdmUgY29udmVyc2lvbiBzcGVj aWZpZXJzIHRha2VzIHBsYWNlIGluIGV4cGFuZF9vbmVfanNvbmJfZWxlbWVudCgpCisgKi0tLS0t LQorICovCitEYXR1bQorZGRsX2RlcGFyc2VfZXhwYW5kX2NvbW1hbmQoUEdfRlVOQ1RJT05fQVJH UykKK3sKKwl0ZXh0CSAgICpqc29uID0gUEdfR0VUQVJHX1RFWFRfUCgwKTsKKwljaGFyCSAgICpq c29uX3N0cjsKKworCWpzb25fc3RyID0gdGV4dF90b19jc3RyaW5nKGpzb24pOworCisJUEdfUkVU VVJOX1RFWFRfUChjc3RyaW5nX3RvX3RleHQoZGVwYXJzZV9kZGxfanNvbl90b19zdHJpbmcoanNv bl9zdHIpKSk7Cit9CisKKy8qCisgKiBFcnJvciBjb250ZXh0IGNhbGxiYWNrIGZvciBKU09OIGZv cm1hdCBzdHJpbmcgZXhwYW5zaW9uLgorICoKKyAqIFhYWDogaW5kaWNhdGUgd2hpY2ggZWxlbWVu dCB3ZSdyZSBleHBhbmRpbmcsIGlmIGFwcGxpY2FibGUuCisgKi8KK3N0YXRpYyB2b2lkCitmbXRz dHJfZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJnKQoreworCWVycmNvbnRleHQoIndoaWxlIGV4cGFu ZGluZyBmb3JtYXQgc3RyaW5nIFwiJXNcIiIsIChjaGFyICopIGFyZyk7Cit9CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9ldmVudF90cmlnZ2VyLmMKaW5kZXggZDRiMDBkMWE4Mi4uNGQ0OGU0OTBlZCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5jCisrKyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuYwpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUg Im1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZV9mdW5jLmgiCiAjaW5jbHVkZSAi cGdzdGF0LmgiCisjaW5jbHVkZSAidGNvcC9kZGxkZXBhcnNlLmgiCiAjaW5jbHVkZSAidGNvcC9k ZXBhcnNlX3V0aWxpdHkuaCIKICNpbmNsdWRlICJ0Y29wL3V0aWxpdHkuaCIKICNpbmNsdWRlICJ1 dGlscy9hY2wuaCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21lc29uLmJ1aWxk IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWVzb24uYnVpbGQKaW5kZXggNDJjY2VkOWViZS4uOTUz OWU1M2JhYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWVzb24uYnVpbGQKKysr IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWVzb24uYnVpbGQKQEAgLTE3LDYgKzE3LDggQEAgYmFj a2VuZF9zb3VyY2VzICs9IGZpbGVzKAogICAnY29weXRvLmMnLAogICAnY3JlYXRlYXMuYycsCiAg ICdkYmNvbW1hbmRzLmMnLAorICAnZGRsZGVwYXJzZS5jJywKKyAgJ2RkbGpzb24uYycsCiAgICdk ZWZpbmUuYycsCiAgICdkaXNjYXJkLmMnLAogICAnZHJvcGNtZHMuYycsCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jb21tYW5kcy9zZXF1ZW5jZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2Vx dWVuY2UuYwppbmRleCBlZjAxNDQ5Njc4Li40YmI3MzFkNWZmIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9zZXF1ZW5jZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVl bmNlLmMKQEAgLTE3MDcsNiArMTcwNyw0OSBAQCBwcm9jZXNzX293bmVkX2J5KFJlbGF0aW9uIHNl cXJlbCwgTGlzdCAqb3duZWRfYnksIGJvb2wgZm9yX2lkZW50aXR5KQogCQlyZWxhdGlvbl9jbG9z ZSh0YWJsZXJlbCwgTm9Mb2NrKTsKIH0KIAorLyoKKyAqIFJldHVybiBzZXF1ZW5jZSBwYXJhbWV0 ZXJzLCBkZXRhaWxlZAorICovCitTZXF1ZW5jZV92YWx1ZXMgKgorZ2V0X3NlcXVlbmNlX3ZhbHVl cyhPaWQgc2VxdWVuY2VJZCkKK3sKKwlCdWZmZXIgICAgICBidWY7CisJU2VxVGFibGUgICAgZWxt OworCVJlbGF0aW9uICAgIHNlcXJlbDsKKwlIZWFwVHVwbGUJc2VxdHVwbGU7CisJSGVhcFR1cGxl RGF0YSBzZXF0dXBsZWRhdGE7CisJRm9ybV9wZ19zZXF1ZW5jZSBzZXFmb3JtOworCUZvcm1fcGdf c2VxdWVuY2VfZGF0YSBzZXE7CisJU2VxdWVuY2VfdmFsdWVzICpzZXF2YWx1ZXM7CisKKwlzZXF0 dXBsZSA9IFNlYXJjaFN5c0NhY2hlMShTRVFSRUxJRCwgc2VxdWVuY2VJZCk7CisJaWYgKCFIZWFw VHVwbGVJc1ZhbGlkKHNlcXR1cGxlKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWls ZWQgZm9yIHNlcXVlbmNlICV1Iiwgc2VxdWVuY2VJZCk7CisJc2VxZm9ybSA9IChGb3JtX3BnX3Nl cXVlbmNlKSBHRVRTVFJVQ1Qoc2VxdHVwbGUpOworCisJUmVsZWFzZVN5c0NhY2hlKHNlcXR1cGxl KTsKKworCS8qIE9wZW4gYW5kIGxvY2sgc2VxdWVuY2UgKi8KKwlpbml0X3NlcXVlbmNlKHNlcXVl bmNlSWQsICZlbG0sICZzZXFyZWwpOworCisJaWYgKHBnX2NsYXNzX2FjbGNoZWNrKHNlcXVlbmNl SWQsIEdldFVzZXJJZCgpLAorCQlBQ0xfU0VMRUNUIHwgQUNMX1VTQUdFKSAhPSBBQ0xDSEVDS19P SykKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfSU5TVUZGSUNJRU5UX1BS SVZJTEVHRSksCisJCQkJZXJybXNnKCJwZXJtaXNzaW9uIGRlbmllZCBmb3Igc2VxdWVuY2UgJXMi LAorCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShzZXFyZWwpKSk7CisKKwlzZXEgPSBy ZWFkX3NlcV90dXBsZShzZXFyZWwsICZidWYsICZzZXF0dXBsZWRhdGEpOworCisJc2VxdmFsdWVz ID0gKFNlcXVlbmNlX3ZhbHVlcyAqKSBwYWxsb2Moc2l6ZW9mKFNlcXVlbmNlX3ZhbHVlcykpOwor CXNlcXZhbHVlcy0+bGFzdF92YWx1ZSA9IHNlcS0+bGFzdF92YWx1ZTsKKwlzZXF2YWx1ZXMtPnNl cWZvcm0gPSBzZXFmb3JtOworCisJVW5sb2NrUmVsZWFzZUJ1ZmZlcihidWYpOworCXJlbGF0aW9u X2Nsb3NlKHNlcXJlbCwgTm9Mb2NrKTsKKworCXJldHVybiBzZXF2YWx1ZXM7Cit9CiAKIC8qCiAg KiBSZXR1cm4gc2VxdWVuY2UgcGFyYW1ldGVycyBpbiBhIGxpc3Qgb2YgdGhlIGZvcm0gY3JlYXRl ZCBieSB0aGUgcGFyc2VyLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVj bWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCBkOTg1Mjc4YWM2 Li42MDRjMWRlNDc0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMu YworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtNjAwLDcgKzYwMCw2 IEBAIHN0YXRpYyBPYmplY3RBZGRyZXNzIEFURXhlY1NldENvbXByZXNzaW9uKFJlbGF0aW9uIHJl bCwKIAkJCQkJCQkJCQkgIGNvbnN0IGNoYXIgKmNvbHVtbiwgTm9kZSAqbmV3VmFsdWUsIExPQ0tN T0RFIGxvY2ttb2RlKTsKIAogc3RhdGljIHZvaWQgaW5kZXhfY29weV9kYXRhKFJlbGF0aW9uIHJl bCwgUmVsRmlsZUxvY2F0b3IgbmV3cmxvY2F0b3IpOwotc3RhdGljIGNvbnN0IGNoYXIgKnN0b3Jh Z2VfbmFtZShjaGFyIGMpOwogCiBzdGF0aWMgdm9pZCBSYW5nZVZhckNhbGxiYWNrRm9yRHJvcFJl bGF0aW9uKGNvbnN0IFJhbmdlVmFyICpyZWwsIE9pZCByZWxPaWQsCiAJCQkJCQkJCQkJCU9pZCBv bGRSZWxPaWQsIHZvaWQgKmFyZyk7CkBAIC0yMjY2LDcgKzIyNjUsNyBAQCB0cnVuY2F0ZV9jaGVj a19hY3Rpdml0eShSZWxhdGlvbiByZWwpCiAgKiBzdG9yYWdlX25hbWUKICAqCSAgcmV0dXJucyB0 aGUgbmFtZSBjb3JyZXNwb25kaW5nIHRvIGEgdHlwc3RvcmFnZS9hdHRzdG9yYWdlIGVudW0gdmFs dWUKICAqLwotc3RhdGljIGNvbnN0IGNoYXIgKgorY2hhciAqCiBzdG9yYWdlX25hbWUoY2hhciBj KQogewogCXN3aXRjaCAoYykKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91 dGlsY21kLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCmluZGV4IGQ2NzU4 MGZjNzcuLjc1MzQ1NmVjYmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91 dGlsY21kLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYwpAQCAtMTM5 Myw2ICsxMzkzLDcgQEAgZXhwYW5kVGFibGVMaWtlQ2xhdXNlKFJhbmdlVmFyICpoZWFwUmVsLCBU YWJsZUxpa2VDbGF1c2UgKnRhYmxlX2xpa2VfY2xhdXNlKQogCQlhdGNtZC0+Y21kcyA9IGF0c3Vi Y21kczsKIAkJYXRjbWQtPm9ianR5cGUgPSBPQkpFQ1RfVEFCTEU7CiAJCWF0Y21kLT5taXNzaW5n X29rID0gZmFsc2U7CisJCWF0Y21kLT50YWJsZV9saWtlID0gdHJ1ZTsKIAkJcmVzdWx0ID0gbGNv bnMoYXRjbWQsIHJlc3VsdCk7CiAJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJ0aXRp b25pbmcvcGFydGJvdW5kcy5jIGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMu YwppbmRleCA3YzVkOTExMGZiLi42N2MyMjhhNDI0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9w YXJ0aXRpb25pbmcvcGFydGJvdW5kcy5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9w YXJ0Ym91bmRzLmMKQEAgLTQ5NzgsMyArNDk3OCwzMSBAQCBzYXRpc2ZpZXNfaGFzaF9wYXJ0aXRp b24oUEdfRlVOQ1RJT05fQVJHUykKIAogCVBHX1JFVFVSTl9CT09MKHJvd0hhc2ggJSBtb2R1bHVz ID09IHJlbWFpbmRlcik7CiB9CisKKy8qCisgKiBPYnRhaW4gdGhlIGRlcGFyc2VkIHBhcnRpdGlv biBib3VuZCBleHByZXNzaW9uIGZvciB0aGUgZ2l2ZW4gdGFibGUuCisgKi8KK2NoYXIgKgorcmVs YXRpb25fZ2V0X3BhcnRfYm91bmQoT2lkIHJlbGlkKQoreworCURhdHVtCQlkZXBhcnNlZDsKKwlE YXR1bQkJYm91bmQ7CisJYm9vbAkJaXNudWxsOworCUhlYXBUdXBsZQl0dXBsZTsKKworCXR1cGxl ID0gU2VhcmNoU3lzQ2FjaGUxKFJFTE9JRCwgcmVsaWQpOworCWlmICghSGVhcFR1cGxlSXNWYWxp ZCh0dXBsZSkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciByZWxhdGlv biB3aXRoIE9JRCAldSIsIHJlbGlkKTsKKworCWJvdW5kID0gU3lzQ2FjaGVHZXRBdHRyKFJFTE9J RCwgdHVwbGUsCisJCQkJCQkJQW51bV9wZ19jbGFzc19yZWxwYXJ0Ym91bmQsCisJCQkJCQkJJmlz bnVsbCk7CisKKwlkZXBhcnNlZCA9IERpcmVjdEZ1bmN0aW9uQ2FsbDIocGdfZ2V0X2V4cHIsCisJ CQkJCQkJCSAgIENTdHJpbmdHZXRUZXh0RGF0dW0oVGV4dERhdHVtR2V0Q1N0cmluZyhib3VuZCkp LAorCQkJCQkJCQkgICByZWxpZCk7CisKKwlSZWxlYXNlU3lzQ2FjaGUodHVwbGUpOworCisJcmV0 dXJuIFRleHREYXR1bUdldENTdHJpbmcoZGVwYXJzZWQpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L2Zvcm1hdF90eXBlLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvZm9y bWF0X3R5cGUuYwppbmRleCAxMjQwMmEwNjM3Li40MzE4MTI5NTU4IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9hZHQvZm9ybWF0X3R5cGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9h ZHQvZm9ybWF0X3R5cGUuYwpAQCAtMjcsOCArMjcsNiBAQAogI2luY2x1ZGUgInV0aWxzL251bWVy aWMuaCIKICNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgogCi1zdGF0aWMgY2hhciAqcHJpbnRU eXBtb2QoY29uc3QgY2hhciAqdHlwbmFtZSwgaW50MzIgdHlwbW9kLCBPaWQgdHlwbW9kb3V0KTsK LQogCiAvKgogICogU1FMIGZ1bmN0aW9uOiBmb3JtYXRfdHlwZSh0eXBlX29pZCwgdHlwZW1vZCkK QEAgLTMyOSw2ICszMjcsMTEwIEBAIGZvcm1hdF90eXBlX2V4dGVuZGVkKE9pZCB0eXBlX29pZCwg aW50MzIgdHlwZW1vZCwgYml0czE2IGZsYWdzKQogCXJldHVybiBidWY7CiB9CiAKKy8qCisgKiBT aW1pbGFyIHRvIGZvcm1hdF90eXBlX2V4dGVuZGVkLCBleGNlcHQgd2UgcmV0dXJuIGVhY2ggYml0 IG9mIGluZm9ybWF0aW9uCisgKiBzZXBhcmF0ZWx5OgorICoKKyAqIC0gbnNwaWQgaXMgdGhlIHNj aGVtYSBPSUQuICBGb3IgY2VydGFpbiBTUUwtc3RhbmRhcmQgdHlwZXMgd2hpY2ggaGF2ZSB3ZWly ZAorICogICB0eXBtb2QgcnVsZXMsIHdlIHJldHVybiBJbnZhbGlkT2lkOyB0aGUgY2FsbGVyIGlz IGV4cGVjdGVkIHRvIG5vdCBzY2hlbWEtCisgKiAgIHF1YWxpZnkgdGhlIG5hbWUgbm9yIGFkZCBx dW90ZXMgdG8gdGhlIHR5cGUgbmFtZSBpbiB0aGlzIGNhc2UuCisgKgorICogLSB0eXBuYW1lIGlz IHNldCB0byB0aGUgdHlwZSBuYW1lLCB3aXRob3V0IHF1b3RlcworICoKKyAqIC0gdHlwZW1vZHN0 ciBpcyBzZXQgdG8gdGhlIHR5cGVtb2QsIGlmIGFueSwgYXMgYSBzdHJpbmcgd2l0aCBwYXJlbnRo ZXNlcworICoKKyAqIC0gdHlwYXJyYXkgaW5kaWNhdGVzIHdoZXRoZXIgW11zIG11c3QgYmUgYWRk ZWQKKyAqCisgKiBXZSBkb24ndCB0cnkgdG8gZGVjb2RlIHR5cGUgbmFtZXMgdG8gdGhlaXIgc3Rh bmRhcmQtbWFuZGF0ZWQgbmFtZXMsIGV4Y2VwdAorICogaW4gdGhlIGNhc2VzIG9mIHR5cGVzIHdp dGggdW51c3VhbCB0eXBtb2QgcnVsZXMuCisgKi8KK3ZvaWQKK2Zvcm1hdF90eXBlX2RldGFpbGVk KE9pZCB0eXBlX29pZCwgaW50MzIgdHlwZW1vZCwKKwkJCQkJIE9pZCAqbnNwaWQsIGNoYXIgKip0 eXBuYW1lLCBjaGFyICoqdHlwZW1vZHN0ciwKKwkJCQkJIGJvb2wgKnR5cGVhcnJheSkKK3sKKwlI ZWFwVHVwbGUJdHVwbGU7CisJRm9ybV9wZ190eXBlIHR5cGVmb3JtOworCU9pZAkJCWFycmF5X2Jh c2VfdHlwZTsKKworCXR1cGxlID0gU2VhcmNoU3lzQ2FjaGUxKFRZUEVPSUQsIE9iamVjdElkR2V0 RGF0dW0odHlwZV9vaWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwbGUpKQorCQllbG9n KEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgdHlwZSB3aXRoIE9JRCAldSIsIHR5cGVf b2lkKTsKKworCXR5cGVmb3JtID0gKEZvcm1fcGdfdHlwZSkgR0VUU1RSVUNUKHR1cGxlKTsKKwor CS8qCisJICogV2Ugc3dpdGNoIG91ciBhdHRlbnRpb24gdG8gdGhlIGFycmF5IGVsZW1lbnQgdHlw ZSBmb3IgY2VydGFpbiBjYXNlcy4KKwkgKiBDaGVjayBpZiBpdCdzIGEgInRydWUiIGFycmF5IHR5 cGUuICBQc2V1ZG8tYXJyYXkgdHlwZXMgc3VjaCBhcyAibmFtZSIKKwkgKiBzaG91bGRuJ3QgZ2V0 IGRlY29uc3RydWN0ZWQuICBBbHNvIGNoZWNrIHRoZSB0b2FzdCBwcm9wZXJ0eSwgYW5kIGRvbid0 CisJICogZGVjb25zdHJ1Y3QgInBsYWluIHN0b3JhZ2UiIGFycmF5IHR5cGVzIC0tLSB0aGlzIGlz IGJlY2F1c2Ugd2UgZG9uJ3QKKwkgKiB3YW50IHRvIHNob3cgb2lkdmVjdG9yIGFzIG9pZFtdLgor CSAqLworCWFycmF5X2Jhc2VfdHlwZSA9IHR5cGVmb3JtLT50eXBlbGVtOworCisJKnR5cGVhcnJh eSA9IChJc1RydWVBcnJheVR5cGUodHlwZWZvcm0pICYmIHR5cGVmb3JtLT50eXBzdG9yYWdlICE9 IFRZUFNUT1JBR0VfUExBSU4pOworCisJaWYgKCp0eXBlYXJyYXkpCisJeworCQlSZWxlYXNlU3lz Q2FjaGUodHVwbGUpOworCQl0dXBsZSA9IFNlYXJjaFN5c0NhY2hlMShUWVBFT0lELCBPYmplY3RJ ZEdldERhdHVtKGFycmF5X2Jhc2VfdHlwZSkpOworCQlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVw bGUpKQorCQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHR5cGUgd2l0aCBP SUQgJXUiLCB0eXBlX29pZCk7CisKKwkJdHlwZWZvcm0gPSAoRm9ybV9wZ190eXBlKSBHRVRTVFJV Q1QodHVwbGUpOworCQl0eXBlX29pZCA9IGFycmF5X2Jhc2VfdHlwZTsKKwl9CisKKwkvKgorCSAq IFNwZWNpYWwtY2FzZSBjcm9jayBmb3IgdHlwZXMgd2l0aCBzdHJhbmdlIHR5cG1vZCBydWxlcyB3 aGVyZSB3ZSBwdXQKKwkgKiB0eXBlbW9kIGF0IHRoZSBtaWRkbGUgb2YgbmFtZSAoZS5nLiBUSU1F KDYpIHdpdGggdGltZSB6b25lKS4gV2UgY2Fubm90CisJICogc2NoZW1hLXF1YWxpZnkgbm9yIGFk ZCBxdW90ZXMgdG8gdGhlIHR5cGUgbmFtZSBpbiB0aGVzZSBjYXNlcy4KKwkgKi8KKwkqbnNwaWQg PSBJbnZhbGlkT2lkOworCisJc3dpdGNoICh0eXBlX29pZCkKKwl7CisJCWNhc2UgVElNRU9JRDoK KwkJCSp0eXBuYW1lID0gcHN0cmR1cCgiVElNRSIpOworCQkJYnJlYWs7CisJCWNhc2UgVElNRVNU QU1QT0lEOgorCQkJKnR5cG5hbWUgPSBwc3RyZHVwKCJUSU1FU1RBTVAiKTsKKwkJCWJyZWFrOwor CQljYXNlIFRJTUVTVEFNUFRaT0lEOgorCQkJaWYgKHR5cGVtb2QgPCAwKQorCQkJCSp0eXBuYW1l ID0gcHN0cmR1cCgiVElNRVNUQU1QIFdJVEggVElNRSBaT05FIik7CisJCQllbHNlCisJCQkJLyog b3RoZXJ3aXNlLCBXSVRIIFRaIGlzIGFkZGVkIGJ5IHR5cG1vZC4gKi8KKwkJCQkqdHlwbmFtZSA9 IHBzdHJkdXAoIlRJTUVTVEFNUCIpOworCQkJYnJlYWs7CisJCWNhc2UgSU5URVJWQUxPSUQ6CisJ CQkqdHlwbmFtZSA9IHBzdHJkdXAoIklOVEVSVkFMIik7CisJCQlicmVhazsKKwkJY2FzZSBUSU1F VFpPSUQ6CisJCQlpZiAodHlwZW1vZCA8IDApCisJCQkJKnR5cG5hbWUgPSBwc3RyZHVwKCJUSU1F IFdJVEggVElNRSBaT05FIik7CisJCQllbHNlCisJCQkJLyogb3RoZXJ3aXNlLCBXSVRIIFRaIGlz IGFkZGVkIGJ5IHR5cG1vZC4gKi8KKwkJCQkqdHlwbmFtZSA9IHBzdHJkdXAoIlRJTUUiKTsKKwkJ CWJyZWFrOworCQlkZWZhdWx0OgorCisJCQkvKgorCQkJICogTm8gYWRkaXRpb25hbCBwcm9jZXNz aW5nIGlzIHJlcXVpcmVkIGZvciBvdGhlciB0eXBlcywgc28gZ2V0CisJCQkgKiB0aGUgdHlwZSBu YW1lIGFuZCBzY2hlbWEgZGlyZWN0bHkgZnJvbSB0aGUgY2F0YWxvZy4KKwkJCSAqLworCQkJKm5z cGlkID0gdHlwZWZvcm0tPnR5cG5hbWVzcGFjZTsKKwkJCSp0eXBuYW1lID0gcHN0cmR1cChOYW1l U3RyKHR5cGVmb3JtLT50eXBuYW1lKSk7CisJfQorCisJaWYgKHR5cGVtb2QgPj0gMCkKKwkJKnR5 cGVtb2RzdHIgPSBwcmludFR5cG1vZCgiIiwgdHlwZW1vZCwgdHlwZWZvcm0tPnR5cG1vZG91dCk7 CisJZWxzZQorCQkqdHlwZW1vZHN0ciA9IHBzdHJkdXAoIiIpOworCisJUmVsZWFzZVN5c0NhY2hl KHR1cGxlKTsKK30KKwogLyoKICAqIFRoaXMgdmVyc2lvbiBpcyBmb3IgdXNlIHdpdGhpbiB0aGUg YmFja2VuZCBpbiBlcnJvciBtZXNzYWdlcywgZXRjLgogICogT25lIGRpZmZlcmVuY2UgaXMgdGhh dCBpdCB3aWxsIGZhaWwgZm9yIGFuIGludmFsaWQgdHlwZS4KQEAgLTM2Myw3ICs0NjUsNyBAQCBm b3JtYXRfdHlwZV93aXRoX3R5cGVtb2QoT2lkIHR5cGVfb2lkLCBpbnQzMiB0eXBlbW9kKQogLyoK ICAqIEFkZCB0eXBtb2QgZGVjb3JhdGlvbiB0byB0aGUgYmFzaWMgdHlwZSBuYW1lCiAgKi8KLXN0 YXRpYyBjaGFyICoKK2NoYXIgKgogcHJpbnRUeXBtb2QoY29uc3QgY2hhciAqdHlwbmFtZSwgaW50 MzIgdHlwbW9kLCBPaWQgdHlwbW9kb3V0KQogewogCWNoYXIJICAgKnJlczsKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9ydWxldXRpbHMuYwppbmRleCBkM2E5NzNkODZiLi4yZDE5NjFmMTJkIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3J1bGV1dGlscy5jCkBAIC01MSw3ICs1MSw2IEBACiAjaW5jbHVkZSAib3B0aW1pemVyL29w dGltaXplci5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZV9hZ2cuaCIKICNpbmNsdWRlICJwYXJz ZXIvcGFyc2VfZnVuYy5oIgotI2luY2x1ZGUgInBhcnNlci9wYXJzZV9ub2RlLmgiCiAjaW5jbHVk ZSAicGFyc2VyL3BhcnNlX29wZXIuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfcmVsYXRpb24u aCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VyLmgiCkBAIC01MDEsMjIgKzUwMCwxNSBAQCBzdGF0 aWMgdm9pZCBnZXRfZnJvbV9jbGF1c2VfY29sZGVmbGlzdChSYW5nZVRibEZ1bmN0aW9uICpydGZ1 bmMsCiAJCQkJCQkJCQkgICBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQpOwogc3RhdGljIHZvaWQg Z2V0X3RhYmxlc2FtcGxlX2RlZihUYWJsZVNhbXBsZUNsYXVzZSAqdGFibGVzYW1wbGUsCiAJCQkJ CQkJCWRlcGFyc2VfY29udGV4dCAqY29udGV4dCk7Ci1zdGF0aWMgdm9pZCBnZXRfb3BjbGFzc19u YW1lKE9pZCBvcGNsYXNzLCBPaWQgYWN0dWFsX2RhdGF0eXBlLAotCQkJCQkJCSBTdHJpbmdJbmZv IGJ1Zik7CiBzdGF0aWMgTm9kZSAqcHJvY2Vzc0luZGlyZWN0aW9uKE5vZGUgKm5vZGUsIGRlcGFy c2VfY29udGV4dCAqY29udGV4dCk7CiBzdGF0aWMgdm9pZCBwcmludFN1YnNjcmlwdHMoU3Vic2Ny aXB0aW5nUmVmICpzYnNyZWYsIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCk7CiBzdGF0aWMgY2hh ciAqZ2V0X3JlbGF0aW9uX25hbWUoT2lkIHJlbGlkKTsKIHN0YXRpYyBjaGFyICpnZW5lcmF0ZV9y ZWxhdGlvbl9uYW1lKE9pZCByZWxpZCwgTGlzdCAqbmFtZXNwYWNlcyk7CiBzdGF0aWMgY2hhciAq Z2VuZXJhdGVfcXVhbGlmaWVkX3JlbGF0aW9uX25hbWUoT2lkIHJlbGlkKTsKLXN0YXRpYyBjaGFy ICpnZW5lcmF0ZV9mdW5jdGlvbl9uYW1lKE9pZCBmdW5jaWQsIGludCBuYXJncywKLQkJCQkJCQkJ CUxpc3QgKmFyZ25hbWVzLCBPaWQgKmFyZ3R5cGVzLAotCQkJCQkJCQkJYm9vbCBoYXNfdmFyaWFk aWMsIGJvb2wgKnVzZV92YXJpYWRpY19wLAotCQkJCQkJCQkJUGFyc2VFeHByS2luZCBzcGVjaWFs X2V4cHJraW5kKTsKIHN0YXRpYyBjaGFyICpnZW5lcmF0ZV9vcGVyYXRvcl9uYW1lKE9pZCBvcGVy aWQsIE9pZCBhcmcxLCBPaWQgYXJnMik7CiBzdGF0aWMgdm9pZCBhZGRfY2FzdF90byhTdHJpbmdJ bmZvIGJ1ZiwgT2lkIHR5cGlkKTsKIHN0YXRpYyBjaGFyICpnZW5lcmF0ZV9xdWFsaWZpZWRfdHlw ZV9uYW1lKE9pZCB0eXBpZCk7CiBzdGF0aWMgdGV4dCAqc3RyaW5nX3RvX3RleHQoY2hhciAqc3Ry KTsKLXN0YXRpYyBjaGFyICpmbGF0dGVuX3JlbG9wdGlvbnMoT2lkIHJlbGlkKTsKIHN0YXRpYyB2 b2lkIGdldF9yZWxvcHRpb25zKFN0cmluZ0luZm8gYnVmLCBEYXR1bSByZWxvcHRpb25zKTsKIAog I2RlZmluZSBvbmx5X21hcmtlcihydGUpICAoKHJ0ZSktPmluaCA/ICIiIDogIk9OTFkgIikKQEAg LTE5MDEsNiArMTg5MywxNCBAQCBwZ19nZXRfcGFydGtleWRlZl9jb2x1bW5zKE9pZCByZWxpZCwg Ym9vbCBwcmV0dHkpCiAJcmV0dXJuIHBnX2dldF9wYXJ0a2V5ZGVmX3dvcmtlcihyZWxpZCwgcHJl dHR5RmxhZ3MsIHRydWUsIGZhbHNlKTsKIH0KIAorLyogSW50ZXJuYWwgdmVyc2lvbiB0aGF0IHJl cG9ydHMgdGhlIGZ1bGwgcGFydGl0aW9uIGtleSBkZWZpbml0aW9uICovCitjaGFyICoKK3BnX2dl dF9wYXJ0a2V5ZGVmX3N0cmluZyhPaWQgcmVsaWQpCit7CisJcmV0dXJuIHBnX2dldF9wYXJ0a2V5 ZGVmX3dvcmtlcihyZWxpZCwgR0VUX1BSRVRUWV9GTEFHUyhmYWxzZSksIGZhbHNlLAorCQkJCQkJ CQkJZmFsc2UpOworfQorCiAvKgogICogSW50ZXJuYWwgd29ya2hvcnNlIHRvIGRlY29tcGlsZSBh IHBhcnRpdGlvbiBrZXkgZGVmaW5pdGlvbi4KICAqLwpAQCAtMjE0OCw2ICsyMTQ4LDE2IEBAIHBn X2dldF9jb25zdHJhaW50ZGVmX2V4dChQR19GVU5DVElPTl9BUkdTKQogCVBHX1JFVFVSTl9URVhU X1Aoc3RyaW5nX3RvX3RleHQocmVzKSk7CiB9CiAKKy8qCisgKiBJbnRlcm5hbCB2ZXJzaW9uIHRo YXQgcmV0dXJucyB0aGUgZGVmaW5pdGlvbiBvZiBhIENPTlNUUkFJTlQgY29tbWFuZAorICovCitj aGFyICoKK3BnX2dldF9jb25zdHJhaW50ZGVmX3N0cmluZyhPaWQgY29uc3RyYWludElkKQorewor CXJldHVybiBwZ19nZXRfY29uc3RyYWludGRlZl93b3JrZXIoY29uc3RyYWludElkLCBmYWxzZSwK KwkJCQkJCQkJCSAgIEdFVF9QUkVUVFlfRkxBR1MoZmFsc2UpLCBmYWxzZSk7Cit9CisKIC8qCiAg KiBJbnRlcm5hbCB2ZXJzaW9uIHRoYXQgcmV0dXJucyBhIGZ1bGwgQUxURVIgVEFCTEUgLi4uIEFE RCBDT05TVFJBSU5UIGNvbW1hbmQKICAqLwpAQCAtMTE3NTgsNyArMTE3NjgsNyBAQCBnZXRfdGFi bGVzYW1wbGVfZGVmKFRhYmxlU2FtcGxlQ2xhdXNlICp0YWJsZXNhbXBsZSwgZGVwYXJzZV9jb250 ZXh0ICpjb250ZXh0KQogICogYWN0dWFsX2RhdGF0eXBlLiAgKElmIHlvdSBkb24ndCB3YW50IHRo aXMgYmVoYXZpb3IsIGp1c3QgcGFzcwogICogSW52YWxpZE9pZCBmb3IgYWN0dWFsX2RhdGF0eXBl LikKICAqLwotc3RhdGljIHZvaWQKK3ZvaWQKIGdldF9vcGNsYXNzX25hbWUoT2lkIG9wY2xhc3Ms IE9pZCBhY3R1YWxfZGF0YXR5cGUsCiAJCQkJIFN0cmluZ0luZm8gYnVmKQogewpAQCAtMTIxNTIs NyArMTIxNjIsNyBAQCBnZW5lcmF0ZV9xdWFsaWZpZWRfcmVsYXRpb25fbmFtZShPaWQgcmVsaWQp CiAgKgogICogVGhlIHJlc3VsdCBpbmNsdWRlcyBhbGwgbmVjZXNzYXJ5IHF1b3RpbmcgYW5kIHNj aGVtYS1wcmVmaXhpbmcuCiAgKi8KLXN0YXRpYyBjaGFyICoKK2NoYXIgKgogZ2VuZXJhdGVfZnVu Y3Rpb25fbmFtZShPaWQgZnVuY2lkLCBpbnQgbmFyZ3MsIExpc3QgKmFyZ25hbWVzLCBPaWQgKmFy Z3R5cGVzLAogCQkJCQkgICBib29sIGhhc192YXJpYWRpYywgYm9vbCAqdXNlX3ZhcmlhZGljX3As CiAJCQkJCSAgIFBhcnNlRXhwcktpbmQgc3BlY2lhbF9leHBya2luZCkKQEAgLTEyNTM4LDcgKzEy NTQ4LDcgQEAgZ2V0X3JlbG9wdGlvbnMoU3RyaW5nSW5mbyBidWYsIERhdHVtIHJlbG9wdGlvbnMp CiAvKgogICogR2VuZXJhdGUgYSBDIHN0cmluZyByZXByZXNlbnRpbmcgYSByZWxhdGlvbidzIHJl bG9wdGlvbnMsIG9yIE5VTEwgaWYgbm9uZS4KICAqLwotc3RhdGljIGNoYXIgKgorY2hhciAqCiBm bGF0dGVuX3JlbG9wdGlvbnMoT2lkIHJlbGlkKQogewogCWNoYXIJICAgKnJlc3VsdCA9IE5VTEw7 CkBAIC0xMjYwNiwzICsxMjYxNiwyMyBAQCBnZXRfcmFuZ2VfcGFydGJvdW5kX3N0cmluZyhMaXN0 ICpib3VuZF9kYXR1bXMpCiAKIAlyZXR1cm4gYnVmLT5kYXRhOwogfQorCisvKgorICogT2J0YWlu IHRoZSBkZXBhcnNlZCBkZWZhdWx0IHZhbHVlIGZvciB0aGUgZ2l2ZW4gY29sdW1uIG9mIHRoZSBn aXZlbiB0YWJsZS4KKyAqCisgKiBDYWxsZXIgbXVzdCBoYXZlIHNldCBhIGNvcnJlY3QgZGVwYXJz ZSBjb250ZXh0IGFuZCBtdXN0IGVuc3VyZSB0aGF0IHRoZQorICogcGFzc2VkIGF0dHJpYnV0ZSBo YXMgYSBkZWZhdWx0IHZhbHVlLgorICovCitjaGFyICoKK3JlbGF0aW9uX2dldF9jb2x1bW5fZGVm YXVsdChSZWxhdGlvbiByZWwsIEF0dHJOdW1iZXIgYXR0bm8sIExpc3QgKmRwY29udGV4dCkKK3sK KwlOb2RlCSAgICpkZWZ2YWw7CisJY2hhcgkgICAqZGVmc3RyOworCisJZGVmdmFsID0gYnVpbGRf Y29sdW1uX2RlZmF1bHQocmVsLCBhdHRubyk7CisJQXNzZXJ0KGRlZnZhbCAhPSBOVUxMKTsKKwor CWRlZnN0ciA9IGRlcGFyc2VfZXhwcmVzc2lvbihkZWZ2YWwsIGRwY29udGV4dCwgZmFsc2UsIGZh bHNlKTsKKworCXJldHVybiBkZWZzdHI7Cit9CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX2luaGVyaXRzLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2luaGVyaXRzLmgKaW5k ZXggY2UxNTRhYjk0My4uOTk5MDlkMmMzNCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19pbmhlcml0cy5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfaW5oZXJpdHMuaApA QCAtNjQsNCArNjQsNiBAQCBleHRlcm4gYm9vbCBEZWxldGVJbmhlcml0c1R1cGxlKE9pZCBpbmhy ZWxpZCwgT2lkIGluaHBhcmVudCwKIAkJCQkJCQkJY29uc3QgY2hhciAqY2hpbGRuYW1lKTsKIGV4 dGVybiBib29sIFBhcnRpdGlvbkhhc1BlbmRpbmdEZXRhY2goT2lkIHBhcnRvaWQpOwogCitleHRl cm4gTGlzdCAqcmVsYXRpb25fZ2V0X2luaF9wYXJlbnRzKE9pZCBvYmplY3RJZCk7CisKICNlbmRp ZgkJCQkJCQkvKiBQR19JTkhFUklUU19IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAppbmRleCA2 OTk2MDczOTg5Li43NmZmMjNiNzc5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKQEAgLTEyMDQz LDQgKzEyMDQzLDExIEBACiAgIHByb25hbWUgPT4gJ2FueV92YWx1ZV90cmFuc2ZuJywgcHJvcmV0 dHlwZSA9PiAnYW55ZWxlbWVudCcsCiAgIHByb2FyZ3R5cGVzID0+ICdhbnllbGVtZW50IGFueWVs ZW1lbnQnLCBwcm9zcmMgPT4gJ2FueV92YWx1ZV90cmFuc2ZuJyB9LAogCit7IG9pZCA9PiAnNDY0 MicsIGRlc2NyID0+ICdkZXBhcnNlIHRoZSBEREwgY29tbWFuZCBpbnRvIGEgSlNPTiBmb3JtYXQg c3RyaW5nJywKKyAgcHJvbmFtZSA9PiAnZGRsX2RlcGFyc2VfdG9fanNvbicsIHByb3JldHR5cGUg PT4gJ3RleHQnLAorICBwcm9hcmd0eXBlcyA9PiAncGdfZGRsX2NvbW1hbmQnLCBwcm9zcmMgPT4g J2RkbF9kZXBhcnNlX3RvX2pzb24nIH0sCit7IG9pZCA9PiAnNDY0MycsIGRlc2NyID0+ICdleHBh bmQgSlNPTiBmb3JtYXQgRERMIHRvIGEgcGxhaW4gdGV4dCBEREwgY29tbWFuZCcsCisgIHByb25h bWUgPT4gJ2RkbF9kZXBhcnNlX2V4cGFuZF9jb21tYW5kJywgcHJvcmV0dHlwZSA9PiAndGV4dCcs CisgIHByb2FyZ3R5cGVzID0+ICd0ZXh0JywgcHJvc3JjID0+ICdkZGxfZGVwYXJzZV9leHBhbmRf Y29tbWFuZCcgfSwKKwogXQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvc2VxdWVu Y2UuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3NlcXVlbmNlLmgKaW5kZXggN2RiN2IzZGE3Yi4u YzBhMzk1OTZhYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvc2VxdWVuY2UuaAor KysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9zZXF1ZW5jZS5oCkBAIC0xNSw2ICsxNSw3IEBACiAK ICNpbmNsdWRlICJhY2Nlc3MveGxvZ3JlYWRlci5oIgogI2luY2x1ZGUgImNhdGFsb2cvb2JqZWN0 YWRkcmVzcy5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfc2VxdWVuY2UuaCIKICNpbmNsdWRlICJm bWdyLmgiCiAjaW5jbHVkZSAibGliL3N0cmluZ2luZm8uaCIKICNpbmNsdWRlICJub2Rlcy9wYXJz ZW5vZGVzLmgiCkBAIC01MSw5ICs1MiwxNyBAQCB0eXBlZGVmIHN0cnVjdCB4bF9zZXFfcmVjCiAJ LyogU0VRVUVOQ0UgVFVQTEUgREFUQSBGT0xMT1dTIEFUIFRIRSBFTkQgKi8KIH0geGxfc2VxX3Jl YzsKIAorLyogSW5mb3JtYXRpb24gbmVlZGVkIHRvIGRlZmluZSBhIHNlcXVlbmNlLiAqLwordHlw ZWRlZiBzdHJ1Y3QgU2VxdWVuY2VfdmFsdWVzCit7CisJRm9ybV9wZ19zZXF1ZW5jZSBzZXFmb3Jt OworCWludDY0CQlsYXN0X3ZhbHVlOworfSBTZXF1ZW5jZV92YWx1ZXM7CisKIGV4dGVybiBpbnQ2 NCBuZXh0dmFsX2ludGVybmFsKE9pZCByZWxpZCwgYm9vbCBjaGVja19wZXJtaXNzaW9ucyk7CiBl eHRlcm4gRGF0dW0gbmV4dHZhbChQR19GVU5DVElPTl9BUkdTKTsKIGV4dGVybiBMaXN0ICpzZXF1 ZW5jZV9vcHRpb25zKE9pZCByZWxpZCk7CitleHRlcm4gU2VxdWVuY2VfdmFsdWVzICpnZXRfc2Vx dWVuY2VfdmFsdWVzKE9pZCBzZXF1ZW5jZUlkKTsKIAogZXh0ZXJuIE9iamVjdEFkZHJlc3MgRGVm aW5lU2VxdWVuY2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTZXFTdG10ICpzZXEpOwogZXh0 ZXJuIE9iamVjdEFkZHJlc3MgQWx0ZXJTZXF1ZW5jZShQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVy U2VxU3RtdCAqc3RtdCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy90YWJsZWNt ZHMuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RhYmxlY21kcy5oCmluZGV4IDI1MGQ4OWZmODgu LmQyODc0YjkyNTUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RhYmxlY21kcy5o CisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RhYmxlY21kcy5oCkBAIC0xMDUsNCArMTA1LDYg QEAgZXh0ZXJuIHZvaWQgUmFuZ2VWYXJDYWxsYmFja093bnNSZWxhdGlvbihjb25zdCBSYW5nZVZh ciAqcmVsYXRpb24sCiBleHRlcm4gYm9vbCBQYXJ0Q29uc3RyYWludEltcGxpZWRCeVJlbENvbnN0 cmFpbnQoUmVsYXRpb24gc2NhbnJlbCwKIAkJCQkJCQkJCQkJCSBMaXN0ICpwYXJ0Q29uc3RyYWlu dCk7CiAKK2V4dGVybiBjaGFyICpzdG9yYWdlX25hbWUoY2hhciBjKTsKKwogI2VuZGlmCQkJCQkJ CS8qIFRBQkxFQ01EU19IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5v ZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5kZXggYjNiZWM5MGU1Mi4u YjhhYjhkYWU2YyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCisr KyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAtMjE2Nyw2ICsyMTY3LDcgQEAg dHlwZWRlZiBzdHJ1Y3QgQWx0ZXJUYWJsZVN0bXQKIAlMaXN0CSAgICpjbWRzOwkJCS8qIGxpc3Qg b2Ygc3ViY29tbWFuZHMgKi8KIAlPYmplY3RUeXBlCW9ianR5cGU7CQkvKiB0eXBlIG9mIG9iamVj dCAqLwogCWJvb2wJCW1pc3Npbmdfb2s7CQkvKiBza2lwIGVycm9yIGlmIHRhYmxlIG1pc3Npbmcg Ki8KKwlib29sCQl0YWJsZV9saWtlOwkJLyogaW50ZXJuYWxseSBnZW5lcmF0ZWQgZm9yIFRhYmxl TGlrZUNsYXVzZSAqLwogfSBBbHRlclRhYmxlU3RtdDsKIAogdHlwZWRlZiBlbnVtIEFsdGVyVGFi bGVUeXBlCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5o IGIvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuaAppbmRleCBkMmUwMWY5MmRm Li40NzZiMzhhODllIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydGJv dW5kcy5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmgKQEAgLTE0 Myw0ICsxNDMsNiBAQCBleHRlcm4gaW50CXBhcnRpdGlvbl9yYW5nZV9kYXR1bV9ic2VhcmNoKEZt Z3JJbmZvICpwYXJ0c3VwZnVuYywKIGV4dGVybiBpbnQJcGFydGl0aW9uX2hhc2hfYnNlYXJjaChQ YXJ0aXRpb25Cb3VuZEluZm8gYm91bmRpbmZvLAogCQkJCQkJCQkgICBpbnQgbW9kdWx1cywgaW50 IHJlbWFpbmRlcik7CiAKK2V4dGVybiBjaGFyICAgICpyZWxhdGlvbl9nZXRfcGFydF9ib3VuZChP aWQgcmVsaWQpOworCiAjZW5kaWYJCQkJCQkJLyogUEFSVEJPVU5EU19IICovCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS90Y29wL2RkbGRlcGFyc2UuaCBiL3NyYy9pbmNsdWRlL3Rjb3AvZGRsZGVw YXJzZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjBjY2I0ZDFlZGUK LS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS90Y29wL2RkbGRlcGFyc2UuaApAQCAtMCww ICsxLDIxIEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBkZGxkZXBhcnNlLmgKKyAqCisg KiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyMywgUG9zdGdyZVNRTCBHbG9iYWwgRGV2 ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBv ZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCisgKgorICogc3JjL2luY2x1ZGUvdGNvcC9k ZGxkZXBhcnNlLmgKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2lmbmRlZiBERExfREVQ QVJTRV9ICisjZGVmaW5lIERETF9ERVBBUlNFX0gKKworI2luY2x1ZGUgInRjb3AvZGVwYXJzZV91 dGlsaXR5LmgiCisKK2V4dGVybiBjaGFyICpkZXBhcnNlX3V0aWxpdHlfY29tbWFuZChDb2xsZWN0 ZWRDb21tYW5kICpjbWQpOworZXh0ZXJuIGNoYXIgKmRlcGFyc2VfZGRsX2pzb25fdG9fc3RyaW5n KGNoYXIgKmpzb25iKTsKK2V4dGVybiBjaGFyICpkZXBhcnNlX2Ryb3BfdGFibGUoY29uc3QgY2hh ciAqb2JqaWRlbnRpdHksIE5vZGUgKnBhcnNldHJlZSk7CisKKyNlbmRpZgkJCQkJCQkvKiBERExf REVQQVJTRV9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9idWlsdGlucy5oIGIv c3JjL2luY2x1ZGUvdXRpbHMvYnVpbHRpbnMuaAppbmRleCAyZjhiNDZkNmRhLi5jZmRhMjk5ZGVl IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9idWlsdGlucy5oCisrKyBiL3NyYy9pbmNs dWRlL3V0aWxzL2J1aWx0aW5zLmgKQEAgLTEyNCw5ICsxMjQsMTQgQEAgZXh0ZXJuIERhdHVtIG51 bWVyaWNfZmxvYXQ4X25vX292ZXJmbG93KFBHX0ZVTkNUSU9OX0FSR1MpOwogI2RlZmluZSBGT1JN QVRfVFlQRV9JTlZBTElEX0FTX05VTEwJMHgwOAkvKiBOVUxMIGlmIHVuZGVmaW5lZCAqLwogZXh0 ZXJuIGNoYXIgKmZvcm1hdF90eXBlX2V4dGVuZGVkKE9pZCB0eXBlX29pZCwgaW50MzIgdHlwZW1v ZCwgYml0czE2IGZsYWdzKTsKIAorZXh0ZXJuIHZvaWQgZm9ybWF0X3R5cGVfZGV0YWlsZWQoT2lk IHR5cGVfb2lkLCBpbnQzMiB0eXBlbW9kLAorCQkJCQkJCQkgIE9pZCAqbnNwaWQsIGNoYXIgKip0 eXBuYW1lLAorCQkJCQkJCQkgIGNoYXIgKip0eXBlbW9kc3RyLCBib29sICp0eXBlYXJyYXkpOwor CiBleHRlcm4gY2hhciAqZm9ybWF0X3R5cGVfYmUoT2lkIHR5cGVfb2lkKTsKIGV4dGVybiBjaGFy ICpmb3JtYXRfdHlwZV9iZV9xdWFsaWZpZWQoT2lkIHR5cGVfb2lkKTsKIGV4dGVybiBjaGFyICpm b3JtYXRfdHlwZV93aXRoX3R5cGVtb2QoT2lkIHR5cGVfb2lkLCBpbnQzMiB0eXBlbW9kKTsKK2V4 dGVybiBjaGFyICpwcmludFR5cG1vZChjb25zdCBjaGFyICp0eXBuYW1lLCBpbnQzMiB0eXBtb2Qs IE9pZCB0eXBtb2RvdXQpOwogCiBleHRlcm4gaW50MzIgdHlwZV9tYXhpbXVtX3NpemUoT2lkIHR5 cGVfb2lkLCBpbnQzMiB0eXBlbW9kKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMv cnVsZXV0aWxzLmggYi9zcmMvaW5jbHVkZS91dGlscy9ydWxldXRpbHMuaAppbmRleCBiMDA2ZDlk NDc1Li41MGE4YTE0ZDExIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9ydWxldXRpbHMu aAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9ydWxldXRpbHMuaApAQCAtMTYsNiArMTYsNyBAQAog I2luY2x1ZGUgIm5vZGVzL25vZGVzLmgiCiAjaW5jbHVkZSAibm9kZXMvcGFyc2Vub2Rlcy5oIgog I2luY2x1ZGUgIm5vZGVzL3BnX2xpc3QuaCIKKyNpbmNsdWRlICJwYXJzZXIvcGFyc2Vfbm9kZS5o IgogCiBzdHJ1Y3QgUGxhbjsJCQkJCS8qIGF2b2lkIGluY2x1ZGluZyBwbGFubm9kZXMuaCBoZXJl ICovCiBzdHJ1Y3QgUGxhbm5lZFN0bXQ7CkBAIC0zMSw5ICszMiwxMSBAQCBleHRlcm4gY2hhciAq cGdfZ2V0X2luZGV4ZGVmX2NvbHVtbnNfZXh0ZW5kZWQoT2lkIGluZGV4cmVsaWQsCiBleHRlcm4g Y2hhciAqcGdfZ2V0X3F1ZXJ5ZGVmKFF1ZXJ5ICpxdWVyeSwgYm9vbCBwcmV0dHkpOwogCiBleHRl cm4gY2hhciAqcGdfZ2V0X3BhcnRrZXlkZWZfY29sdW1ucyhPaWQgcmVsaWQsIGJvb2wgcHJldHR5 KTsKK2V4dGVybiBjaGFyICpwZ19nZXRfcGFydGtleWRlZl9zdHJpbmcoT2lkIHJlbGlkKTsKIGV4 dGVybiBjaGFyICpwZ19nZXRfcGFydGNvbnN0cmRlZl9zdHJpbmcoT2lkIHBhcnRpdGlvbklkLCBj aGFyICphbGlhc25hbWUpOwogCiBleHRlcm4gY2hhciAqcGdfZ2V0X2NvbnN0cmFpbnRkZWZfY29t bWFuZChPaWQgY29uc3RyYWludElkKTsKK2V4dGVybiBjaGFyICpwZ19nZXRfY29uc3RyYWludGRl Zl9zdHJpbmcoT2lkIGNvbnN0cmFpbnRJZCk7CiBleHRlcm4gY2hhciAqZGVwYXJzZV9leHByZXNz aW9uKE5vZGUgKmV4cHIsIExpc3QgKmRwY29udGV4dCwKIAkJCQkJCQkJYm9vbCBmb3JjZXByZWZp eCwgYm9vbCBzaG93aW1wbGljaXQpOwogZXh0ZXJuIExpc3QgKmRlcGFyc2VfY29udGV4dF9mb3Io Y29uc3QgY2hhciAqYWxpYXNuYW1lLCBPaWQgcmVsaWQpOwpAQCAtNDUsOCArNDgsMTggQEAgZXh0 ZXJuIExpc3QgKnNlbGVjdF9ydGFibGVfbmFtZXNfZm9yX2V4cGxhaW4oTGlzdCAqcnRhYmxlLAog CQkJCQkJCQkJCQkgQml0bWFwc2V0ICpyZWxzX3VzZWQpOwogZXh0ZXJuIGNoYXIgKmdlbmVyYXRl X2NvbGxhdGlvbl9uYW1lKE9pZCBjb2xsaWQpOwogZXh0ZXJuIGNoYXIgKmdlbmVyYXRlX29wY2xh c3NfbmFtZShPaWQgb3BjbGFzcyk7CitleHRlcm4gY2hhciAqZ2VuZXJhdGVfZnVuY3Rpb25fbmFt ZShPaWQgZnVuY2lkLCBpbnQgbmFyZ3MsIExpc3QgKmFyZ25hbWVzLAorCQkJCQkJCQkJT2lkICph cmd0eXBlcywgYm9vbCBoYXNfdmFyaWFkaWMsCisJCQkJCQkJCQlib29sICp1c2VfdmFyaWFkaWNf cCwKKwkJCQkJCQkJCVBhcnNlRXhwcktpbmQgc3BlY2lhbF9leHBya2luZCk7CiBleHRlcm4gY2hh ciAqZ2V0X3JhbmdlX3BhcnRib3VuZF9zdHJpbmcoTGlzdCAqYm91bmRfZGF0dW1zKTsKK2V4dGVy biB2b2lkIGdldF9vcGNsYXNzX25hbWUoT2lkIG9wY2xhc3MsIE9pZCBhY3R1YWxfZGF0YXR5cGUs CisJCQkJCQkJIFN0cmluZ0luZm8gYnVmKTsKK2V4dGVybiBjaGFyICpmbGF0dGVuX3JlbG9wdGlv bnMoT2lkIHJlbGlkKTsKIAogZXh0ZXJuIGNoYXIgKnBnX2dldF9zdGF0aXN0aWNzb2JqZGVmX3N0 cmluZyhPaWQgc3RhdGV4dGlkKTsKIAorZXh0ZXJuIGNoYXIgKnJlbGF0aW9uX2dldF9jb2x1bW5f ZGVmYXVsdChSZWxhdGlvbiByZWwsIEF0dHJOdW1iZXIgYXR0bm8sCisJCQkJCQkJCQkJIExpc3Qg KmRwY29udGV4dCk7CisKICNlbmRpZgkJCQkJCQkvKiBSVUxFVVRJTFNfSCAqLwpkaWZmIC0tZ2l0 IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQv dHlwZWRlZnMubGlzdAppbmRleCAyNjA4NTQ3NDdiLi43YzhhZTdmZTdiIDEwMDY0NAotLS0gYS9z cmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQv dHlwZWRlZnMubGlzdApAQCAtMzIyMiw2ICszMjIyLDcgQEAgY29uZmlnX3Zhcl92YWx1ZQogY29u dGFpbl9hZ2dzX29mX2xldmVsX2NvbnRleHQKIGNvbnRhaW5fcGxhY2Vob2xkZXJfcmVmZXJlbmNl c19jb250ZXh0CiBjb252ZXJ0X3Rlc3RleHByX2NvbnRleHQKK2NvbnZTcGVjaWZpZXIKIGNvcHlf ZGF0YV9kZXN0X2NiCiBjb3B5X2RhdGFfc291cmNlX2NiCiBjb3JlX1lZU1RZUEUKQEAgLTM0MjUs NiArMzQyNiw3IEBAIGpzb25fbWFuaWZlc3RfcGVyd2FscmFuZ2VfY2FsbGJhY2sKIGpzb25fb2Zp ZWxkX2FjdGlvbgoganNvbl9zY2FsYXJfYWN0aW9uCiBqc29uX3N0cnVjdF9hY3Rpb24KK2pzb25f dHJpdmFsdWUKIGtleUVudHJ5RGF0YQoga2V5X3QKIGxjbENvbnRleHQKLS0gCjIuMzQuMQoK --00000000000023744d05ff537465 Content-Type: application/octet-stream; name="0005-Apply-the-DDL-change-as-that-same-user-th-2023_06_30.patch" Content-Disposition: attachment; filename="0005-Apply-the-DDL-change-as-that-same-user-th-2023_06_30.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lji8c4bg4 RnJvbSBiYjk4ZDdiZjVlMzkzNDRiYzBiMTJhNDUyZTJiYTE3MGQ2ZjZhOTFjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaHZldGEgTWFsaWsgPHNodmV0YS5tYWxpa0BnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMjggSnVuIDIwMjMgMTY6MTM6MDQgKzA1MzAKU3ViamVjdDogW1BBVENIIDUv NV0gQXBwbHkgdGhlIERETCBjaGFuZ2UgYXMgdGhhdCBzYW1lIHVzZXIgdGhhdCBleGVjdXRlZCB0 aGUKIERETCBvbiBwdWJsaXNoZXIKCjEuIENoYW5nZSBldmVudCB0cmlnZ2VyIGZ1bmN0aW9ucyB0 byBjb2xsZWN0IHRoZSBjdXJyZW50IHJvbGUgaW4KQ29sbGVjdGVkQ29tbWFuZC4KCjIuIENoYW5n ZSBEZXBhcnNlciBmdW5jdGlvbiBkZXBhcnNlX3V0aWxpdHlfY29tbWFuZCB0byBlbmNvZGUgb3du ZXIgcm9sZSBpbiB0aGUKdG9wLWxldmVsIGVsZW1lbnQgc3VjaCBhcyB7bXlvd25lcjpyb2xlX25h bWUsIGZtdDouLi4sIGlkZW50aXR5Oi4uLn0gb2YgdGhlCmRlcGFyc2VkIGpzb25iIG91dHB1dCBm b3IgY29tbWFuZHMgdGhhdCBjcmVhdGUgZGF0YWJhc2Ugb2JqZWN0cy4gQWxzbyBjaGFuZ2UKZnVu Y3Rpb24gZGVwYXJzZV9kZGxfanNvbl90b19zdHJpbmcgdG8gcmV0cmlldmUgdGhlIG15b3duZXIg ZWxlbWVudCBmcm9tIGEKanNvbmIgc3RyaW5nLgoKMy4gSW50cm9kdWNlIGEgbmV3IHN1YnNjcmlw dGlvbiBvcHRpb24gbWF0Y2hfZGRsX293bmVyOiB3aGVuIHR1cm5lZCBvbiwgdGhlCmFwcGx5IHdv cmtlciB3aWxsIGFwcGx5IERETCBtZXNzYWdlcyBpbiB0aGUgcm9sZSByZXRyaWV2ZWQgZnJvbSB0 aGUgIm15b3duZXIiCmZpZWxkIG9mIHRoZSBkZXBhcnNlZCBqc29uYiBzdHJpbmcuIFRoZSBkZWZh dWx0IHZhbHVlIG9mIG1hdGNoX2RkbF9vd25lciBpcyBvbi4KLS0tCiBzcmMvYmFja2VuZC9jYXRh bG9nL3BnX3N1YnNjcmlwdGlvbi5jICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9jb21tYW5k cy9kZGxkZXBhcnNlLmMgICAgICAgICAgICB8ICAzNiArKysrLQogc3JjL2JhY2tlbmQvY29tbWFu ZHMvZGRsanNvbi5jICAgICAgICAgICAgICAgfCAgMjUgKystCiBzcmMvYmFja2VuZC9jb21tYW5k cy9ldmVudF90cmlnZ2VyLmMgICAgICAgICB8ICAgNCArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9z dWJzY3JpcHRpb25jbWRzLmMgICAgICB8ICAyOCArKystCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL2RkbHRyaWdnZXIuYyB8ICAgNiArCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL3dvcmtlci5jICAgICB8ICAxNCArLQogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyAg ICAgICAgICAgICAgICAgICAgfCAgMTMgKy0KIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmggICAg ICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iaW4vcHNxbC9kZXNjcmliZS5jICAgICAgICAg ICAgICAgICAgICAgIHwgICA4ICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlv bi5oICAgICAgICB8ICAgNSArCiBzcmMvaW5jbHVkZS90Y29wL2RkbGRlcGFyc2UuaCAgICAgICAg ICAgICAgICB8ICAxMSArLQogc3JjL2luY2x1ZGUvdGNvcC9kZXBhcnNlX3V0aWxpdHkuaCAgICAg ICAgICAgfCAgIDEgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0 ICAgfCAxNTIgKysrKysrKysrLS0tLS0tLS0tLQogMTQgZmlsZXMgY2hhbmdlZCwgMjEwIGluc2Vy dGlvbnMoKyksIDk1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFs b2cvcGdfc3Vic2NyaXB0aW9uLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlv bi5jCmluZGV4IGQwN2Y4OGNlMjguLjJkODJmYmZhZDIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19z dWJzY3JpcHRpb24uYwpAQCAtNzMsNiArNzMsNyBAQCBHZXRTdWJzY3JpcHRpb24oT2lkIHN1Ymlk LCBib29sIG1pc3Npbmdfb2spCiAJc3ViLT5kaXNhYmxlb25lcnIgPSBzdWJmb3JtLT5zdWJkaXNh Ymxlb25lcnI7CiAJc3ViLT5wYXNzd29yZHJlcXVpcmVkID0gc3ViZm9ybS0+c3VicGFzc3dvcmRy ZXF1aXJlZDsKIAlzdWItPnJ1bmFzb3duZXIgPSBzdWJmb3JtLT5zdWJydW5hc293bmVyOworCXN1 Yi0+bWF0Y2hkZGxvd25lciA9IHN1YmZvcm0tPnN1Ym1hdGNoZGRsb3duZXI7CiAKIAkvKiBHZXQg Y29ubmluZm8gKi8KIAlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0ck5vdE51bGwoU1VCU0NSSVBUSU9O T0lELApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZGRsZGVwYXJzZS5jIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvZGRsZGVwYXJzZS5jCmluZGV4IDY2ZmIyMmQ3YjEuLjVjZTg5MGVk NzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2RkbGRlcGFyc2UuYworKysgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9kZGxkZXBhcnNlLmMKQEAgLTE1MDksNyArMTUwOSw3IEBAIGRl cGFyc2Vfd2l0aE9iaihKc29uYlBhcnNlU3RhdGUgKnN0YXRlLCBDcmVhdGVTdG10ICpub2RlKQog ICogJXt3aXRoX2NsYXVzZX1zICV7dGFibGVzcGFjZX1zCiAgKi8KIHN0YXRpYyBKc29uYiAqCi1k ZXBhcnNlX0NyZWF0ZVN0bXQoT2lkIG9iamVjdElkLCBOb2RlICpwYXJzZXRyZWUpCitkZXBhcnNl X0NyZWF0ZVN0bXQoT2lkIG9iamVjdElkLCBOb2RlICpwYXJzZXRyZWUsIGNoYXIgKm93bmVyKQog ewogCUNyZWF0ZVN0bXQgKm5vZGUgPSAoQ3JlYXRlU3RtdCAqKSBwYXJzZXRyZWU7CiAJUmVsYXRp b24JcmVsYXRpb24gPSByZWxhdGlvbl9vcGVuKG9iamVjdElkLCBBY2Nlc3NTaGFyZUxvY2spOwpA QCAtMTUyNiw2ICsxNTI2LDExIEBAIGRlcGFyc2VfQ3JlYXRlU3RtdChPaWQgb2JqZWN0SWQsIE5v ZGUgKnBhcnNldHJlZSkKIAkvKiBtYXJrIHRoZSBiZWdpbiBvZiBST09UIG9iamVjdCBhbmQgc3Rh cnQgYWRkaW5nIGVsZW1lbnRzIHRvIGl0LiAqLwogCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pC X0JFR0lOX09CSkVDVCwgTlVMTCk7CiAKKwkvKiBjcmVhdGUgb3duZXIganNvbmIgZWxlbWVudCAq LworCWlmIChvd25lcikKKwkJbmV3X2pzb25iX1ZBKHN0YXRlLCAxLCAibXlvd25lciIsIGpidlN0 cmluZywgb3duZXIpOworCisJLyogU3RhcnQgbWFraW5nIGZtdCBzdHJpbmcgKi8KIAlhcHBlbmRT dHJpbmdJbmZvU3RyaW5nKCZmbXRTdHIsICJDUkVBVEUiKTsKIAogCS8qIFBFUlNJU1RFTkNFICov CkBAIC0zMDYzLDcgKzMwNjgsNyBAQCBkZXBhcnNlX0FsdGVyVGFibGVTdG10KENvbGxlY3RlZENv bW1hbmQgKmNtZCwgZGRsX2RlcGFyc2VfY29udGV4dCAqIGNvbnRleHQpCiAgKiAle2RlZmluaXRp b246IH1zCiAgKi8KIHN0YXRpYyBKc29uYiAqCi1kZXBhcnNlX0NyZWF0ZVNlcVN0bXQoT2lkIG9i amVjdElkLCBOb2RlICpwYXJzZXRyZWUpCitkZXBhcnNlX0NyZWF0ZVNlcVN0bXQoT2lkIG9iamVj dElkLCBOb2RlICpwYXJzZXRyZWUsIGNoYXIgKm93bmVyKQogewogCVJlbGF0aW9uCXJlbGF0aW9u OwogCUZvcm1fcGdfc2VxdWVuY2Ugc2VxZm9ybTsKQEAgLTMwODYsNiArMzA5MSwxMSBAQCBkZXBh cnNlX0NyZWF0ZVNlcVN0bXQoT2lkIG9iamVjdElkLCBOb2RlICpwYXJzZXRyZWUpCiAKIAkvKiBt YXJrIHRoZSBzdGFydCBvZiBST09UIG9iamVjdCAqLwogCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwg V0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CisKKwkvKiBjcmVhdGUgb3duZXIganNvbmIgZWxlbWVu dCAqLworCWlmIChvd25lcikKKwkJbmV3X2pzb25iX1ZBKHN0YXRlLCAxLCAibXlvd25lciIsIGpi dlN0cmluZywgb3duZXIpOworCiAJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmZm10U3RyLCAiQ1JF QVRFIik7CiAKIAkvKiBQRVJTSVNURU5DRSAqLwpAQCAtMzE2NSw3ICszMTc1LDcgQEAgZGVwYXJz ZV9DcmVhdGVTZXFTdG10KE9pZCBvYmplY3RJZCwgTm9kZSAqcGFyc2V0cmVlKQogICogQUxURVIg U0VRVUVOQ0UgJXtpZGVudGl0eX1EICV7ZGVmaW5pdGlvbjogfXMKICAqLwogc3RhdGljIEpzb25i ICoKLWRlcGFyc2VfQWx0ZXJTZXFTdG10KE9pZCBvYmplY3RJZCwgTm9kZSAqcGFyc2V0cmVlKQor ZGVwYXJzZV9BbHRlclNlcVN0bXQoT2lkIG9iamVjdElkLCBOb2RlICpwYXJzZXRyZWUsIGNoYXIg Km93bmVyKQogewogCVJlbGF0aW9uCXJlbGF0aW9uOwogCUxpc3RDZWxsICAgKmNlbGw7CkBAIC0z MTg3LDYgKzMxOTcsMTAgQEAgZGVwYXJzZV9BbHRlclNlcVN0bXQoT2lkIG9iamVjdElkLCBOb2Rl ICpwYXJzZXRyZWUpCiAJLyogbWFyayB0aGUgc3RhcnQgb2YgUk9PVCBvYmplY3QgKi8KIAlwdXNo SnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9PQkpFQ1QsIE5VTEwpOwogCisJLyogY3JlYXRl IG93bmVyIGpzb25iIGVsZW1lbnQgKi8KKwlpZiAob3duZXIpCisJCW5ld19qc29uYl9WQShzdGF0 ZSwgMSwgIm15b3duZXIiLCBqYnZTdHJpbmcsIG93bmVyKTsKKwogCW5ld19qc29uYl9WQShzdGF0 ZSwgMSwKIAkJCQkgImZtdCIsIGpidlN0cmluZywgIkFMVEVSIFNFUVVFTkNFICV7aWRlbnRpdHl9 RCAle2RlZmluaXRpb246IH1zIik7CiAKQEAgLTM0NDUsMTAgKzM0NTksMTEgQEAgZGVwYXJzZV9B bHRlck9iamVjdFNjaGVtYVN0bXQoT2JqZWN0QWRkcmVzcyBhZGRyZXNzLCBOb2RlICpwYXJzZXRy ZWUsCiAgKiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBjb3ZlciBhbGwgY2FzZXMgaGFuZGxlZCBpbiBQ cm9jZXNzVXRpbGl0eVNsb3cuCiAgKi8KIHN0YXRpYyBKc29uYiAqCi1kZXBhcnNlX3NpbXBsZV9j b21tYW5kKENvbGxlY3RlZENvbW1hbmQgKmNtZCkKK2RlcGFyc2Vfc2ltcGxlX2NvbW1hbmQoQ29s bGVjdGVkQ29tbWFuZCAqY21kLCBkZGxfZGVwYXJzZV9jb250ZXh0ICogY29udGV4dCkKIHsKIAlP aWQJCQlvYmplY3RJZDsKIAlOb2RlCSAgICpwYXJzZXRyZWU7CisJY2hhcgkgICAqb3duZXIgPSBj b250ZXh0LT5pbmNsdWRlX293bmVyID8gY21kLT5yb2xlIDogTlVMTDsKIAogCUFzc2VydChjbWQt PnR5cGUgPT0gU0NUX1NpbXBsZSk7CiAKQEAgLTM0NjIsMTkgKzM0NzcsMjEgQEAgZGVwYXJzZV9z aW1wbGVfY29tbWFuZChDb2xsZWN0ZWRDb21tYW5kICpjbWQpCiAJc3dpdGNoIChub2RlVGFnKHBh cnNldHJlZSkpCiAJewogCQljYXNlIFRfQWx0ZXJPYmplY3RTY2hlbWFTdG10OgorCQkJY29udGV4 dC0+aW5jbHVkZV9vd25lciA9IGZhbHNlOwogCQkJcmV0dXJuIGRlcGFyc2VfQWx0ZXJPYmplY3RT Y2hlbWFTdG10KGNtZC0+ZC5zaW1wbGUuYWRkcmVzcywKIAkJCQkJCQkJCQkJCSBwYXJzZXRyZWUs CiAJCQkJCQkJCQkJCQkgY21kLT5kLnNpbXBsZS5zZWNvbmRhcnlPYmplY3QpOwogCiAJCWNhc2Ug VF9BbHRlclNlcVN0bXQ6Ci0JCQlyZXR1cm4gZGVwYXJzZV9BbHRlclNlcVN0bXQob2JqZWN0SWQs IHBhcnNldHJlZSk7CisJCQlyZXR1cm4gZGVwYXJzZV9BbHRlclNlcVN0bXQob2JqZWN0SWQsIHBh cnNldHJlZSwgb3duZXIpOwogCiAJCWNhc2UgVF9DcmVhdGVTZXFTdG10OgotCQkJcmV0dXJuIGRl cGFyc2VfQ3JlYXRlU2VxU3RtdChvYmplY3RJZCwgcGFyc2V0cmVlKTsKKwkJCXJldHVybiBkZXBh cnNlX0NyZWF0ZVNlcVN0bXQob2JqZWN0SWQsIHBhcnNldHJlZSwgb3duZXIpOwogCiAJCWNhc2Ug VF9DcmVhdGVTdG10OgotCQkJcmV0dXJuIGRlcGFyc2VfQ3JlYXRlU3RtdChvYmplY3RJZCwgcGFy c2V0cmVlKTsKKwkJCXJldHVybiBkZXBhcnNlX0NyZWF0ZVN0bXQob2JqZWN0SWQsIHBhcnNldHJl ZSwgb3duZXIpOwogCQljYXNlIFRfUmVuYW1lU3RtdDoKKwkJCWNvbnRleHQtPmluY2x1ZGVfb3du ZXIgPSBmYWxzZTsKIAkJCXJldHVybiBkZXBhcnNlX1JlbmFtZVN0bXQoY21kLT5kLnNpbXBsZS5h ZGRyZXNzLCBwYXJzZXRyZWUpOwogCiAJCWRlZmF1bHQ6CkBAIC0zNTI4LDEwICszNTQ1LDExIEBA IGRlcGFyc2VfdXRpbGl0eV9jb21tYW5kKENvbGxlY3RlZENvbW1hbmQgKmNtZCwgZGRsX2RlcGFy c2VfY29udGV4dCAqIGNvbnRleHQpCiAJc3dpdGNoIChjbWQtPnR5cGUpCiAJewogCQljYXNlIFND VF9TaW1wbGU6Ci0JCQlqc29uYiA9IGRlcGFyc2Vfc2ltcGxlX2NvbW1hbmQoY21kKTsKKwkJCWpz b25iID0gZGVwYXJzZV9zaW1wbGVfY29tbWFuZChjbWQsIGNvbnRleHQpOwogCQkJYnJlYWs7CiAJ CWNhc2UgU0NUX0FsdGVyVGFibGU6CiAJCQlqc29uYiA9IGRlcGFyc2VfQWx0ZXJUYWJsZVN0bXQo Y21kLCBjb250ZXh0KTsKKwkJCWNvbnRleHQtPmluY2x1ZGVfb3duZXIgPSBmYWxzZTsKIAkJCWJy ZWFrOwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgZGVwYXJzZSBub2Rl IHR5cGUgJWQiLCBjbWQtPnR5cGUpOwpAQCAtMzU2NSw2ICszNTgzLDggQEAgZGRsX2RlcGFyc2Vf dG9fanNvbihQR19GVU5DVElPTl9BUkdTKQogCWNoYXIJICAgKmNvbW1hbmQ7CiAJZGRsX2RlcGFy c2VfY29udGV4dCBjb250ZXh0OwogCisJY29udGV4dC5pbmNsdWRlX293bmVyID0gZmFsc2U7CisK IAkvKgogCSAqIEluaXRpYWxpemUgdGhlIG1heF92b2xhdGlsaXR5IGZsYWcgdG8gUFJPVk9MQVRJ TEVfSU1NVVRBQkxFLCB3aGljaCBpcwogCSAqIHRoZSBtaW5pbXVtIHZvbGF0aWxpdHkgbGV2ZWwu CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9kZGxqc29uLmMgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9kZGxqc29uLmMKaW5kZXggZDVjOTY4YjdjMS4uZWZiMGI2MTUyZiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZGRsanNvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2RkbGpzb24uYwpAQCAtNjk2LDcgKzY5Niw3IEBAIGV4cGFuZF9qc29uYl9hcnJheShT dHJpbmdJbmZvIGJ1ZiwgY2hhciAqcGFyYW0sCiAgKiBXb3JraG9yc2UgZm9yIGRkbF9kZXBhcnNl X2V4cGFuZF9jb21tYW5kLgogICovCiBjaGFyICoKLWRlcGFyc2VfZGRsX2pzb25fdG9fc3RyaW5n KGNoYXIgKmpzb25fc3RyKQorZGVwYXJzZV9kZGxfanNvbl90b19zdHJpbmcoY2hhciAqanNvbl9z dHIsIGNoYXIqKiBvd25lcikKIHsKIAlEYXR1bQkJZDsKIAlKc29uYgkgICAqanNvbmI7CkBAIC03 MDcsNiArNzA3LDI3IEBAIGRlcGFyc2VfZGRsX2pzb25fdG9fc3RyaW5nKGNoYXIgKmpzb25fc3Ry KQogCWQgPSBEaXJlY3RGdW5jdGlvbkNhbGwxKGpzb25iX2luLCBQb2ludGVyR2V0RGF0dW0oanNv bl9zdHIpKTsKIAlqc29uYiA9IChKc29uYiAqKSBEYXR1bUdldFBvaW50ZXIoZCk7CiAKKwlpZiAo b3duZXIgIT0gTlVMTCkKKwl7CisJCWNvbnN0IGNoYXIgKmtleSA9ICJteW93bmVyIjsKKwkJSnNv bmJWYWx1ZSAqdmFsdWU7CisKKwkJdmFsdWUgPSBnZXRLZXlKc29uVmFsdWVGcm9tQ29udGFpbmVy KCZqc29uYi0+cm9vdCwga2V5LCBzdHJsZW4oa2V5KSwgTlVMTCk7CisJCWlmICh2YWx1ZSkKKwkJ eworCQkJY2hhciAqc3RyOworCisJCQkvKiB2YWx1ZS0+dmFsLnN0cmluZy52YWwgbWF5IG5vdCBi ZSBOVUxMIHRlcm1pbmF0ZWQgKi8KKwkJCXN0ciA9IHBhbGxvYyh2YWx1ZS0+dmFsLnN0cmluZy5s ZW4gKyAxKTsKKwkJCW1lbWNweShzdHIsIHZhbHVlLT52YWwuc3RyaW5nLnZhbCwgdmFsdWUtPnZh bC5zdHJpbmcubGVuKTsKKwkJCXN0clt2YWx1ZS0+dmFsLnN0cmluZy5sZW5dID0gJ1wwJzsKKwkJ CSpvd25lciA9IHN0cjsKKwkJfQorCQllbHNlCisJCQkvKiBteW93bmVyIGlzIG5vdCBnaXZlbiBp biB0aGlzIGpzb25iLCBlLmcuIGZvciBEcm9wIENvbW1hbmRzICovCisJCQkqb3duZXIgPSBOVUxM OworCX0KKwogCWV4cGFuZF9mbXRfcmVjdXJzaXZlKGJ1ZiwgJmpzb25iLT5yb290KTsKIAogCXJl dHVybiBidWYtPmRhdGE7CkBAIC03NDQsNyArNzY1LDcgQEAgZGRsX2RlcGFyc2VfZXhwYW5kX2Nv bW1hbmQoUEdfRlVOQ1RJT05fQVJHUykKIAogCWpzb25fc3RyID0gdGV4dF90b19jc3RyaW5nKGpz b24pOwogCi0JUEdfUkVUVVJOX1RFWFRfUChjc3RyaW5nX3RvX3RleHQoZGVwYXJzZV9kZGxfanNv bl90b19zdHJpbmcoanNvbl9zdHIpKSk7CisJUEdfUkVUVVJOX1RFWFRfUChjc3RyaW5nX3RvX3Rl eHQoZGVwYXJzZV9kZGxfanNvbl90b19zdHJpbmcoanNvbl9zdHIsIE5VTEwpKSk7CiB9CiAKIC8q CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMKaW5kZXggMTVlMjQzY2E3ZS4uMDFlMGQ1 OWI5MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5jCisr KyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuYwpAQCAtMTQ4OCw2ICsxNDg4 LDcgQEAgRXZlbnRUcmlnZ2VyQ29sbGVjdFNpbXBsZUNvbW1hbmQoT2JqZWN0QWRkcmVzcyBhZGRy ZXNzLAogCiAJY29tbWFuZC0+dHlwZSA9IFNDVF9TaW1wbGU7CiAJY29tbWFuZC0+aW5fZXh0ZW5z aW9uID0gY3JlYXRpbmdfZXh0ZW5zaW9uOworCWNvbW1hbmQtPnJvbGUgPSBHZXRVc2VyTmFtZUZy b21JZChHZXRVc2VySWQoKSwgZmFsc2UpOwogCiAJY29tbWFuZC0+ZC5zaW1wbGUuYWRkcmVzcyA9 IGFkZHJlc3M7CiAJY29tbWFuZC0+ZC5zaW1wbGUuc2Vjb25kYXJ5T2JqZWN0ID0gc2Vjb25kYXJ5 T2JqZWN0OwpAQCAtMTUyNCw2ICsxNTI1LDcgQEAgRXZlbnRUcmlnZ2VyQWx0ZXJUYWJsZVN0YXJ0 KE5vZGUgKnBhcnNldHJlZSkKIAogCWNvbW1hbmQtPnR5cGUgPSBTQ1RfQWx0ZXJUYWJsZTsKIAlj b21tYW5kLT5pbl9leHRlbnNpb24gPSBjcmVhdGluZ19leHRlbnNpb247CisJY29tbWFuZC0+cm9s ZSA9IEdldFVzZXJOYW1lRnJvbUlkKEdldFVzZXJJZCgpLCBmYWxzZSk7CiAKIAljb21tYW5kLT5k LmFsdGVyVGFibGUuY2xhc3NJZCA9IFJlbGF0aW9uUmVsYXRpb25JZDsKIAljb21tYW5kLT5kLmFs dGVyVGFibGUub2JqZWN0SWQgPSBJbnZhbGlkT2lkOwpAQCAtMTgwNyw2ICsxODA5LDcgQEAgRXZl bnRUcmlnZ2VyQ29sbGVjdEdyYW50KEludGVybmFsR3JhbnQgKmlzdG10KQogCWNvbW1hbmQgPSBw YWxsb2Moc2l6ZW9mKENvbGxlY3RlZENvbW1hbmQpKTsKIAljb21tYW5kLT50eXBlID0gU0NUX0dy YW50OwogCWNvbW1hbmQtPmluX2V4dGVuc2lvbiA9IGNyZWF0aW5nX2V4dGVuc2lvbjsKKwljb21t YW5kLT5yb2xlID0gR2V0VXNlck5hbWVGcm9tSWQoR2V0VXNlcklkKCksIGZhbHNlKTsKIAljb21t YW5kLT5kLmdyYW50LmlzdG10ID0gaWNvcHk7CiAJY29tbWFuZC0+cGFyc2V0cmVlID0gTlVMTDsK IApAQCAtMTgzOCw2ICsxODQxLDcgQEAgRXZlbnRUcmlnZ2VyQ29sbGVjdEFsdGVyT3BGYW0oQWx0 ZXJPcEZhbWlseVN0bXQgKnN0bXQsIE9pZCBvcGZhbW9pZCwKIAljb21tYW5kID0gcGFsbG9jKHNp emVvZihDb2xsZWN0ZWRDb21tYW5kKSk7CiAJY29tbWFuZC0+dHlwZSA9IFNDVF9BbHRlck9wRmFt aWx5OwogCWNvbW1hbmQtPmluX2V4dGVuc2lvbiA9IGNyZWF0aW5nX2V4dGVuc2lvbjsKKwljb21t YW5kLT5yb2xlID0gR2V0VXNlck5hbWVGcm9tSWQoR2V0VXNlcklkKCksIGZhbHNlKTsKIAlPYmpl Y3RBZGRyZXNzU2V0KGNvbW1hbmQtPmQub3BmYW0uYWRkcmVzcywKIAkJCQkJIE9wZXJhdG9yRmFt aWx5UmVsYXRpb25JZCwgb3BmYW1vaWQpOwogCWNvbW1hbmQtPmQub3BmYW0ub3BlcmF0b3JzID0g b3BlcmF0b3JzOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9u Y21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCmluZGV4IDU0 ODk1YmE5MjkuLjk0NzVlODQzOWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1 YnNjcmlwdGlvbmNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25j bWRzLmMKQEAgLTcxLDYgKzcxLDcgQEAKICNkZWZpbmUgU1VCT1BUX1JVTl9BU19PV05FUgkJCTB4 MDAwMDEwMDAKICNkZWZpbmUgU1VCT1BUX0xTTgkJCQkJMHgwMDAwMjAwMAogI2RlZmluZSBTVUJP UFRfT1JJR0lOCQkJCTB4MDAwMDQwMDAKKyNkZWZpbmUgU1VCT1BUX01BVENIX0RETF9PV05FUgkJ MHgwMDAwODAwMAogCiAvKiBjaGVjayBpZiB0aGUgJ3ZhbCcgaGFzICdiaXRzJyBzZXQgKi8KICNk ZWZpbmUgSXNTZXQodmFsLCBiaXRzKSAgKCgodmFsKSAmIChiaXRzKSkgPT0gKGJpdHMpKQpAQCAt OTUsNiArOTYsNyBAQCB0eXBlZGVmIHN0cnVjdCBTdWJPcHRzCiAJYm9vbAkJZGlzYWJsZW9uZXJy OwogCWJvb2wJCXBhc3N3b3JkcmVxdWlyZWQ7CiAJYm9vbAkJcnVuYXNvd25lcjsKKwlib29sCQlt YXRjaGRkbG93bmVyOwogCWNoYXIJICAgKm9yaWdpbjsKIAlYTG9nUmVjUHRyCWxzbjsKIH0gU3Vi T3B0czsKQEAgLTE1Nyw2ICsxNTksOCBAQCBwYXJzZV9zdWJzY3JpcHRpb25fb3B0aW9ucyhQYXJz ZVN0YXRlICpwc3RhdGUsIExpc3QgKnN0bXRfb3B0aW9ucywKIAkJb3B0cy0+cnVuYXNvd25lciA9 IGZhbHNlOwogCWlmIChJc1NldChzdXBwb3J0ZWRfb3B0cywgU1VCT1BUX09SSUdJTikpCiAJCW9w dHMtPm9yaWdpbiA9IHBzdHJkdXAoTE9HSUNBTFJFUF9PUklHSU5fQU5ZKTsKKwlpZiAoSXNTZXQo c3VwcG9ydGVkX29wdHMsIFNVQk9QVF9NQVRDSF9ERExfT1dORVIpKQorCQlvcHRzLT5tYXRjaGRk bG93bmVyID0gdHJ1ZTsKIAogCS8qIFBhcnNlIG9wdGlvbnMgKi8KIAlmb3JlYWNoKGxjLCBzdG10 X29wdGlvbnMpCkBAIC0zNTMsNiArMzU3LDE1IEBAIHBhcnNlX3N1YnNjcmlwdGlvbl9vcHRpb25z KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqc3RtdF9vcHRpb25zLAogCQkJb3B0cy0+c3BlY2lm aWVkX29wdHMgfD0gU1VCT1BUX0xTTjsKIAkJCW9wdHMtPmxzbiA9IGxzbjsKIAkJfQorCQllbHNl IGlmIChJc1NldChzdXBwb3J0ZWRfb3B0cywgU1VCT1BUX01BVENIX0RETF9PV05FUikgJiYKKwkJ CQkgc3RyY21wKGRlZmVsLT5kZWZuYW1lLCAibWF0Y2hfZGRsX293bmVyIikgPT0gMCkKKwkJewor CQkJaWYgKElzU2V0KG9wdHMtPnNwZWNpZmllZF9vcHRzLCBTVUJPUFRfTUFUQ0hfRERMX09XTkVS KSkKKwkJCQllcnJvckNvbmZsaWN0aW5nRGVmRWxlbShkZWZlbCwgcHN0YXRlKTsKKworCQkJb3B0 cy0+c3BlY2lmaWVkX29wdHMgfD0gU1VCT1BUX01BVENIX0RETF9PV05FUjsKKwkJCW9wdHMtPm1h dGNoZGRsb3duZXIgPSBkZWZHZXRCb29sZWFuKGRlZmVsKTsKKwkJfQogCQllbHNlCiAJCQllcmVw b3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCkBAIC01OTEs NyArNjA0LDggQEAgQ3JlYXRlU3Vic2NyaXB0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRl U3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwKIAkJCQkJICBTVUJPUFRfU1lOQ0hST05PVVNfQ09NTUlU IHwgU1VCT1BUX0JJTkFSWSB8CiAJCQkJCSAgU1VCT1BUX1NUUkVBTUlORyB8IFNVQk9QVF9UV09Q SEFTRV9DT01NSVQgfAogCQkJCQkgIFNVQk9QVF9ESVNBQkxFX09OX0VSUiB8IFNVQk9QVF9QQVNT V09SRF9SRVFVSVJFRCB8Ci0JCQkJCSAgU1VCT1BUX1JVTl9BU19PV05FUiB8IFNVQk9QVF9PUklH SU4pOworCQkJCQkgIFNVQk9QVF9SVU5fQVNfT1dORVIgfCBTVUJPUFRfTUFUQ0hfRERMX09XTkVS IHwKKwkJCQkJICBTVUJPUFRfT1JJR0lOKTsKIAlwYXJzZV9zdWJzY3JpcHRpb25fb3B0aW9ucyhw c3RhdGUsIHN0bXQtPm9wdGlvbnMsIHN1cHBvcnRlZF9vcHRzLCAmb3B0cyk7CiAKIAkvKgpAQCAt NzEwLDYgKzcyNCw3IEBAIENyZWF0ZVN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENy ZWF0ZVN1YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJCXB1YmxpY2F0aW9uTGlzdFRvQXJyYXkocHVi bGljYXRpb25zKTsKIAl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vib3JpZ2luIC0gMV0g PQogCQlDU3RyaW5nR2V0VGV4dERhdHVtKG9wdHMub3JpZ2luKTsKKwl2YWx1ZXNbQW51bV9wZ19z dWJzY3JpcHRpb25fc3VibWF0Y2hkZGxvd25lciAtIDFdID0gQm9vbEdldERhdHVtKG9wdHMubWF0 Y2hkZGxvd25lcik7CiAKIAl0dXAgPSBoZWFwX2Zvcm1fdHVwbGUoUmVsYXRpb25HZXREZXNjcihy ZWwpLCB2YWx1ZXMsIG51bGxzKTsKIApAQCAtMTEzMiw3ICsxMTQ3LDggQEAgQWx0ZXJTdWJzY3Jp cHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclN1YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJ CQkJCQkJCSAgU1VCT1BUX1NZTkNIUk9OT1VTX0NPTU1JVCB8IFNVQk9QVF9CSU5BUlkgfAogCQkJ CQkJCQkgIFNVQk9QVF9TVFJFQU1JTkcgfCBTVUJPUFRfRElTQUJMRV9PTl9FUlIgfAogCQkJCQkJ CQkgIFNVQk9QVF9QQVNTV09SRF9SRVFVSVJFRCB8Ci0JCQkJCQkJCSAgU1VCT1BUX1JVTl9BU19P V05FUiB8IFNVQk9QVF9PUklHSU4pOworCQkJCQkJCQkgIFNVQk9QVF9SVU5fQVNfT1dORVIgfCBT VUJPUFRfTUFUQ0hfRERMX09XTkVSIHwKKwkJCQkJCQkJICBTVUJPUFRfT1JJR0lOKTsKIAogCQkJ CXBhcnNlX3N1YnNjcmlwdGlvbl9vcHRpb25zKHBzdGF0ZSwgc3RtdC0+b3B0aW9ucywKIAkJCQkJ CQkJCQkgICBzdXBwb3J0ZWRfb3B0cywgJm9wdHMpOwpAQCAtMTIxMSw2ICsxMjI3LDE0IEBAIEFs dGVyU3Vic2NyaXB0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJTdWJzY3JpcHRpb25TdG10 ICpzdG10LAogCQkJCQlyZXBsYWNlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJvcmlnaW4gLSAx XSA9IHRydWU7CiAJCQkJfQogCisJCQkJaWYgKElzU2V0KG9wdHMuc3BlY2lmaWVkX29wdHMsIFNV Qk9QVF9NQVRDSF9ERExfT1dORVIpKQorCQkJCXsKKwkJCQkJdmFsdWVzW0FudW1fcGdfc3Vic2Ny aXB0aW9uX3N1Ym1hdGNoZGRsb3duZXIgLSAxXQorCQkJCQkJPSBCb29sR2V0RGF0dW0ob3B0cy5t YXRjaGRkbG93bmVyKTsKKwkJCQkJcmVwbGFjZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3VibWF0 Y2hkZGxvd25lciAtIDFdCisJCQkJCQk9IHRydWU7CisJCQkJfQorCiAJCQkJdXBkYXRlX3R1cGxl ID0gdHJ1ZTsKIAkJCQlicmVhazsKIAkJCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvZGRsdHJpZ2dlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9kZGx0cmlnZ2VyLmMKaW5kZXggODBmYzU4ODBkZS4uNTViOTg2MTg3NSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZGx0cmlnZ2VyLmMKKysrIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZGx0cmlnZ2VyLmMKQEAgLTE1OCw2ICsxNTgs OCBAQCBwdWJsaWNhdGlvbl9kZXBhcnNlX3RhYmxlX3Jld3JpdGUoUEdfRlVOQ1RJT05fQVJHUykK IAkJZGRsX2RlcGFyc2VfY29udGV4dCBjb250ZXh0OwogCQljaGFyCSAgICpqc29uX3N0cmluZzsK IAorCQljb250ZXh0LmluY2x1ZGVfb3duZXIgPSB0cnVlOworCiAJCS8qCiAJCSAqIEluaXRpYWxp emUgdGhlIG1heF92b2xhdGlsaXR5IGZsYWcgdG8gUFJPVk9MQVRJTEVfSU1NVVRBQkxFLCB3aGlj aCBpcwogCQkgKiB0aGUgbWluaW11bSB2b2xhdGlsaXR5IGxldmVsLgpAQCAtMjQ5LDYgKzI1MSw4 IEBAIHB1YmxpY2F0aW9uX2RlcGFyc2VfZGRsX2NvbW1hbmRfZW5kKFBHX0ZVTkNUSU9OX0FSR1Mp CiAJCQlkZGxfZGVwYXJzZV9jb250ZXh0IGNvbnRleHQ7CiAJCQljaGFyCSAgICpqc29uX3N0cmlu ZzsKIAorCQkJY29udGV4dC5pbmNsdWRlX293bmVyID0gdHJ1ZTsKKwogCQkJLyoKIAkJCSAqIElu aXRpYWxpemUgdGhlIG1heF92b2xhdGlsaXR5IGZsYWcgdG8gUFJPVk9MQVRJTEVfSU1NVVRBQkxF LCB3aGljaCBpcwogCQkJICogdGhlIG1pbmltdW0gdm9sYXRpbGl0eSBsZXZlbC4KQEAgLTMyNyw2 ICszMzEsOCBAQCBwdWJsaWNhdGlvbl9kZXBhcnNlX3RhYmxlX2luaXRfd3JpdGUoUEdfRlVOQ1RJ T05fQVJHUykKIAl7CiAJCWNoYXIJICAgKmpzb25fc3RyaW5nOwogCisJCWNvbnRleHQuaW5jbHVk ZV9vd25lciA9IHRydWU7CisKIAkJLyoKIAkJICogSW5pdGlhbGl6ZSB0aGUgbWF4X3ZvbGF0aWxp dHkgZmxhZyB0byBQUk9WT0xBVElMRV9JTU1VVEFCTEUsIHdoaWNoIGlzCiAJCSAqIHRoZSBtaW5p bXVtIHZvbGF0aWxpdHkgbGV2ZWwuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3Jr ZXIuYwppbmRleCA1ZDJjZGNlNWVjLi5jMjMzYTM2NWJhIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvd29ya2VyLmMKQEAgLTMzNDQsMTEgKzMzNDQsMTMgQEAgYXBwbHlfaGFuZGxl X2RkbChTdHJpbmdJbmZvIHMpCiAJY29uc3QgY2hhciAqcHJlZml4ID0gTlVMTDsKIAljaGFyCSAg ICptZXNzYWdlID0gTlVMTDsKIAljaGFyCSAgICpkZGxfY29tbWFuZDsKKwljaGFyCSAgICpvd25l cjsKIAlTaXplCQlzejsKIAlMaXN0CSAgICpwYXJzZXRyZWVfbGlzdDsKIAlMaXN0Q2VsbCAgICpw YXJzZXRyZWVfaXRlbTsKIAlEZXN0UmVjZWl2ZXIgKnJlY2VpdmVyOwogCU1lbW9yeUNvbnRleHQg b2xkY29udGV4dDsKKwlVc2VyQ29udGV4dAkJdWN4dDsKIAljb25zdCBjaGFyICpzYXZlX2RlYnVn X3F1ZXJ5X3N0cmluZyA9IGRlYnVnX3F1ZXJ5X3N0cmluZzsKIAogCW1lc3NhZ2UgPSBsb2dpY2Fs cmVwX3JlYWRfZGRsKHMsICZsc24sICZwcmVmaXgsICZzeik7CkBAIC0zMzYzLDkgKzMzNjUsMTYg QEAgYXBwbHlfaGFuZGxlX2RkbChTdHJpbmdJbmZvIHMpCiAKIAlNZW1vcnlDb250ZXh0U3dpdGNo VG8oQXBwbHlNZXNzYWdlQ29udGV4dCk7CiAKLQlkZGxfY29tbWFuZCA9IGRlcGFyc2VfZGRsX2pz b25fdG9fc3RyaW5nKG1lc3NhZ2UpOworCWRkbF9jb21tYW5kID0gZGVwYXJzZV9kZGxfanNvbl90 b19zdHJpbmcobWVzc2FnZSwgJm93bmVyKTsKIAlkZWJ1Z19xdWVyeV9zdHJpbmcgPSBkZGxfY29t bWFuZDsKIAorCS8qCisJICogSWYgcmVxdWVzdGVkLCBzZXQgdGhlIGN1cnJlbnQgcm9sZSB0byB0 aGUgb3duZXIgdGhhdCBleGVjdXRlZCB0aGUKKwkgKiBjb21tYW5kIG9uIHRoZSBwdWJsaWNhdGlv biBzZXJ2ZXIuCisJICovCisJaWYgKE15U3Vic2NyaXB0aW9uLT5tYXRjaGRkbG93bmVyICYmIG93 bmVyKQorCQlTd2l0Y2hUb1VudHJ1c3RlZFVzZXIoZ2V0X3JvbGVfb2lkKG93bmVyLCBmYWxzZSks ICZ1Y3h0KTsKKwogCS8qIERlc3ROb25lIGZvciBsb2dpY2FsIHJlcGxpY2F0aW9uICovCiAJcmVj ZWl2ZXIgPSBDcmVhdGVEZXN0UmVjZWl2ZXIoRGVzdE5vbmUpOwogCXBhcnNldHJlZV9saXN0ID0g cGdfcGFyc2VfcXVlcnkoZGRsX2NvbW1hbmQpOwpAQCAtMzQ2MCw2ICszNDY5LDkgQEAgYXBwbHlf aGFuZGxlX2RkbChTdHJpbmdJbmZvIHMpCiAJCU1lbW9yeUNvbnRleHREZWxldGUocGVyX3BhcnNl dHJlZV9jb250ZXh0KTsKIAl9CiAKKwlpZiAoTXlTdWJzY3JpcHRpb24tPm1hdGNoZGRsb3duZXIg JiYgb3duZXIpCisJCVJlc3RvcmVVc2VyQ29udGV4dCgmdWN4dCk7CisKIAlkZWJ1Z19xdWVyeV9z dHJpbmcgPSBzYXZlX2RlYnVnX3F1ZXJ5X3N0cmluZzsKIAogCUNvbW1hbmRDb3VudGVySW5jcmVt ZW50KCk7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9w Z19kdW1wL3BnX2R1bXAuYwppbmRleCAzMzQ3MjZjZDBkLi5jN2JjMjg3ODM2IDEwMDY0NAotLS0g YS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1w LmMKQEAgLTQ2MDcsNiArNDYwNyw3IEBAIGdldFN1YnNjcmlwdGlvbnMoQXJjaGl2ZSAqZm91dCkK IAlpbnQJCQlpX3N1YnB1YmxpY2F0aW9uczsKIAlpbnQJCQlpX3N1YmJpbmFyeTsKIAlpbnQJCQlp X3N1YnBhc3N3b3JkcmVxdWlyZWQ7CisJaW50CQkJaV9zdWJtYXRjaGRkbG93bmVyOwogCWludAkJ CWksCiAJCQkJbnR1cHM7CiAKQEAgLTQ2NjEsMTEgKzQ2NjIsMTMgQEAgZ2V0U3Vic2NyaXB0aW9u cyhBcmNoaXZlICpmb3V0KQogCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDE2MDAwMCkKIAkJ YXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCiAJCQkJCQkJICIgcy5zdWJvcmlnaW4sXG4iCi0J CQkJCQkJICIgcy5zdWJwYXNzd29yZHJlcXVpcmVkXG4iKTsKKwkJCQkJCQkgIiBzLnN1YnBhc3N3 b3JkcmVxdWlyZWQsXG4iCisJCQkJCQkJICIgcy5zdWJtYXRjaGRkbG93bmVyXG4iKTsKIAllbHNl CiAJCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LAogCQkJCQkJICAiICclcycgQVMgc3Vib3JpZ2lu LFxuIgotCQkJCQkJICAiICd0JyBBUyBzdWJwYXNzd29yZHJlcXVpcmVkXG4iLAorCQkJCQkJICAi ICd0JyBBUyBzdWJwYXNzd29yZHJlcXVpcmVkLFxuIgorCQkJCQkJICAiIGZhbHNlIEFTIHN1Ym1h dGNoZGRsb3duZXJcbiIsCiAJCQkJCQkgIExPR0lDQUxSRVBfT1JJR0lOX0FOWSk7CiAKIAlhcHBl bmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKQEAgLTQ2OTUsNiArNDY5OCw3IEBAIGdldFN1YnNjcmlw dGlvbnMoQXJjaGl2ZSAqZm91dCkKIAlpX3N1YmRpc2FibGVvbmVyciA9IFBRZm51bWJlcihyZXMs ICJzdWJkaXNhYmxlb25lcnIiKTsKIAlpX3N1Ym9yaWdpbiA9IFBRZm51bWJlcihyZXMsICJzdWJv cmlnaW4iKTsKIAlpX3N1YnBhc3N3b3JkcmVxdWlyZWQgPSBQUWZudW1iZXIocmVzLCAic3VicGFz c3dvcmRyZXF1aXJlZCIpOworCWlfc3VibWF0Y2hkZGxvd25lciA9IFBRZm51bWJlcihyZXMsICJz dWJtYXRjaGRkbG93bmVyIik7CiAKIAlzdWJpbmZvID0gcGdfbWFsbG9jKG50dXBzICogc2l6ZW9m KFN1YnNjcmlwdGlvbkluZm8pKTsKIApAQCAtNDcyNyw2ICs0NzMxLDggQEAgZ2V0U3Vic2NyaXB0 aW9ucyhBcmNoaXZlICpmb3V0KQogCQlzdWJpbmZvW2ldLnN1Ym9yaWdpbiA9IHBnX3N0cmR1cChQ UWdldHZhbHVlKHJlcywgaSwgaV9zdWJvcmlnaW4pKTsKIAkJc3ViaW5mb1tpXS5zdWJwYXNzd29y ZHJlcXVpcmVkID0KIAkJCXBnX3N0cmR1cChQUWdldHZhbHVlKHJlcywgaSwgaV9zdWJwYXNzd29y ZHJlcXVpcmVkKSk7CisJCXN1YmluZm9baV0uc3VibWF0Y2hkZGxvd25lciA9CisJCQlwZ19zdHJk dXAoUFFnZXR2YWx1ZShyZXMsIGksIGlfc3VibWF0Y2hkZGxvd25lcikpOwogCiAJCS8qIERlY2lk ZSB3aGV0aGVyIHdlIHdhbnQgdG8gZHVtcCBpdCAqLwogCQlzZWxlY3REdW1wYWJsZU9iamVjdCgm KHN1YmluZm9baV0uZG9iaiksIGZvdXQpOwpAQCAtNDgwNSw2ICs0ODExLDkgQEAgZHVtcFN1YnNj cmlwdGlvbihBcmNoaXZlICpmb3V0LCBjb25zdCBTdWJzY3JpcHRpb25JbmZvICpzdWJpbmZvKQog CWlmIChwZ19zdHJjYXNlY21wKHN1YmluZm8tPnN1Ym9yaWdpbiwgTE9HSUNBTFJFUF9PUklHSU5f QU5ZKSAhPSAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwgIiwgb3JpZ2luID0gJXMiLCBz dWJpbmZvLT5zdWJvcmlnaW4pOwogCisJaWYgKHN0cmNtcChzdWJpbmZvLT5zdWJtYXRjaGRkbG93 bmVyLCAiZiIpID09IDApCisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiLCBtYXRjaF9k ZGxfb3duZXIgPSBmYWxzZSIpOworCiAJaWYgKHN0cmNtcChzdWJpbmZvLT5zdWJzeW5jY29tbWl0 LCAib2ZmIikgIT0gMCkKIAkJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksICIsIHN5bmNocm9ub3Vz X2NvbW1pdCA9ICVzIiwgZm10SWQoc3ViaW5mby0+c3Vic3luY2NvbW1pdCkpOwogCmRpZmYgLS1n aXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAu aAppbmRleCA3NjczZDE1M2FhLi43NzUyZTk0YjZhIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1 bXAvcGdfZHVtcC5oCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKQEAgLTY2Niw2ICs2 NjYsNyBAQCB0eXBlZGVmIHN0cnVjdCBfU3Vic2NyaXB0aW9uSW5mbwogCWNoYXIJICAgKnN1YnN5 bmNjb21taXQ7CiAJY2hhcgkgICAqc3VicHVibGljYXRpb25zOwogCWNoYXIJICAgKnN1YnBhc3N3 b3JkcmVxdWlyZWQ7CisJY2hhcgkgICAqc3VibWF0Y2hkZGxvd25lcjsKIH0gU3Vic2NyaXB0aW9u SW5mbzsKIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jIGIvc3JjL2Jp bi9wc3FsL2Rlc2NyaWJlLmMKaW5kZXggNzUwZWExOWRjMS4uZGFhY2NiMjY2MyAxMDA2NDQKLS0t IGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMK QEAgLTY1MDUsNyArNjUwNSw3IEBAIGRlc2NyaWJlU3Vic2NyaXB0aW9ucyhjb25zdCBjaGFyICpw YXR0ZXJuLCBib29sIHZlcmJvc2UpCiAJUEdyZXN1bHQgICAqcmVzOwogCXByaW50UXVlcnlPcHQg bXlvcHQgPSBwc2V0LnBvcHQ7CiAJc3RhdGljIGNvbnN0IGJvb2wgdHJhbnNsYXRlX2NvbHVtbnNb XSA9IHtmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKLQlmYWxzZSwgZmFsc2UsIGZhbHNlLCBm YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZX07CisJZmFsc2Us IGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg ZmFsc2UsIGZhbHNlfTsKIAogCWlmIChwc2V0LnN2ZXJzaW9uIDwgMTAwMDAwKQogCXsKQEAgLTY1 NjQsMTAgKzY1NjQsMTIgQEAgZGVzY3JpYmVTdWJzY3JpcHRpb25zKGNvbnN0IGNoYXIgKnBhdHRl cm4sIGJvb2wgdmVyYm9zZSkKIAkJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCiAJCQkJCQkJICAi LCBzdWJvcmlnaW4gQVMgXCIlc1wiXG4iCiAJCQkJCQkJICAiLCBzdWJwYXNzd29yZHJlcXVpcmVk IEFTIFwiJXNcIlxuIgotCQkJCQkJCSAgIiwgc3VicnVuYXNvd25lciBBUyBcIiVzXCJcbiIsCisJ CQkJCQkJICAiLCBzdWJydW5hc293bmVyIEFTIFwiJXNcIlxuIgorCQkJCQkJCSAgIiwgc3VibWF0 Y2hkZGxvd25lciBBUyBcIiVzXCJcbiIsCiAJCQkJCQkJICBnZXR0ZXh0X25vb3AoIk9yaWdpbiIp LAogCQkJCQkJCSAgZ2V0dGV4dF9ub29wKCJQYXNzd29yZCByZXF1aXJlZCIpLAotCQkJCQkJCSAg Z2V0dGV4dF9ub29wKCJSdW4gYXMgb3duZXI/IikpOworCQkJCQkJCSAgZ2V0dGV4dF9ub29wKCJS dW4gYXMgb3duZXI/IiksCisJCQkJCQkJICBnZXR0ZXh0X25vb3AoIk1hdGNoIERETCBvd25lciIp KTsKIAogCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAogCQkJCQkJICAiLCAgc3Vic3luY2NvbW1p dCBBUyBcIiVzXCJcbiIKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2Ny aXB0aW9uLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCmluZGV4IDFk NDBlZWJjNzguLmM5OWNhMmI1MDkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf c3Vic2NyaXB0aW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24u aApAQCAtOTMsNiArOTMsOSBAQCBDQVRBTE9HKHBnX3N1YnNjcmlwdGlvbiw2MTAwLFN1YnNjcmlw dGlvblJlbGF0aW9uSWQpIEJLSV9TSEFSRURfUkVMQVRJT04gQktJX1JPVwogCWJvb2wJCXN1YnJ1 bmFzb3duZXI7CS8qIFRydWUgaWYgcmVwbGljYXRpb24gc2hvdWxkIGV4ZWN1dGUgYXMgdGhlCiAJ CQkJCQkJCSAqIHN1YnNjcmlwdGlvbiBvd25lciAqLwogCisJYm9vbAkJc3VibWF0Y2hkZGxvd25l cjsJLyogVHJ1ZSBpZiByZXBsaWNhdGVkIG9iamVjdHMgYnkgRERMIHJlcGxpY2F0aW9uCisJCQkJ CQkJCQkgKiBzaG91bGQgbWF0Y2ggdGhlIG9yaWdpbmFsIG93bmVyIG9uIHRoZSBwdWJsaXNoZXIg Ki8KKwogI2lmZGVmIENBVEFMT0dfVkFSTEVOCQkJLyogdmFyaWFibGUtbGVuZ3RoIGZpZWxkcyBz dGFydCBoZXJlICovCiAJLyogQ29ubmVjdGlvbiBzdHJpbmcgdG8gdGhlIHB1Ymxpc2hlciAqLwog CXRleHQJCXN1YmNvbm5pbmZvIEJLSV9GT1JDRV9OT1RfTlVMTDsKQEAgLTE0NCw2ICsxNDcsOCBA QCB0eXBlZGVmIHN0cnVjdCBTdWJzY3JpcHRpb24KIAlMaXN0CSAgICpwdWJsaWNhdGlvbnM7CS8q IExpc3Qgb2YgcHVibGljYXRpb24gbmFtZXMgdG8gc3Vic2NyaWJlIHRvICovCiAJY2hhcgkgICAq b3JpZ2luOwkJCS8qIE9ubHkgcHVibGlzaCBkYXRhIG9yaWdpbmF0aW5nIGZyb20gdGhlCiAJCQkJ CQkJCSAqIHNwZWNpZmllZCBvcmlnaW4gKi8KKwlib29sCQltYXRjaGRkbG93bmVyOyAgLyogSW5k aWNhdGVzIGlmIHJlcGxpY2F0ZWQgb2JqZWN0cyBieSBEREwgcmVwbGljYXRpb24KKwkJCQkJCQkJ ICogc2hvdWxkIG1hdGNoIHRoZSBvcmlnaW5hbCBvd25lciBvbiB0aGUgcHVibGlzaGVyICovCiB9 IFN1YnNjcmlwdGlvbjsKIAogLyogRGlzYWxsb3cgc3RyZWFtaW5nIGluLXByb2dyZXNzIHRyYW5z YWN0aW9ucy4gKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Rjb3AvZGRsZGVwYXJzZS5oIGIv c3JjL2luY2x1ZGUvdGNvcC9kZGxkZXBhcnNlLmgKaW5kZXggN2ZkZmZmNDk0Ni4uODU5OGE4NmUz NSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdGNvcC9kZGxkZXBhcnNlLmgKKysrIGIvc3JjL2lu Y2x1ZGUvdGNvcC9kZGxkZXBhcnNlLmgKQEAgLTE2LDEzICsxNiwyMiBAQAogLyogQ29udGV4dCBp bmZvIG5lZWRlZCBmb3IgZGVwYXJzaW5nIGRkbCBjb21tYW5kICovCiB0eXBlZGVmIHN0cnVjdAog eworCS8qCisJICogaW5jbHVkZV9vd25lciBpbmRpY2F0ZXMgaWYgdGhlIG93bmVyL3JvbGUgb2Yg dGhlIGNvbW1hbmQgc2hvdWxkIGJlCisJICogaW5jbHVkZWQgaW4gdGhlIGRlcGFyc2VkIEpzb24g b3V0cHV0LiBJdCBpcyBzZXQgdG8gZmFsc2UgZm9yIGFueSBjb21tYW5kcworCSAqIHRoYXQgZG9u J3QgQ1JFQVRFIGRhdGFiYXNlIG9iamVjdHMgKEFMVEVSIGNvbW1hbmRzIGZvciBleGFtcGxlKSwg dGhpcyBpcworCSAqIHRvIGF2b2lkIGVuY29kaW5nIGFuZCBzZW5kaW5nIHRoZSBvd25lciB0byBk b3duc3RyZWFtIGZvciByZXBsYXkgYXMgaXQgaXMKKwkgKiB1bm5lY2Vzc2FyeSBmb3Igc3VjaCBj b21tYW5kcy4KKwkgKi8KKwlib29sCQlpbmNsdWRlX293bmVyOworCiAJLyogVGhlIG1heGltdW0g dm9sYXRpbGl0eSBvZiBmdW5jdGlvbnMgaW4gZXhwcmVzc2lvbnMgb2YgYSBEREwgY29tbWFuZC4g Ki8KIAljaGFyCQltYXhfdm9sYXRpbGl0eTsKIH0JCQlkZGxfZGVwYXJzZV9jb250ZXh0OwogCiBl eHRlcm4gY2hhciAqZGVwYXJzZV91dGlsaXR5X2NvbW1hbmQoQ29sbGVjdGVkQ29tbWFuZCAqY21k LAogCQkJCQkJCQkJIGRkbF9kZXBhcnNlX2NvbnRleHQgKiBjb250ZXh0KTsKLWV4dGVybiBjaGFy ICpkZXBhcnNlX2RkbF9qc29uX3RvX3N0cmluZyhjaGFyICpqc29uYik7CitleHRlcm4gY2hhciAq ZGVwYXJzZV9kZGxfanNvbl90b19zdHJpbmcoY2hhciAqanNvbmIsIGNoYXIqKiBvd25lcik7CiBl eHRlcm4gY2hhciAqZGVwYXJzZV9kcm9wX3RhYmxlKGNvbnN0IGNoYXIgKm9iamlkZW50aXR5LCBO b2RlICpwYXJzZXRyZWUpOwogCiAjZW5kaWYJCQkJCQkJLyogRERMX0RFUEFSU0VfSCAqLwpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvdGNvcC9kZXBhcnNlX3V0aWxpdHkuaCBiL3NyYy9pbmNsdWRl L3Rjb3AvZGVwYXJzZV91dGlsaXR5LmgKaW5kZXggMTgzMWVjOWFhZS4uMWY5Y2M5NTNjNiAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvdGNvcC9kZXBhcnNlX3V0aWxpdHkuaAorKysgYi9zcmMvaW5j bHVkZS90Y29wL2RlcGFyc2VfdXRpbGl0eS5oCkBAIC00Nyw2ICs0Nyw3IEBAIHR5cGVkZWYgc3Ry dWN0IENvbGxlY3RlZENvbW1hbmQKIAlDb2xsZWN0ZWRDb21tYW5kVHlwZSB0eXBlOwogCiAJYm9v bAkJaW5fZXh0ZW5zaW9uOworCWNoYXIJICAgKnJvbGU7CiAJTm9kZQkgICAqcGFyc2V0cmVlOwog CiAJdW5pb24KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vic2NyaXB0 aW9uLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vic2NyaXB0aW9uLm91dAppbmRl eCAzYzFhMDg2OWVjLi42MzBmOTRkYTcxIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9z dWJzY3JpcHRpb24ub3V0CkBAIC0xMTYsMTggKzExNiwxOCBAQCBDUkVBVEUgU1VCU0NSSVBUSU9O IHJlZ3Jlc3NfdGVzdHN1YjQgQ09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0 JyBQVQogV0FSTklORzogIHN1YnNjcmlwdGlvbiB3YXMgY3JlYXRlZCwgYnV0IGlzIG5vdCBjb25u ZWN0ZWQKIEhJTlQ6ICBUbyBpbml0aWF0ZSByZXBsaWNhdGlvbiwgeW91IG11c3QgbWFudWFsbHkg Y3JlYXRlIHRoZSByZXBsaWNhdGlvbiBzbG90LCBlbmFibGUgdGhlIHN1YnNjcmlwdGlvbiwgYW5k IHJlZnJlc2ggdGhlIHN1YnNjcmlwdGlvbi4KIFxkUnMrIHJlZ3Jlc3NfdGVzdHN1YjQKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJz Y3JpcHRpb25zCi0gICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAg fCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2Ug Y29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwg UnVuIGFzIG93bmVyPyB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAg ICAgICAgICB8IFNraXAgTFNOIAotLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWI0IHwgcmVncmVz c19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9m ZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgbm9uZSAgIHwg dCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwg ZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9u cworICAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxl ZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8 IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBv d25lcj8gfCBNYXRjaCBEREwgb3duZXIgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBD b25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t CisgcmVncmVzc190ZXN0c3ViNCB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAg IHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwg ZiAgICAgICAgICAgICAgICB8IG5vbmUgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAg ICAgICB8IHQgICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdy ZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEgcm93KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVn cmVzc190ZXN0c3ViNCBTRVQgKG9yaWdpbiA9IGFueSk7CiBcZFJzKyByZWdyZXNzX3Rlc3RzdWI0 Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qg b2Ygc3Vic2NyaXB0aW9ucwotICAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAg ICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdv LXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1 aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25u aW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViNCB8 IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAg ICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFu eSAgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAg ICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNj cmlwdGlvbnMKKyAgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8 IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBj b21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBS dW4gYXMgb3duZXI/IHwgTWF0Y2ggRERMIG93bmVyIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAg ICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCistLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YjQgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwg ZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAg ICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYg ICAgICAgICAgICAgfCB0ICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5h bWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogRFJPUCBTVUJTQ1JJUFRJ T04gcmVncmVzc190ZXN0c3ViMzsKQEAgLTE0NSwxMCArMTQ1LDEwIEBAIEFMVEVSIFNVQlNDUklQ VElPTiByZWdyZXNzX3Rlc3RzdWIgQ09OTkVDVElPTiAnZm9vYmFyJzsKIEVSUk9SOiAgaW52YWxp ZCBjb25uZWN0aW9uIHN0cmluZyBzeW50YXg6IG1pc3NpbmcgIj0iIGFmdGVyICJmb29iYXIiIGlu IGNvbm5lY3Rpb24gaW5mbyBzdHJpbmcKIAogXGRScysKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCi0gICAgICBO YW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNh dGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9u IGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgU3lu Y2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04g Ci0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8 IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAg ICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBm ICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25v dGV4aXN0IHwgMC8wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgTmFtZSAgICAgICB8 ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5h cnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9y aWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IE1hdGNoIERETCBvd25l ciB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNr aXAgTFNOIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJl Z3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAg fCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAg ICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgICAgICAgICB8 IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAog KDEgcm93KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCBQVUJMSUNB VElPTiB0ZXN0cHViMiwgdGVzdHB1YjMgV0lUSCAocmVmcmVzaCA9IGZhbHNlKTsKQEAgLTE1Niwx MCArMTU2LDEwIEBAIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgQ09OTkVDVElP TiAnZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0Mic7CiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVn cmVzc190ZXN0c3ViIFNFVCAoc2xvdF9uYW1lID0gJ25ld25hbWUnKTsKIEFMVEVSIFNVQlNDUklQ VElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChwYXNzd29yZF9yZXF1aXJlZCA9IGZhbHNlKTsKIFxk UnMrCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKLSAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3du ZXIgICAgICAgICAgIHwgRW5hYmxlZCB8ICAgICBQdWJsaWNhdGlvbiAgICAgfCBCaW5hcnkgfCBT dHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8 IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IFN5bmNocm9ub3VzIGNvbW1pdCB8 ICAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAg ICB8IHt0ZXN0cHViMix0ZXN0cHViM30gfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAg ICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IGYgICAgICAgICAgICAgICAgIHwg ZiAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNu b3RleGlzdDIgfCAwLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgTmFtZSAg ICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgICAgIFB1YmxpY2F0 aW9uICAgICB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxl IG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwg TWF0Y2ggRERMIG93bmVyIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgIENvbm5pbmZv ICAgICAgICAgICB8IFNraXAgTFNOIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAg IHwge3Rlc3RwdWIyLHRlc3RwdWIzfSB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAg ICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgZiAgICAgICAgICAgICAgICAgfCBm ICAgICAgICAgICAgIHwgdCAgICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJu YW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0MiB8IDAvMAogKDEgcm93KQogCiBBTFRFUiBTVUJTQ1JJ UFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAocGFzc3dvcmRfcmVxdWlyZWQgPSB0cnVlKTsKQEAg LTE3NCwxMCArMTc0LDEwIEBAIEVSUk9SOiAgdW5yZWNvZ25pemVkIHN1YnNjcmlwdGlvbiBwYXJh bWV0ZXI6ICJjcmVhdGVfc2xvdCIKIC0tIG9rCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190 ZXN0c3ViIFNLSVAgKGxzbiA9ICcwLzEyMzQ1Jyk7CiBcZFJzKwotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25z Ci0gICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQg fCAgICAgUHVibGljYXRpb24gICAgIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNv bW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1 biBhcyBvd25lcj8gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICAgQ29ubmluZm8gICAg ICAgICAgIHwgU2tpcCBMU04gCi0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwg cmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1YjIsdGVzdHB1YjN9 IHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAg ICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCBvZmYgICAg ICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QyIHwgMC8xMjM0NQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCAgICAgUHVibGljYXRpb24gICAgIHwgQmluYXJ5IHwg U3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4g fCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBNYXRjaCBEREwgb3duZXIgfCBT eW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBM U04gCistLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3Vi IHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1YjIsdGVzdHB1 YjN9IHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAg ICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAg ICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90 ZXhpc3QyIHwgMC8xMjM0NQogKDEgcm93KQogCiAtLSBvayAtIHdpdGggbHNuID0gTk9ORQpAQCAt MTg2LDEwICsxODYsMTAgQEAgQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTS0lQ IChsc24gPSBOT05FKTsKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0tJUCAo bHNuID0gJzAvMCcpOwogRVJST1I6ICBpbnZhbGlkIFdBTCBsb2NhdGlvbiAoTFNOKTogMC8wCiBc ZFJzKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCi0gICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCAgICAgUHVibGljYXRpb24gICAgIHwgQmluYXJ5IHwg U3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4g fCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBTeW5jaHJvbm91cyBjb21taXQg fCAgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCi0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAg ICAgfCB7dGVzdHB1YjIsdGVzdHB1YjN9IHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAg ICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8 IGYgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vz bm90ZXhpc3QyIHwgMC8wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUg ICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8ICAgICBQdWJsaWNh dGlvbiAgICAgfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJs ZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8 IE1hdGNoIERETCBvd25lciB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgICBDb25uaW5m byAgICAgICAgICAgfCBTa2lwIExTTiAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAg ICB8IHt0ZXN0cHViMix0ZXN0cHViM30gfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAg ICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwg ZiAgICAgICAgICAgICB8IHQgICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRi bmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdDIgfCAwLzAKICgxIHJvdykKIAogQkVHSU47CkBAIC0y MjEsMTAgKzIyMSwxMCBAQCBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViX2ZvbyBT RVQgKHN5bmNocm9ub3VzX2NvbW1pdCA9IGZvb2Jhcik7CiBFUlJPUjogIGludmFsaWQgdmFsdWUg Zm9yIHBhcmFtZXRlciAic3luY2hyb25vdXNfY29tbWl0IjogImZvb2JhciIKIEhJTlQ6ICBBdmFp bGFibGUgdmFsdWVzOiBsb2NhbCwgcmVtb3RlX3dyaXRlLCByZW1vdGVfYXBwbHksIG9uLCBvZmYu CiBcZFJzKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKLSAgICAgICAgTmFtZSAgICAgICAgIHwgICAg ICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCAgICAgUHVibGljYXRpb24gICAgIHwg QmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3Ig fCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBTeW5jaHJvbm91 cyBjb21taXQgfCAgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1Yl9mb28gfCByZWdyZXNzX3N1YnNjcmlw dGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHViMix0ZXN0cHViM30gfCBmICAgICAgfCBvZmYg ICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQg ICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IGxvY2FsICAgICAgICAgICAgICB8IGRi bmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdDIgfCAwLzAKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3Jp cHRpb25zCisgICAgICAgIE5hbWUgICAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAg fCBFbmFibGVkIHwgICAgIFB1YmxpY2F0aW9uICAgICB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3 by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVx dWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgTWF0Y2ggRERMIG93bmVyIHwgU3luY2hyb25vdXMgY29t bWl0IHwgICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3RzdWJfZm9vIHwgcmVn cmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1YjIsdGVzdHB1YjN9IHwg ZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAg fCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgICAg ICAgICAgfCBsb2NhbCAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3Qy IHwgMC8wCiAoMSByb3cpCiAKIC0tIHJlbmFtZSBiYWNrIHRvIGtlZXAgdGhlIHJlc3Qgc2ltcGxl CkBAIC0yNTMsMTkgKzI1MywxOSBAQCBDUkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1 YiBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QnIFBVQgogV0FSTklORzog IHN1YnNjcmlwdGlvbiB3YXMgY3JlYXRlZCwgYnV0IGlzIG5vdCBjb25uZWN0ZWQKIEhJTlQ6ICBU byBpbml0aWF0ZSByZXBsaWNhdGlvbiwgeW91IG11c3QgbWFudWFsbHkgY3JlYXRlIHRoZSByZXBs aWNhdGlvbiBzbG90LCBlbmFibGUgdGhlIHN1YnNjcmlwdGlvbiwgYW5kIHJlZnJlc2ggdGhlIHN1 YnNjcmlwdGlvbi4KIFxkUnMrCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAgTmFtZSAgICAgICB8ICAg ICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkg fCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdp biB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IFN5bmNocm9ub3VzIGNvbW1p dCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAotLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0t Ky0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJl Z3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rl c3RwdWJ9ICAgfCB0ICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAg ICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8 IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3du ZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5n IHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29y ZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBNYXRjaCBEREwgb3duZXIgfCBTeW5jaHJvbm91 cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKKy0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlw dGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgdCAgICAgIHwgb2ZmICAgICAgIHwg ZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAg ICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAg ICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogQUxU RVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKGJpbmFyeSA9IGZhbHNlKTsKIEFM VEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05FKTsK IFxkUnMrCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25l ciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcg fCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3Jk IHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAg IENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1 YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBm ICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8 IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IG9mZiAgICAgICAg ICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1 YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAg IHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNl IGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8 IFJ1biBhcyBvd25lcj8gfCBNYXRjaCBEREwgb3duZXIgfCBTeW5jaHJvbm91cyBjb21taXQgfCAg ICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKKy0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwg ZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAg ICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYg ICAgICAgICAgICAgfCB0ICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5h bWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogRFJPUCBTVUJTQ1JJUFRJ T04gcmVncmVzc190ZXN0c3ViOwpAQCAtMjc3LDI3ICsyNzcsMjcgQEAgQ1JFQVRFIFNVQlNDUklQ VElPTiByZWdyZXNzX3Rlc3RzdWIgQ09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4 aXN0JyBQVUIKIFdBUk5JTkc6ICBzdWJzY3JpcHRpb24gd2FzIGNyZWF0ZWQsIGJ1dCBpcyBub3Qg Y29ubmVjdGVkCiBISU5UOiAgVG8gaW5pdGlhdGUgcmVwbGljYXRpb24sIHlvdSBtdXN0IG1hbnVh bGx5IGNyZWF0ZSB0aGUgcmVwbGljYXRpb24gc2xvdCwgZW5hYmxlIHRoZSBzdWJzY3JpcHRpb24s IGFuZCByZWZyZXNoIHRoZSBzdWJzY3JpcHRpb24uCiBcZFJzKwotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKLSAg ICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1 YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2Fi bGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8g fCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lw IExTTiAKLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91 c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb24gICAgICAgIHwgZCAgICAg ICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAg ICB8IGYgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19k b2Vzbm90ZXhpc3QgfCAwLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICBOYW1lICAg ICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8 IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9y IHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgTWF0Y2ggRERM IG93bmVyIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAg IHwgU2tpcCBMU04gCistLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3Vi IHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYg ICAgICB8IG9uICAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwg YW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICAgICAg ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwg MC8wCiAoMSByb3cpCiAKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChz dHJlYW1pbmcgPSBwYXJhbGxlbCk7CiBcZFJzKwotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKLSAgICAgIE5hbWUg ICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9u IHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJy b3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBTeW5jaHJv bm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAg ICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgcGFyYWxsZWwgIHwgZCAgICAgICAgICAgICAg ICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAg ICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhp c3QgfCAwLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICBOYW1lICAgICAgIHwgICAg ICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8 IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2lu IHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgTWF0Y2ggRERMIG93bmVyIHwg U3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBM U04gCistLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVz c19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IHBh cmFsbGVsICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwg dCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICAgICAgICAgIHwgb2Zm ICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSBy b3cpCiAKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzdHJlYW1pbmcg PSBmYWxzZSk7CiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc2xvdF9u YW1lID0gTk9ORSk7CiBcZFJzKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKLSAgICAgIE5hbWUgICAgICAgfCAg ICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5 IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmln aW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBTeW5jaHJvbm91cyBjb21t aXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0t LSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSBy ZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0 ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAg ICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAg fCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWlu ZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dv cmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgTWF0Y2ggRERMIG93bmVyIHwgU3luY2hyb25v dXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCistLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3Jp cHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9mZiAgICAgICB8 IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAg ICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICAgICAgICAgIHwgb2ZmICAgICAgICAg ICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKIC0t IGZhaWwgLSBwdWJsaWNhdGlvbiBhbHJlYWR5IGV4aXN0cwpAQCAtMzEyLDEwICszMTIsMTAgQEAg QUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBBREQgUFVCTElDQVRJT04gdGVzdHB1 YjEsIHRlc3RwdWIyIFdJVEggKHJlZnIKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3Rz dWIgQUREIFBVQkxJQ0FUSU9OIHRlc3RwdWIxLCB0ZXN0cHViMiBXSVRIIChyZWZyZXNoID0gZmFs c2UpOwogRVJST1I6ICBwdWJsaWNhdGlvbiAidGVzdHB1YjEiIGlzIGFscmVhZHkgaW4gc3Vic2Ny aXB0aW9uICJyZWdyZXNzX3Rlc3RzdWIiCiBcZFJzKwotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwot ICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwg ICAgICAgICBQdWJsaWNhdGlvbiAgICAgICAgIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBo YXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJl ZCB8IFJ1biBhcyBvd25lcj8gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5m byAgICAgICAgICAgfCBTa2lwIExTTiAKLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVz c190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1 Yix0ZXN0cHViMSx0ZXN0cHViMn0gfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAg ICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAg ICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3Rl eGlzdCB8IDAvMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgTmFtZSAg ICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgICAgICAgICBQdWJs aWNhdGlvbiAgICAgICAgIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8 IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBv d25lcj8gfCBNYXRjaCBEREwgb3duZXIgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBD b25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25f dXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yix0ZXN0cHViMSx0ZXN0cHViMn0gfCBmICAgICAgfCBv ZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8 IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgICAgICAgICB8IG9m ZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEg cm93KQogCiAtLSBmYWlsIC0gcHVibGljYXRpb24gdXNlZCBtb3JlIHRoYW4gb25jZQpAQCAtMzMw LDEwICszMzAsMTAgQEAgRVJST1I6ICBwdWJsaWNhdGlvbiAidGVzdHB1YjMiIGlzIG5vdCBpbiBz dWJzY3JpcHRpb24gInJlZ3Jlc3NfdGVzdHN1YiIKIC0tIG9rIC0gZGVsZXRlIHB1YmxpY2F0aW9u cwogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBEUk9QIFBVQkxJQ0FUSU9OIHRl c3RwdWIxLCB0ZXN0cHViMiBXSVRIIChyZWZyZXNoID0gZmFsc2UpOwogXGRScysKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3Jp cHRpb25zCi0gICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVu YWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21t aXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4g YXMgb3duZXI/IHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAg ICAgIHwgU2tpcCBMU04gCi0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJz Y3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9mZiAgICAg ICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAg ICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1l PXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAg ICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVi bGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJs ZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8 IE1hdGNoIERETCBvd25lciB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZv ICAgICAgICAgICB8IFNraXAgTFNOIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jl c3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3Rw dWJ9ICAgfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAg ICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQg ICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNu b3RleGlzdCB8IDAvMAogKDEgcm93KQogCiBEUk9QIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3Rz dWI7CkBAIC0zNjksMTAgKzM2OSwxMCBAQCBDUkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVz dHN1YiBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QnIFBVQgogV0FSTklO RzogIHN1YnNjcmlwdGlvbiB3YXMgY3JlYXRlZCwgYnV0IGlzIG5vdCBjb25uZWN0ZWQKIEhJTlQ6 ICBUbyBpbml0aWF0ZSByZXBsaWNhdGlvbiwgeW91IG11c3QgbWFudWFsbHkgY3JlYXRlIHRoZSBy ZXBsaWNhdGlvbiBzbG90LCBlbmFibGUgdGhlIHN1YnNjcmlwdGlvbiwgYW5kIHJlZnJlc2ggdGhl IHN1YnNjcmlwdGlvbi4KIFxkUnMrCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAgTmFtZSAgICAgICB8 ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5h cnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9y aWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IFN5bmNocm9ub3VzIGNv bW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAotLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQot IHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwg e3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvZmYgICAgICAgfCBwICAgICAgICAgICAgICAgIHwgZiAg ICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAg ICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAv MAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAg T3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFt aW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNz d29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBNYXRjaCBEREwgb3duZXIgfCBTeW5jaHJv bm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKKy0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNj cmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAg IHwgcCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAg ICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgICAgICAgICAgfCBvZmYgICAgICAg ICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAog LS1mYWlsIC0gYWx0ZXIgb2YgdHdvX3BoYXNlIG9wdGlvbiBub3Qgc3VwcG9ydGVkLgpAQCAtMzgx LDEwICszODEsMTAgQEAgRVJST1I6ICB1bnJlY29nbml6ZWQgc3Vic2NyaXB0aW9uIHBhcmFtZXRl cjogInR3b19waGFzZSIKIC0tIGJ1dCBjYW4gYWx0ZXIgc3RyZWFtaW5nIHdoZW4gdHdvX3BoYXNl IGVuYWJsZWQKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzdHJlYW1p bmcgPSB0cnVlKTsKIFxkUnMrCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAgTmFtZSAgICAgICB8ICAg ICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkg fCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdp biB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IFN5bmNocm9ub3VzIGNvbW1p dCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAotLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0t Ky0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJl Z3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rl c3RwdWJ9ICAgfCBmICAgICAgfCBvbiAgICAgICAgfCBwICAgICAgICAgICAgICAgIHwgZiAgICAg ICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8 IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3du ZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5n IHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29y ZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBNYXRjaCBEREwgb3duZXIgfCBTeW5jaHJvbm91 cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKKy0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlw dGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb24gICAgICAgIHwg cCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAg ICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAg ICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogQUxU RVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHNsb3RfbmFtZSA9IE5PTkUpOwpA QCAtMzk0LDEwICszOTQsMTAgQEAgQ1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIg Q09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0JyBQVUIKIFdBUk5JTkc6ICBz dWJzY3JpcHRpb24gd2FzIGNyZWF0ZWQsIGJ1dCBpcyBub3QgY29ubmVjdGVkCiBISU5UOiAgVG8g aW5pdGlhdGUgcmVwbGljYXRpb24sIHlvdSBtdXN0IG1hbnVhbGx5IGNyZWF0ZSB0aGUgcmVwbGlj YXRpb24gc2xvdCwgZW5hYmxlIHRoZSBzdWJzY3JpcHRpb24sIGFuZCByZWZyZXNoIHRoZSBzdWJz Y3JpcHRpb24uCiBcZFJzKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKLSAgICAgIE5hbWUgICAgICAgfCAgICAg ICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwg U3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4g fCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBTeW5jaHJvbm91cyBjb21taXQg fCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdy ZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0 cHVifSAgIHwgZiAgICAgIHwgb24gICAgICAgIHwgcCAgICAgICAgICAgICAgICB8IGYgICAgICAg ICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCBv ZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVy ICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8 IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQg cmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgTWF0Y2ggRERMIG93bmVyIHwgU3luY2hyb25vdXMg Y29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCistLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRp b25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9uICAgICAgICB8IHAg ICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAg ICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAg ICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKIEFMVEVS IFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05FKTsKQEAg LTQxMCwxOCArNDEwLDE4IEBAIENSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIENP Tk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCcgUFVCCiBXQVJOSU5HOiAgc3Vi c2NyaXB0aW9uIHdhcyBjcmVhdGVkLCBidXQgaXMgbm90IGNvbm5lY3RlZAogSElOVDogIFRvIGlu aXRpYXRlIHJlcGxpY2F0aW9uLCB5b3UgbXVzdCBtYW51YWxseSBjcmVhdGUgdGhlIHJlcGxpY2F0 aW9uIHNsb3QsIGVuYWJsZSB0aGUgc3Vic2NyaXB0aW9uLCBhbmQgcmVmcmVzaCB0aGUgc3Vic2Ny aXB0aW9uLgogXGRScysKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCi0gICAgICBOYW1lICAgICAgIHwgICAgICAg ICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0 cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwg UGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgU3luY2hyb25vdXMgY29tbWl0IHwg ICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCi0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVz c190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1 Yn0gICB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAg ICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgb2Zm ICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExp c3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAg ICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBU d28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJl cXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IE1hdGNoIERETCBvd25lciB8IFN5bmNocm9ub3VzIGNv bW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAorLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9u X3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAg ICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAg ICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAg ICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEgcm93KQogCiBBTFRFUiBT VUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoZGlzYWJsZV9vbl9lcnJvciA9IHRydWUp OwogXGRScysKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCi0gICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWlu ZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dv cmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAg ICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCi0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0 c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8 IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCB0ICAgICAgICAgICAgICAg IHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgb2ZmICAgICAg ICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Yg c3Vic2NyaXB0aW9ucworICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhh c2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVk IHwgUnVuIGFzIG93bmVyPyB8IE1hdGNoIERETCBvd25lciB8IFN5bmNocm9ub3VzIGNvbW1pdCB8 ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAorLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIg fCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAg ICAgICAgIHwgdCAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwg ZiAgICAgICAgICAgICB8IHQgICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRi bmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEgcm93KQogCiBBTFRFUiBTVUJTQ1JJ UFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc2xvdF9uYW1lID0gTk9ORSk7Ci0tIAoyLjM0LjEK Cg== --00000000000023744d05ff537465 Content-Type: application/octet-stream; name="0004-DDL-replication-for-Table-DDL-commands-2023_06_30.patch" Content-Disposition: attachment; filename="0004-DDL-replication-for-Table-DDL-commands-2023_06_30.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lji8c4bg3 RnJvbSBhNGNiOGM2NDFjZjhmZWNmOGUyOWFmNzVkNGRiN2QzMWFmOWZhMjIwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaHZldGEgTWFsaWsgPHNodmV0YS5tYWxpa0BnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMjggSnVuIDIwMjMgMTY6MDQ6MTcgKzA1MzAKU3ViamVjdDogW1BBVENIIDQv NV0gRERMIHJlcGxpY2F0aW9uIGZvciBUYWJsZSBEREwgY29tbWFuZHMKCk9WRVJWSUVXCi0tLS0t LS0tCjEpIFRvIHN1cHBvcnQgRERMIHJlcGxpY2F0aW9uLCB3ZSB1c2UgdGhlIGV2ZW50IHRyaWdn ZXIgYW5kIERETCBkZXBhcnNpbmcKZmFjaWxpdGllcy4gRHVyaW5nIENSRUFURSBQVUJMSUNBVElP TiB3ZSByZWdpc3RlciBhICdjb21tYW5kIGVuZCcgdHJpZ2dlciB0aGF0CmRlcGFyc2VzIHRoZSBE REwgKGlmIHRoZSBEREwgaXMgYW5ub3RhdGVkIGFzIGRkbHJlcGxvayBmb3IgRERMIHJlcGxpY2F0 aW9uIGluCmNtZHRhZ2xpc3QuaCkgYXMgYSBKU09OIGJsb2IsIGFuZCBXQUwgbG9ncyBpdC4gVGhl IGV2ZW50IHRyaWdnZXIgaXMgYXV0b21hdGljYWxseQpyZW1vdmVkIGF0IHRoZSB0aW1lIG9mIERS T1AgUFVCTElDQVRJT04uIFRoZSBXQUxTZW5kZXIgZGVjb2RlcyB0aGUgV0FMIGFuZCBzZW5kcwpp dCBkb3duc3RyZWFtIHNpbWlsYXIgdG8gb3RoZXIgRE1MIGNvbW1hbmRzLiBUaGUgc3Vic2NyaWJl ciB0aGVuIGNvbnZlcnRzIEpTT04KYmFjayB0byB0aGUgRERMIGNvbW1hbmQgc3RyaW5nIGFuZCBl eGVjdXRlcyBpdC4gSW4gdGhlIHN1YnNjcmliZXIsIHdlIGFsc28gYWRkCnRoZSBuZXdseSBhZGRl ZCByZWwgdG8gcGdfc3Vic2NyaXB0aW9uX3JlbCBzbyB0aGF0IHRoZSBETUwgY2hhbmdlcyBvbiB0 aGUgbmV3CnRhYmxlIGNhbiBiZSByZXBsaWNhdGVkIHdpdGhvdXQgaGF2aW5nIHRvIG1hbnVhbGx5 IHJ1bgoiQUxURVIgU1VCU0NSSVBUSU9OIC4uLiBSRUZSRVNIIFBVQkxJQ0FUSU9OIi4KCjIpIEFk ZCBzdWJzY3JpcHRpb24gdGFwIHRlc3QgZm9yIERETCByZXBsaWNhdGlvbiBmb3IgVEFCTEUgcmVs YXRlZCBjb21tYW5kcy4KCkZvciBub24tcmV3cml0ZSBBTFRFUiBvYmplY3QgY29tbWFuZCBhbmQg Q1JFQVRFIG9iamVjdCBjb21tYW5kOgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KV2UgZGVwYXJzZSB0aGUgY29tbWFuZCBhdCBk ZGxfY29tbWFuZF9lbmQgZXZlbnQgdHJpZ2dlciBhbmQgV0FMIGxvZyB0aGUKZGVwYXJzZWQgSlNP TiBzdHJpbmcuIFRoZSBXQUxTZW5kZXIgZGVjb2RlcyB0aGUgV0FMIGFuZCBzZW5kcyBpdCB0bwpz dWJzY3JpYmVyIGlmIHRoZSBjcmVhdGVkL2FsdGVyZWQgdGFibGUgaXMgcHVibGlzaGVkLgoKRm9y IERST1Agb2JqZWN0OgotLS0tLS0tLS0tLS0tLS0tClRoZSAnY29tbWFuZCBzdGFydCcgZXZlbnQg aGFuZGxlciBsb2dzIGEgZGRsIG1lc3NhZ2Ugd2l0aCB0aGUgcmVsaWRzIG9mCnRoZSB0YWJsZXMg dGhhdCBhcmUgZHJvcHBlZCB3aGljaCB0aGUgb3V0cHV0IHBsdWdpbiAocGdvdXRwdXQpIHN0b3Jl cyBpbgppdHMgaW50ZXJuYWwgZGF0YSBzdHJ1Y3R1cmUgYWZ0ZXIgdmVyaWZ5aW5nIHRoYXQgaXQg aXMgZm9yIGEgdGFibGUgdGhhdCBpcwpwYXJ0IG9mIHRoZSBwdWJsaWNhdGlvbi4gTGF0ZXIgdGhl ICdjb21tYW5kIGVuZCcgZXZlbnQgaGFuZGxlciBzZW5kcyB0aGUKYWN0dWFsIGRyb3AgbWVzc2Fn ZS4gT24gcmVjZWl2aW5nIHRoZSAnY29tbWFuZCBlbmQnLCBwZ291dHB1dCBzZW5kcyB0aGUKRFJP UCBjb21tYW5kIG9ubHkgaWYgaXQgaXMgZm9yIG9uZSBvZiB0aGUgcmVsaWRzIG1hcmtlZCBmb3Ig ZGVsZXRpb24uCgpUaGUgcmVhc29uIHdlIGhhdmUgdG8gZG8gdGhpcyBpcyBiZWNhdXNlLCBvbmNl IHRoZSBsb2dpY2FsIGRlY29kZXIKcmVjZWl2ZXMgdGhlICdjb21tYW5kIGVuZCcgbWVzc2FnZSwg IHRoZSByZWxpZCBvZiB0aGUgdGFibGUgaXMgbm8gbG9uZ2VyCnZhbGlkIGFzIGl0IGhhcyBiZWVu IGRlbGV0ZWQgYXMgcGFydCBvZiBpbnZhbGlkYXRpb25zIHJlY2VpdmVkIGZvciB0aGUKZHJvcCB0 YWJsZSBjb21tYW5kLiBJdCBpcyBubyBsb25nZXIgcG9zc2libGUgdG8gdmVyaWZ5IGlmIHRoZSB0 YWJsZSBpcwpwYXJ0IG9mIHRoZSBwdWJsaWNhdGlvbiBsaXN0IG9yIG5vdC4gVG8gbWFrZSB0aGlz IHBvc3NpYmxlLCB0d28gbW9yZSBlbGVtZW50cwphcmUgYWRkZWQgdG8gdGhlIGRkbCB4bG9nIGFu ZCBkZGwgbWVzc2FnZSwgKHJlbGlkIGFuZCBjbWR0eXBlKS4KCldlIGNvdWxkIGhhdmUgYWxzbyBo YW5kbGVkIGFsbCB0aGlzIG9uIHRoZSBzdWJzY3JpYmVyIHNpZGUsIGJ1dAp0aGF0IHdvdWxkIG1l YW4gc2VuZGluZyBzcHVyaW91cyBkZGwgbWVzc2FnZXMgZm9yIHRhYmxlcyB0aGF0IGFyZSBub3Qg cGFydApvZiB0aGUgcHVibGljYXRpb24uCgpGb3IgdGFibGVfcmV3cml0ZSBBTFRFUiBUQUJMRSBj b21tYW5kOgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpFeGVjdXRpbmcg YSBub24taW1tdXRhYmxlIGV4cHJlc3Npb24gZHVyaW5nIHRoZSB0YWJsZSByZXdyaXRlIHBoYXNl IGlzIG5vdAphbGxvd2VkLCBhcyBpdCBtYXkgcmVzdWx0IGluIGRpZmZlcmVudCBkYXRhIGJldHdl ZW4gcHVibGlzaGVyIGFuZCBzdWJzY3JpYmVyLgpXaGlsZSBzb21lIG1heSBzdWdnZXN0IGNvbnZl cnRpbmcgdGhlIHJld3JpdGUgaW5zZXJ0cyB0byB1cGRhdGVzIGFuZCByZXBsaWNhdGUKdGhlbSBh ZnRlIHRoZSBkZGwgY29tbWFuZCB0byBtYWludGFpbiBkYXRhIGNvbnNpc3RlbmN5LiBCdXQgaXQg ZG9lc24ndCB3b3JrIGlmCnRoZSByZXBsaWNhIGlkZW50aXR5IGNvbHVtbiBpcyBhbHRlcmVkIGlu IHRoZSBjb21tYW5kLiBUaGlzIGlzIGJlY2F1c2UgdGhlCnJld3JpdGUgaW5zZXJ0cyBkbyBub3Qg Y29udGFpbiB0aGUgb2xkIHZhbHVlcyBhbmQgdGhlcmVmb3JlIGNhbm5vdCBiZSBjb252ZXJ0ZWQK dG8gdXBkYXRlLgoKTElNSVQ6CkNvbW1hbmRzIGNvbnRhaW4gdm9sYXRpbGUgZnVuY3Rpb25zIGFy ZSBub3QgYWxsb3dlZC4gQmVjYXVzZQppdCdzIHBvc3NpYmxlIHRoZSBmdW5jdGlvbnMgY29udGFp biBEREwvRE1MIGluIHdoaWNoIGNhc2UgdGhlc2Ugb3BlcmF0aW9ucwp3aWxsIGJlIGV4ZWN1dGVk IHR3aWNlIGFuZCBjYXVzZSBkdXBsaWNhdGUgZGF0YS4gSW4gYWRkaXRpb24sIHdlIGRvbid0IGtu b3cKd2hldGhlciB0aGUgdGFibGVzIGJlaW5nIGFjY2Vzc2VkIGJ5IHRoZXNlIERETC9ETUwgYXJl IHB1Ymxpc2hlZCBvciBub3QuIFNvCmJsaW5kbHkgYWxsb3dpbmcgc3VjaCBmdW5jdGlvbnMgY2Fu IGFsbG93IHVuaW50ZW5kZWQgY2xhdXNlcyBsaWtlIHRoZSB0YWJsZXMKYWNjZXNzZWQgaW4gdGhv c2UgZnVuY3Rpb25zIG1heSBub3QgZXZlbiBleGlzdCBvbiB0aGUgc3Vic2NyaWJlci4KLS0tCiBj b250cmliL3Rlc3RfZGVjb2RpbmcvZXhwZWN0ZWQvZGRsLm91dCAgICAgICAgfCAgMjcgKysKIGNv bnRyaWIvdGVzdF9kZWNvZGluZy9zcWwvZGRsLnNxbCAgICAgICAgICAgICB8ICAgNiArCiBjb250 cmliL3Rlc3RfZGVjb2RpbmcvdGVzdF9kZWNvZGluZy5jICAgICAgICAgfCAgNDggKysKIGRvYy9z cmMvc2dtbC9jYXRhbG9ncy5zZ21sICAgICAgICAgICAgICAgICAgICB8ICAgOSArCiBkb2Mvc3Jj L3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sICAgICAgICAgfCAxNzQgKysrKysrKysKIHNy Yy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9NYWtlZmlsZSAgICAgICAgICB8ICAgMSArCiAuLi4v YWNjZXNzL3JtZ3JkZXNjL2xvZ2ljYWxkZGxtc2dkZXNjLmMgICAgICAgfCAgNTIgKysrCiBzcmMv YmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvbWVzb24uYnVpbGQgICAgICAgfCAgIDEgKwogc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0vcm1nci5jICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNr ZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYyAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy9hbHRlci5jICAgICAgICAgICAgICAgICAgfCAgMTcgKwogc3JjL2JhY2tlbmQv Y29tbWFuZHMvZGRsZGVwYXJzZS5jICAgICAgICAgICAgIHwgIDk3ICsrKy0KIHNyYy9iYWNrZW5k L2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuYyAgICAgICAgICB8ICA1NiArKy0KIHNyYy9iYWNrZW5k L2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jICAgICAgICB8IDIzMSArKysrKysrKystCiBzcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL01ha2VmaWxlICAgICAgfCAgIDIgKwogc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZGxtZXNzYWdlLmMgIHwgIDgzICsrKysKIHNyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGRsdHJpZ2dlci5jICB8IDM0OCArKysrKysrKysr KysrKysKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMgICAgICB8ICA0 MSArKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsLmMgICAgIHwgIDk3 ICsrKy0KIC4uLi9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWxmdW5jcy5jICAgICAgICB8ICAy NCArCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL21lc29uLmJ1aWxkICAgfCAgIDIg Kwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jICAgICAgIHwgIDQzICsr CiAuLi4vcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMgICAgICAgfCAxMzUgKysr KysrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jICAgICAgfCAxOTEg KysrKysrKysKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMgICB8 IDI1NiArKysrKysrKy0tLQogc3JjL2JhY2tlbmQvdGNvcC9jbWR0YWcuYyAgICAgICAgICAgICAg ICAgICAgIHwgIDI2ICstCiBzcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYyAgICAgICAgICAgICAg ICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyAgICAgICAg ICAgICB8ICAgNyArLQogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYyAgICAgICAg ICAgIHwgICAxICsKIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgICAgICAgICAgICAgICAgICAg ICB8ICAyNiArLQogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaCAgICAgICAgICAgICAgICAgICAg IHwgICAxICsKIHNyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsICAgICAgICAgICAgICB8 ICAgMiArLQogc3JjL2Jpbi9wZ193YWxkdW1wLy5naXRpZ25vcmUgICAgICAgICAgICAgICAgIHwg ICAxICsKIHNyYy9iaW4vcGdfd2FsZHVtcC9ybWdyZGVzYy5jICAgICAgICAgICAgICAgICB8ICAg MSArCiBzcmMvYmluL3BzcWwvZGVzY3JpYmUuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgMjEg Ky0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9ybWdybGlzdC5oICAgICAgICAgICAgICAgICB8ICAgMSAr CiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2V2ZW50X3RyaWdnZXIuaCAgICAgICAgfCAgIDEgKwog c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCAgICAgICAgICAgICAgIHwgIDIwICsKIHNy Yy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaCAgICAgICAgICB8ICAyOSArLQogc3Jj L2luY2x1ZGUvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5oICAgICAgICAgIHwgICA4ICstCiBzcmMv aW5jbHVkZS9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuaCAgICAgICAgfCAgMTQgKwogc3JjL2lu Y2x1ZGUvcmVwbGljYXRpb24vZGRsbWVzc2FnZS5oICAgICAgICAgIHwgIDYwICsrKwogc3JjL2lu Y2x1ZGUvcmVwbGljYXRpb24vZGVjb2RlLmggICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oICAgICAgICB8ICAgNCArCiBzcmMvaW5jbHVk ZS9yZXBsaWNhdGlvbi9vdXRwdXRfcGx1Z2luLmggICAgICAgfCAgMjcgKysKIHNyYy9pbmNsdWRl L3JlcGxpY2F0aW9uL3Bnb3V0cHV0LmggICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmggICAgICAgfCAgMzkgKysKIHNyYy9pbmNsdWRlL3Rj b3AvY21kdGFnLmggICAgICAgICAgICAgICAgICAgICB8ICAgNCArLQogc3JjL2luY2x1ZGUvdGNv cC9jbWR0YWdsaXN0LmggICAgICAgICAgICAgICAgIHwgMzg2ICsrKysrKysrLS0tLS0tLS0KIHNy Yy9pbmNsdWRlL3Rjb3AvZGRsZGVwYXJzZS5oICAgICAgICAgICAgICAgICB8ICAxMyArLQogc3Jj L2luY2x1ZGUvdXRpbHMvcmVsLmggICAgICAgICAgICAgICAgICAgICAgIHwgICAyICsKIHNyYy9p bmNsdWRlL3V0aWxzL3J1bGV1dGlscy5oICAgICAgICAgICAgICAgICB8ICAgMiArLQogc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9wc3FsLm91dCAgICAgICAgICAgIHwgICA2ICstCiBzcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dCAgICAgfCA0MjAgKysrKysrKysrLS0t LS0tLS0tCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vbWVzb24uYnVpbGQgICAgICAgICAgICAgfCAg IDEgKwogLi4uL3N1YnNjcmlwdGlvbi90LzAzNF9kZGxfcmVwbGljYXRpb24ucGwgICAgIHwgMzgz ICsrKysrKysrKysrKysrKysKIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAg ICAgICAgICB8ICAgNiArCiA1NyBmaWxlcyBjaGFuZ2VkLCAyOTM1IGluc2VydGlvbnMoKyksIDUy NCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2VuZC9hY2Nlc3Mvcm1n cmRlc2MvbG9naWNhbGRkbG1zZ2Rlc2MuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGRsbWVzc2FnZS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZGx0cmlnZ2VyLmMKIGNyZWF0ZSBtb2RlIDEw MDY0NCBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9kZGxtZXNzYWdlLmgKIGNyZWF0ZSBtb2RlIDEw MDY0NCBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzRfZGRsX3JlcGxpY2F0aW9uLnBsCgpkaWZm IC0tZ2l0IGEvY29udHJpYi90ZXN0X2RlY29kaW5nL2V4cGVjdGVkL2RkbC5vdXQgYi9jb250cmli L3Rlc3RfZGVjb2RpbmcvZXhwZWN0ZWQvZGRsLm91dAppbmRleCBkNTVmYjNhNjY3Li5jMWNmMzhk NGZhIDEwMDY0NAotLS0gYS9jb250cmliL3Rlc3RfZGVjb2RpbmcvZXhwZWN0ZWQvZGRsLm91dAor KysgYi9jb250cmliL3Rlc3RfZGVjb2RpbmcvZXhwZWN0ZWQvZGRsLm91dApAQCAtODMxLDYgKzgz MSwzMyBAQCBTRUxFQ1QgZGF0YSBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygncmVn cmVzc2lvbl9zbG90JywgTlVMTCwgTlVMTCwgJ2luYwogLS0tLS0tCiAoMCByb3dzKQogCistLSB0 ZXN0IHBnX2xvZ2ljYWxfZW1pdF9kZGxfbWVzc2FnZSB3aXRoIGEgcHJhY3RpY2FsIHBheWxvYWQK K1NFTEVDVCAnZGRsIG1zZzEnIEZST00gcGdfbG9naWNhbF9lbWl0X2RkbF9tZXNzYWdlKCdkZGwg bXNnMScsIDE2Mzk0LCAxLCAnbXNnMScpOworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIGRkbCBt c2cxCisoMSByb3cpCisKK1NFTEVDVCAnZGRsIG1zZzInIEZST00gcGdfbG9naWNhbF9lbWl0X2Rk bF9tZXNzYWdlKCdkZGwgbXNnMicsIDE2Mzk0LCAxLCAneyJmbXQiOiAiQ1JFQVRFIFNDSEVNQSAl e2lmX25vdF9leGlzdHN9cyAle25hbWV9SSAle2F1dGhvcml6YXRpb259cyIsICJuYW1lIjogImZv byIsICJhdXRob3JpemF0aW9uIjogeyJmbXQiOiAiQVVUSE9SSVpBVElPTiAle2F1dGhvcml6YXRp b25fcm9sZX1JIiwgInByZXNlbnQiOiBmYWxzZSwgImF1dGhvcml6YXRpb25fcm9sZSI6IG51bGx9 LCAiaWZfbm90X2V4aXN0cyI6ICIifScpOworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIGRkbCBt c2cyCisoMSByb3cpCisKK1NFTEVDVCAnZGRsIG1zZzMnIEZST00gcGdfbG9naWNhbF9lbWl0X2Rk bF9tZXNzYWdlKCdkZGwgbXNnMycsIDE2Mzk0LCAxLCAneyJmbXQiOiAiQ1JFQVRFICV7cGVyc2lz dGVuY2V9cyBUQUJMRSAle2lmX25vdF9leGlzdHN9cyAle2lkZW50aXR5fUQgKCV7dGFibGVfZWxl bWVudHM6LCB9cykgJXtpbmhlcml0c31zICV7dGFibGVzcGFjZX1zICV7b25fY29tbWl0fXMgJXtw YXJ0aXRpb25fYnl9cyAle2FjY2Vzc19tZXRob2R9cyAle3dpdGhfY2xhdXNlfXMiLCAiaWRlbnRp dHkiOiB7Im9iam5hbWUiOiAiZm9vIiwgInNjaGVtYW5hbWUiOiAiZWxlbWVudF90ZXN0In0sICJp bmhlcml0cyI6IHsiZm10IjogIklOSEVSSVRTICgle3BhcmVudHM6LCB9RCkiLCAicGFyZW50cyI6 IG51bGwsICJwcmVzZW50IjogZmFsc2V9LCAib25fY29tbWl0IjogeyJmbXQiOiAiT04gQ09NTUlU ICV7b25fY29tbWl0X3ZhbHVlfXMiLCAicHJlc2VudCI6IGZhbHNlLCAib25fY29tbWl0X3ZhbHVl IjogbnVsbH0sICJ0YWJsZXNwYWNlIjogeyJmbXQiOiAiVEFCTEVTUEFDRSAle3RhYmxlc3BhY2V9 SSIsICJwcmVzZW50IjogZmFsc2UsICJ0YWJsZXNwYWNlIjogbnVsbH0sICJwZXJzaXN0ZW5jZSI6 ICIiLCAid2l0aF9jbGF1c2UiOiB7ImZtdCI6ICJXSVRIIiwgInByZXNlbnQiOiBmYWxzZX0sICJw YXJ0aXRpb25fYnkiOiB7ImZtdCI6ICJQQVJUSVRJT04gQlkgJXtkZWZpbml0aW9ufXMiLCAicHJl c2VudCI6IGZhbHNlLCAiZGVmaW5pdGlvbiI6IG51bGx9LCAiYWNjZXNzX21ldGhvZCI6IHsiZm10 IjogIlVTSU5HICV7YWNjZXNzX21ldGhvZH1JIiwgInByZXNlbnQiOiBmYWxzZSwgImFjY2Vzc19t ZXRob2QiOiBudWxsfSwgImlmX25vdF9leGlzdHMiOiAiIiwgInRhYmxlX2VsZW1lbnRzIjogW3si Zm10IjogIiV7bmFtZX1JICV7Y29sdHlwZX1UIFNUT1JBR0UgJXtjb2xzdG9yYWdlfXMgJXtjb21w cmVzc2lvbn1zICV7Y29sbGF0aW9ufXMgJXtub3RfbnVsbH1zICV7ZGVmYXVsdH1zICV7Z2VuZXJh dGVkX2NvbHVtbn1zIiwgIm5hbWUiOiAiaWQiLCAidHlwZSI6ICJjb2x1bW4iLCAiY29sdHlwZSI6 IHsidHlwbW9kIjogIiIsICJ0eXBhcnJheSI6IGZhbHNlLCAidHlwZW5hbWUiOiAiaW50NCIsICJz Y2hlbWFuYW1lIjogInBnX2NhdGFsb2cifSwgImRlZmF1bHQiOiB7ImZtdCI6ICJERUZBVUxUIiwg InByZXNlbnQiOiBmYWxzZX0sICJub3RfbnVsbCI6ICIiLCAiY29sbGF0aW9uIjogeyJmbXQiOiAi Q09MTEFURSIsICJwcmVzZW50IjogZmFsc2V9LCAiY29sc3RvcmFnZSI6ICJwbGFpbiIsICJjb21w cmVzc2lvbiI6IHsiZm10IjogIkNPTVBSRVNTSU9OICV7Y29tcHJlc3Npb25fbWV0aG9kfUkiLCAi cHJlc2VudCI6IGZhbHNlLCAiY29tcHJlc3Npb25fbWV0aG9kIjogbnVsbH0sICJnZW5lcmF0ZWRf Y29sdW1uIjogeyJmbXQiOiAiR0VORVJBVEVEIEFMV0FZUyBBUyIsICJwcmVzZW50IjogZmFsc2V9 fV19fScpOworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIGRkbCBtc2czCisoMSByb3cpCisKK1NF TEVDVCBkYXRhIEZST00gcGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2VzKCdyZWdyZXNzaW9uX3Ns b3QnLCBOVUxMLCBOVUxMLCAnaW5jbHVkZS14aWRzJywgJzAnLCAnc2tpcC1lbXB0eS14YWN0cycs ICcxJyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZGF0YSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IERETCBtZXNzYWdlOiBwcmVmaXg6IGRkbCBtc2cxLCByZWxpZDogMTYzOTQsIGNtZHR5cGU6IERy b3AsIHN6OiA0IGNvbnRlbnQ6IG1zZzEKKyBEREwgbWVzc2FnZTogcHJlZml4OiBkZGwgbXNnMiwg cmVsaWQ6IDE2Mzk0LCBjbWR0eXBlOiBEcm9wLCBzejogMjE3IGNvbnRlbnQ6IHsiZm10IjogIkNS RUFURSBTQ0hFTUEgJXtpZl9ub3RfZXhpc3RzfXMgJXtuYW1lfUkgJXthdXRob3JpemF0aW9ufXMi LCAibmFtZSI6ICJmb28iLCAiYXV0aG9yaXphdGlvbiI6IHsiZm10IjogIkFVVEhPUklaQVRJT04g JXthdXRob3JpemF0aW9uX3JvbGV9SSIsICJwcmVzZW50IjogZmFsc2UsICJhdXRob3JpemF0aW9u X3JvbGUiOiBudWxsfSwgImlmX25vdF9leGlzdHMiOiAiIn0KKyBEREwgbWVzc2FnZTogcHJlZml4 OiBkZGwgbXNnMywgcmVsaWQ6IDE2Mzk0LCBjbWR0eXBlOiBEcm9wLCBzejogMTM5NiBjb250ZW50 OiB7ImZtdCI6ICJDUkVBVEUgJXtwZXJzaXN0ZW5jZX1zIFRBQkxFICV7aWZfbm90X2V4aXN0c31z ICV7aWRlbnRpdHl9RCAoJXt0YWJsZV9lbGVtZW50czosIH1zKSAle2luaGVyaXRzfXMgJXt0YWJs ZXNwYWNlfXMgJXtvbl9jb21taXR9cyAle3BhcnRpdGlvbl9ieX1zICV7YWNjZXNzX21ldGhvZH1z ICV7d2l0aF9jbGF1c2V9cyIsICJpZGVudGl0eSI6IHsib2JqbmFtZSI6ICJmb28iLCAic2NoZW1h bmFtZSI6ICJlbGVtZW50X3Rlc3QifSwgImluaGVyaXRzIjogeyJmbXQiOiAiSU5IRVJJVFMgKCV7 cGFyZW50czosIH1EKSIsICJwYXJlbnRzIjogbnVsbCwgInByZXNlbnQiOiBmYWxzZX0sICJvbl9j b21taXQiOiB7ImZtdCI6ICJPTiBDT01NSVQgJXtvbl9jb21taXRfdmFsdWV9cyIsICJwcmVzZW50 IjogZmFsc2UsICJvbl9jb21taXRfdmFsdWUiOiBudWxsfSwgInRhYmxlc3BhY2UiOiB7ImZtdCI6 ICJUQUJMRVNQQUNFICV7dGFibGVzcGFjZX1JIiwgInByZXNlbnQiOiBmYWxzZSwgInRhYmxlc3Bh Y2UiOiBudWxsfSwgInBlcnNpc3RlbmNlIjogIiIsICJ3aXRoX2NsYXVzZSI6IHsiZm10IjogIldJ VEgiLCAicHJlc2VudCI6IGZhbHNlfSwgInBhcnRpdGlvbl9ieSI6IHsiZm10IjogIlBBUlRJVElP TiBCWSAle2RlZmluaXRpb259cyIsICJwcmVzZW50IjogZmFsc2UsICJkZWZpbml0aW9uIjogbnVs bH0sICJhY2Nlc3NfbWV0aG9kIjogeyJmbXQiOiAiVVNJTkcgJXthY2Nlc3NfbWV0aG9kfUkiLCAi cHJlc2VudCI6IGZhbHNlLCAiYWNjZXNzX21ldGhvZCI6IG51bGx9LCAiaWZfbm90X2V4aXN0cyI6 ICIiLCAidGFibGVfZWxlbWVudHMiOiBbeyJmbXQiOiAiJXtuYW1lfUkgJXtjb2x0eXBlfVQgU1RP UkFHRSAle2NvbHN0b3JhZ2V9cyAle2NvbXByZXNzaW9ufXMgJXtjb2xsYXRpb259cyAle25vdF9u dWxsfXMgJXtkZWZhdWx0fXMgJXtnZW5lcmF0ZWRfY29sdW1ufXMiLCAibmFtZSI6ICJpZCIsICJ0 eXBlIjogImNvbHVtbiIsICJjb2x0eXBlIjogeyJ0eXBtb2QiOiAiIiwgInR5cGFycmF5IjogZmFs c2UsICJ0eXBlbmFtZSI6ICJpbnQ0IiwgInNjaGVtYW5hbWUiOiAicGdfY2F0YWxvZyJ9LCAiZGVm YXVsdCI6IHsiZm10IjogIkRFRkFVTFQiLCAicHJlc2VudCI6IGZhbHNlfSwgIm5vdF9udWxsIjog IiIsICJjb2xsYXRpb24iOiB7ImZtdCI6ICJDT0xMQVRFIiwgInByZXNlbnQiOiBmYWxzZX0sICJj b2xzdG9yYWdlIjogInBsYWluIiwgImNvbXByZXNzaW9uIjogeyJmbXQiOiAiQ09NUFJFU1NJT04g JXtjb21wcmVzc2lvbl9tZXRob2R9SSIsICJwcmVzZW50IjogZmFsc2UsICJjb21wcmVzc2lvbl9t ZXRob2QiOiBudWxsfSwgImdlbmVyYXRlZF9jb2x1bW4iOiB7ImZtdCI6ICJHRU5FUkFURUQgQUxX QVlTIEFTIiwgInByZXNlbnQiOiBmYWxzZX19XX19CisoMyByb3dzKQorCiBTRUxFQ1QgcGdfZHJv cF9yZXBsaWNhdGlvbl9zbG90KCdyZWdyZXNzaW9uX3Nsb3QnKTsKICBwZ19kcm9wX3JlcGxpY2F0 aW9uX3Nsb3QgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvY29udHJp Yi90ZXN0X2RlY29kaW5nL3NxbC9kZGwuc3FsIGIvY29udHJpYi90ZXN0X2RlY29kaW5nL3NxbC9k ZGwuc3FsCmluZGV4IDU3Mjg1YTgyOGMuLjU5MmJjODlkOTYgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIv dGVzdF9kZWNvZGluZy9zcWwvZGRsLnNxbAorKysgYi9jb250cmliL3Rlc3RfZGVjb2Rpbmcvc3Fs L2RkbC5zcWwKQEAgLTQzMSw2ICs0MzEsMTIgQEAgU0VMRUNUIGRhdGEgRlJPTSBwZ19sb2dpY2Fs X3Nsb3RfZ2V0X2NoYW5nZXMoJ3JlZ3Jlc3Npb25fc2xvdCcsIE5VTEwsIE5VTEwsICdpbmMKIC0t IGRvbmUsIGZyZWUgbG9naWNhbCByZXBsaWNhdGlvbiBzbG90CiBTRUxFQ1QgZGF0YSBGUk9NIHBn X2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygncmVncmVzc2lvbl9zbG90JywgTlVMTCwgTlVMTCwg J2luY2x1ZGUteGlkcycsICcwJywgJ3NraXAtZW1wdHkteGFjdHMnLCAnMScpOwogCistLSB0ZXN0 IHBnX2xvZ2ljYWxfZW1pdF9kZGxfbWVzc2FnZSB3aXRoIGEgcHJhY3RpY2FsIHBheWxvYWQKK1NF TEVDVCAnZGRsIG1zZzEnIEZST00gcGdfbG9naWNhbF9lbWl0X2RkbF9tZXNzYWdlKCdkZGwgbXNn MScsIDE2Mzk0LCAxLCAnbXNnMScpOworU0VMRUNUICdkZGwgbXNnMicgRlJPTSBwZ19sb2dpY2Fs X2VtaXRfZGRsX21lc3NhZ2UoJ2RkbCBtc2cyJywgMTYzOTQsIDEsICd7ImZtdCI6ICJDUkVBVEUg U0NIRU1BICV7aWZfbm90X2V4aXN0c31zICV7bmFtZX1JICV7YXV0aG9yaXphdGlvbn1zIiwgIm5h bWUiOiAiZm9vIiwgImF1dGhvcml6YXRpb24iOiB7ImZtdCI6ICJBVVRIT1JJWkFUSU9OICV7YXV0 aG9yaXphdGlvbl9yb2xlfUkiLCAicHJlc2VudCI6IGZhbHNlLCAiYXV0aG9yaXphdGlvbl9yb2xl IjogbnVsbH0sICJpZl9ub3RfZXhpc3RzIjogIiJ9Jyk7CitTRUxFQ1QgJ2RkbCBtc2czJyBGUk9N IHBnX2xvZ2ljYWxfZW1pdF9kZGxfbWVzc2FnZSgnZGRsIG1zZzMnLCAxNjM5NCwgMSwgJ3siZm10 IjogIkNSRUFURSAle3BlcnNpc3RlbmNlfXMgVEFCTEUgJXtpZl9ub3RfZXhpc3RzfXMgJXtpZGVu dGl0eX1EICgle3RhYmxlX2VsZW1lbnRzOiwgfXMpICV7aW5oZXJpdHN9cyAle3RhYmxlc3BhY2V9 cyAle29uX2NvbW1pdH1zICV7cGFydGl0aW9uX2J5fXMgJXthY2Nlc3NfbWV0aG9kfXMgJXt3aXRo X2NsYXVzZX1zIiwgImlkZW50aXR5IjogeyJvYmpuYW1lIjogImZvbyIsICJzY2hlbWFuYW1lIjog ImVsZW1lbnRfdGVzdCJ9LCAiaW5oZXJpdHMiOiB7ImZtdCI6ICJJTkhFUklUUyAoJXtwYXJlbnRz OiwgfUQpIiwgInBhcmVudHMiOiBudWxsLCAicHJlc2VudCI6IGZhbHNlfSwgIm9uX2NvbW1pdCI6 IHsiZm10IjogIk9OIENPTU1JVCAle29uX2NvbW1pdF92YWx1ZX1zIiwgInByZXNlbnQiOiBmYWxz ZSwgIm9uX2NvbW1pdF92YWx1ZSI6IG51bGx9LCAidGFibGVzcGFjZSI6IHsiZm10IjogIlRBQkxF U1BBQ0UgJXt0YWJsZXNwYWNlfUkiLCAicHJlc2VudCI6IGZhbHNlLCAidGFibGVzcGFjZSI6IG51 bGx9LCAicGVyc2lzdGVuY2UiOiAiIiwgIndpdGhfY2xhdXNlIjogeyJmbXQiOiAiV0lUSCIsICJw cmVzZW50IjogZmFsc2V9LCAicGFydGl0aW9uX2J5IjogeyJmbXQiOiAiUEFSVElUSU9OIEJZICV7 ZGVmaW5pdGlvbn1zIiwgInByZXNlbnQiOiBmYWxzZSwgImRlZmluaXRpb24iOiBudWxsfSwgImFj Y2Vzc19tZXRob2QiOiB7ImZtdCI6ICJVU0lORyAle2FjY2Vzc19tZXRob2R9SSIsICJwcmVzZW50 IjogZmFsc2UsICJhY2Nlc3NfbWV0aG9kIjogbnVsbH0sICJpZl9ub3RfZXhpc3RzIjogIiIsICJ0 YWJsZV9lbGVtZW50cyI6IFt7ImZtdCI6ICIle25hbWV9SSAle2NvbHR5cGV9VCBTVE9SQUdFICV7 Y29sc3RvcmFnZX1zICV7Y29tcHJlc3Npb259cyAle2NvbGxhdGlvbn1zICV7bm90X251bGx9cyAl e2RlZmF1bHR9cyAle2dlbmVyYXRlZF9jb2x1bW59cyIsICJuYW1lIjogImlkIiwgInR5cGUiOiAi Y29sdW1uIiwgImNvbHR5cGUiOiB7InR5cG1vZCI6ICIiLCAidHlwYXJyYXkiOiBmYWxzZSwgInR5 cGVuYW1lIjogImludDQiLCAic2NoZW1hbmFtZSI6ICJwZ19jYXRhbG9nIn0sICJkZWZhdWx0Ijog eyJmbXQiOiAiREVGQVVMVCIsICJwcmVzZW50IjogZmFsc2V9LCAibm90X251bGwiOiAiIiwgImNv bGxhdGlvbiI6IHsiZm10IjogIkNPTExBVEUiLCAicHJlc2VudCI6IGZhbHNlfSwgImNvbHN0b3Jh Z2UiOiAicGxhaW4iLCAiY29tcHJlc3Npb24iOiB7ImZtdCI6ICJDT01QUkVTU0lPTiAle2NvbXBy ZXNzaW9uX21ldGhvZH1JIiwgInByZXNlbnQiOiBmYWxzZSwgImNvbXByZXNzaW9uX21ldGhvZCI6 IG51bGx9LCAiZ2VuZXJhdGVkX2NvbHVtbiI6IHsiZm10IjogIkdFTkVSQVRFRCBBTFdBWVMgQVMi LCAicHJlc2VudCI6IGZhbHNlfX1dfX0nKTsKK1NFTEVDVCBkYXRhIEZST00gcGdfbG9naWNhbF9z bG90X2dldF9jaGFuZ2VzKCdyZWdyZXNzaW9uX3Nsb3QnLCBOVUxMLCBOVUxMLCAnaW5jbHVkZS14 aWRzJywgJzAnLCAnc2tpcC1lbXB0eS14YWN0cycsICcxJyk7CisKIFNFTEVDVCBwZ19kcm9wX3Jl cGxpY2F0aW9uX3Nsb3QoJ3JlZ3Jlc3Npb25fc2xvdCcpOwogCiAvKiBjaGVjayB0aGF0IHRoZSBz bG90IGlzIGdvbmUgKi8KZGlmZiAtLWdpdCBhL2NvbnRyaWIvdGVzdF9kZWNvZGluZy90ZXN0X2Rl Y29kaW5nLmMgYi9jb250cmliL3Rlc3RfZGVjb2RpbmcvdGVzdF9kZWNvZGluZy5jCmluZGV4IDEy ZDFkMDUwNWQuLjkyODZmOTcyNTggMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvdGVzdF9kZWNvZGluZy90 ZXN0X2RlY29kaW5nLmMKKysrIGIvY29udHJpYi90ZXN0X2RlY29kaW5nL3Rlc3RfZGVjb2Rpbmcu YwpAQCAtMTQsOSArMTQsMTEgQEAKIAogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgogCisj aW5jbHVkZSAicmVwbGljYXRpb24vZGRsbWVzc2FnZS5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9u L2xvZ2ljYWwuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9vcmlnaW4uaCIKIAorI2luY2x1ZGUg InRjb3AvZGRsZGVwYXJzZS5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVk ZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKQEAgLTcy LDYgKzc0LDEyIEBAIHN0YXRpYyB2b2lkIHBnX2RlY29kZV9tZXNzYWdlKExvZ2ljYWxEZWNvZGlu Z0NvbnRleHQgKmN0eCwKIAkJCQkJCQkgIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwgWExvZ1JlY1B0 ciBsc24sCiAJCQkJCQkJICBib29sIHRyYW5zYWN0aW9uYWwsIGNvbnN0IGNoYXIgKnByZWZpeCwK IAkJCQkJCQkgIFNpemUgc3osIGNvbnN0IGNoYXIgKm1lc3NhZ2UpOworc3RhdGljIHZvaWQgcGdf ZGVjb2RlX2RkbF9tZXNzYWdlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwKKwkJCQkJCQkJ ICBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCisJCQkJCQkJCSAgWExvZ1JlY1B0ciBtZXNzYWdlX2xz biwKKwkJCQkJCQkJICBjb25zdCBjaGFyICpwcmVmaXgsIE9pZCByZWxpZCwKKwkJCQkJCQkJICBE ZXBhcnNlZENvbW1hbmRUeXBlIGNtZHR5cGUsCisJCQkJCQkJCSAgU2l6ZSBzeiwgY29uc3QgY2hh ciAqbWVzc2FnZSk7CiBzdGF0aWMgYm9vbCBwZ19kZWNvZGVfZmlsdGVyX3ByZXBhcmUoTG9naWNh bERlY29kaW5nQ29udGV4dCAqY3R4LAogCQkJCQkJCQkJIFRyYW5zYWN0aW9uSWQgeGlkLAogCQkJ CQkJCQkJIGNvbnN0IGNoYXIgKmdpZCk7CkBAIC0xMzUsNiArMTQzLDcgQEAgX1BHX291dHB1dF9w bHVnaW5faW5pdChPdXRwdXRQbHVnaW5DYWxsYmFja3MgKmNiKQogCWNiLT5maWx0ZXJfYnlfb3Jp Z2luX2NiID0gcGdfZGVjb2RlX2ZpbHRlcjsKIAljYi0+c2h1dGRvd25fY2IgPSBwZ19kZWNvZGVf c2h1dGRvd247CiAJY2ItPm1lc3NhZ2VfY2IgPSBwZ19kZWNvZGVfbWVzc2FnZTsKKwljYi0+ZGRs X2NiID0gcGdfZGVjb2RlX2RkbF9tZXNzYWdlOwogCWNiLT5maWx0ZXJfcHJlcGFyZV9jYiA9IHBn X2RlY29kZV9maWx0ZXJfcHJlcGFyZTsKIAljYi0+YmVnaW5fcHJlcGFyZV9jYiA9IHBnX2RlY29k ZV9iZWdpbl9wcmVwYXJlX3R4bjsKIAljYi0+cHJlcGFyZV9jYiA9IHBnX2RlY29kZV9wcmVwYXJl X3R4bjsKQEAgLTc1MCw2ICs3NTksNDUgQEAgcGdfZGVjb2RlX21lc3NhZ2UoTG9naWNhbERlY29k aW5nQ29udGV4dCAqY3R4LAogCU91dHB1dFBsdWdpbldyaXRlKGN0eCwgdHJ1ZSk7CiB9CiAKK3N0 YXRpYyB2b2lkCitwZ19kZWNvZGVfZGRsX21lc3NhZ2UoTG9naWNhbERlY29kaW5nQ29udGV4dCAq Y3R4LCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCisJCQkJCSAgWExvZ1JlY1B0ciBtZXNzYWdlX2xz biwgY29uc3QgY2hhciAqcHJlZml4LCBPaWQgcmVsaWQsCisJCQkJCSAgRGVwYXJzZWRDb21tYW5k VHlwZSBjbWR0eXBlLCBTaXplIHN6LCBjb25zdCBjaGFyICptZXNzYWdlKQoreworCU91dHB1dFBs dWdpblByZXBhcmVXcml0ZShjdHgsIHRydWUpOworCWFwcGVuZFN0cmluZ0luZm8oY3R4LT5vdXQs ICJEREwgbWVzc2FnZTogcHJlZml4OiAlcywgcmVsaWQ6ICV1LCAiLAorCQkJCQkgcHJlZml4LCBy ZWxpZCk7CisKKwlzd2l0Y2goY21kdHlwZSkKKwl7CisJY2FzZSBEQ1RfU2ltcGxlQ21kOgorCQlh cHBlbmRTdHJpbmdJbmZvKGN0eC0+b3V0LCAiY21kdHlwZTogU2ltcGxlLCAiKTsKKwkJYnJlYWs7 CisJY2FzZSBEQ1RfVGFibGVEcm9wU3RhcnQ6CisJCWFwcGVuZFN0cmluZ0luZm8oY3R4LT5vdXQs ICJjbWR0eXBlOiBEcm9wIHN0YXJ0LCAiKTsKKwkJYnJlYWs7CisJY2FzZSBEQ1RfVGFibGVEcm9w RW5kOgorCQlhcHBlbmRTdHJpbmdJbmZvKGN0eC0+b3V0LCAiY21kdHlwZTogRHJvcCBlbmQsICIp OworCQlicmVhazsKKwljYXNlIERDVF9UYWJsZUFsdGVyOgorCQlhcHBlbmRTdHJpbmdJbmZvKGN0 eC0+b3V0LCAiY21kdHlwZTogQWx0ZXIgdGFibGUsICIpOworCQlicmVhazsKKwljYXNlIERDVF9P YmplY3RDcmVhdGU6CisJCWFwcGVuZFN0cmluZ0luZm8oY3R4LT5vdXQsICJjbWR0eXBlOiBDcmVh dGUsICIpOworCQlicmVhazsKKwljYXNlIERDVF9PYmplY3REcm9wOgorCQlhcHBlbmRTdHJpbmdJ bmZvKGN0eC0+b3V0LCAiY21kdHlwZTogRHJvcCwgIik7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJ CWFwcGVuZFN0cmluZ0luZm8oY3R4LT5vdXQsICJjbWR0eXBlOiBJbnZhbGlkLCAiKTsKKwkJYnJl YWs7CisJfQorCisJYXBwZW5kU3RyaW5nSW5mbyhjdHgtPm91dCwgInN6OiAlenUgY29udGVudDog Iiwgc3opOworCWFwcGVuZEJpbmFyeVN0cmluZ0luZm8oY3R4LT5vdXQsIG1lc3NhZ2UsIHN6KTsK KwlPdXRwdXRQbHVnaW5Xcml0ZShjdHgsIHRydWUpOworfQorCiBzdGF0aWMgdm9pZAogcGdfZGVj b2RlX3N0cmVhbV9zdGFydChMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCiAJCQkJCSAgIFJl b3JkZXJCdWZmZXJUWE4gKnR4bikKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5z Z21sIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKaW5kZXggZWQzMmNhMDM0OS4uMzU2OGQw NzBhYiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3Ny Yy9zZ21sL2NhdGFsb2dzLnNnbWwKQEAgLTM4NjMsNiArMzg2MywxNSBAQCBTQ1JBTS1TSEEtMjU2 JDxyZXBsYWNlYWJsZT4mbHQ7aXRlcmF0aW9uIGNvdW50Jmd0OzwvcmVwbGFjZWFibGU+OjxyZXBs YWNlYWJsZT4mbAogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgogCisgICAgIDxy b3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0i Y29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5ldnRpc2ludGVybmFsPC9z dHJ1Y3RmaWVsZD4gPHR5cGU+Ym9vbDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJh PgorICAgICAgIFRydWUgaWYgdGhlIGV2ZW50IHRyaWdnZXIgaXMgaW50ZXJuYWxseSBnZW5lcmF0 ZWQuCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKICAgICAgPHJvdz4KICAg ICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5f ZGVmaW5pdGlvbiI+CiAgICAgICAgPHN0cnVjdGZpZWxkPmV2dHRhZ3M8L3N0cnVjdGZpZWxkPiA8 dHlwZT50ZXh0W108L3R5cGU+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBs aWNhdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbAppbmRl eCBjNWRlMjA0MGY3Li5mY2Q3MzhhZGI3IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvbG9naWNh bC1yZXBsaWNhdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9u LnNnbWwKQEAgLTE0NTcsNiArMTQ1NywxODAgQEAgdGVzdF9zdWI9IyBTRUxFQ1QgKiBGUk9NIHQx IE9SREVSIEJZIGlkOwogCiAgPC9zZWN0MT4KIAorIDxzZWN0MSBpZD0ibG9naWNhbC1yZXBsaWNh dGlvbi1kZGwiPgorICA8dGl0bGU+RERMIFJlcGxpY2F0aW9uPC90aXRsZT4KKyAgPHBhcmE+Cisg ICAgRGF0YSBEZWZpbml0aW9uIExhbmd1YWdlIChEREwpIGNvbW1hbmRzIGNhbiBiZSByZXBsaWNh dGVkIHVzaW5nIGxvZ2ljYWwgcmVwbGljYXRpb24uCisgICAgV2hlbiBlbmFibGVkIHRoaXMgZmVh dHVyZSBhdXRvbWF0aWNhbGx5IHJlcGxpY2F0ZXMgc3VwcG9ydGVkIERETCBjb21tYW5kcworICAg IHRoYXQgYXJlIHN1Y2Nlc3NmdWxseSBleGVjdXRlZCBvbiBhIHB1Ymxpc2hlciB0byBhIHN1YnNj cmliZXIuIFRoaXMgaXMKKyAgICBlc3BlY2lhbGx5IHVzZWZ1bCBpZiB5b3UgaGF2ZSBtYW55IHNj aGVtYSBjaGFuZ2VzIG92ZXIgdGltZSB0aGF0IG5lZWQgcmVwbGljYXRpb24uCisgIDwvcGFyYT4K KworICA8cGFyYT4KKyAgICBGb3IgZXhhbXBsZSwgYSBDUkVBVEUgVEFCTEUgY29tbWFuZCBleGVj dXRlZCBvbiB0aGUgcHVibGlzaGVyIGdldHMKKyAgICBXQUwtbG9nZ2VkLCBhbmQgZm9yd2FyZGVk IHRvIHRoZSBzdWJzY3JpYmVyIHRvIHJlcGxheTsgdGhlbiBhbiBpbXBsaWNpdCAiQUxURVIKKyAg ICBTVUJTQ1JJUFRJT04gLi4uIFJFRlJFU0ggUFVCTElDQVRJT04iIGlzIHBlcmZvcm1lZCBvbiB0 aGUgc3Vic2NyaWJlciBkYXRhYmFzZSBzbyBhbnkKKyAgICBmb2xsb3dpbmcgRE1MIGNoYW5nZXMg b24gdGhlIG5ldyB0YWJsZSBjYW4gYmUgcmVwbGljYXRlZC4KKyAgPC9wYXJhPgorCisgIDxwYXJh PgorICAgIERETCByZXBsaWNhdGlvbiBpcyBkaXNhYmxlZCBieSBkZWZhdWx0LCBpdCBjYW4gYmUg ZW5hYmxlZCB1c2luZyB0aGUgZGRsIFBVQkxJQ0FUSU9OCisgICAgb3B0aW9uLiBUaGlzIG9wdGlv biBjdXJyZW50bHkgaGFzIG9uZSBsZXZlbCBhbmQgaXMgb25seSBhbGxvd2VkIHRvIGJlIHNldCBp ZiB0aGUKKyAgICBQVUJMSUNBVElPTiBpcyBGT1IgQUxMIFRBQkxFUyBvciBGT1IgVEFCTEVTIElO IFNDSEVNQS4KKyAgPC9wYXJhPgorCisgIDxpdGVtaXplZGxpc3Q+CisgICAgPGxpc3RpdGVtPgor ICAgICAgPHBhcmE+CisgICAgICAgIHRhYmxlOiB0aGlzIG9wdGlvbiBlbmFibGVzIHJlcGxpY2F0 aW9uIG9mIFRhYmxlIERETCBjb21tYW5kcywKKyAgICAgICAgd2hpY2ggaW5jbHVkZToKKyAgICAg ICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICA8cGFy YT4KKyAgICAgICAgICAgICAgQ1JFQVRFL0FMVEVSL0RST1AgVEFCTEUKKyAgICAgICAgICAgIDwv cGFyYT4KKyAgICAgICAgICA8L2xpc3RpdGVtPgorCisgICAgICAgICAgPGxpc3RpdGVtPgorICAg ICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgIENSRUFURSBUQUJMRSBBUworICAgICAgICAg ICAgPC9wYXJhPgorICAgICAgICAgIDwvbGlzdGl0ZW0+CisKKyAgICAgICAgPC9pdGVtaXplZGxp c3Q+CisgICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgPC9pdGVtaXplZGxpc3Q+CisK KyAgPHNlY3QyIGlkPSJkZGwtcmVwbGljYXRpb24tb3B0aW9uLWV4YW1wbGVzIj4KKyAgICA8dGl0 bGU+RXhhbXBsZXMgLSBTZXR1cCBEREwgUmVwbGljYXRpb24gb24gdGhlIFB1Ymxpc2hlcjwvdGl0 bGU+CisKKyAgICA8cGFyYT4KKyAgICAgIEVuYWJsZSBUQUJMRSBEREwgcmVwbGljYXRpb24gZm9y IGFuIGV4aXN0aW5nIFBVQkxJQ0FUSU9OOgorPHByb2dyYW1saXN0aW5nPgorQUxURVIgUFVCTElD QVRJT04gbXlwdWIgU0VUIChkZGwgPSAndGFibGUnKTsKKzwvcHJvZ3JhbWxpc3Rpbmc+PC9wYXJh PgorCisgIDwvc2VjdDI+CisKKyAgPHNlY3QyIGlkPSJkZGwtcmVwbGljYXRpb24tc3VwcG9ydGVk LWNvbW1hbmRzIj4KKyAgICA8dGl0bGU+U3VwcG9ydGVkIERETCBjb21tYW5kczwvdGl0bGU+CisK KyAgICA8cGFyYT4KKyAgICAgIFRoZSBEREwgY29tbWFuZHMgc3VwcG9ydGVkIGZvciBsb2dpY2Fs IHJlcGxpY2F0aW9uIGFyZSBUYWJsZSBEREwgY29tbWFuZHMsCisgICAgICBpbmNsdWRlIDxsaXRl cmFsPkFMVEVSIFRBQkxFPC9saXRlcmFsPiwgPGxpdGVyYWw+Q1JFQVRFIFRBQkxFPC9saXRlcmFs PiwKKyAgICAgIDxsaXRlcmFsPkNSRUFURSBUQUJMRSBBUzwvbGl0ZXJhbD4sIGFuZCA8bGl0ZXJh bD5EUk9QIFRBQkxFPC9saXRlcmFsPi4KKyAgICAgIE90aGVyIG9iamVjdCBjb21tYW5kcyBhbmQg Z2xvYmFsIGNvbW1hbmRzIGFyZSBjdXJyZW50bHkgbm90CisgICAgICBzdXBwb3J0ZWQgZm9yIHJl cGxpY2F0aW9uLiBHbG9iYWwgY29tbWFuZHMgY2FuIGJlIGV4ZWN1dGVkIGF0IGFueQorICAgICAg ZGF0YWJhc2UsIGluY2x1ZGUgUk9MRSBzdGF0ZW1lbnRzLCBEYXRhYmFzZSBzdGF0ZW1lbnRzLCBU YWJsZVNwYWNlCisgICAgICBzdGF0ZW1lbnRzIGFuZCBzb21lIG9mIHRoZSBHcmFudFN0bXQvUmV2 b2tlU3RtdCBpZiB0aGUgdGFyZ2V0IG9iamVjdCBpcyBhCisgICAgICBnbG9iYWwgb2JqZWN0LiBU ZW1wb3JhcnkgYW5kIHVubG9nZ2VkIHRhYmxlIHdpbGwgbm90IGJlIHJlcGxpY2F0ZWQuIFVzZXIK KyAgICAgIHNob3VsZCB0YWtlIGNhcmUgd2hlbiBjcmVhdGluZyB0aGVzZSBvYmplY3RzIGFzIHRo ZXNlIG9iamVjdHMgbWlnaHQgYmUKKyAgICAgIHJlcXVpcmVkIGJ5IHRoZSBvYmplY3RzIHRoYXQg YXJlIHJlcGxpY2F0ZWQgKGZvciBleGFtcGxlIGNyZWF0aW9uIG9mCisgICAgICB0YWJsZXMgdGhh dCBtaWdodCByZWZlciB0byBhbiB1c2VyLWNyZWF0ZWQgdGFibGVzcGFjZSB3aWxsIGZhaWwgaW4g dGhlCisgICAgICBzdWJzY3JpYmVyIGlmIHRoZSB1c2VyIGNyZWF0ZWQgdGFibGVzcGFjZXMgZG8g bm90IGV4aXN0IG9uIHRoZQorICAgICAgc3Vic2NyaWJlcikuCisgICAgPC9wYXJhPgorICA8L3Nl Y3QyPgorCisgIDxzZWN0MiBpZD0iZGRsLXJlcGxpY2F0aW9uLWRkbC1kZXBhcnNlciI+CisgICAg PHRpdGxlPkRETCBEZXBhcnNlcjwvdGl0bGU+CisgICAgPHBhcmE+CisgICAgICBUaGUgRERMIGRl cGFyc2VyIHV0aWxpdHkgaXMgaW52b2tlZCBkdXJpbmcgdGhlIHJlcGxpY2F0aW9uIG9mIERETHMu IFRoZSBEREwKKyAgICAgIGRlcGFyc2VyIGlzIGNhcGFibGUgb2YgY29udmVydGluZyBhIERETCBj b21tYW5kIGludG8gZm9ybWF0dGVkIEpTT04gYmxvYiwgd2l0aAorICAgICAgdGhlIG5lY2Vzc2Fy eSBpbmZvcm1hdGlvbiB0byByZWNvbnN0cnVjdCB0aGUgRERMIGNvbW1hbmRzIGF0IHRoZSBkZXN0 aW5hdGlvbi4gVGhlCisgICAgICBiZW5lZml0cyBvZiB1c2luZyB0aGUgZGVwYXJzZXIgb3V0cHV0 IGNvbXBhcmVkIHRvIHRoZSBvcmlnaW5hbCBjb21tYW5kIHN0cmluZworICAgICAgaW5jbHVkZToK KyAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICA8cGFy YT4KKyAgICAgICAgICAgIEV2ZXJ5IGRhdGFiYXNlIG9iamVjdCBpbiB0aGUgZGVwYXJzZWQgb3V0 cHV0IGlzIHNjaGVtYS1xdWFsaWZpZWQsIHNvIHRoYXQKKyAgICAgICAgICAgIHRoZXJlIGFyZSBu byBhbWJpZ3VpdGllcyBldmVuIGluIHRoZSBmYWNlIG9mIHNlYXJjaF9wYXRoIGNoYW5nZXMuCisg ICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorCisgICAgICAgIDxsaXN0aXRl bT4KKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBzdHJ1Y3R1cmVkIEpTT04gYW5k IHRoZSBmb3JtYXR0ZWQgb3V0cHV0IG1ha2VzIGl0IHBvc3NpYmxlIGZvcgorICAgICAgICAgICAg bWFjaGluZSBlZGl0aW5nLiBUaGlzIGNhbiBiZSB1c2VmdWwgaWYgdGhlIHN1YnNjcmliZXIgaXMg b24gYSBkaWZmZXJlbnQKKyAgICAgICAgICAgIFBHIHZlcnNpb24gYW5kIGhhcyBjZXJ0YWluIERE TCBzeW50YXggZGlmZmVyZW5jZXMgd2hpY2ggbmVlZCB0byBiZQorICAgICAgICAgICAgcmVzb2x2 ZWQgYmVmb3JlIGFwcGx5LgorICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4K KworICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAg ICBUaGUgRERMIGRlcGFyc2VyIGV4cG9zZXMgdHdvIFNRTCBmdW5jdGlvbnM6CisgICAgICA8aXRl bWl6ZWRsaXN0PgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHBhcmE+CisgICAgICAg ICAgICBkZGxfZGVwYXJzZV90b19qc29uOiBnaXZlbiBhIENvbGxlY3RlZENvbW1hbmQgZnJvbSBl dmVudCB0cmlnZ2VyLAorICAgICAgICAgICAgcmV0dXJucyBhIEpTT04gcmVwcmVzZW50YXRpb24g b2YgaXQuIFRoZSBjb21tYW5kIGlzIGV4cGFuZGVkIGZ1bGx5CisgICAgICAgICAgICBzbyB0aGF0 IHRoZXJlIGFyZSBubyBhbWJpZ3VpdGllcyBldmVuIGluIHRoZSBmYWNlIG9mIHNlYXJjaF9wYXRo CisgICAgICAgICAgICBjaGFuZ2VzLgorICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0 aXRlbT4KKyAgICAgIDwvaXRlbWl6ZWRsaXN0PgorCisgICAgICA8aXRlbWl6ZWRsaXN0PgorICAg ICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBkZGxfZGVwYXJz ZV9leHBhbmRfY29tbWFuZDogRXhwYW5kIEpTT04gZm9ybWF0IERETCBnZW5lcmF0ZWQgYnkKKyAg ICAgICAgICAgIGRkbF9kZXBhcnNlX3RvX2pzb24gdG8gYSBwbGFpbiBEREwgY29tbWFuZC4KKyAg ICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L2l0ZW1pemVkbGlz dD4KKyAgICA8L3BhcmE+CisgIDwvc2VjdDI+CisKKyAgPHNlY3QyIGlkPSJkZGwtcmVwbGljYXRp b24tZGRsLXJlc3RyaWN0aW9ucyI+CisgICAgPHRpdGxlPkRETCBSZXBsaWNhdGlvbiBSZXN0cmlj dGlvbnM8L3RpdGxlPgorICAgIDxwYXJhPgorICAgICAgRERMIHJlcGxpY2F0aW9uIGN1cnJlbnRs eSBoYXMgdGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnMuCisgICAgICA8aXRlbWl6ZWRsaXN0Pgor ICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICA8Y29tbWFu ZD5BTFRFUiBUQUJMRTwvY29tbWFuZD4gY29tbWFuZCB3aGljaCB1c2VzIHZvbGF0aWxlIGZ1bmN0 aW9ucworICAgICAgICAgICAgaXMgbm90IGFsbG93ZWQuCisgICAgICAgICAgPC9wYXJhPgorICAg ICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHBhcmE+Cisg ICAgICAgICAgICBJbiA8bGl0ZXJhbD5BREQgQ09MVU1OIC4uLiBERUZBVUxUPC9saXRlcmFsPiBj bGF1c2UgYW5kCisgICAgICAgICAgICA8bGl0ZXJhbD5BTFRFUiBDT0xVTU4gVFlQRTwvbGl0ZXJh bD4gY2xhdXNlIG9mIDxjb21tYW5kPkFMVEVSCisgICAgICAgICAgICBUQUJMRTwvY29tbWFuZD4g Y29tbWFuZCwgdGhlIGZ1bmN0aW9ucyBhbmQgb3BlcmF0b3JzIHVzZWQgaW4KKyAgICAgICAgICAg IGV4cHJlc3Npb24gbXVzdCBiZSBpbW11dGFibGUuCisgICAgICAgICAgPC9wYXJhPgorICAgICAg ICA8L2xpc3RpdGVtPgorICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgPC9wYXJhPgorCisgICAg PHBhcmE+CisgICAgICBUaGUgbGF0dGVyIGNhc2UgY2FuIGJlIHdvcmtlZCBhcm91bmQuCisgICAg ICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHBhcmE+Cisg ICAgICAgICAgICBUbyBhZGQgYSBjb2x1bW4gd2l0aCBhIG5vbi1pbW11dGFibGUgZGVmYXVsdCB2 YWx1ZSwgZmlyc3QgYWRkIGEKKyAgICAgICAgICAgIGNvbHVtbiB3aXRob3V0IGEgZGVmYXVsdCB2 YWx1ZSwgdGhlbiBzZXQgYSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgbmV3CisgICAgICAgICAgICBj b2x1bW4sIGFuZCB1cGRhdGUgdGhlIHZhbHVlIG9mIHRoZSBuZXcgY29sdW1uIGZvciBleGlzdGlu ZyByb3dzLgorICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAg PGxpc3RpdGVtPgorICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVG8gY2hhbmdlIHRoZSBj b2x1bW4gdHlwZSwgZmlyc3QgYWRkIGEgbmV3IGNvbHVtbiBvZiB0aGUgZGVzaXJlZAorICAgICAg ICAgICAgdHlwZSwgdGhlbiB1cGRhdGUgdGhlIG5ldyBjb2x1bW4gdmFsdWUgd2l0aCB0aGUgb2xk IGNvbHVtbiB2YWx1ZSwKKyAgICAgICAgICAgIGFuZCBmaW5uYWxseSBkcm9wIHRoZSBvbGQgY29s dW1uIGFuZCByZW5hbWUgdGhlIG5ldyBjb2x1bW4gdG8gdGhlCisgICAgICAgICAgICBvbGQgY29s dW1uLgorICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvaXRl bWl6ZWRsaXN0PgorICAgIDwvcGFyYT4KKyAgPC9zZWN0Mj4KKworIDwvc2VjdDE+CisKICA8c2Vj dDEgaWQ9ImxvZ2ljYWwtcmVwbGljYXRpb24tY29uZmxpY3RzIj4KICAgPHRpdGxlPkNvbmZsaWN0 czwvdGl0bGU+CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9NYWtl ZmlsZSBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9NYWtlZmlsZQppbmRleCBjZDk1ZWVj MzdmLi5mZDY3ZjA0NGU0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2Mv TWFrZWZpbGUKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL01ha2VmaWxlCkBAIC0x OCw2ICsxOCw3IEBAIE9CSlMgPSBcCiAJZ2lzdGRlc2MubyBcCiAJaGFzaGRlc2MubyBcCiAJaGVh cGRlc2MubyBcCisJbG9naWNhbGRkbG1zZ2Rlc2MubyBcCiAJbG9naWNhbG1zZ2Rlc2MubyBcCiAJ bXhhY3RkZXNjLm8gXAogCW5idGRlc2MubyBcCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3Mvcm1ncmRlc2MvbG9naWNhbGRkbG1zZ2Rlc2MuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdy ZGVzYy9sb2dpY2FsZGRsbXNnZGVzYy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAuLjVmNThlMGZlNTEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv cm1ncmRlc2MvbG9naWNhbGRkbG1zZ2Rlc2MuYwpAQCAtMCwwICsxLDUyIEBACisvKi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAqCisgKiBsb2dpY2FsZGRsbXNnZGVzYy5jCisgKgkgIHJtZ3IgZGVzY3JpcHRv ciByb3V0aW5lcyBmb3IgcmVwbGljYXRpb24vbG9naWNhbC9kZGxtZXNzYWdlLmMKKyAqCisgKiBQ b3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTUtMjAyMywgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxv cG1lbnQgR3JvdXAKKyAqCisgKgorICogSURFTlRJRklDQVRJT04KKyAqCSAgc3JjL2JhY2tlbmQv YWNjZXNzL3JtZ3JkZXNjL2xvZ2ljYWxkZGxtc2dkZXNjLmMKKyAqCisgKi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAqLworI2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9k ZGxtZXNzYWdlLmgiCisKK3ZvaWQKK2xvZ2ljYWxkZGxtc2dfZGVzYyhTdHJpbmdJbmZvIGJ1Ziwg WExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCit7CisJY2hhcgkgICAqcmVjID0gWExvZ1JlY0dldERh dGEocmVjb3JkKTsKKwl1aW50OAkJaW5mbyA9IFhMb2dSZWNHZXRJbmZvKHJlY29yZCkgJiB+WExS X0lORk9fTUFTSzsKKworCWlmIChpbmZvID09IFhMT0dfTE9HSUNBTF9ERExfTUVTU0FHRSkKKwl7 CisJCXhsX2xvZ2ljYWxfZGRsX21lc3NhZ2UgKnhscmVjID0gKHhsX2xvZ2ljYWxfZGRsX21lc3Nh Z2UgKikgcmVjOworCQljaGFyCSAgICpwcmVmaXggPSB4bHJlYy0+bWVzc2FnZTsKKwkJY2hhcgkg ICAqbWVzc2FnZSA9IHhscmVjLT5tZXNzYWdlICsgeGxyZWMtPnByZWZpeF9zaXplOworCQljaGFy CSAgICpzZXAgPSAiIjsKKworCQlBc3NlcnQocHJlZml4W3hscmVjLT5wcmVmaXhfc2l6ZSAtIDFd ID09ICdcMCcpOworCisJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAicHJlZml4IFwiJXNcIjsgcGF5 bG9hZCAoJXp1IGJ5dGVzKTogIiwKKwkJCQkJCSBwcmVmaXgsIHhscmVjLT5tZXNzYWdlX3NpemUp OworCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgInJlbGlkICV1IGNtZHR5cGUgJXUiLCB4bHJlYy0+ cmVsaWQsIHhscmVjLT5jbWR0eXBlKTsKKwkJLyogV3JpdGUgbWVzc2FnZSBwYXlsb2FkIGFzIGEg c2VyaWVzIG9mIGhleCBieXRlcyAqLworCQlmb3IgKGludCBjbnQgPSAwOyBjbnQgPCB4bHJlYy0+ bWVzc2FnZV9zaXplOyBjbnQrKykKKwkJeworCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIlcyUw MlgiLCBzZXAsICh1bnNpZ25lZCBjaGFyKSBtZXNzYWdlW2NudF0pOworCQkJc2VwID0gIiAiOwor CQl9CisJfQorfQorCitjb25zdCBjaGFyICoKK2xvZ2ljYWxkZGxtc2dfaWRlbnRpZnkodWludDgg aW5mbykKK3sKKwlpZiAoKGluZm8gJiB+WExSX0lORk9fTUFTSykgPT0gWExPR19MT0dJQ0FMX0RE TF9NRVNTQUdFKQorCQlyZXR1cm4gIkRETCI7CisKKwlyZXR1cm4gTlVMTDsKK30KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9tZXNvbi5idWlsZCBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9ybWdyZGVzYy9tZXNvbi5idWlsZAppbmRleCBmNzZlODdlMmQ3Li42MTRmZDdjMWFj IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvbWVzb24uYnVpbGQKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL21lc29uLmJ1aWxkCkBAIC0xMSw2ICsxMSw3 IEBAIHJtZ3JfZGVzY19zb3VyY2VzID0gZmlsZXMoCiAgICdnaXN0ZGVzYy5jJywKICAgJ2hhc2hk ZXNjLmMnLAogICAnaGVhcGRlc2MuYycsCisgICdsb2dpY2FsZGRsbXNnZGVzYy5jJywKICAgJ2xv Z2ljYWxtc2dkZXNjLmMnLAogICAnbXhhY3RkZXNjLmMnLAogICAnbmJ0ZGVzYy5jJywKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3JtZ3IuYyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy90cmFuc2FtL3JtZ3IuYwppbmRleCA3ZDY3ZWRhNWY3Li42NzhlODFhZTAxIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9ybWdyLmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0vcm1nci5jCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiZm1nci5o IgogI2luY2x1ZGUgImZ1bmNhcGkuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRl ICJyZXBsaWNhdGlvbi9kZGxtZXNzYWdlLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vZGVjb2Rl LmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vbWVzc2FnZS5oIgogI2luY2x1ZGUgInJlcGxpY2F0 aW9uL29yaWdpbi5oIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNh dGlvbi5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCmluZGV4IGM0ODhi NjM3MGIuLmQ4YTU5NDAxNDEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVi bGljYXRpb24uYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKQEAg LTEwMjgsNiArMTAyOCw3IEBAIEdldFB1YmxpY2F0aW9uKE9pZCBwdWJpZCkKIAlwdWItPnB1YmFj dGlvbnMucHVidXBkYXRlID0gcHViZm9ybS0+cHVidXBkYXRlOwogCXB1Yi0+cHViYWN0aW9ucy5w dWJkZWxldGUgPSBwdWJmb3JtLT5wdWJkZWxldGU7CiAJcHViLT5wdWJhY3Rpb25zLnB1YnRydW5j YXRlID0gcHViZm9ybS0+cHVidHJ1bmNhdGU7CisJcHViLT5wdWJhY3Rpb25zLnB1YmRkbF90YWJs ZSA9IHB1YmZvcm0tPnB1YmRkbF90YWJsZTsKIAlwdWItPnB1YnZpYXJvb3QgPSBwdWJmb3JtLT5w dWJ2aWFyb290OwogCiAJUmVsZWFzZVN5c0NhY2hlKHR1cCk7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9hbHRlci5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvYWx0ZXIuYwppbmRl eCBlOTVkYzMxYmRlLi4yMzQzNWM5OTE1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5k cy9hbHRlci5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FsdGVyLmMKQEAgLTMwOCw2ICsz MDgsMjMgQEAgQWx0ZXJPYmplY3RSZW5hbWVfaW50ZXJuYWwoUmVsYXRpb24gcmVsLCBPaWQgb2Jq ZWN0SWQsIGNvbnN0IGNoYXIgKm5ld19uYW1lKQogCQkvKiBXYWtlIHVwIHJlbGF0ZWQgcmVwbGlj YXRpb24gd29ya2VycyB0byBoYW5kbGUgdGhpcyBjaGFuZ2UgcXVpY2tseSAqLwogCQlMb2dpY2Fs UmVwV29ya2Vyc1dha2V1cEF0Q29tbWl0KG9iamVjdElkKTsKIAl9CisJZWxzZSBpZiAoY2xhc3NJ ZCA9PSBFdmVudFRyaWdnZXJSZWxhdGlvbklkKQorCXsKKwkJRm9ybV9wZ19ldmVudF90cmlnZ2Vy IGV2dEZvcm0gPSAoRm9ybV9wZ19ldmVudF90cmlnZ2VyKSBHRVRTVFJVQ1Qob2xkdHVwKTsKKwor CQlpZiAoU2VhcmNoU3lzQ2FjaGVFeGlzdHMxKEVWRU5UVFJJR0dFUk5BTUUsIENTdHJpbmdHZXRE YXR1bShuZXdfbmFtZSkpKQorCQkJcmVwb3J0X25hbWVfY29uZmxpY3QoY2xhc3NJZCwgbmV3X25h bWUpOworCisJCS8qCisJCSAqIEV2ZW50IHRyaWdnZXJzIGNyZWF0ZWQgaW50ZXJuYWxseSBhcmUg bm90IGFsbG93ZWQgdG8gYmUgYWx0ZXJlZCBieQorCQkgKiB1c2VyLgorCQkgKi8KKwkJaWYgKGV2 dEZvcm0tPmV2dGlzaW50ZXJuYWwpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShF UlJDT0RFX0lOU1VGRklDSUVOVF9QUklWSUxFR0UpLAorCQkJCQkgZXJybXNnKCJwZXJtaXNzaW9u IGRlbmllZDogXCIlc1wiIGlzIGEgc3lzdGVtIGV2ZW50IHRyaWdnZXIiLAorCQkJCQkJCU5hbWVT dHIoZXZ0Rm9ybS0+ZXZ0bmFtZSkpKSk7CisJfQogCWVsc2UgaWYgKG5hbWVDYWNoZUlkID49IDAp CiAJewogCQlpZiAoT2lkSXNWYWxpZChuYW1lc3BhY2VJZCkpCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9kZGxkZXBhcnNlLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9kZGxkZXBh cnNlLmMKaW5kZXggNjVjMjU1MGFlNS4uNjZmYjIyZDdiMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvZGRsZGVwYXJzZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2RkbGRl cGFyc2UuYwpAQCAtNTAsMTEgKzUwLDE0IEBACiAjaW5jbHVkZSAiY29tbWFuZHMvdGFibGVzcGFj ZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3RhYmxlY21kcy5oIgogI2luY2x1ZGUgImZ1bmNhcGku aCIKKyNpbmNsdWRlICJvcHRpbWl6ZXIvb3B0aW1pemVyLmgiCiAjaW5jbHVkZSAicGFydGl0aW9u aW5nL3BhcnRib3VuZHMuaCIKKyNpbmNsdWRlICJyZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmgiCiAj aW5jbHVkZSAidGNvcC9kZGxkZXBhcnNlLmgiCiAjaW5jbHVkZSAidGNvcC91dGlsaXR5LmgiCiAj aW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9mbWdyb2lkcy5oIgor I2luY2x1ZGUgInV0aWxzL2d1Yy5oIgogI2luY2x1ZGUgInV0aWxzL2pzb25iLmgiCiAjaW5jbHVk ZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCkBAIC02NCw2ICs2 NywyNiBAQAogLyogRXN0aW1hdGVkIGxlbmd0aCBvZiB0aGUgZ2VuZXJhdGVkIGpzb25iIHN0cmlu ZyAqLwogI2RlZmluZSBKU09OQl9FU1RJTUFURURfTEVOIDEyOAogCisvKgorICogTWFyayB0aGUg bWF4X3ZvbGF0aWxpdHkgZmxhZyBmb3IgYW4gZXhwcmVzc2lvbiBpbiB0aGUgY29tbWFuZC4KKyAq Lworc3RhdGljIHZvaWQKK21hcmtfZnVuY3Rpb25fdm9sYXRpbGUoZGRsX2RlcGFyc2VfY29udGV4 dCAqIGNvbnRleHQsIE5vZGUgKmV4cHIpCit7CisJaWYgKGNvbnRleHQtPm1heF92b2xhdGlsaXR5 ID09IFBST1ZPTEFUSUxFX1ZPTEFUSUxFKQorCQlyZXR1cm47CisKKwlpZiAoY29udGFpbl92b2xh dGlsZV9mdW5jdGlvbnMoZXhwcikpCisJeworCQljb250ZXh0LT5tYXhfdm9sYXRpbGl0eSA9IFBS T1ZPTEFUSUxFX1ZPTEFUSUxFOworCQlyZXR1cm47CisJfQorCisJaWYgKGNvbnRleHQtPm1heF92 b2xhdGlsaXR5ID09IFBST1ZPTEFUSUxFX0lNTVVUQUJMRSAmJgorCQljb250YWluX211dGFibGVf ZnVuY3Rpb25zKGV4cHIpKQorCQljb250ZXh0LT5tYXhfdm9sYXRpbGl0eSA9IFBST1ZPTEFUSUxF X1NUQUJMRTsKK30KKwogLyoKICAqIFJldHVybiB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9m IHRoZSBnaXZlbiBSRUxQRVJTSVNURU5DRSB2YWx1ZS4KICAqLwpAQCAtODUsNiArMTA4LDQwIEBA IGdldF9wZXJzaXN0ZW5jZV9zdHIoY2hhciBwZXJzaXN0ZW5jZSkKIAl9CiB9CiAKKy8qCisgKiBN YXJrIHRoZSBtYXhfdm9sYXRpbGl0eSBmbGFnIGZvciBhbiBleHByZXNzaW9uIGluIHRoZSBjb25z dHJhaW50CisgKi8KK3N0YXRpYyB2b2lkCittYXJrX2NvbnN0cmFpbnRfZXhwcl92b2xhdGlsZShk ZGxfZGVwYXJzZV9jb250ZXh0ICogY29udGV4dCwgT2lkIGNvbnN0ck9pZCkKK3sKKwlIZWFwVHVw bGUJdHVwOworCisJdHVwID0gU2VhcmNoU3lzQ2FjaGUxKENPTlNUUk9JRCwgT2JqZWN0SWRHZXRE YXR1bShjb25zdHJPaWQpKTsKKworCWlmIChIZWFwVHVwbGVJc1ZhbGlkKHR1cCkpCisJeworCQli b29sCQlpc251bGw7CisJCU5vZGUJICAgKmV4cHIgPSBOVUxMOworCQljaGFyCSAgICpjb25iaW47 CisJCURhdHVtCQl2YWw7CisKKwkJLyogRmV0Y2ggY29uc3RyYWludCBleHByZXNzaW9uIGluIHBh cnNldHJlZSBmb3JtICovCisJCXZhbCA9IFN5c0NhY2hlR2V0QXR0cihDT05TVFJPSUQsIHR1cCwK KwkJCQkJCQkgIEFudW1fcGdfY29uc3RyYWludF9jb25iaW4sCisJCQkJCQkJICAmaXNudWxsKTsK KworCQlpZiAoIWlzbnVsbCkKKwkJeworCQkJY29uYmluID0gVGV4dERhdHVtR2V0Q1N0cmluZyh2 YWwpOworCQkJZXhwciA9IHN0cmluZ1RvTm9kZShjb25iaW4pOworCQkJbWFya19mdW5jdGlvbl92 b2xhdGlsZShjb250ZXh0LCBleHByKTsKKwkJfQorCisJCVJlbGVhc2VTeXNDYWNoZSh0dXApOwor CX0KK30KKworCiAvKgogICogSW5zZXJ0IEpzb25iVmFsdWUga2V5IHRvIHRoZSBvdXRwdXQgcGFy c2Ugc3RhdGUuCiAgKi8KQEAgLTczMSw3ICs3ODgsNyBAQCBkZXBhcnNlX0NvbHVtbklkZW50aXR5 KEpzb25iUGFyc2VTdGF0ZSAqc3RhdGUsIGNoYXIgKnBhcmVudEtleSwKIHN0YXRpYyB2b2lkCiBk ZXBhcnNlX0NvbHVtbkRlZihKc29uYlBhcnNlU3RhdGUgKnN0YXRlLCBSZWxhdGlvbiByZWxhdGlv biwKIAkJCQkgIExpc3QgKmRwY29udGV4dCwgYm9vbCBjb21wb3NpdGUsIENvbHVtbkRlZiAqY29s ZGVmLAotCQkJCSAgYm9vbCBpc19hbHRlcikKKwkJCQkgIGJvb2wgaXNfYWx0ZXIsIE5vZGUgKipl eHByKQogewogCU9pZAkJCXJlbGlkID0gUmVsYXRpb25HZXRSZWxpZChyZWxhdGlvbik7CiAJSGVh cFR1cGxlCWF0dHJUdXA7CkBAIC04NTcsNyArOTE0LDcgQEAgZGVwYXJzZV9Db2x1bW5EZWYoSnNv bmJQYXJzZVN0YXRlICpzdGF0ZSwgUmVsYXRpb24gcmVsYXRpb24sCiAJCQlhcHBlbmRTdHJpbmdJ bmZvU3RyaW5nKCZmbXRTdHIsICIgJXtkZWZhdWx0fXMiKTsKIAogCQkJZGVmc3RyID0gcmVsYXRp b25fZ2V0X2NvbHVtbl9kZWZhdWx0KHJlbGF0aW9uLCBhdHRyRm9ybS0+YXR0bnVtLAotCQkJCQkJ CQkJCQkJIGRwY29udGV4dCk7CisJCQkJCQkJCQkJCQkgZHBjb250ZXh0LCBleHByKTsKIAogCQkJ aW5zZXJ0X2pzb25iX2tleShzdGF0ZSwgImRlZmF1bHQiKTsKIAkJCXB1c2hKc29uYlZhbHVlKCZz dGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CkBAIC04OTcsNyArOTU0LDcgQEAgZGVwYXJz ZV9Db2x1bW5EZWYoSnNvbmJQYXJzZVN0YXRlICpzdGF0ZSwgUmVsYXRpb24gcmVsYXRpb24sCiAK IAkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmZtdFN0ciwgIiAle2dlbmVyYXRlZF9jb2x1bW59 cyIpOwogCQkJZGVmc3RyID0gcmVsYXRpb25fZ2V0X2NvbHVtbl9kZWZhdWx0KHJlbGF0aW9uLCBh dHRyRm9ybS0+YXR0bnVtLAotCQkJCQkJCQkJCQkJIGRwY29udGV4dCk7CisJCQkJCQkJCQkJCQkg ZHBjb250ZXh0LCBleHByKTsKIAogCQkJaW5zZXJ0X2pzb25iX2tleShzdGF0ZSwgImdlbmVyYXRl ZF9jb2x1bW4iKTsKIAkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwg TlVMTCk7CkBAIC0xMDM0LDcgKzEwOTEsNyBAQCBkZXBhcnNlX0NvbHVtbkRlZl90eXBlZChKc29u YlBhcnNlU3RhdGUgKnN0YXRlLCBSZWxhdGlvbiByZWxhdGlvbiwKIAogCQlhcHBlbmRTdHJpbmdJ bmZvU3RyaW5nKCZmbXRTdHIsICIgJXtkZWZhdWx0fXMiKTsKIAkJZGVmc3RyID0gcmVsYXRpb25f Z2V0X2NvbHVtbl9kZWZhdWx0KHJlbGF0aW9uLCBhdHRyRm9ybS0+YXR0bnVtLAotCQkJCQkJCQkJ CQkgZHBjb250ZXh0KTsKKwkJCQkJCQkJCQkJIGRwY29udGV4dCwgTlVMTCk7CiAKIAkJaW5zZXJ0 X2pzb25iX2tleShzdGF0ZSwgImRlZmF1bHQiKTsKIAkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBX SkJfQkVHSU5fT0JKRUNULCBOVUxMKTsKQEAgLTEwODUsNyArMTE0Miw4IEBAIGRlcGFyc2VfVGFi bGVFbGVtcyhKc29uYlBhcnNlU3RhdGUgKnN0YXRlLCBSZWxhdGlvbiByZWxhdGlvbiwKIAkJCQkJ CQkJCQkJCShDb2x1bW5EZWYgKikgZWx0KTsKIAkJCQkJZWxzZQogCQkJCQkJZGVwYXJzZV9Db2x1 bW5EZWYoc3RhdGUsIHJlbGF0aW9uLCBkcGNvbnRleHQsCi0JCQkJCQkJCQkJICBjb21wb3NpdGUs IChDb2x1bW5EZWYgKikgZWx0LCBmYWxzZSk7CisJCQkJCQkJCQkJICBjb21wb3NpdGUsIChDb2x1 bW5EZWYgKikgZWx0LAorCQkJCQkJCQkJCSAgZmFsc2UsIE5VTEwpOwogCQkJCX0KIAkJCQlicmVh azsKIAkJCWNhc2UgVF9Db25zdHJhaW50OgpAQCAtMTcxOSwxMSArMTc3NywxMiBAQCBkZXBhcnNl X2Ryb3BfdGFibGUoY29uc3QgY2hhciAqb2JqaWRlbnRpdHksIE5vZGUgKnBhcnNldHJlZSkKICAq IEFMVEVSIFRBQkxFICV7b25seX1zICV7aWRlbnRpdHl9RCAle3N1YmNtZHM6LCB9cwogICovCiBz dGF0aWMgSnNvbmIgKgotZGVwYXJzZV9BbHRlclRhYmxlU3RtdChDb2xsZWN0ZWRDb21tYW5kICpj bWQpCitkZXBhcnNlX0FsdGVyVGFibGVTdG10KENvbGxlY3RlZENvbW1hbmQgKmNtZCwgZGRsX2Rl cGFyc2VfY29udGV4dCAqIGNvbnRleHQpCiB7CiAJTGlzdAkgICAqZHBjb250ZXh0OwogCVJlbGF0 aW9uCXJlbDsKIAlMaXN0Q2VsbCAgICpjZWxsOworCU5vZGUJICAgKmV4cHIgPSBOVUxMOwogCU9p ZAkJCXJlbElkID0gY21kLT5kLmFsdGVyVGFibGUub2JqZWN0SWQ7CiAJQWx0ZXJUYWJsZVN0bXQg KnN0bXQgPSBOVUxMOwogCVN0cmluZ0luZm9EYXRhIGZtdFN0cjsKQEAgLTE4MzUsNyArMTg5NCw5 IEBAIGRlcGFyc2VfQWx0ZXJUYWJsZVN0bXQoQ29sbGVjdGVkQ29tbWFuZCAqY21kKQogCiAJCQkJ CWRlcGFyc2VfQ29sdW1uRGVmKHN0YXRlLCByZWwsIGRwY29udGV4dCwKIAkJCQkJCQkJCSAgZmFs c2UsIChDb2x1bW5EZWYgKikgc3ViY21kLT5kZWYsCi0JCQkJCQkJCQkgIHRydWUpOworCQkJCQkJ CQkJICB0cnVlLCAmZXhwcik7CisKKwkJCQkJbWFya19mdW5jdGlvbl92b2xhdGlsZShjb250ZXh0 LCBleHByKTsKIAogCQkJCQkvKiBXZSBoYXZlIGZ1bGwgZm10IGJ5IG5vdywgc28gYWRkIGpzb25i IGVsZW1lbnQgZm9yIHRoYXQgKi8KIAkJCQkJbmV3X2pzb25iX1ZBKHN0YXRlLCAxLCAiZm10Iiwg amJ2U3RyaW5nLCBmbXRTdWIuZGF0YSk7CkBAIC0xOTM4LDcgKzE5OTksNyBAQCBkZXBhcnNlX0Fs dGVyVGFibGVTdG10KENvbGxlY3RlZENvbW1hbmQgKmNtZCkKIAkJCQkJCQkJICJjb2x1bW4iLCBq YnZTdHJpbmcsIHN1YmNtZC0+bmFtZSwKIAkJCQkJCQkJICJkZWZpbml0aW9uIiwgamJ2U3RyaW5n LAogCQkJCQkJCQkgcmVsYXRpb25fZ2V0X2NvbHVtbl9kZWZhdWx0KHJlbCwgYXR0bm8sCi0JCQkJ CQkJCQkJCQkJCQkgZHBjb250ZXh0X3JlbCkpOworCQkJCQkJCQkJCQkJCQkJIGRwY29udGV4dF9y ZWwsIE5VTEwpKTsKIAogCQkJCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9FTkRfT0JKRUNU LCBOVUxMKTsKIAkJCQkJUmVsZWFzZVN5c0NhY2hlKGF0dHJ0dXApOwpAQCAtMjE3NCwxMiArMjIz NSwxNyBAQCBkZXBhcnNlX0FsdGVyVGFibGVTdG10KENvbGxlY3RlZENvbW1hbmQgKmNtZCkKIAkJ CQl7CiAJCQkJCS8qIFhYWCBuZWVkIHRvIHNldCB0aGUgInJlY3Vyc2UiIGJpdCBzb21ld2hlcmU/ ICovCiAJCQkJCU9pZAkJCWNvbnN0ck9pZCA9IHN1Yi0+YWRkcmVzcy5vYmplY3RJZDsKKwkJCQkJ Q29uc3RyYWludCAqY29uc3RyOwogCiAJCQkJCS8qIFNraXAgYWRkaW5nIGNvbnN0cmFpbnQgZm9y IGluaGVyaXRzIHRhYmxlIHN1YiBjb21tYW5kICovCiAJCQkJCWlmICghT2lkSXNWYWxpZChjb25z dHJPaWQpKQogCQkJCQkJY29udGludWU7CiAKIAkJCQkJQXNzZXJ0KElzQShzdWJjbWQtPmRlZiwg Q29uc3RyYWludCkpOworCQkJCQljb25zdHIgPSBjYXN0Tm9kZShDb25zdHJhaW50LCBzdWJjbWQt PmRlZik7CisKKwkJCQkJaWYgKCFjb25zdHItPnNraXBfdmFsaWRhdGlvbikKKwkJCQkJCW1hcmtf Y29uc3RyYWludF9leHByX3ZvbGF0aWxlKGNvbnRleHQsIGNvbnN0ck9pZCk7CiAKIAkJCQkJLyoK IAkJCQkJICogU3ludGF4OiBBREQgQ09OU1RSQUlOVCAle25hbWV9SSAle2RlZmluaXRpb259cwpA QCAtMjMzNCw2ICsyNDAwLDggQEAgZGVwYXJzZV9BbHRlclRhYmxlU3RtdChDb2xsZWN0ZWRDb21t YW5kICpjbWQpCiAJCQkJCQkJCQkgImV4cHJlc3Npb24iLCBqYnZTdHJpbmcsCiAJCQkJCQkJCQkg c3ViLT51c2luZ2V4cHIpOwogCQkJCQkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfRU5EX09C SkVDVCwgTlVMTCk7CisJCQkJCQltYXJrX2Z1bmN0aW9uX3ZvbGF0aWxlKGNvbnRleHQsIGRlZi0+ Y29va2VkX2RlZmF1bHQpOworCiAJCQkJCX0KIAogCQkJCQkvKiBXZSBoYXZlIGZ1bGwgZm10IGJ5 IG5vdywgc28gYWRkIGpzb25iIGVsZW1lbnQgZm9yIHRoYXQgKi8KQEAgLTM0MjEsNyArMzQ4OSw3 IEBAIGRlcGFyc2Vfc2ltcGxlX2NvbW1hbmQoQ29sbGVjdGVkQ29tbWFuZCAqY21kKQogICogV29y a2hvcnNlIHRvIGRlcGFyc2UgYSBDb2xsZWN0ZWRDb21tYW5kLgogICovCiBjaGFyICoKLWRlcGFy c2VfdXRpbGl0eV9jb21tYW5kKENvbGxlY3RlZENvbW1hbmQgKmNtZCkKK2RlcGFyc2VfdXRpbGl0 eV9jb21tYW5kKENvbGxlY3RlZENvbW1hbmQgKmNtZCwgZGRsX2RlcGFyc2VfY29udGV4dCAqIGNv bnRleHQpCiB7CiAJT3ZlcnJpZGVTZWFyY2hQYXRoICpvdmVycmlkZVBhdGg7CiAJTWVtb3J5Q29u dGV4dCBvbGRjeHQ7CkBAIC0zNDYzLDcgKzM1MzEsNyBAQCBkZXBhcnNlX3V0aWxpdHlfY29tbWFu ZChDb2xsZWN0ZWRDb21tYW5kICpjbWQpCiAJCQlqc29uYiA9IGRlcGFyc2Vfc2ltcGxlX2NvbW1h bmQoY21kKTsKIAkJCWJyZWFrOwogCQljYXNlIFNDVF9BbHRlclRhYmxlOgotCQkJanNvbmIgPSBk ZXBhcnNlX0FsdGVyVGFibGVTdG10KGNtZCk7CisJCQlqc29uYiA9IGRlcGFyc2VfQWx0ZXJUYWJs ZVN0bXQoY21kLCBjb250ZXh0KTsKIAkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJP UiwgInVuZXhwZWN0ZWQgZGVwYXJzZSBub2RlIHR5cGUgJWQiLCBjbWQtPnR5cGUpOwpAQCAtMzQ5 NSw4ICszNTYzLDE1IEBAIGRkbF9kZXBhcnNlX3RvX2pzb24oUEdfRlVOQ1RJT05fQVJHUykKIHsK IAlDb2xsZWN0ZWRDb21tYW5kICpjbWQgPSAoQ29sbGVjdGVkQ29tbWFuZCAqKSBQR19HRVRBUkdf UE9JTlRFUigwKTsKIAljaGFyCSAgICpjb21tYW5kOworCWRkbF9kZXBhcnNlX2NvbnRleHQgY29u dGV4dDsKKworCS8qCisJICogSW5pdGlhbGl6ZSB0aGUgbWF4X3ZvbGF0aWxpdHkgZmxhZyB0byBQ Uk9WT0xBVElMRV9JTU1VVEFCTEUsIHdoaWNoIGlzCisJICogdGhlIG1pbmltdW0gdm9sYXRpbGl0 eSBsZXZlbC4KKwkgKi8KKwljb250ZXh0Lm1heF92b2xhdGlsaXR5ID0gUFJPVk9MQVRJTEVfSU1N VVRBQkxFOwogCi0JY29tbWFuZCA9IGRlcGFyc2VfdXRpbGl0eV9jb21tYW5kKGNtZCk7CisJY29t bWFuZCA9IGRlcGFyc2VfdXRpbGl0eV9jb21tYW5kKGNtZCwgJmNvbnRleHQpOwogCiAJaWYgKGNv bW1hbmQpCiAJCVBHX1JFVFVSTl9URVhUX1AoY3N0cmluZ190b190ZXh0KGNvbW1hbmQpKTsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuYyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuYwppbmRleCA4YzJhNDk0ZGNiLi4xNWUyNDNjYTdl IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMKKysrIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5jCkBAIC01OCw3ICs1OCw3IEBAIHN0 YXRpYyB2b2lkIEFsdGVyRXZlbnRUcmlnZ2VyT3duZXJfaW50ZXJuYWwoUmVsYXRpb24gcmVsLAog c3RhdGljIHZvaWQgZXJyb3JfZHVwbGljYXRlX2ZpbHRlcl92YXJpYWJsZShjb25zdCBjaGFyICpk ZWZuYW1lKTsKIHN0YXRpYyBEYXR1bSBmaWx0ZXJfbGlzdF90b19hcnJheShMaXN0ICpmaWx0ZXJs aXN0KTsKIHN0YXRpYyBPaWQJaW5zZXJ0X2V2ZW50X3RyaWdnZXJfdHVwbGUoY29uc3QgY2hhciAq dHJpZ25hbWUsIGNvbnN0IGNoYXIgKmV2ZW50bmFtZSwKLQkJCQkJCQkJCSAgIE9pZCBldnRPd25l ciwgT2lkIGZ1bmNvaWQsIExpc3QgKnRhZ2xpc3QpOworCQkJCQkJCQkJICAgT2lkIGV2dE93bmVy LCBPaWQgZnVuY29pZCwgTGlzdCAqdGFnbGlzdCwgYm9vbCBpc19pbnRlcm5hbCk7CiBzdGF0aWMg dm9pZCB2YWxpZGF0ZV9kZGxfdGFncyhjb25zdCBjaGFyICpmaWx0ZXJ2YXIsIExpc3QgKnRhZ2xp c3QpOwogc3RhdGljIHZvaWQgdmFsaWRhdGVfdGFibGVfcmV3cml0ZV90YWdzKGNvbnN0IGNoYXIg KmZpbHRlcnZhciwgTGlzdCAqdGFnbGlzdCk7CiBzdGF0aWMgdm9pZCBFdmVudFRyaWdnZXJJbnZv a2UoTGlzdCAqZm5fb2lkX2xpc3QsIEV2ZW50VHJpZ2dlckRhdGEgKnRyaWdkYXRhKTsKQEAgLTY5 LDcgKzY5LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgKnN0cmluZ2lmeV9hZGVmcHJpdnNfb2JqdHlw ZShPYmplY3RUeXBlIG9ianR5cGUpOwogICogQ3JlYXRlIGFuIGV2ZW50IHRyaWdnZXIuCiAgKi8K IE9pZAotQ3JlYXRlRXZlbnRUcmlnZ2VyKENyZWF0ZUV2ZW50VHJpZ1N0bXQgKnN0bXQpCitDcmVh dGVFdmVudFRyaWdnZXIoQ3JlYXRlRXZlbnRUcmlnU3RtdCAqc3RtdCwgYm9vbCBpc19pbnRlcm5h bCkKIHsKIAlIZWFwVHVwbGUJdHVwbGU7CiAJT2lkCQkJZnVuY29pZDsKQEAgLTkxLDEwICs5MSwx MCBAQCBDcmVhdGVFdmVudFRyaWdnZXIoQ3JlYXRlRXZlbnRUcmlnU3RtdCAqc3RtdCkKIAkJCQkg ZXJyaGludCgiTXVzdCBiZSBzdXBlcnVzZXIgdG8gY3JlYXRlIGFuIGV2ZW50IHRyaWdnZXIuIikp KTsKIAogCS8qIFZhbGlkYXRlIGV2ZW50IG5hbWUuICovCi0JaWYgKHN0cmNtcChzdG10LT5ldmVu dG5hbWUsICJkZGxfY29tbWFuZF9zdGFydCIpICE9IDAgJiYKLQkJc3RyY21wKHN0bXQtPmV2ZW50 bmFtZSwgImRkbF9jb21tYW5kX2VuZCIpICE9IDAgJiYKLQkJc3RyY21wKHN0bXQtPmV2ZW50bmFt ZSwgInNxbF9kcm9wIikgIT0gMCAmJgotCQlzdHJjbXAoc3RtdC0+ZXZlbnRuYW1lLCAidGFibGVf cmV3cml0ZSIpICE9IDApCisJaWYgKHN0cmNtcChzdG10LT5ldmVudG5hbWUsIFRSSUdfRERMX0NN RF9TVEFSVCkgIT0gMCAmJgorCQlzdHJjbXAoc3RtdC0+ZXZlbnRuYW1lLCBUUklHX0RETF9DTURf RU5EKSAhPSAwICYmCisJCXN0cmNtcChzdG10LT5ldmVudG5hbWUsIFRSSUdfVEJMX0NNRF9EUk9Q KSAhPSAwICYmCisJCXN0cmNtcChzdG10LT5ldmVudG5hbWUsIFRSSUdfVEJMX1JFV1JJVEUpICE9 IDApCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1Ip LAogCQkJCSBlcnJtc2coInVucmVjb2duaXplZCBldmVudCBuYW1lIFwiJXNcIiIsCkBAIC0xMTgs MTIgKzExOCwxMiBAQCBDcmVhdGVFdmVudFRyaWdnZXIoQ3JlYXRlRXZlbnRUcmlnU3RtdCAqc3Rt dCkKIAl9CiAKIAkvKiBWYWxpZGF0ZSB0YWcgbGlzdCwgaWYgYW55LiAqLwotCWlmICgoc3RyY21w KHN0bXQtPmV2ZW50bmFtZSwgImRkbF9jb21tYW5kX3N0YXJ0IikgPT0gMCB8fAotCQkgc3RyY21w KHN0bXQtPmV2ZW50bmFtZSwgImRkbF9jb21tYW5kX2VuZCIpID09IDAgfHwKLQkJIHN0cmNtcChz dG10LT5ldmVudG5hbWUsICJzcWxfZHJvcCIpID09IDApCisJaWYgKChzdHJjbXAoc3RtdC0+ZXZl bnRuYW1lLCBUUklHX0RETF9DTURfU1RBUlQpID09IDAgfHwKKwkJIHN0cmNtcChzdG10LT5ldmVu dG5hbWUsIFRSSUdfRERMX0NNRF9FTkQpID09IDAgfHwKKwkJIHN0cmNtcChzdG10LT5ldmVudG5h bWUsIFRSSUdfVEJMX0NNRF9EUk9QKSA9PSAwKQogCQkmJiB0YWdzICE9IE5VTEwpCiAJCXZhbGlk YXRlX2RkbF90YWdzKCJ0YWciLCB0YWdzKTsKLQllbHNlIGlmIChzdHJjbXAoc3RtdC0+ZXZlbnRu YW1lLCAidGFibGVfcmV3cml0ZSIpID09IDAKKwllbHNlIGlmIChzdHJjbXAoc3RtdC0+ZXZlbnRu YW1lLCBUUklHX1RCTF9SRVdSSVRFKSA9PSAwCiAJCQkgJiYgdGFncyAhPSBOVUxMKQogCQl2YWxp ZGF0ZV90YWJsZV9yZXdyaXRlX3RhZ3MoInRhZyIsIHRhZ3MpOwogCkBAIC0xNDksNyArMTQ5LDcg QEAgQ3JlYXRlRXZlbnRUcmlnZ2VyKENyZWF0ZUV2ZW50VHJpZ1N0bXQgKnN0bXQpCiAKIAkvKiBJ bnNlcnQgY2F0YWxvZyBlbnRyaWVzLiAqLwogCXJldHVybiBpbnNlcnRfZXZlbnRfdHJpZ2dlcl90 dXBsZShzdG10LT50cmlnbmFtZSwgc3RtdC0+ZXZlbnRuYW1lLAotCQkJCQkJCQkJICBldnRvd25l ciwgZnVuY29pZCwgdGFncyk7CisJCQkJCQkJCQkgIGV2dG93bmVyLCBmdW5jb2lkLCB0YWdzLCBp c19pbnRlcm5hbCk7CiB9CiAKIC8qCkBAIC0yMTgsNyArMjE4LDcgQEAgZXJyb3JfZHVwbGljYXRl X2ZpbHRlcl92YXJpYWJsZShjb25zdCBjaGFyICpkZWZuYW1lKQogICovCiBzdGF0aWMgT2lkCiBp bnNlcnRfZXZlbnRfdHJpZ2dlcl90dXBsZShjb25zdCBjaGFyICp0cmlnbmFtZSwgY29uc3QgY2hh ciAqZXZlbnRuYW1lLCBPaWQgZXZ0T3duZXIsCi0JCQkJCQkgICBPaWQgZnVuY29pZCwgTGlzdCAq dGFnbGlzdCkKKwkJCQkJCSAgIE9pZCBmdW5jb2lkLCBMaXN0ICp0YWdsaXN0LCBib29sIGlzX2lu dGVybmFsKQogewogCVJlbGF0aW9uCXRncmVsOwogCU9pZAkJCXRyaWdvaWQ7CkBAIC0yNDYsNiAr MjQ2LDcgQEAgaW5zZXJ0X2V2ZW50X3RyaWdnZXJfdHVwbGUoY29uc3QgY2hhciAqdHJpZ25hbWUs IGNvbnN0IGNoYXIgKmV2ZW50bmFtZSwgT2lkIGV2dE8KIAl2YWx1ZXNbQW51bV9wZ19ldmVudF90 cmlnZ2VyX2V2dGZvaWQgLSAxXSA9IE9iamVjdElkR2V0RGF0dW0oZnVuY29pZCk7CiAJdmFsdWVz W0FudW1fcGdfZXZlbnRfdHJpZ2dlcl9ldnRlbmFibGVkIC0gMV0gPQogCQlDaGFyR2V0RGF0dW0o VFJJR0dFUl9GSVJFU19PTl9PUklHSU4pOworCXZhbHVlc1tBbnVtX3BnX2V2ZW50X3RyaWdnZXJf ZXZ0aXNpbnRlcm5hbCAtIDFdID0gQm9vbEdldERhdHVtKGlzX2ludGVybmFsKTsKIAlpZiAodGFn bGlzdCA9PSBOSUwpCiAJCW51bGxzW0FudW1fcGdfZXZlbnRfdHJpZ2dlcl9ldnR0YWdzIC0gMV0g PSB0cnVlOwogCWVsc2UKQEAgLTUyNCw2ICs1MjUsNyBAQCBFdmVudFRyaWdnZXJDb21tb25TZXR1 cChOb2RlICpwYXJzZXRyZWUsCiAJTGlzdAkgICAqY2FjaGVsaXN0OwogCUxpc3RDZWxsICAgKmxj OwogCUxpc3QJICAgKnJ1bmxpc3QgPSBOSUw7CisJaW50CQkJcHViX2RlcGFyc2VfZnVuY19jbnQg PSAwOwogCiAJLyoKIAkgKiBXZSB3YW50IHRoZSBsaXN0IG9mIGNvbW1hbmQgdGFncyBmb3Igd2hp Y2ggdGhpcyBwcm9jZWR1cmUgaXMgYWN0dWFsbHkKQEAgLTU3Myw2ICs1NzUsMTIgQEAgRXZlbnRU cmlnZ2VyQ29tbW9uU2V0dXAoTm9kZSAqcGFyc2V0cmVlLAogCSAqIG9uY2Ugd2UgZG8gYW55dGhp bmcgYXQgYWxsIHRoYXQgdG91Y2hlcyB0aGUgY2F0YWxvZ3MsIGFuIGludmFsaWRhdGlvbgogCSAq IG1pZ2h0IGxlYXZlIGNhY2hlbGlzdCBwb2ludGluZyBhdCBnYXJiYWdlLCBzbyB3ZSBtdXN0IGRv IHRoaXMgYmVmb3JlIHdlCiAJICogY2FuIGRvIG11Y2ggZWxzZS4KKwkgKgorCSAqIFNwZWNpYWwg aGFuZGxpbmcgZm9yIGV2ZW50IHRyaWdnZXJzIGNyZWF0ZWQgYXMgcGFydCBvZiBwdWJsaWNhdGlv bnMuCisJICogSWYgdGhlcmUgYXJlIG11bHRpcGxlIHB1YmxpY2F0aW9ucyB3aGljaCBwdWJsaXNo IGRkbHMsIG9ubHkgb25lIHNldCBvZiB0aGUKKwkgKiBldmVudCB0cmlnZ2VyIGZ1bmN0aW9ucyBu ZWVkIHRvIGJlIGludm9rZWQuIFRoZSBkZGwgZGVwYXJzZSBldmVudCB0cmlnZ2VycworCSAqIHdy aXRlIHRvIFdBTCwgc28gbm8gbmVlZCB0byBkdXBsaWNhdGUgaXQgYXMgYWxsIHdhbHNlbmRlcnMg d2lsbCByZWFkIHRoZSBzYW1lCisJICogV0FMLgogCSAqLwogCWZvcmVhY2gobGMsIGNhY2hlbGlz dCkKIAl7CkBAIC01ODAsOCArNTg4LDI2IEBAIEV2ZW50VHJpZ2dlckNvbW1vblNldHVwKE5vZGUg KnBhcnNldHJlZSwKIAogCQlpZiAoZmlsdGVyX2V2ZW50X3RyaWdnZXIodGFnLCBpdGVtKSkKIAkJ ewotCQkJLyogV2UgbXVzdCBwbGFuIHRvIGZpcmUgdGhpcyB0cmlnZ2VyLiAqLwotCQkJcnVubGlz dCA9IGxhcHBlbmRfb2lkKHJ1bmxpc3QsIGl0ZW0tPmZub2lkKTsKKwkJCXN0YXRpYyBjb25zdCBj aGFyICp0cmlnZ2VyX2Z1bmNfcHJlZml4ID0gInB1YmxpY2F0aW9uX2RlcGFyc2VfJXMiOworCQkJ Y2hhcgkJdHJpZ2dlcl9mdW5jX25hbWVbTkFNRURBVEFMRU5dOworCQkJT2lkCQkJcHViX2Z1bmNv aWQ7CisJCQlMaXN0IAkJKnB1Yl9mdW5jbmFtZTsKKworCQkJLyogR2V0IGZ1bmN0aW9uIG9pZCBv ZiB0aGUgcHVibGljYXRpb24ncyBkZGwgZGVwYXJzZSBldmVudCB0cmlnZ2VyICovCisJCQlzbnBy aW50Zih0cmlnZ2VyX2Z1bmNfbmFtZSwgc2l6ZW9mKHRyaWdnZXJfZnVuY19uYW1lKSwgdHJpZ2dl cl9mdW5jX3ByZWZpeCwKKwkJCQkJIGV2ZW50c3RyKTsKKwkJCXB1Yl9mdW5jbmFtZSA9IFN5c3Rl bUZ1bmNOYW1lKHRyaWdnZXJfZnVuY19uYW1lKTsKKwkJCXB1Yl9mdW5jb2lkID0gTG9va3VwRnVu Y05hbWUocHViX2Z1bmNuYW1lLCAwLCBOVUxMLCB0cnVlKTsKKworCQkJaWYgKGl0ZW0tPmZub2lk ID09IHB1Yl9mdW5jb2lkKQorCQkJeworCQkJCS8qIE9ubHkgdGhlIGZpcnN0IGRkbCBkZXBhcnNl IGV2ZW50IHRyaWdnZXIgbmVlZHMgdG8gYmUgaW52b2tlZCAqLworCQkJCWlmIChwdWJfZGVwYXJz ZV9mdW5jX2NudCsrID09IDApCisJCQkJCXJ1bmxpc3QgPSBsYXBwZW5kX29pZChydW5saXN0LCBp dGVtLT5mbm9pZCk7CisJCQl9CisJCQllbHNlCisJCQkJcnVubGlzdCA9IGxhcHBlbmRfb2lkKHJ1 bmxpc3QsIGl0ZW0tPmZub2lkKTsKKwogCQl9CiAJfQogCkBAIC02MjcsNyArNjUzLDcgQEAgRXZl bnRUcmlnZ2VyRERMQ29tbWFuZFN0YXJ0KE5vZGUgKnBhcnNldHJlZSkKIAogCXJ1bmxpc3QgPSBF dmVudFRyaWdnZXJDb21tb25TZXR1cChwYXJzZXRyZWUsCiAJCQkJCQkJCQkgIEVWVF9ERExDb21t YW5kU3RhcnQsCi0JCQkJCQkJCQkgICJkZGxfY29tbWFuZF9zdGFydCIsCisJCQkJCQkJCQkgIFRS SUdfRERMX0NNRF9TVEFSVCwKIAkJCQkJCQkJCSAgJnRyaWdkYXRhKTsKIAlpZiAocnVubGlzdCA9 PSBOSUwpCiAJCXJldHVybjsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1Ymxp Y2F0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKaW5k ZXggZjRiYTU3MjY5Ny4uNzRhM2NkOTQ5YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvcHVibGljYXRpb25jbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRp b25jbWRzLmMKQEAgLTM4LDEwICszOCwxMiBAQAogI2luY2x1ZGUgImNvbW1hbmRzL3B1YmxpY2F0 aW9uY21kcy5oIgogI2luY2x1ZGUgImZ1bmNhcGkuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIK KyNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKICNpbmNsdWRlICJub2Rlcy9ub2RlRnVuY3Mu aCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfY2xhdXNlLmgiCiAjaW5jbHVkZSAicGFyc2VyL3Bh cnNlX2NvbGxhdGUuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfcmVsYXRpb24uaCIKKyNpbmNs dWRlICJwYXJzZXIvcGFyc2VyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVk ZSAidXRpbHMvYWNsLmgiCiAjaW5jbHVkZSAidXRpbHMvYXJyYXkuaCIKQEAgLTg1LDE4ICs4Nywy MSBAQCBwYXJzZV9wdWJsaWNhdGlvbl9vcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJ CSAgYm9vbCAqcHVibGlzaF9naXZlbiwKIAkJCQkJCSAgUHVibGljYXRpb25BY3Rpb25zICpwdWJh Y3Rpb25zLAogCQkJCQkJICBib29sICpwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdF9naXZlbiwK LQkJCQkJCSAgYm9vbCAqcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QpCisJCQkJCQkgIGJvb2wg KnB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290LAorCQkJCQkJICBib29sICpkZGxfdHlwZV9naXZl bikKIHsKIAlMaXN0Q2VsbCAgICpsYzsKIAogCSpwdWJsaXNoX2dpdmVuID0gZmFsc2U7CiAJKnB1 Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290X2dpdmVuID0gZmFsc2U7CisJKmRkbF90eXBlX2dpdmVu ID0gZmFsc2U7CiAKIAkvKiBkZWZhdWx0cyAqLwogCXB1YmFjdGlvbnMtPnB1Ymluc2VydCA9IHRy dWU7CiAJcHViYWN0aW9ucy0+cHVidXBkYXRlID0gdHJ1ZTsKIAlwdWJhY3Rpb25zLT5wdWJkZWxl dGUgPSB0cnVlOwogCXB1YmFjdGlvbnMtPnB1YnRydW5jYXRlID0gdHJ1ZTsKKwlwdWJhY3Rpb25z LT5wdWJkZGxfdGFibGUgPSBmYWxzZTsKIAkqcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSBm YWxzZTsKIAogCS8qIFBhcnNlIG9wdGlvbnMgKi8KQEAgLTE1OCw2ICsxNjMsNDIgQEAgcGFyc2Vf cHVibGljYXRpb25fb3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkqcHVibGlzaF92aWFf cGFydGl0aW9uX3Jvb3RfZ2l2ZW4gPSB0cnVlOwogCQkJKnB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9y b290ID0gZGVmR2V0Qm9vbGVhbihkZWZlbCk7CiAJCX0KKwkJZWxzZSBpZiAoc3RyY21wKGRlZmVs LT5kZWZuYW1lLCAiZGRsIikgPT0gMCkKKwkJeworCQkJY2hhcgkgICAqZGRsX3R5cGVzOworCQkJ TGlzdAkgICAqZGRsX3R5cGVfbGlzdDsKKwkJCUxpc3RDZWxsICAgKmxjMjsKKworCQkJaWYgKCpk ZGxfdHlwZV9naXZlbikKKwkJCQllcnJvckNvbmZsaWN0aW5nRGVmRWxlbShkZWZlbCwgcHN0YXRl KTsKKworCQkJLyoKKwkJCSAqIElmIGRkbCBvcHRpb24gd2FzIGdpdmVuIG9ubHkgdGhlIGV4cGxp Y2l0bHkgbGlzdGVkIGRkbCB0eXBlcworCQkJICogc2hvdWxkIGJlIHB1Ymxpc2hlZC4KKwkJCSAq LworCQkJcHViYWN0aW9ucy0+cHViZGRsX3RhYmxlID0gZmFsc2U7CisKKwkJCSpkZGxfdHlwZV9n aXZlbiA9IHRydWU7CisJCQlkZGxfdHlwZXMgPSBkZWZHZXRTdHJpbmcoZGVmZWwpOworCisJCQlp ZiAoIVNwbGl0SWRlbnRpZmllclN0cmluZyhkZGxfdHlwZXMsICcsJywgJmRkbF90eXBlX2xpc3Qp KQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9S KSwKKwkJCQkJCWVycm1zZygiaW52YWxpZCBsaXN0IHN5bnRheCBmb3IgXCJkZGxcIiBvcHRpb24i KSk7CisKKwkJCS8qIFByb2Nlc3MgdGhlIG9wdGlvbiBsaXN0LiAqLworCQkJZm9yZWFjaChsYzIs IGRkbF90eXBlX2xpc3QpCisJCQl7CisJCQkJY2hhcgkgICAqZGRsX29wdCA9IChjaGFyICopIGxm aXJzdChsYzIpOworCisJCQkJaWYgKHN0cmNtcChkZGxfb3B0LCAidGFibGUiKSA9PSAwKQorCQkJ CQlwdWJhY3Rpb25zLT5wdWJkZGxfdGFibGUgPSB0cnVlOworCQkJCWVsc2UKKwkJCQkJZXJlcG9y dChFUlJPUiwKKwkJCQkJCQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCQll cnJtc2coInVucmVjb2duaXplZCBcImRkbFwiIHZhbHVlOiBcIiVzXCIiLCBkZGxfb3B0KSk7CisJ CQl9CisJCX0KIAkJZWxzZQogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJSQ09E RV9TWU5UQVhfRVJST1IpLApAQCAtNzI4LDYgKzc2OSwxMzMgQEAgQ2hlY2tQdWJSZWxhdGlvbkNv bHVtbkxpc3QoY2hhciAqcHVibmFtZSwgTGlzdCAqdGFibGVzLAogCX0KIH0KIAorLyoKKyAqIEhl bHBlciBmdW5jdGlvbiB0byBjcmVhdGUgYW4gZXZlbnQgdHJpZ2dlciBmb3IgRERMIHJlcGxpY2F0 aW9uLgorICovCitzdGF0aWMgdm9pZAorQ3JlYXRlRERMUmVwbGljYUV2ZW50VHJpZ2dlcihjaGFy ICpldmVudG5hbWUsIExpc3QgKmNvbW1hbmRzLCBPaWQgcHVib2lkKQoreworCUxpc3QJICAgKnRh Z3MgPSBOSUw7CisJTGlzdENlbGwgICAqbGM7CisJT2lkCQkJdHJpZ2dlcl9pZDsKKwlPYmplY3RB ZGRyZXNzIHJlZmVyZW5jZWQ7CisJT2JqZWN0QWRkcmVzcyBwdWJhZGRyZXNzOworCUNyZWF0ZUV2 ZW50VHJpZ1N0bXQgKmRkbF90cmlnZ2VyOworCWNoYXIJCXRyaWdnZXJfbmFtZVtOQU1FREFUQUxF Tl07CisJY2hhcgkJdHJpZ2dlcl9mdW5jX25hbWVbTkFNRURBVEFMRU5dOworCXN0YXRpYyBjb25z dCBjaGFyICp0cmlnZ2VyX2Z1bmNfZm9ybWF0ID0gInB1YmxpY2F0aW9uX2RlcGFyc2VfJXMiOwor CisJZGRsX3RyaWdnZXIgPSBtYWtlTm9kZShDcmVhdGVFdmVudFRyaWdTdG10KTsKKworCXNucHJp bnRmKHRyaWdnZXJfbmFtZSwgc2l6ZW9mKHRyaWdnZXJfbmFtZSksIFBVQl9FVkVOVF9UUklHX0ZP Uk1BVCwKKwkJCSBldmVudG5hbWUsIHB1Ym9pZCk7CisJc25wcmludGYodHJpZ2dlcl9mdW5jX25h bWUsIHNpemVvZih0cmlnZ2VyX2Z1bmNfbmFtZSksIHRyaWdnZXJfZnVuY19mb3JtYXQsCisJCQkg ZXZlbnRuYW1lKTsKKworCWRkbF90cmlnZ2VyLT50cmlnbmFtZSA9IHBzdHJkdXAodHJpZ2dlcl9u YW1lKTsKKwlkZGxfdHJpZ2dlci0+ZXZlbnRuYW1lID0gZXZlbnRuYW1lOworCWRkbF90cmlnZ2Vy LT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKHRyaWdnZXJfZnVuY19uYW1lKTsKKworCWZvcmVh Y2gobGMsIGNvbW1hbmRzKQorCXsKKwkJQ29tbWFuZFRhZyBjbWR0YWcgPSBsZmlyc3RfaW50KGxj KTsKKwkJU3RyaW5nCSAgICp0YWcgPSBtYWtlU3RyaW5nKHBzdHJkdXAoR2V0Q29tbWFuZFRhZ05h bWUoY21kdGFnKSkpOworCisJCXRhZ3MgPSBsYXBwZW5kKHRhZ3MsIHRhZyk7CisJfQorCisJZGRs X3RyaWdnZXItPndoZW5jbGF1c2UgPSBsaXN0X21ha2UxKG1ha2VEZWZFbGVtKCJ0YWciLCAoTm9k ZSAqKSB0YWdzLCAtMSkpOworCisJdHJpZ2dlcl9pZCA9IENyZWF0ZUV2ZW50VHJpZ2dlcihkZGxf dHJpZ2dlciwgdHJ1ZSk7CisKKwlPYmplY3RBZGRyZXNzU2V0KHB1YmFkZHJlc3MsIFB1YmxpY2F0 aW9uUmVsYXRpb25JZCwgcHVib2lkKTsKKworCS8qCisJICogUmVnaXN0ZXIgdGhlIGV2ZW50IHRy aWdnZXIgYXMgaW50ZXJuYWxseSBkZXBlbmRlbnQgb24gdGhlIHB1YmxpY2F0aW9uLgorCSAqLwor CU9iamVjdEFkZHJlc3NTZXQocmVmZXJlbmNlZCwgRXZlbnRUcmlnZ2VyUmVsYXRpb25JZCwgdHJp Z2dlcl9pZCk7CisJcmVjb3JkRGVwZW5kZW5jeU9uKCZyZWZlcmVuY2VkLCAmcHViYWRkcmVzcywg REVQRU5ERU5DWV9JTlRFUk5BTCk7Cit9CisKKy8qCisgKiBJZiBEREwgcmVwbGljYXRpb24gaXMg ZW5hYmxlZCwgY3JlYXRlIGV2ZW50IHRyaWdnZXJzIHRvIGNhcHR1cmUgYW5kIGxvZyBhbnkKKyAq IHJlbGV2YW50IGV2ZW50cy4KKyAqLworc3RhdGljIHZvaWQKK0NyZWF0ZURETFJlcGxpY2FFdmVu dFRyaWdnZXJzKFB1YmxpY2F0aW9uQWN0aW9ucyBwdWJhY3Rpb25zLCBPaWQgcHVib2lkKQorewor CUxpc3QJICAgKnN0YXJ0X2NvbW1hbmRzID0gTklMOworCUxpc3QJICAgKnJld3JpdGVfY29tbWFu ZHMgPSBOSUw7CisJTGlzdAkgICAqZW5kX2NvbW1hbmRzID0gTklMOworCisJaWYgKCFwdWJhY3Rp b25zLnB1YmRkbF90YWJsZSkKKwkJcmV0dXJuOworCisJc3RhcnRfY29tbWFuZHMgPSBsYXBwZW5k X2ludChzdGFydF9jb21tYW5kcywgQ01EVEFHX0RST1BfVEFCTEUpOworCXJld3JpdGVfY29tbWFu ZHMgPSBsYXBwZW5kX2ludChyZXdyaXRlX2NvbW1hbmRzLCBDTURUQUdfQUxURVJfVEFCTEUpOwor CisJZW5kX2NvbW1hbmRzID0gbGFwcGVuZF9pbnQoZW5kX2NvbW1hbmRzLCBDTURUQUdfQ1JFQVRF X1RBQkxFKTsKKwllbmRfY29tbWFuZHMgPSBsYXBwZW5kX2ludChlbmRfY29tbWFuZHMsIENNRFRB R19BTFRFUl9UQUJMRSk7CisJZW5kX2NvbW1hbmRzID0gbGFwcGVuZF9pbnQoZW5kX2NvbW1hbmRz LCBDTURUQUdfRFJPUF9UQUJMRSk7CisJZW5kX2NvbW1hbmRzID0gbGFwcGVuZF9pbnQoZW5kX2Nv bW1hbmRzLCBDTURUQUdfQ1JFQVRFX1NFUVVFTkNFKTsKKwllbmRfY29tbWFuZHMgPSBsYXBwZW5k X2ludChlbmRfY29tbWFuZHMsIENNRFRBR19BTFRFUl9TRVFVRU5DRSk7CisJZW5kX2NvbW1hbmRz ID0gbGFwcGVuZF9pbnQoZW5kX2NvbW1hbmRzLCBDTURUQUdfRFJPUF9TRVFVRU5DRSk7CisKKwkv KiBDcmVhdGUgdGhlIGRkbF9jb21tYW5kX3N0YXJ0IGV2ZW50IHRyaWdnZXIgKi8KKwlpZiAoc3Rh cnRfY29tbWFuZHMgIT0gTklMKQorCQlDcmVhdGVERExSZXBsaWNhRXZlbnRUcmlnZ2VyKFBVQl9U UklHX0RETF9DTURfU1RBUlQsIHN0YXJ0X2NvbW1hbmRzLCBwdWJvaWQpOworCisJLyogQ3JlYXRl IHRoZSB0YWJsZV9yZXdyaXRlIGV2ZW50IHRyaWdnZXIgKi8KKwlpZiAocmV3cml0ZV9jb21tYW5k cyAhPSBOSUwpCisJCUNyZWF0ZURETFJlcGxpY2FFdmVudFRyaWdnZXIoUFVCX1RSSUdfVEJMX1JF V1JJVEUsIHJld3JpdGVfY29tbWFuZHMsIHB1Ym9pZCk7CisKKwkvKiBDcmVhdGUgdGhlIGRkbF9j b21tYW5kX2VuZCBldmVudCB0cmlnZ2VyICovCisJaWYgKGVuZF9jb21tYW5kcyAhPSBOSUwpCisJ CUNyZWF0ZURETFJlcGxpY2FFdmVudFRyaWdnZXIoUFVCX1RSSUdfRERMX0NNRF9FTkQsIGVuZF9j b21tYW5kcywgcHVib2lkKTsKK30KKworLyoKKyAqIEhlbHBlciBmdW5jdGlvbiB0byBkcm9wIGFu IGV2ZW50IHRyaWdnZXIgZm9yIERETCByZXBsaWNhdGlvbi4KKyAqLworc3RhdGljIHZvaWQKK0Ry b3BERExSZXBsaWNhRXZlbnRUcmlnZ2VyKGNoYXIgKmV2ZW50bmFtZSwgT2lkIHB1Ym9pZCkKK3sK KwljaGFyCQkJdHJpZ2dlcl9uYW1lW05BTUVEQVRBTEVOXTsKKwlPaWQJCQkJZXZ0b2lkOworCU9i amVjdEFkZHJlc3MJb2JqOworCisJc25wcmludGYodHJpZ2dlcl9uYW1lLCBzaXplb2YodHJpZ2dl cl9uYW1lKSwgUFVCX0VWRU5UX1RSSUdfRk9STUFULAorCQkJIGV2ZW50bmFtZSwgcHVib2lkKTsK KworCWV2dG9pZCA9IGdldF9ldmVudF90cmlnZ2VyX29pZCh0cmlnZ2VyX25hbWUsIHRydWUpOwor CWlmICghT2lkSXNWYWxpZChldnRvaWQpKQorCQlyZXR1cm47CisKKwlkZWxldGVEZXBlbmRlbmN5 UmVjb3Jkc0ZvckNsYXNzKEV2ZW50VHJpZ2dlclJlbGF0aW9uSWQsIGV2dG9pZCwKKwkJCQkJCQkJ CVB1YmxpY2F0aW9uUmVsYXRpb25JZCwKKwkJCQkJCQkJCURFUEVOREVOQ1lfSU5URVJOQUwpOwor CisJLyoKKwkgKiBFbnN1cmUgdGhhdCB0aGUgZGVwZW5kZW5jeSByZW1vdmFsIGlzIHZpc2libGUs IHNvIHRoYXQgd2UgY2FuIGRyb3AgdGhlCisJICogZXZlbnQgdHJpZ2dlci4KKwkgKi8KKwlDb21t YW5kQ291bnRlckluY3JlbWVudCgpOworCisJT2JqZWN0QWRkcmVzc1NldChvYmosIEV2ZW50VHJp Z2dlclJlbGF0aW9uSWQsIGV2dG9pZCk7CisJcGVyZm9ybURlbGV0aW9uKCZvYmosIERST1BfUkVT VFJJQ1QsIFBFUkZPUk1fREVMRVRJT05fSU5URVJOQUwpOworfQorCisvKgorICogRHJvcCBhbGwg dGhlIGV2ZW50IHRyaWdnZXJzIHdoaWNoIGFyZSB1c2VkIGZvciBEREwgcmVwbGljYXRpb24uCisg Ki8KK3N0YXRpYyB2b2lkCitEcm9wRERMUmVwbGljYUV2ZW50VHJpZ2dlcnMoT2lkIHB1Ym9pZCkK K3sKKwlEcm9wRERMUmVwbGljYUV2ZW50VHJpZ2dlcihUUklHX0RETF9DTURfU1RBUlQsIHB1Ym9p ZCk7CisJRHJvcERETFJlcGxpY2FFdmVudFRyaWdnZXIoVFJJR19ERExfQ01EX0VORCwgcHVib2lk KTsKKwlEcm9wRERMUmVwbGljYUV2ZW50VHJpZ2dlcihUUklHX1RCTF9SRVdSSVRFLCBwdWJvaWQp OworfQorCiAvKgogICogQ3JlYXRlIG5ldyBwdWJsaWNhdGlvbi4KICAqLwpAQCAtNzQxLDYgKzkw OSw3IEBAIENyZWF0ZVB1YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlUHVibGlj YXRpb25TdG10ICpzdG10KQogCURhdHVtCQl2YWx1ZXNbTmF0dHNfcGdfcHVibGljYXRpb25dOwog CUhlYXBUdXBsZQl0dXA7CiAJYm9vbAkJcHVibGlzaF9naXZlbjsKKwlib29sCQlkZGxfdHlwZV9n aXZlbjsKIAlQdWJsaWNhdGlvbkFjdGlvbnMgcHViYWN0aW9uczsKIAlib29sCQlwdWJsaXNoX3Zp YV9wYXJ0aXRpb25fcm9vdF9naXZlbjsKIAlib29sCQlwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9v dDsKQEAgLTc4Myw3ICs5NTIsOCBAQCBDcmVhdGVQdWJsaWNhdGlvbihQYXJzZVN0YXRlICpwc3Rh dGUsIENyZWF0ZVB1YmxpY2F0aW9uU3RtdCAqc3RtdCkKIAkJCQkJCQkgIHN0bXQtPm9wdGlvbnMs CiAJCQkJCQkJICAmcHVibGlzaF9naXZlbiwgJnB1YmFjdGlvbnMsCiAJCQkJCQkJICAmcHVibGlz aF92aWFfcGFydGl0aW9uX3Jvb3RfZ2l2ZW4sCi0JCQkJCQkJICAmcHVibGlzaF92aWFfcGFydGl0 aW9uX3Jvb3QpOworCQkJCQkJCSAgJnB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290LAorCQkJCQkJ CSAgJmRkbF90eXBlX2dpdmVuKTsKIAogCXB1Ym9pZCA9IEdldE5ld09pZFdpdGhJbmRleChyZWws IFB1YmxpY2F0aW9uT2JqZWN0SW5kZXhJZCwKIAkJCQkJCQkJQW51bV9wZ19wdWJsaWNhdGlvbl9v aWQpOwpAQCAtNzk4LDYgKzk2OCw4IEBAIENyZWF0ZVB1YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBz dGF0ZSwgQ3JlYXRlUHVibGljYXRpb25TdG10ICpzdG10KQogCQlCb29sR2V0RGF0dW0ocHViYWN0 aW9ucy5wdWJkZWxldGUpOwogCXZhbHVlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3B1YnRydW5jYXRl IC0gMV0gPQogCQlCb29sR2V0RGF0dW0ocHViYWN0aW9ucy5wdWJ0cnVuY2F0ZSk7CisJdmFsdWVz W0FudW1fcGdfcHVibGljYXRpb25fcHViZGRsX3RhYmxlIC0gMV0gPQorCUJvb2xHZXREYXR1bShw dWJhY3Rpb25zLnB1YmRkbF90YWJsZSk7CiAJdmFsdWVzW0FudW1fcGdfcHVibGljYXRpb25fcHVi dmlhcm9vdCAtIDFdID0KIAkJQm9vbEdldERhdHVtKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290 KTsKIApAQCAtODM1LDYgKzEwMDcsMTEgQEAgQ3JlYXRlUHVibGljYXRpb24oUGFyc2VTdGF0ZSAq cHN0YXRlLCBDcmVhdGVQdWJsaWNhdGlvblN0bXQgKnN0bXQpCiAJCXsKIAkJCUxpc3QJICAgKnJl bHM7CiAKKwkJCWlmIChwdWJhY3Rpb25zLnB1YmRkbF90YWJsZSkKKwkJCQllcmVwb3J0KEVSUk9S LAorCQkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJ CWVycm1zZygiRERMIHJlcGxpY2F0aW9uIGlzIG9ubHkgc3VwcG9ydGVkIGluIEZPUiBBTEwgVEFC TEVTIG9yIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1YmxpY2F0aW9ucyIpKTsKKwogCQkJcmVscyA9 IE9wZW5UYWJsZUxpc3QocmVsYXRpb25zKTsKIAkJCVRyYW5zZm9ybVB1YldoZXJlQ2xhdXNlcyhy ZWxzLCBwc3RhdGUtPnBfc291cmNldGV4dCwKIAkJCQkJCQkJCSBwdWJsaXNoX3ZpYV9wYXJ0aXRp b25fcm9vdCk7CkBAIC04NTgsNiArMTAzNSwxMSBAQCBDcmVhdGVQdWJsaWNhdGlvbihQYXJzZVN0 YXRlICpwc3RhdGUsIENyZWF0ZVB1YmxpY2F0aW9uU3RtdCAqc3RtdCkKIAkJfQogCX0KIAorCS8q CisJICogQ3JlYXRlIGV2ZW50IHRyaWdnZXJzIHRvIGFsbG93IGxvZ2dpbmcgb2YgRERMIHN0YXRl bWVudHMuCisJICovCisJQ3JlYXRlRERMUmVwbGljYUV2ZW50VHJpZ2dlcnMocHViYWN0aW9ucywg cHVib2lkKTsKKwogCXRhYmxlX2Nsb3NlKHJlbCwgUm93RXhjbHVzaXZlTG9jayk7CiAKIAlJbnZv a2VPYmplY3RQb3N0Q3JlYXRlSG9vayhQdWJsaWNhdGlvblJlbGF0aW9uSWQsIHB1Ym9pZCwgMCk7 CkBAIC04ODIsNiArMTA2NCw3IEBAIEFsdGVyUHVibGljYXRpb25PcHRpb25zKFBhcnNlU3RhdGUg KnBzdGF0ZSwgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsCiAJYm9vbAkJcmVwbGFjZXNbTmF0 dHNfcGdfcHVibGljYXRpb25dOwogCURhdHVtCQl2YWx1ZXNbTmF0dHNfcGdfcHVibGljYXRpb25d OwogCWJvb2wJCXB1Ymxpc2hfZ2l2ZW47CisJYm9vbAkJZGRsX3R5cGVfZ2l2ZW47CiAJUHVibGlj YXRpb25BY3Rpb25zIHB1YmFjdGlvbnM7CiAJYm9vbAkJcHVibGlzaF92aWFfcGFydGl0aW9uX3Jv b3RfZ2l2ZW47CiAJYm9vbAkJcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3Q7CkBAIC04OTAsMTMg KzEwNzMsMTQgQEAgQWx0ZXJQdWJsaWNhdGlvbk9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBB bHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwKIAlMaXN0CSAgICpyb290X3JlbGlkcyA9IE5JTDsK IAlMaXN0Q2VsbCAgICpsYzsKIAorCXB1YmZvcm0gPSAoRm9ybV9wZ19wdWJsaWNhdGlvbikgR0VU U1RSVUNUKHR1cCk7CisKIAlwYXJzZV9wdWJsaWNhdGlvbl9vcHRpb25zKHBzdGF0ZSwKIAkJCQkJ CQkgIHN0bXQtPm9wdGlvbnMsCiAJCQkJCQkJICAmcHVibGlzaF9naXZlbiwgJnB1YmFjdGlvbnMs CiAJCQkJCQkJICAmcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3RfZ2l2ZW4sCi0JCQkJCQkJICAm cHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QpOwotCi0JcHViZm9ybSA9IChGb3JtX3BnX3B1Ymxp Y2F0aW9uKSBHRVRTVFJVQ1QodHVwKTsKKwkJCQkJCQkgICZwdWJsaXNoX3ZpYV9wYXJ0aXRpb25f cm9vdCwKKwkJCQkJCQkgICZkZGxfdHlwZV9naXZlbik7CiAKIAkvKgogCSAqIElmIHRoZSBwdWJs aWNhdGlvbiBkb2Vzbid0IHB1Ymxpc2ggY2hhbmdlcyB2aWEgdGhlIHJvb3QgcGFydGl0aW9uZWQK QEAgLTk3OCw2ICsxMTYyLDE4IEBAIEFsdGVyUHVibGljYXRpb25PcHRpb25zKFBhcnNlU3RhdGUg KnBzdGF0ZSwgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsCiAJCX0KIAl9CiAKKwlpZiAoZGRs X3R5cGVfZ2l2ZW4gJiYgcHViYWN0aW9ucy5wdWJkZGxfdGFibGUpCisJeworCQlpZiAocm9vdF9y ZWxpZHMgPT0gTklMKQorCQkJcm9vdF9yZWxpZHMgPSBHZXRQdWJsaWNhdGlvblJlbGF0aW9ucyhw dWJmb3JtLT5vaWQsCisJCQkJCQkJCQkJCQkgIFBVQkxJQ0FUSU9OX1BBUlRfUk9PVCk7CisKKwkJ aWYgKHJvb3RfcmVsaWRzKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJyY29kZShFUlJDT0RF X0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJZXJybXNnKCJEREwgcmVwbGljYXRpb24g aXMgb25seSBzdXBwb3J0ZWQgaW4gRk9SIEFMTCBUQUJMRVMgb3IgRk9SIFRBQkxFUyBJTiBTQ0hF TUEgcHVibGljYXRpb25zIikpOworCX0KKwogCS8qIEV2ZXJ5dGhpbmcgb2ssIGZvcm0gYSBuZXcg dHVwbGUuICovCiAJbWVtc2V0KHZhbHVlcywgMCwgc2l6ZW9mKHZhbHVlcykpOwogCW1lbXNldChu dWxscywgZmFsc2UsIHNpemVvZihudWxscykpOwpAQCAtOTk4LDYgKzExOTQsMTkgQEAgQWx0ZXJQ dWJsaWNhdGlvbk9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclB1YmxpY2F0aW9uU3Rt dCAqc3RtdCwKIAkJcmVwbGFjZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9wdWJ0cnVuY2F0ZSAtIDFd ID0gdHJ1ZTsKIAl9CiAKKwlpZiAoZGRsX3R5cGVfZ2l2ZW4pCisJeworCQkvKiBSZWNyZWF0ZSB0 aGUgZXZlbnQgdHJpZ2dlcnMgaWYgdGhlIGRkbCBvcHRpb24gaXMgY2hhbmdlZC4gKi8KKwkJaWYg KHB1YmZvcm0tPnB1YmRkbF90YWJsZSAhPSBwdWJhY3Rpb25zLnB1YmRkbF90YWJsZSkKKwkJewor CQkJRHJvcERETFJlcGxpY2FFdmVudFRyaWdnZXJzKHB1YmZvcm0tPm9pZCk7CisJCQlDcmVhdGVE RExSZXBsaWNhRXZlbnRUcmlnZ2VycyhwdWJhY3Rpb25zLCBwdWJmb3JtLT5vaWQpOworCQl9CisK KwkJdmFsdWVzW0FudW1fcGdfcHVibGljYXRpb25fcHViZGRsX3RhYmxlIC0gMV0gPSBCb29sR2V0 RGF0dW0ocHViYWN0aW9ucy5wdWJkZGxfdGFibGUpOworCQlyZXBsYWNlc1tBbnVtX3BnX3B1Ymxp Y2F0aW9uX3B1YmRkbF90YWJsZSAtIDFdID0gdHJ1ZTsKKwl9CisKIAlpZiAocHVibGlzaF92aWFf cGFydGl0aW9uX3Jvb3RfZ2l2ZW4pCiAJewogCQl2YWx1ZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9w dWJ2aWFyb290IC0gMV0gPSBCb29sR2V0RGF0dW0ocHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3Qp OwpAQCAtMTEwMyw2ICsxMzEyLDEyIEBAIEFsdGVyUHVibGljYXRpb25UYWJsZXMoQWx0ZXJQdWJs aWNhdGlvblN0bXQgKnN0bXQsIEhlYXBUdXBsZSB0dXAsCiAKIAlpZiAoc3RtdC0+YWN0aW9uID09 IEFQX0FkZE9iamVjdHMpCiAJeworCQlpZiAocHViZm9ybS0+cHViZGRsX3RhYmxlKQorCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVF KSwKKwkJCQkJZXJybXNnKCJjYW5ub3QgYWRkIHRhYmxlIHRvIHB1YmxpY2F0aW9uIFwiJXNcIiBp ZiBEREwgcmVwbGljYXRpb24gaXMgZW5hYmxlZCIsCisJCQkJCQkgICBzdG10LT5wdWJuYW1lKSk7 CisKIAkJVHJhbnNmb3JtUHViV2hlcmVDbGF1c2VzKHJlbHMsIHF1ZXJ5U3RyaW5nLCBwdWJmb3Jt LT5wdWJ2aWFyb290KTsKIAogCQlwdWJsaXNoX3NjaGVtYSB8PSBpc19zY2hlbWFfcHVibGljYXRp b24ocHViaWQpOwpAQCAtMTEyMSw2ICsxMzM2LDEyIEBAIEFsdGVyUHVibGljYXRpb25UYWJsZXMo QWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsIEhlYXBUdXBsZSB0dXAsCiAJCUxpc3QJICAgKmRl bHJlbHMgPSBOSUw7CiAJCUxpc3RDZWxsICAgKm9sZGxjOwogCisJCWlmIChwdWJmb3JtLT5wdWJk ZGxfdGFibGUpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJ RF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCQllcnJtc2coImNhbm5vdCBhZGQgdGFibGUgdG8gcHVi bGljYXRpb24gXCIlc1wiIGlmIERETCByZXBsaWNhdGlvbiBpcyBlbmFibGVkIiwKKwkJCQkJCSAg IHN0bXQtPnB1Ym5hbWUpKTsKKwogCQlUcmFuc2Zvcm1QdWJXaGVyZUNsYXVzZXMocmVscywgcXVl cnlTdHJpbmcsIHB1YmZvcm0tPnB1YnZpYXJvb3QpOwogCiAJCUNoZWNrUHViUmVsYXRpb25Db2x1 bW5MaXN0KHN0bXQtPnB1Ym5hbWUsIHJlbHMsIHB1Ymxpc2hfc2NoZW1hLApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9NYWtlZmlsZSBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvTWFrZWZpbGUKaW5kZXggMmRjMjVlMzdiYi4uYjc5ZGRkOGNkYyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9NYWtlZmlsZQorKysg Yi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL01ha2VmaWxlCkBAIC0xNiw2ICsxNiw4 IEBAIG92ZXJyaWRlIENQUEZMQUdTIDo9IC1JJChzcmNkaXIpICQoQ1BQRkxBR1MpCiAKIE9CSlMg PSBcCiAJYXBwbHlwYXJhbGxlbHdvcmtlci5vIFwKKwlkZGxtZXNzYWdlLm8gXAorCWRkbHRyaWdn ZXIubyBcCiAJZGVjb2RlLm8gXAogCWxhdW5jaGVyLm8gXAogCWxvZ2ljYWwubyBcCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RkbG1lc3NhZ2UuYyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGRsbWVzc2FnZS5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAuLjNmMTQ0ZGUzOTUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RkbG1lc3NhZ2UuYwpAQCAtMCwwICsxLDgzIEBA CisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBkZGxtZXNzYWdlLmMKKyAqCSAgTG9naWNhbCBE REwgbWVzc2FnZXMuCisgKgorICogQ29weXJpZ2h0IChjKSAyMDIzLCBQb3N0Z3JlU1FMIEdsb2Jh bCBEZXZlbG9wbWVudCBHcm91cAorICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkgIHNyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGRsbWVzc2FnZS5jCisgKgorICogTk9URVMKKyAqCisg KiBMb2dpY2FsIERETCBtZXNzYWdlcyBhbGxvdyBYTE9HIGxvZ2dpbmcgb2YgRERMIGNvbW1hbmQg c3RyaW5ncyB0aGF0CisgKiBnZXQgcGFzc2VkIHRvIHRoZSBsb2dpY2FsIGRlY29kaW5nIHBsdWdp bi4gSW4gbm9ybWFsIFhMT0cgcHJvY2Vzc2luZyB0aGV5CisgKiBhcmUgc2FtZSBhcyBOT09QLgor ICoKKyAqIFVubGlrZSBnZW5lcmljIGxvZ2ljYWwgbWVzc2FnZXMsIHRoZXNlIERETCBtZXNzYWdl cyBoYXZlIG9ubHkgdHJhbnNhY3Rpb25hbAorICogbW9kZS4gTm90ZSBieSBkZWZhdWx0IERETHMg aW4gUG9zdGdyZVNRTCBhcmUgdHJhbnNhY3Rpb25hbC4KKyAqCisgKiBUaGVzZSBtZXNzYWdlcyBh cmUgcGFydCBvZiBjdXJyZW50IHRyYW5zYWN0aW9uIGFuZCB3aWxsIGJlIHNlbnQgdG8KKyAqIGRl Y29kaW5nIHBsdWdpbiBzaW1pbGFyIHRvIERNTCBvcGVyYXRpb25zLgorICoKKyAqIEV2ZXJ5IG1l c3NhZ2UgaW5jbHVkZXMgYSBwcmVmaXggdG8gYXZvaWQgY29uZmxpY3RzIGJldHdlZW4gZGlmZmVy ZW50IGRlY29kaW5nCisgKiBwbHVnaW5zLiBQbHVnaW4gYXV0aG9ycyBtdXN0IHRha2Ugc3BlY2lh bCBjYXJlIHRvIHVzZSBhIHVuaXF1ZSBwcmVmaXggKGUuZyBvbmUKKyAqIGlkZWEgaXMgdG8gaW5j bHVkZSB0aGUgbmFtZSBvZiB0aGUgZXh0ZW5zaW9uKS4KKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICovCisKKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorCisjaW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIK KyNpbmNsdWRlICJhY2Nlc3MveGxvZ2luc2VydC5oIgorI2luY2x1ZGUgImNhdGFsb2cvbmFtZXNw YWNlLmgiCisjaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAibm9kZXMvZXhlY25vZGVz LmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbC5oIgorI2luY2x1ZGUgInJlcGxpY2F0 aW9uL2RkbG1lc3NhZ2UuaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgorCisvKgorICog V3JpdGUgbG9naWNhbCBkZWNvZGluZyBEREwgbWVzc2FnZSBpbnRvIFhMb2cuCisgKi8KK1hMb2dS ZWNQdHIKK0xvZ0xvZ2ljYWxERExNZXNzYWdlKGNvbnN0IGNoYXIgKnByZWZpeCwgT2lkIHJlbGlk LCBEZXBhcnNlZENvbW1hbmRUeXBlIGNtZHR5cGUsCisJCQkJCSBjb25zdCBjaGFyICptZXNzYWdl LCBzaXplX3Qgc2l6ZSkKK3sKKwl4bF9sb2dpY2FsX2RkbF9tZXNzYWdlIHhscmVjOworCisJIC8q IEVuc3VyZSB3ZSBoYXZlIGEgdmFsaWQgdHJhbnNhY3Rpb24gaWQuICovCisJQXNzZXJ0KElzVHJh bnNhY3Rpb25TdGF0ZSgpKTsKKwlHZXRDdXJyZW50VHJhbnNhY3Rpb25JZCgpOworCisJeGxyZWMu ZGJJZCA9IE15RGF0YWJhc2VJZDsKKwkvKiBUcmFpbGluZyB6ZXJvIGlzIGNyaXRpY2FsOyBzZWUg bG9naWNhbGRkbG1zZ19kZXNjICovCisJeGxyZWMucHJlZml4X3NpemUgPSBzdHJsZW4ocHJlZml4 KSArIDE7CisJeGxyZWMubWVzc2FnZV9zaXplID0gc2l6ZTsKKwl4bHJlYy5yZWxpZCA9IHJlbGlk OworCXhscmVjLmNtZHR5cGUgPSBjbWR0eXBlOworCisJWExvZ0JlZ2luSW5zZXJ0KCk7CisJWExv Z1JlZ2lzdGVyRGF0YSgoY2hhciAqKSAmeGxyZWMsIFNpemVPZkxvZ2ljYWxERExNZXNzYWdlKTsK KwlYTG9nUmVnaXN0ZXJEYXRhKHVuY29uc3RpZnkoY2hhciAqLCBwcmVmaXgpLCB4bHJlYy5wcmVm aXhfc2l6ZSk7CisJWExvZ1JlZ2lzdGVyRGF0YSh1bmNvbnN0aWZ5KGNoYXIgKiwgbWVzc2FnZSks IHNpemUpOworCisJLyogQWxsb3cgb3JpZ2luIGZpbHRlcmluZyAqLworCVhMb2dTZXRSZWNvcmRG bGFncyhYTE9HX0lOQ0xVREVfT1JJR0lOKTsKKworCXJldHVybiBYTG9nSW5zZXJ0KFJNX0xPR0lD QUxERExNU0dfSUQsIFhMT0dfTE9HSUNBTF9ERExfTUVTU0FHRSk7Cit9CisKKy8qCisgKiBSZWRv IGlzIGJhc2ljYWxseSBqdXN0IG5vb3AgZm9yIGxvZ2ljYWwgZGVjb2RpbmcgRERMIG1lc3NhZ2Vz LgorICovCit2b2lkCitsb2dpY2FsZGRsbXNnX3JlZG8oWExvZ1JlYWRlclN0YXRlICpyZWNvcmQp Cit7CisJdWludDgJCWluZm8gPSBYTG9nUmVjR2V0SW5mbyhyZWNvcmQpICYgflhMUl9JTkZPX01B U0s7CisKKwlpZiAoaW5mbyAhPSBYTE9HX0xPR0lDQUxfRERMX01FU1NBR0UpCisJCWVsb2coUEFO SUMsICJsb2dpY2FsZGRsbXNnX3JlZG86IHVua25vd24gb3AgY29kZSAldSIsIGluZm8pOworCisJ LyogVGhpcyBpcyBvbmx5IGludGVyZXN0aW5nIGZvciBsb2dpY2FsIGRlY29kaW5nLCBzZWUgZGVj b2RlLmMuICovCit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L2RkbHRyaWdnZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGRsdHJpZ2dl ci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjgwZmM1ODgwZGUKLS0t IC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RkbHRyaWdn ZXIuYwpAQCAtMCwwICsxLDM0OCBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogZGRsdHJp Z2dlci5jCisgKgkgIExvZ2ljYWwgRERMIHRyaWdnZXJzLgorICoKKyAqIENvcHlyaWdodCAoYykg MjAyMywgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqCisgKiBJREVOVElG SUNBVElPTgorICoJICBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RkbHRyaWdnZXIu YworICoKKyAqIE5PVEVTCisgKgorICogRGVwYXJzZSB0aGUgZGRsIGNvbW1hbmQgYW5kIGxvZyBp dC4KKyAqCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisjaW5jbHVkZSAicG9zdGdyZXMu aCIKKworI2luY2x1ZGUgImFjY2Vzcy90YWJsZS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfY2xh c3MuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3Byb2MuaCIKKyNpbmNsdWRlICJjb21tYW5kcy9l dmVudF90cmlnZ2VyLmgiCisjaW5jbHVkZSAiZnVuY2FwaS5oIgorI2luY2x1ZGUgImxpYi9pbGlz dC5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL2RkbG1lc3NhZ2UuaCIKKyNpbmNsdWRlICJ0Y29w L2RkbGRlcGFyc2UuaCIKKyNpbmNsdWRlICJ1dGlscy9mbWdycHJvdG9zLmgiCisjaW5jbHVkZSAi dXRpbHMvbHN5c2NhY2hlLmgiCisKK2V4dGVybiBFdmVudFRyaWdnZXJRdWVyeVN0YXRlICpjdXJy ZW50RXZlbnRUcmlnZ2VyU3RhdGU7CisKKworLyoKKyAqIENoZWNrIGlmIHRoZSBjb21tYW5kIGNh biBiZSBwdWJsaXNoZWQuCisgKgorICogWFhYIEV4ZWN1dGluZyBhIG5vbi1pbW11dGFibGUgZXhw cmVzc2lvbiBkdXJpbmcgdGhlIHRhYmxlIHJld3JpdGUgcGhhc2UgaXMKKyAqIG5vdCBhbGxvd2Vk LCBhcyBpdCBtYXkgcmVzdWx0IGluIGRpZmZlcmVudCBkYXRhIGJldHdlZW4gcHVibGlzaGVyIGFu ZAorICogc3Vic2NyaWJlci4gV2hpbGUgc29tZSBtYXkgc3VnZ2VzdCBjb252ZXJ0aW5nIHRoZSBy ZXdyaXRlIGluc2VydHMgdG8gdXBkYXRlcworICogYW5kIHJlcGxpY2F0ZSB0aGVtIGFmdGVyIHRo ZSBkZGwgY29tbWFuZCB0byBtYWludGFpbiBkYXRhIGNvbnNpc3RlbmN5LCBidXQgaXQKKyAqIGRv ZXNuJ3Qgd29yayBpZiB0aGUgcmVwbGljYSBpZGVudGl0eSBjb2x1bW4gaXMgYWx0ZXJlZCBpbiB0 aGUgY29tbWFuZC4gVGhpcworICogaXMgYmVjYXVzZSB0aGUgcmV3cml0ZSBpbnNlcnRzIGRvIG5v dCBjb250YWluIHRoZSBvbGQgdmFsdWVzIGFuZCB0aGVyZWZvcmUKKyAqIGNhbm5vdCBiZSBjb252 ZXJ0ZWQgdG8gdXBkYXRlLgorICoKKyAqIEFwYXJ0IGZyb20gdGhhdCwgY29tbWFuZHMgY29udGFp bmluZyB2b2xhdGlsZSBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkLiBCZWNhdXNlCisgKiBpdCdz IHBvc3NpYmxlIHRoZSBmdW5jdGlvbnMgY29udGFpbiBEREwvRE1MIGluIHdoaWNoIGNhc2UgdGhl c2Ugb3BlcmF0aW9ucworICogd2lsbCBiZSBleGVjdXRlZCB0d2ljZSBhbmQgY2F1c2UgZHVwbGlj YXRlIGRhdGEuIEluIGFkZGl0aW9uLCB3ZSBkb24ndCBrbm93CisgKiB3aGV0aGVyIHRoZSB0YWJs ZXMgYmVpbmcgYWNjZXNzZWQgYnkgdGhlc2UgRERML0RNTCBhcmUgcHVibGlzaGVkIG9yIG5vdC4g U28KKyAqIGJsaW5kbHkgYWxsb3dpbmcgc3VjaCBmdW5jdGlvbnMgY2FuIGFsbG93IHVuaW50ZW5k ZWQgY2xhdXNlcyBsaWtlIHRoZSB0YWJsZXMKKyAqIGFjY2Vzc2VkIGluIHRob3NlIGZ1bmN0aW9u cyBtYXkgbm90IGV2ZW4gZXhpc3Qgb24gdGhlIHN1YnNjcmliZXIuCisgKi8KK3N0YXRpYyB2b2lk CitjaGVja19jb21tYW5kX3B1Ymxpc2hhYmxlKGRkbF9kZXBhcnNlX2NvbnRleHQgY29udGV4dCwg Ym9vbCBpc19yZXdyaXRlKQoreworCisJaWYgKGlzX3Jld3JpdGUgJiYgY29udGV4dC5tYXhfdm9s YXRpbGl0eSAhPSBQUk9WT0xBVElMRV9JTU1VVEFCTEUpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJ ZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQll cnJtc2coImNhbm5vdCByZXdyaXRlIHRhYmxlIGlmIHRoaXMgY29tbWFuZCBjb250YWlucyBtdXRh YmxlIGZ1bmN0aW9uIGJlY2F1c2UgaXQgY2Fubm90IGJlIHJlcGxpY2F0ZWQgaW4gRERMIHJlcGxp Y2F0aW9uIikpOworCisJaWYgKGNvbnRleHQubWF4X3ZvbGF0aWxpdHkgPT0gUFJPVk9MQVRJTEVf Vk9MQVRJTEUpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX09CSkVDVF9O T1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQllcnJtc2coImNhbm5vdCB1c2Ugdm9sYXRp bGUgZnVuY3Rpb24gaW4gdGhpcyBjb21tYW5kIGJlY2F1c2UgaXQgY2Fubm90IGJlIHJlcGxpY2F0 ZWQgaW4gRERMIHJlcGxpY2F0aW9uIikpOworfQorCisvKgorICogRGVwYXJzZSB0aGUgZGRsIGNv bW1hbmQgYW5kIGxvZyBpdCBwcmlvciB0bworICogZXhlY3V0aW9uLiBDdXJyZW50bHkgb25seSB1 c2VkIGZvciBEUk9QIFRBQkxFIGNvbW1hbmQKKyAqIHNvIHRoYXQgY2F0YWxvZyBjYW4gYmUgYWNj ZXNzZWQgYmVmb3JlIGJlaW5nIGRlbGV0ZWQuCisgKiBUaGlzIGlzIHRvIGNoZWNrIGlmIHRoZSB0 YWJsZSBpcyBwYXJ0IG9mIHRoZSBwdWJsaWNhdGlvbgorICogb3Igbm90LgorICovCitEYXR1bQor cHVibGljYXRpb25fZGVwYXJzZV9kZGxfY29tbWFuZF9zdGFydChQR19GVU5DVElPTl9BUkdTKQor eworCUV2ZW50VHJpZ2dlckRhdGEgKnRyaWdkYXRhOworCWNoYXIJICAgKmNvbW1hbmQgPSBwc3By aW50ZigiRHJvcCB0YWJsZSBjb21tYW5kIHN0YXJ0Iik7CisJRHJvcFN0bXQgICAqc3RtdDsKKwlM aXN0Q2VsbCAgICpjZWxsMTsKKworCWlmICghQ0FMTEVEX0FTX0VWRU5UX1RSSUdHRVIoZmNpbmZv KSkKKwkJZWxvZyhFUlJPUiwgIm5vdCBmaXJlZCBieSBldmVudCB0cmlnZ2VyIG1hbmFnZXIiKTsK KworCXRyaWdkYXRhID0gKEV2ZW50VHJpZ2dlckRhdGEgKikgZmNpbmZvLT5jb250ZXh0OworCXN0 bXQgPSAoRHJvcFN0bXQgKikgdHJpZ2RhdGEtPnBhcnNldHJlZTsKKworCS8qIEV4dHJhY3QgdGhl IHJlbGlkIGZyb20gdGhlIHBhcnNlIHRyZWUgKi8KKwlmb3JlYWNoKGNlbGwxLCBzdG10LT5vYmpl Y3RzKQorCXsKKwkJY2hhcgkJcmVscGVyc2lzdDsKKwkJTm9kZQkgICAqb2JqZWN0ID0gbGZpcnN0 KGNlbGwxKTsKKwkJT2JqZWN0QWRkcmVzcyBhZGRyZXNzOworCQlSZWxhdGlvbglyZWxhdGlvbiA9 IE5VTEw7CisKKwkJYWRkcmVzcyA9IGdldF9vYmplY3RfYWRkcmVzcyhzdG10LT5yZW1vdmVUeXBl LAorCQkJCQkJCQkJIG9iamVjdCwKKwkJCQkJCQkJCSAmcmVsYXRpb24sCisJCQkJCQkJCQkgQWNj ZXNzRXhjbHVzaXZlTG9jaywKKwkJCQkJCQkJCSB0cnVlKTsKKworCQkvKiBPYmplY3QgZG9lcyBu b3QgZXhpc3QsIG5vdGhpbmcgdG8gZG8gKi8KKwkJaWYgKCFyZWxhdGlvbikKKwkJCWNvbnRpbnVl OworCisJCXJlbHBlcnNpc3QgPSBnZXRfcmVsX3BlcnNpc3RlbmNlKGFkZHJlc3Mub2JqZWN0SWQp OworCisJCS8qCisJCSAqIERvIG5vdCBnZW5lcmF0ZSB3YWwgbG9nIGZvciBjb21tYW5kcyB3aG9z ZSB0YXJnZXQgdGFibGUgaXMgYQorCQkgKiB0ZW1wb3Jhcnkgb3IgdW5sb2dnZWQgdGFibGUuCisJ CSAqCisJCSAqIFhYWCBXZSBtYXkgZ2VuZXJhdGUgd2FsIGxvZ3MgZm9yIHVubG9nZ2VkIHRhYmxl cyBpbiB0aGUgZnV0dXJlIHNvCisJCSAqIHRoYXQgdW5sb2dnZWQgdGFibGVzIGNhbiBhbHNvIGJl IGNyZWF0ZWQgYW5kIGFsdGVyZWQgb24gdGhlCisJCSAqIHN1YnNjcmliZXIgc2lkZS4gVGhpcyBt YWtlcyBpdCBwb3NzaWJsZSB0byBkaXJlY3RseSByZXBsYXkgdGhlIFNFVAorCQkgKiBMT0dHRUQg Y29tbWFuZCBhbmQgdGhlIGluY29taW5nIHJld3JpdGUgbWVzc2FnZSB3aXRob3V0IGNyZWF0aW5n IGEKKwkJICogbmV3IHRhYmxlLgorCQkgKi8KKwkJaWYgKHJlbHBlcnNpc3QgPT0gUkVMUEVSU0lT VEVOQ0VfUEVSTUFORU5UKQorCQkJTG9nTG9naWNhbERETE1lc3NhZ2UoImRlcGFyc2UiLCBhZGRy ZXNzLm9iamVjdElkLCBEQ1RfVGFibGVEcm9wU3RhcnQsCisJCQkJCQkJCSBjb21tYW5kLCBzdHJs ZW4oY29tbWFuZCkgKyAxKTsKKworCQl0YWJsZV9jbG9zZShyZWxhdGlvbiwgTm9Mb2NrKTsKKwl9 CisJcmV0dXJuIFBvaW50ZXJHZXREYXR1bShOVUxMKTsKK30KKworLyoKKyAqIHB1YmxpY2F0aW9u X2RlcGFyc2VfdGFibGVfcmV3cml0ZQorICoKKyAqIERlcGFyc2UgdGhlIGRkbCB0YWJsZSByZXdy aXRlIGNvbW1hbmQgYW5kIGxvZyBpdC4KKyAqLworRGF0dW0KK3B1YmxpY2F0aW9uX2RlcGFyc2Vf dGFibGVfcmV3cml0ZShQR19GVU5DVElPTl9BUkdTKQoreworCWNoYXIJCXJlbHBlcnNpc3Q7CisJ Q29sbGVjdGVkQ29tbWFuZCAqY21kOworCisJaWYgKCFDQUxMRURfQVNfRVZFTlRfVFJJR0dFUihm Y2luZm8pKQorCQllbG9nKEVSUk9SLCAibm90IGZpcmVkIGJ5IGV2ZW50IHRyaWdnZXIgbWFuYWdl ciIpOworCisJY21kID0gY3VycmVudEV2ZW50VHJpZ2dlclN0YXRlLT5jdXJyZW50Q29tbWFuZDsK KworCUFzc2VydChjbWQgJiYgY21kLT5kLmFsdGVyVGFibGUucmV3cml0ZSk7CisKKwlyZWxwZXJz aXN0ID0gZ2V0X3JlbF9wZXJzaXN0ZW5jZShjbWQtPmQuYWx0ZXJUYWJsZS5vYmplY3RJZCk7CisK KwkvKgorCSAqIERvIG5vdCBnZW5lcmF0ZSB3YWwgbG9nIGZvciBjb21tYW5kcyB3aG9zZSB0YXJn ZXQgdGFibGUgaXMgYSB0ZW1wb3JhcnkKKwkgKiBvciB1bmxvZ2dlZCB0YWJsZS4KKwkgKgorCSAq IFhYWCBXZSBtYXkgZ2VuZXJhdGUgd2FsIGxvZ3MgZm9yIHVubG9nZ2VkIHRhYmxlcyBpbiB0aGUg ZnV0dXJlIHNvIHRoYXQKKwkgKiB1bmxvZ2dlZCB0YWJsZXMgY2FuIGFsc28gYmUgY3JlYXRlZCBh bmQgYWx0ZXJlZCBvbiB0aGUgc3Vic2NyaWJlciBzaWRlLgorCSAqIFRoaXMgbWFrZXMgaXQgcG9z c2libGUgdG8gZGlyZWN0bHkgcmVwbGF5IHRoZSBTRVQgTE9HR0VEIGNvbW1hbmQgYW5kIHRoZQor CSAqIGluY29taW5nIHJld3JpdGUgbWVzc2FnZSB3aXRob3V0IGNyZWF0aW5nIGEgbmV3IHRhYmxl LgorCSAqLworCWlmIChyZWxwZXJzaXN0ID09IFJFTFBFUlNJU1RFTkNFX1BFUk1BTkVOVCkKKwl7 CisJCWRkbF9kZXBhcnNlX2NvbnRleHQgY29udGV4dDsKKwkJY2hhcgkgICAqanNvbl9zdHJpbmc7 CisKKwkJLyoKKwkJICogSW5pdGlhbGl6ZSB0aGUgbWF4X3ZvbGF0aWxpdHkgZmxhZyB0byBQUk9W T0xBVElMRV9JTU1VVEFCTEUsIHdoaWNoIGlzCisJCSAqIHRoZSBtaW5pbXVtIHZvbGF0aWxpdHkg bGV2ZWwuCisJCSAqLworCQljb250ZXh0Lm1heF92b2xhdGlsaXR5ID0gUFJPVk9MQVRJTEVfSU1N VVRBQkxFOworCisJCS8qIERlcGFyc2UgdGhlIERETCBjb21tYW5kIGFuZCBXQUwgbG9nIGl0IHRv IGFsbG93IGRlY29kaW5nIG9mIHRoZSBzYW1lLiAqLworCQlqc29uX3N0cmluZyA9IGRlcGFyc2Vf dXRpbGl0eV9jb21tYW5kKGNtZCwgJmNvbnRleHQpOworCisJCWlmIChqc29uX3N0cmluZyAhPSBO VUxMKQorCQl7CisJCQljaGVja19jb21tYW5kX3B1Ymxpc2hhYmxlKGNvbnRleHQsIHRydWUpOwor CQkJTG9nTG9naWNhbERETE1lc3NhZ2UoImRlcGFyc2UiLCBjbWQtPmQuYWx0ZXJUYWJsZS5vYmpl Y3RJZCwgRENUX1RhYmxlQWx0ZXIsCisJCQkJCQkJCSBqc29uX3N0cmluZywgc3RybGVuKGpzb25f c3RyaW5nKSArIDEpOworCQl9CisJfQorCisJcmV0dXJuIFBvaW50ZXJHZXREYXR1bShOVUxMKTsK K30KKworLyoKKyAqIERlcGFyc2UgdGhlIGRkbCBjb21tYW5kIGFuZCBsb2cgaXQuIFRoaXMgZnVu Y3Rpb24KKyAqIGlzIGNhbGxlZCBhZnRlciB0aGUgZXhlY3V0aW9uIG9mIHRoZSBjb21tYW5kIGJ1 dCBiZWZvcmUgdGhlCisgKiB0cmFuc2FjdGlvbiBjb21taXRzLgorICovCitEYXR1bQorcHVibGlj YXRpb25fZGVwYXJzZV9kZGxfY29tbWFuZF9lbmQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlMaXN0 Q2VsbCAgICpsYzsKKwlzbGlzdF9pdGVyCWl0ZXI7CisJT2lkCQkJcmVsaWQ7CisJY2hhcgkJcmVs a2luZDsKKworCWlmICghQ0FMTEVEX0FTX0VWRU5UX1RSSUdHRVIoZmNpbmZvKSkKKwkJZWxvZyhF UlJPUiwgIm5vdCBmaXJlZCBieSBldmVudCB0cmlnZ2VyIG1hbmFnZXIiKTsKKworCWZvcmVhY2go bGMsIGN1cnJlbnRFdmVudFRyaWdnZXJTdGF0ZS0+Y29tbWFuZExpc3QpCisJeworCQljaGFyCQly ZWxwZXJzaXN0ID0gUkVMUEVSU0lTVEVOQ0VfUEVSTUFORU5UOworCQlDb2xsZWN0ZWRDb21tYW5k ICpjbWQgPSBsZmlyc3QobGMpOworCQlEZXBhcnNlZENvbW1hbmRUeXBlIGNtZHR5cGU7CisKKwkJ LyogUmV3cml0ZSBEREwgaGFzIGJlZW4gaGFuZGxlZCBpbiB0YWJsZV9yZXdyaXRlIHRyaWdnZXIg Ki8KKwkJaWYgKGNtZC0+ZC5hbHRlclRhYmxlLnJld3JpdGUpCisJCXsKKwkJCVJlbmFtZVN0bXQg KnJlbmFtZVN0bXQgPSAoUmVuYW1lU3RtdCAqKSBjbWQtPnBhcnNldHJlZTsKKworCQkJaWYgKHJl bmFtZVN0bXQgJiYgcmVuYW1lU3RtdC0+cmVsYXRpb25UeXBlICE9IE9CSkVDVF9UWVBFICYmCisJ CQkJcmVuYW1lU3RtdC0+cmVsYXRpb25UeXBlICE9IE9CSkVDVF9UQUJMRSkKKwkJCQljb250aW51 ZTsKKwkJfQorCisJCWlmIChjbWQtPnR5cGUgPT0gU0NUX1NpbXBsZSAmJgorCQkJIU9pZElzVmFs aWQoY21kLT5kLnNpbXBsZS5hZGRyZXNzLm9iamVjdElkKSkKKwkJCWNvbnRpbnVlOworCisJCWlm IChjbWQtPnR5cGUgPT0gU0NUX0FsdGVyVGFibGUpCisJCXsKKwkJCXJlbGlkID0gY21kLT5kLmFs dGVyVGFibGUub2JqZWN0SWQ7CisJCQljbWR0eXBlID0gRENUX1RhYmxlQWx0ZXI7CisJCX0KKwkJ ZWxzZQorCQl7CisJCQkvKiBPbmx5IFNDVF9TaW1wbGUgZm9yIG5vdyAqLworCQkJcmVsaWQgPSBj bWQtPmQuc2ltcGxlLmFkZHJlc3Mub2JqZWN0SWQ7CisJCQljbWR0eXBlID0gRENUX1NpbXBsZUNt ZDsKKwkJfQorCisJCXJlbGtpbmQgPSBnZXRfcmVsX3JlbGtpbmQocmVsaWQpOworCQlpZiAocmVs a2luZCkKKwkJCXJlbHBlcnNpc3QgPSBnZXRfcmVsX3BlcnNpc3RlbmNlKHJlbGlkKTsKKworCQkv KgorCQkgKiBEbyBub3QgZ2VuZXJhdGUgd2FsIGxvZyBmb3IgY29tbWFuZHMgd2hvc2UgdGFyZ2V0 IHRhYmxlIGlzIGEKKwkJICogdGVtcG9yYXJ5IG9yIHVubG9nZ2VkIHRhYmxlLgorCQkgKgorCQkg KiBYWFggV2UgbWF5IGdlbmVyYXRlIHdhbCBsb2dzIGZvciB1bmxvZ2dlZCB0YWJsZXMgaW4gdGhl IGZ1dHVyZSBzbworCQkgKiB0aGF0IHVubG9nZ2VkIHRhYmxlcyBjYW4gYWxzbyBiZSBjcmVhdGVk IGFuZCBhbHRlcmVkIG9uIHRoZQorCQkgKiBzdWJzY3JpYmVyIHNpZGUuIFRoaXMgbWFrZXMgaXQg cG9zc2libGUgdG8gZGlyZWN0bHkgcmVwbGF5IHRoZSBTRVQKKwkJICogTE9HR0VEIGNvbW1hbmQg YW5kIHRoZSBpbmNvbWluZyByZXdyaXRlIG1lc3NhZ2Ugd2l0aG91dCBjcmVhdGluZyBhCisJCSAq IG5ldyB0YWJsZS4KKwkJICovCisJCWlmIChyZWxwZXJzaXN0ID09IFJFTFBFUlNJU1RFTkNFX1BF Uk1BTkVOVCkKKwkJeworCQkJLyoKKwkJCSAqIERlcGFyc2UgdGhlIERETCBjb21tYW5kIGFuZCBX QUwgbG9nIGl0IHRvIGFsbG93IGRlY29kaW5nIG9mIHRoZQorCQkJICogc2FtZS4KKwkJCSAqLwor CQkJZGRsX2RlcGFyc2VfY29udGV4dCBjb250ZXh0OworCQkJY2hhcgkgICAqanNvbl9zdHJpbmc7 CisKKwkJCS8qCisJCQkgKiBJbml0aWFsaXplIHRoZSBtYXhfdm9sYXRpbGl0eSBmbGFnIHRvIFBS T1ZPTEFUSUxFX0lNTVVUQUJMRSwgd2hpY2ggaXMKKwkJCSAqIHRoZSBtaW5pbXVtIHZvbGF0aWxp dHkgbGV2ZWwuCisJCQkgKi8KKwkJCWNvbnRleHQubWF4X3ZvbGF0aWxpdHkgPSBQUk9WT0xBVElM RV9JTU1VVEFCTEU7CisKKwkJCWpzb25fc3RyaW5nID0gZGVwYXJzZV91dGlsaXR5X2NvbW1hbmQo Y21kLCAmY29udGV4dCk7CisKKwkJCWlmIChqc29uX3N0cmluZyAhPSBOVUxMKQorCQkJeworCQkJ CWNoZWNrX2NvbW1hbmRfcHVibGlzaGFibGUoY29udGV4dCwgZmFsc2UpOworCQkJCUxvZ0xvZ2lj YWxERExNZXNzYWdlKCJkZXBhcnNlIiwgcmVsaWQsIGNtZHR5cGUsIGpzb25fc3RyaW5nLAorCQkJ CQkJCQkJIHN0cmxlbihqc29uX3N0cmluZykgKyAxKTsKKwkJCX0KKwkJfQorCX0KKworCS8qIERy b3AgY29tbWFuZHMgYXJlIG5vdCBwYXJ0IGNvbW1hbmRsaXN0IGJ1dCBoYW5kbGVkIGhlcmUgYXMg cGFydCBvZiBTUUxEcm9wTGlzdCAqLworCXNsaXN0X2ZvcmVhY2goaXRlciwgJihjdXJyZW50RXZl bnRUcmlnZ2VyU3RhdGUtPlNRTERyb3BMaXN0KSkKKwl7CisJCVNRTERyb3BPYmplY3QgKm9iajsK KwkJRXZlbnRUcmlnZ2VyRGF0YSAqdHJpZ2RhdGE7CisKKwkJdHJpZ2RhdGEgPSAoRXZlbnRUcmln Z2VyRGF0YSAqKSBmY2luZm8tPmNvbnRleHQ7CisKKwkJb2JqID0gc2xpc3RfY29udGFpbmVyKFNR TERyb3BPYmplY3QsIG5leHQsIGl0ZXIuY3VyKTsKKworCQlpZiAoIW9iai0+b3JpZ2luYWwpCisJ CQljb250aW51ZTsKKworCQlpZiAoc3RyY21wKG9iai0+b2JqZWN0dHlwZSwgInRhYmxlIikgPT0g MCkKKwkJeworCQkJRGVwYXJzZWRDb21tYW5kVHlwZSBjbWR0eXBlID0gRENUX1RhYmxlRHJvcEVu ZDsKKwkJCWNoYXIJKmNvbW1hbmQ7CisKKwkJCWNvbW1hbmQgPSBkZXBhcnNlX2Ryb3BfdGFibGUo b2JqLT5vYmppZGVudGl0eSwgdHJpZ2RhdGEtPnBhcnNldHJlZSk7CisJCQlpZiAoY29tbWFuZCkK KwkJCQlMb2dMb2dpY2FsRERMTWVzc2FnZSgiZGVwYXJzZSIsIG9iai0+YWRkcmVzcy5vYmplY3RJ ZCwgY21kdHlwZSwKKwkJCQkJCQkJCSBjb21tYW5kLCBzdHJsZW4oY29tbWFuZCkgKyAxKTsKKwkJ fQorCX0KKworCXJldHVybiBQb2ludGVyR2V0RGF0dW0oTlVMTCk7Cit9CisKKy8qCisgKiBwdWJs aWNhdGlvbl9kZXBhcnNlX3RhYmxlX2luaXRfd3JpdGUKKyAqCisgKiBEZXBhcnNlIHRoZSBkZGwg dGFibGUgY3JlYXRlIGNvbW1hbmQgYW5kIGxvZyBpdC4KKyAqLworRGF0dW0KK3B1YmxpY2F0aW9u X2RlcGFyc2VfdGFibGVfaW5pdF93cml0ZShQR19GVU5DVElPTl9BUkdTKQoreworCWNoYXIJCXJl bHBlcnNpc3Q7CisJQ29sbGVjdGVkQ29tbWFuZCAqY21kOworCWRkbF9kZXBhcnNlX2NvbnRleHQg Y29udGV4dDsKKworCWlmICghQ0FMTEVEX0FTX0VWRU5UX1RSSUdHRVIoZmNpbmZvKSkKKwkJZWxv ZyhFUlJPUiwgIm5vdCBmaXJlZCBieSBldmVudCB0cmlnZ2VyIG1hbmFnZXIiKTsKKworCWNtZCA9 IGN1cnJlbnRFdmVudFRyaWdnZXJTdGF0ZS0+Y3VycmVudENvbW1hbmQ7CisJQXNzZXJ0KGNtZCk7 CisKKwlyZWxwZXJzaXN0ID0gZ2V0X3JlbF9wZXJzaXN0ZW5jZShjbWQtPmQuc2ltcGxlLmFkZHJl c3Mub2JqZWN0SWQpOworCisJLyoKKwkgKiBEbyBub3QgZ2VuZXJhdGUgd2FsIGxvZyBmb3IgY29t bWFuZHMgd2hvc2UgdGFyZ2V0IHRhYmxlIGlzIGEgdGVtcG9yYXJ5CisJICogdGFibGUuCisJICoK KwkgKiBXZSB3aWxsIGdlbmVyYXRlIHdhbCBsb2dzIGZvciB1bmxvZ2dlZCB0YWJsZXMgc28gdGhh dCB1bmxvZ2dlZCB0YWJsZXMKKwkgKiBjYW4gYWxzbyBiZSBjcmVhdGVkIGFuZCBhbHRlcmVkIG9u IHRoZSBzdWJzY3JpYmVyIHNpZGUuIFRoaXMgbWFrZXMgaXQKKwkgKiBwb3NzaWJsZSB0byBkaXJl Y3RseSByZXBsYXkgdGhlIFNFVCBMT0dHRUQgY29tbWFuZCBhbmQgdGhlIGluY29taW5nCisJICog cmV3cml0ZSBtZXNzYWdlIHdpdGhvdXQgY3JlYXRpbmcgYSBuZXcgdGFibGUuCisJICovCisJaWYg KHJlbHBlcnNpc3QgPT0gUkVMUEVSU0lTVEVOQ0VfUEVSTUFORU5UKQorCXsKKwkJY2hhcgkgICAq anNvbl9zdHJpbmc7CisKKwkJLyoKKwkJICogSW5pdGlhbGl6ZSB0aGUgbWF4X3ZvbGF0aWxpdHkg ZmxhZyB0byBQUk9WT0xBVElMRV9JTU1VVEFCTEUsIHdoaWNoIGlzCisJCSAqIHRoZSBtaW5pbXVt IHZvbGF0aWxpdHkgbGV2ZWwuCisJCSAqLworCQljb250ZXh0Lm1heF92b2xhdGlsaXR5ID0gUFJP Vk9MQVRJTEVfSU1NVVRBQkxFOworCisJCS8qIERlcGFyc2UgdGhlIERETCBjb21tYW5kIGFuZCBX QUwgbG9nIGl0IHRvIGFsbG93IGRlY29kaW5nIG9mIHRoZSBzYW1lLiAqLworCQlqc29uX3N0cmlu ZyA9IGRlcGFyc2VfdXRpbGl0eV9jb21tYW5kKGNtZCwgJmNvbnRleHQpOworCisJCWlmIChqc29u X3N0cmluZyAhPSBOVUxMKQorCQl7CisJCQljaGVja19jb21tYW5kX3B1Ymxpc2hhYmxlKGNvbnRl eHQsIGZhbHNlKTsKKwkJCUxvZ0xvZ2ljYWxERExNZXNzYWdlKCJkZXBhcnNlIiwgY21kLT5kLnNp bXBsZS5hZGRyZXNzLm9iamVjdElkLCBEQ1RfU2ltcGxlQ21kLAorCQkJCQkJCQkganNvbl9zdHJp bmcsIHN0cmxlbihqc29uX3N0cmluZykgKyAxKTsKKwkJfQorCX0KKworCXJldHVybiBQb2ludGVy R2V0RGF0dW0oTlVMTCk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL2RlY29kZS5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUu YwppbmRleCBkOTEwNTVhNDQwLi5iMjJiYmNkMTVhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvZGVjb2RlLmMKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJhY2Nlc3MveGxv Z3V0aWxzLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb250cm9sLmgiCiAjaW5jbHVkZSAicmVw bGljYXRpb24vZGVjb2RlLmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vZGRsbWVzc2FnZS5oIgog I2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWwuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9t ZXNzYWdlLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vb3JpZ2luLmgiCkBAIC02NDEsNiArNjQy LDQ2IEBAIGxvZ2ljYWxtc2dfZGVjb2RlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExv Z1JlY29yZEJ1ZmZlciAqYnVmKQogCQkJCQkJCSAgbWVzc2FnZS0+bWVzc2FnZSArIG1lc3NhZ2Ut PnByZWZpeF9zaXplKTsKIH0KIAorLyoKKyAqIEhhbmRsZSBybWdyIExPR0lDQUxERExNU0dfSUQg cmVjb3JkcyBmb3IgRGVjb2RlUmVjb3JkSW50b1Jlb3JkZXJCdWZmZXIoKS4KKyAqLwordm9pZAor bG9naWNhbGRkbF9kZWNvZGUoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjb3Jk QnVmZmVyICpidWYpCit7CisJU25hcEJ1aWxkICAqYnVpbGRlciA9IGN0eC0+c25hcHNob3RfYnVp bGRlcjsKKwlYTG9nUmVhZGVyU3RhdGUgKnIgPSBidWYtPnJlY29yZDsKKwlUcmFuc2FjdGlvbklk IHhpZCA9IFhMb2dSZWNHZXRYaWQocik7CisJdWludDgJCWluZm8gPSBYTG9nUmVjR2V0SW5mbyhy KSAmIH5YTFJfSU5GT19NQVNLOworCVJlcE9yaWdpbklkIG9yaWdpbl9pZCA9IFhMb2dSZWNHZXRP cmlnaW4ocik7CisJeGxfbG9naWNhbF9kZGxfbWVzc2FnZSAqbWVzc2FnZTsKKworCWlmIChpbmZv ICE9IFhMT0dfTE9HSUNBTF9ERExfTUVTU0FHRSkKKwkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQg Uk1fTE9HSUNBTERETE1TR19JRCByZWNvcmQgdHlwZTogJXUiLCBpbmZvKTsKKworCVJlb3JkZXJC dWZmZXJQcm9jZXNzWGlkKGN0eC0+cmVvcmRlciwgWExvZ1JlY0dldFhpZChyKSwgYnVmLT5vcmln cHRyKTsKKworCS8qCisJICogSWYgd2UgZG9uJ3QgaGF2ZSBzbmFwc2hvdCBvciB3ZSBhcmUganVz dCBmYXN0LWZvcndhcmRpbmcsIHRoZXJlIGlzIG5vCisJICogcG9pbnQgaW4gZGVjb2RpbmcgZGRs IG1lc3NhZ2VzLgorCSAqLworCWlmIChTbmFwQnVpbGRDdXJyZW50U3RhdGUoYnVpbGRlcikgPCBT TkFQQlVJTERfRlVMTF9TTkFQU0hPVCB8fAorCQljdHgtPmZhc3RfZm9yd2FyZCkKKwkJcmV0dXJu OworCisJbWVzc2FnZSA9ICh4bF9sb2dpY2FsX2RkbF9tZXNzYWdlICopIFhMb2dSZWNHZXREYXRh KHIpOworCisJaWYgKG1lc3NhZ2UtPmRiSWQgIT0gY3R4LT5zbG90LT5kYXRhLmRhdGFiYXNlIHx8 CisJCUZpbHRlckJ5T3JpZ2luKGN0eCwgb3JpZ2luX2lkKSkKKwkJcmV0dXJuOworCisJaWYgKFNu YXBCdWlsZFByb2Nlc3NDaGFuZ2UoYnVpbGRlciwgeGlkLCBidWYtPm9yaWdwdHIpKQorCQlSZW9y ZGVyQnVmZmVyUXVldWVERExNZXNzYWdlKGN0eC0+cmVvcmRlciwgeGlkLCBidWYtPmVuZHB0ciwK KwkJCQkJCQkJCSBtZXNzYWdlLT5tZXNzYWdlLCAvKiBmaXJzdCBwYXJ0IG9mIG1lc3NhZ2UgaXMg cHJlZml4ICovCisJCQkJCQkJCQkgbWVzc2FnZS0+bWVzc2FnZV9zaXplLAorCQkJCQkJCQkJIG1l c3NhZ2UtPm1lc3NhZ2UgKyBtZXNzYWdlLT5wcmVmaXhfc2l6ZSwKKwkJCQkJCQkJCSBtZXNzYWdl LT5yZWxpZCwgbWVzc2FnZS0+Y21kdHlwZSk7Cit9CisKIC8qCiAgKiBDb25zb2xpZGF0ZWQgY29t bWl0IHJlY29yZCBoYW5kbGluZyBiZXR3ZWVuIHRoZSBkaWZmZXJlbnQgZm9ybSBvZiBjb21taXQK ICAqIHJlY29yZHMuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L2xvZ2ljYWwuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbC5jCmlu ZGV4IDQxMjQzZDAxODcuLjFkOTlmYWMxMTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvbG9naWNhbC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvbG9naWNhbC5jCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiZm1nci5oIgogI2lu Y2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgorI2luY2x1ZGUgInJlcGxp Y2F0aW9uL2RkbG1lc3NhZ2UuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9kZWNvZGUuaCIKICNp bmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2FsLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vb3Jp Z2luLmgiCkBAIC03Myw2ICs3NCwxMCBAQCBzdGF0aWMgdm9pZCB0cnVuY2F0ZV9jYl93cmFwcGVy KFJlb3JkZXJCdWZmZXIgKmNhY2hlLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiBzdGF0aWMgdm9p ZCBtZXNzYWdlX2NiX3dyYXBwZXIoUmVvcmRlckJ1ZmZlciAqY2FjaGUsIFJlb3JkZXJCdWZmZXJU WE4gKnR4biwKIAkJCQkJCQkgICBYTG9nUmVjUHRyIG1lc3NhZ2VfbHNuLCBib29sIHRyYW5zYWN0 aW9uYWwsCiAJCQkJCQkJICAgY29uc3QgY2hhciAqcHJlZml4LCBTaXplIG1lc3NhZ2Vfc2l6ZSwg Y29uc3QgY2hhciAqbWVzc2FnZSk7CitzdGF0aWMgdm9pZCBkZGxfY2Jfd3JhcHBlcihSZW9yZGVy QnVmZmVyICpjYWNoZSwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAorCQkJCQkJCQkgIFhMb2dSZWNQ dHIgbWVzc2FnZV9sc24sIGNvbnN0IGNoYXIgKnByZWZpeCwKKwkJCQkJCQkJICBPaWQgcmVsaWQs IERlcGFyc2VkQ29tbWFuZFR5cGUgY21kdHlwZSwKKwkJCQkJCQkJICBTaXplIG1lc3NhZ2Vfc2l6 ZSwgY29uc3QgY2hhciAqbWVzc2FnZSk7CiAKIC8qIHN0cmVhbWluZyBjYWxsYmFja3MgKi8KIHN0 YXRpYyB2b2lkIHN0cmVhbV9zdGFydF9jYl93cmFwcGVyKFJlb3JkZXJCdWZmZXIgKmNhY2hlLCBS ZW9yZGVyQnVmZmVyVFhOICp0eG4sCkBAIC05MCw2ICs5NSwxMSBAQCBzdGF0aWMgdm9pZCBzdHJl YW1fY2hhbmdlX2NiX3dyYXBwZXIoUmVvcmRlckJ1ZmZlciAqY2FjaGUsIFJlb3JkZXJCdWZmZXJU WE4gKnR4bgogc3RhdGljIHZvaWQgc3RyZWFtX21lc3NhZ2VfY2Jfd3JhcHBlcihSZW9yZGVyQnVm ZmVyICpjYWNoZSwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogCQkJCQkJCQkJICBYTG9nUmVjUHRy IG1lc3NhZ2VfbHNuLCBib29sIHRyYW5zYWN0aW9uYWwsCiAJCQkJCQkJCQkgIGNvbnN0IGNoYXIg KnByZWZpeCwgU2l6ZSBtZXNzYWdlX3NpemUsIGNvbnN0IGNoYXIgKm1lc3NhZ2UpOworc3RhdGlj IHZvaWQgc3RyZWFtX2RkbF9jYl93cmFwcGVyKFJlb3JkZXJCdWZmZXIgKmNhY2hlLCBSZW9yZGVy QnVmZmVyVFhOICp0eG4sCisJCQkJCQkJCQkJIFhMb2dSZWNQdHIgbWVzc2FnZV9sc24sCisJCQkJ CQkJCQkJIGNvbnN0IGNoYXIgKnByZWZpeCwKKwkJCQkJCQkJCQkgT2lkIHJlbGlkLCBEZXBhcnNl ZENvbW1hbmRUeXBlIGNtZHR5cGUsCisJCQkJCQkJCQkJIFNpemUgbWVzc2FnZV9zaXplLCBjb25z dCBjaGFyICptZXNzYWdlKTsKIHN0YXRpYyB2b2lkIHN0cmVhbV90cnVuY2F0ZV9jYl93cmFwcGVy KFJlb3JkZXJCdWZmZXIgKmNhY2hlLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiAJCQkJCQkJCQkg ICBpbnQgbnJlbGF0aW9ucywgUmVsYXRpb24gcmVsYXRpb25zW10sIFJlb3JkZXJCdWZmZXJDaGFu Z2UgKmNoYW5nZSk7CiAKQEAgLTIyMSwxMCArMjMxLDExIEBAIFN0YXJ0dXBEZWNvZGluZ0NvbnRl eHQoTGlzdCAqb3V0cHV0X3BsdWdpbl9vcHRpb25zLAogCWN0eC0+cmVvcmRlci0+YXBwbHlfdHJ1 bmNhdGUgPSB0cnVuY2F0ZV9jYl93cmFwcGVyOwogCWN0eC0+cmVvcmRlci0+Y29tbWl0ID0gY29t bWl0X2NiX3dyYXBwZXI7CiAJY3R4LT5yZW9yZGVyLT5tZXNzYWdlID0gbWVzc2FnZV9jYl93cmFw cGVyOworCWN0eC0+cmVvcmRlci0+ZGRsID0gZGRsX2NiX3dyYXBwZXI7CiAKIAkvKgogCSAqIFRv IHN1cHBvcnQgc3RyZWFtaW5nLCB3ZSByZXF1aXJlIHN0YXJ0L3N0b3AvYWJvcnQvY29tbWl0L2No YW5nZQotCSAqIGNhbGxiYWNrcy4gVGhlIG1lc3NhZ2UgYW5kIHRydW5jYXRlIGNhbGxiYWNrcyBh cmUgb3B0aW9uYWwsIHNpbWlsYXIgdG8KKwkgKiBjYWxsYmFja3MuIFRoZSBtZXNzYWdlLCBkZGwg YW5kIHRydW5jYXRlIGNhbGxiYWNrcyBhcmUgb3B0aW9uYWwsIHNpbWlsYXIgdG8KIAkgKiByZWd1 bGFyIG91dHB1dCBwbHVnaW5zLiBXZSBob3dldmVyIGVuYWJsZSBzdHJlYW1pbmcgd2hlbiBhdCBs ZWFzdCBvbmUKIAkgKiBvZiB0aGUgbWV0aG9kcyBpcyBlbmFibGVkIHNvIHRoYXQgd2UgY2FuIGVh c2lseSBpZGVudGlmeSBtaXNzaW5nCiAJICogbWV0aG9kcy4KQEAgLTIzNywxMiArMjQ4LDEzIEBA IFN0YXJ0dXBEZWNvZGluZ0NvbnRleHQoTGlzdCAqb3V0cHV0X3BsdWdpbl9vcHRpb25zLAogCQko Y3R4LT5jYWxsYmFja3Muc3RyZWFtX2NvbW1pdF9jYiAhPSBOVUxMKSB8fAogCQkoY3R4LT5jYWxs YmFja3Muc3RyZWFtX2NoYW5nZV9jYiAhPSBOVUxMKSB8fAogCQkoY3R4LT5jYWxsYmFja3Muc3Ry ZWFtX21lc3NhZ2VfY2IgIT0gTlVMTCkgfHwKKwkJKGN0eC0+Y2FsbGJhY2tzLnN0cmVhbV9kZGxf Y2IgIT0gTlVMTCkgfHwKIAkJKGN0eC0+Y2FsbGJhY2tzLnN0cmVhbV90cnVuY2F0ZV9jYiAhPSBO VUxMKTsKIAogCS8qCiAJICogc3RyZWFtaW5nIGNhbGxiYWNrcwogCSAqCi0JICogc3RyZWFtX21l c3NhZ2UgYW5kIHN0cmVhbV90cnVuY2F0ZSBjYWxsYmFja3MgYXJlIG9wdGlvbmFsLCBzbyB3ZSBk byBub3QKKwkgKiBzdHJlYW1fbWVzc2FnZSwgc3RyZWFtX2RkbCBhbmQgc3RyZWFtX3RydW5jYXRl IGNhbGxiYWNrcyBhcmUgb3B0aW9uYWwsIHNvIHdlIGRvIG5vdAogCSAqIGZhaWwgd2l0aCBFUlJP UiB3aGVuIG1pc3NpbmcsIGJ1dCB0aGUgd3JhcHBlcnMgc2ltcGx5IGRvIG5vdGhpbmcuIFdlCiAJ ICogbXVzdCBzZXQgdGhlIFJlb3JkZXJCdWZmZXIgY2FsbGJhY2tzIHRvIHNvbWV0aGluZywgb3Ro ZXJ3aXNlIHRoZSBjYWxscwogCSAqIGZyb20gdGhlcmUgd2lsbCBjcmFzaCAod2UgZG9uJ3Qgd2Fu dCB0byBtb3ZlIHRoZSBjaGVja3MgdGhlcmUpLgpAQCAtMjU0LDYgKzI2Niw3IEBAIFN0YXJ0dXBE ZWNvZGluZ0NvbnRleHQoTGlzdCAqb3V0cHV0X3BsdWdpbl9vcHRpb25zLAogCWN0eC0+cmVvcmRl ci0+c3RyZWFtX2NvbW1pdCA9IHN0cmVhbV9jb21taXRfY2Jfd3JhcHBlcjsKIAljdHgtPnJlb3Jk ZXItPnN0cmVhbV9jaGFuZ2UgPSBzdHJlYW1fY2hhbmdlX2NiX3dyYXBwZXI7CiAJY3R4LT5yZW9y ZGVyLT5zdHJlYW1fbWVzc2FnZSA9IHN0cmVhbV9tZXNzYWdlX2NiX3dyYXBwZXI7CisJY3R4LT5y ZW9yZGVyLT5zdHJlYW1fZGRsID0gc3RyZWFtX2RkbF9jYl93cmFwcGVyOwogCWN0eC0+cmVvcmRl ci0+c3RyZWFtX3RydW5jYXRlID0gc3RyZWFtX3RydW5jYXRlX2NiX3dyYXBwZXI7CiAKIApAQCAt MTI2MCw2ICsxMjczLDQ0IEBAIG1lc3NhZ2VfY2Jfd3JhcHBlcihSZW9yZGVyQnVmZmVyICpjYWNo ZSwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogCWVycm9yX2NvbnRleHRfc3RhY2sgPSBlcnJjYWxs YmFjay5wcmV2aW91czsKIH0KIAorc3RhdGljIHZvaWQKK2RkbF9jYl93cmFwcGVyKFJlb3JkZXJC dWZmZXIgKmNhY2hlLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCisJCQkJCSAgWExvZ1JlY1B0ciBt ZXNzYWdlX2xzbiwKKwkJCQkJICBjb25zdCBjaGFyICpwcmVmaXgsIE9pZCByZWxpZCwgRGVwYXJz ZWRDb21tYW5kVHlwZSBjbWR0eXBlLAorCQkJCQkgIFNpemUgbWVzc2FnZV9zaXplLAorCQkJCQkg IGNvbnN0IGNoYXIgKm1lc3NhZ2UpCit7CisJTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4ID0g Y2FjaGUtPnByaXZhdGVfZGF0YTsKKwlMb2dpY2FsRXJyb3JDYWxsYmFja1N0YXRlIHN0YXRlOwor CUVycm9yQ29udGV4dENhbGxiYWNrIGVycmNhbGxiYWNrOworCisJQXNzZXJ0KCFjdHgtPmZhc3Rf Zm9yd2FyZCk7CisKKwlpZiAoY3R4LT5jYWxsYmFja3MuZGRsX2NiID09IE5VTEwpCisJCXJldHVy bjsKKworCS8qIFB1c2ggY2FsbGJhY2sgKyBpbmZvIG9uIHRoZSBlcnJvciBjb250ZXh0IHN0YWNr ICovCisJc3RhdGUuY3R4ID0gY3R4OworCXN0YXRlLmNhbGxiYWNrX25hbWUgPSAiZGRsIjsKKwlz dGF0ZS5yZXBvcnRfbG9jYXRpb24gPSBtZXNzYWdlX2xzbjsKKwllcnJjYWxsYmFjay5jYWxsYmFj ayA9IG91dHB1dF9wbHVnaW5fZXJyb3JfY2FsbGJhY2s7CisJZXJyY2FsbGJhY2suYXJnID0gKHZv aWQgKikgJnN0YXRlOworCWVycmNhbGxiYWNrLnByZXZpb3VzID0gZXJyb3JfY29udGV4dF9zdGFj azsKKwllcnJvcl9jb250ZXh0X3N0YWNrID0gJmVycmNhbGxiYWNrOworCisJLyogc2V0IG91dHB1 dCBzdGF0ZSAqLworCWN0eC0+YWNjZXB0X3dyaXRlcyA9IHRydWU7CisJY3R4LT53cml0ZV94aWQg PSB0eG4tPnhpZDsKKwljdHgtPndyaXRlX2xvY2F0aW9uID0gbWVzc2FnZV9sc247CisKKwkvKiBk byB0aGUgYWN0dWFsIHdvcms6IGNhbGwgY2FsbGJhY2sgKi8KKwljdHgtPmNhbGxiYWNrcy5kZGxf Y2IoY3R4LCB0eG4sIG1lc3NhZ2VfbHNuLCBwcmVmaXgsIHJlbGlkLCBjbWR0eXBlLAorCQkJCQkJ CQkgbWVzc2FnZV9zaXplLCBtZXNzYWdlKTsKKworCS8qIFBvcCB0aGUgZXJyb3IgY29udGV4dCBz dGFjayAqLworCWVycm9yX2NvbnRleHRfc3RhY2sgPSBlcnJjYWxsYmFjay5wcmV2aW91czsKK30K Kwogc3RhdGljIHZvaWQKIHN0cmVhbV9zdGFydF9jYl93cmFwcGVyKFJlb3JkZXJCdWZmZXIgKmNh Y2hlLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiAJCQkJCQlYTG9nUmVjUHRyIGZpcnN0X2xzbikK QEAgLTE1NzUsNiArMTYyNiw0OCBAQCBzdHJlYW1fbWVzc2FnZV9jYl93cmFwcGVyKFJlb3JkZXJC dWZmZXIgKmNhY2hlLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiAJZXJyb3JfY29udGV4dF9zdGFj ayA9IGVycmNhbGxiYWNrLnByZXZpb3VzOwogfQogCitzdGF0aWMgdm9pZAorc3RyZWFtX2RkbF9j Yl93cmFwcGVyKFJlb3JkZXJCdWZmZXIgKmNhY2hlLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCisJ CQkJCQkJIFhMb2dSZWNQdHIgbWVzc2FnZV9sc24sCisJCQkJCQkJIGNvbnN0IGNoYXIgKnByZWZp eCwgT2lkIHJlbGlkLCBEZXBhcnNlZENvbW1hbmRUeXBlIGNtZHR5cGUsCisJCQkJCQkJIFNpemUg bWVzc2FnZV9zaXplLAorCQkJCQkJCSBjb25zdCBjaGFyICptZXNzYWdlKQoreworCUxvZ2ljYWxE ZWNvZGluZ0NvbnRleHQgKmN0eCA9IGNhY2hlLT5wcml2YXRlX2RhdGE7CisJTG9naWNhbEVycm9y Q2FsbGJhY2tTdGF0ZSBzdGF0ZTsKKwlFcnJvckNvbnRleHRDYWxsYmFjayBlcnJjYWxsYmFjazsK KworCUFzc2VydCghY3R4LT5mYXN0X2ZvcndhcmQpOworCisJLyogV2UncmUgb25seSBzdXBwb3Nl ZCB0byBjYWxsIHRoaXMgd2hlbiBzdHJlYW1pbmcgaXMgc3VwcG9ydGVkLiAqLworCUFzc2VydChj dHgtPnN0cmVhbWluZyk7CisKKwkvKiB0aGlzIGNhbGxiYWNrIGlzIG9wdGlvbmFsICovCisJaWYg KGN0eC0+Y2FsbGJhY2tzLnN0cmVhbV9kZGxfY2IgPT0gTlVMTCkKKwkJcmV0dXJuOworCisJLyog UHVzaCBjYWxsYmFjayArIGluZm8gb24gdGhlIGVycm9yIGNvbnRleHQgc3RhY2sgKi8KKwlzdGF0 ZS5jdHggPSBjdHg7CisJc3RhdGUuY2FsbGJhY2tfbmFtZSA9ICJzdHJlYW1fZGRsIjsKKwlzdGF0 ZS5yZXBvcnRfbG9jYXRpb24gPSBtZXNzYWdlX2xzbjsKKwllcnJjYWxsYmFjay5jYWxsYmFjayA9 IG91dHB1dF9wbHVnaW5fZXJyb3JfY2FsbGJhY2s7CisJZXJyY2FsbGJhY2suYXJnID0gKHZvaWQg KikgJnN0YXRlOworCWVycmNhbGxiYWNrLnByZXZpb3VzID0gZXJyb3JfY29udGV4dF9zdGFjazsK KwllcnJvcl9jb250ZXh0X3N0YWNrID0gJmVycmNhbGxiYWNrOworCisJLyogc2V0IG91dHB1dCBz dGF0ZSAqLworCWN0eC0+YWNjZXB0X3dyaXRlcyA9IHRydWU7CisJY3R4LT53cml0ZV94aWQgPSB0 eG4tPnhpZDsKKwljdHgtPndyaXRlX2xvY2F0aW9uID0gbWVzc2FnZV9sc247CisKKwkvKiBkbyB0 aGUgYWN0dWFsIHdvcms6IGNhbGwgY2FsbGJhY2sgKi8KKwljdHgtPmNhbGxiYWNrcy5zdHJlYW1f ZGRsX2NiKGN0eCwgdHhuLCBtZXNzYWdlX2xzbiwgcHJlZml4LCByZWxpZCwKKwkJCQkJCQkJCQlj bWR0eXBlLCBtZXNzYWdlX3NpemUsIG1lc3NhZ2UpOworCisJLyogUG9wIHRoZSBlcnJvciBjb250 ZXh0IHN0YWNrICovCisJZXJyb3JfY29udGV4dF9zdGFjayA9IGVycmNhbGxiYWNrLnByZXZpb3Vz OworfQorCiBzdGF0aWMgdm9pZAogc3RyZWFtX3RydW5jYXRlX2NiX3dyYXBwZXIoUmVvcmRlckJ1 ZmZlciAqY2FjaGUsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKIAkJCQkJCSAgIGludCBucmVsYXRp b25zLCBSZWxhdGlvbiByZWxhdGlvbnNbXSwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvbG9naWNhbGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL2xvZ2ljYWxmdW5jcy5jCmluZGV4IDU1YTI0YzAyYzkuLmJlY2VjYzNmOTMgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbGZ1bmNzLmMKKysr IGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsZnVuY3MuYwpAQCAtMjks NiArMjksNyBAQAogI2luY2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgogI2luY2x1ZGUgInJlcGxp Y2F0aW9uL2RlY29kZS5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWwuaCIKKyNpbmNs dWRlICJyZXBsaWNhdGlvbi9kZGxtZXNzYWdlLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vbWVz c2FnZS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKICNpbmNsdWRlICJ1dGlscy9hcnJheS5o IgpAQCAtMzc1LDMgKzM3NiwyNiBAQCBwZ19sb2dpY2FsX2VtaXRfbWVzc2FnZV90ZXh0KFBHX0ZV TkNUSU9OX0FSR1MpCiAJLyogYnl0ZWEgYW5kIHRleHQgYXJlIGNvbXBhdGlibGUgKi8KIAlyZXR1 cm4gcGdfbG9naWNhbF9lbWl0X21lc3NhZ2VfYnl0ZWEoZmNpbmZvKTsKIH0KKworLyoKKyAqIFNR TCBmdW5jdGlvbiBmb3Igd3JpdGluZyBsb2dpY2FsIGRlY29kaW5nIERETCBtZXNzYWdlIGludG8g V0FMLgorICovCitEYXR1bQorcGdfbG9naWNhbF9lbWl0X2RkbF9tZXNzYWdlX2J5dGVhKFBHX0ZV TkNUSU9OX0FSR1MpCit7CisJY2hhcgkgICAqcHJlZml4ID0gdGV4dF90b19jc3RyaW5nKFBHX0dF VEFSR19URVhUX1BQKDApKTsKKwlPaWQJCQlyZWxpZCA9IFBHX0dFVEFSR19PSUQoMSk7CisJRGVw YXJzZWRDb21tYW5kVHlwZSBjbWR0eXBlID0gUEdfR0VUQVJHX0lOVDE2KDIpOworCWNoYXIJICAg KmRhdGEgPSB0ZXh0X3RvX2NzdHJpbmcoUEdfR0VUQVJHX1RFWFRfUFAoMykpOworCVhMb2dSZWNQ dHIJbHNuOworCisJbHNuID0gTG9nTG9naWNhbERETE1lc3NhZ2UocHJlZml4LCByZWxpZCwgY21k dHlwZSwgZGF0YSwgc3RybGVuKGRhdGEpKTsKKwlQR19SRVRVUk5fTFNOKGxzbik7Cit9CisKK0Rh dHVtCitwZ19sb2dpY2FsX2VtaXRfZGRsX21lc3NhZ2VfdGV4dChQR19GVU5DVElPTl9BUkdTKQor eworCS8qIGJ5dGVhIGFuZCB0ZXh0IGFyZSBjb21wYXRpYmxlICovCisJcmV0dXJuIHBnX2xvZ2lj YWxfZW1pdF9kZGxfbWVzc2FnZV9ieXRlYShmY2luZm8pOworfQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9tZXNvbi5idWlsZCBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvbWVzb24uYnVpbGQKaW5kZXggZDQ4Y2Q0YzU5MC4uMDVlNzc1Njk3ZSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9tZXNvbi5idWlsZAor KysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL21lc29uLmJ1aWxkCkBAIC0yLDYg KzIsOCBAQAogCiBiYWNrZW5kX3NvdXJjZXMgKz0gZmlsZXMoCiAgICdhcHBseXBhcmFsbGVsd29y a2VyLmMnLAorICAnZGRsbWVzc2FnZS5jJywKKyAgJ2RkbHRyaWdnZXIuYycsCiAgICdkZWNvZGUu YycsCiAgICdsYXVuY2hlci5jJywKICAgJ2xvZ2ljYWwuYycsCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL3Byb3RvLmMKaW5kZXggZjMwODcxMzI3NS4uN2VjM2I3MTY2MiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jCisrKyBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYwpAQCAtNjYzLDYgKzY2Myw0NyBAQCBsb2dp Y2FscmVwX3dyaXRlX21lc3NhZ2UoU3RyaW5nSW5mbyBvdXQsIFRyYW5zYWN0aW9uSWQgeGlkLCBY TG9nUmVjUHRyIGxzbiwKIAlwcV9zZW5kYnl0ZXMob3V0LCBtZXNzYWdlLCBzeik7CiB9CiAKKy8q CisgKiBSZWFkIERETCBmcm9tIHN0cmVhbQorICovCitjaGFyICoKK2xvZ2ljYWxyZXBfcmVhZF9k ZGwoU3RyaW5nSW5mbyBpbiwgWExvZ1JlY1B0ciAqbHNuLAorCQkJCQkJICAgY29uc3QgY2hhciAq KnByZWZpeCwKKwkJCQkJCSAgIFNpemUgKnN6KQoreworCXVpbnQ4IGZsYWdzOworCWNoYXIgKm1z ZzsKKworCWZsYWdzID0gcHFfZ2V0bXNnaW50KGluLCAxKTsKKwlpZiAoZmxhZ3MgIT0gMCkKKwkJ ZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBmbGFncyAldSBpbiBkZGwgbWVzc2FnZSIsIGZsYWdz KTsKKworCSpsc24gPSBwcV9nZXRtc2dpbnQ2NChpbik7CisJKnByZWZpeCA9IHBxX2dldG1zZ3N0 cmluZyhpbik7CisJKnN6ID0gcHFfZ2V0bXNnaW50KGluLCA0KTsKKwltc2cgPSAoY2hhciAqKSBw cV9nZXRtc2dieXRlcyhpbiwgKnN6KTsKKworCXJldHVybiBtc2c7Cit9CisKKy8qCisgKiBXcml0 ZSBEREwgdG8gc3RyZWFtCisgKi8KK3ZvaWQKK2xvZ2ljYWxyZXBfd3JpdGVfZGRsKFN0cmluZ0lu Zm8gb3V0LCBYTG9nUmVjUHRyIGxzbiwKKwkJCQkJCQljb25zdCBjaGFyICpwcmVmaXgsIFNpemUg c3osIGNvbnN0IGNoYXIgKm1lc3NhZ2UpCit7CisJdWludDgJCWZsYWdzID0gMDsKKworCXBxX3Nl bmRieXRlKG91dCwgTE9HSUNBTF9SRVBfTVNHX0RETCk7CisKKwlwcV9zZW5kaW50OChvdXQsIGZs YWdzKTsKKwlwcV9zZW5kaW50NjQob3V0LCBsc24pOworCXBxX3NlbmRzdHJpbmcob3V0LCBwcmVm aXgpOworCXBxX3NlbmRpbnQzMihvdXQsIHN6KTsKKwlwcV9zZW5kYnl0ZXMob3V0LCBtZXNzYWdl LCBzeik7Cit9CisKIC8qCiAgKiBXcml0ZSByZWxhdGlvbiBkZXNjcmlwdGlvbiB0byB0aGUgb3V0 cHV0IHN0cmVhbS4KICAqLwpAQCAtMTIzOCw2ICsxMjc5LDggQEAgbG9naWNhbHJlcF9tZXNzYWdl X3R5cGUoTG9naWNhbFJlcE1zZ1R5cGUgYWN0aW9uKQogCQkJcmV0dXJuICJUWVBFIjsKIAkJY2Fz ZSBMT0dJQ0FMX1JFUF9NU0dfTUVTU0FHRToKIAkJCXJldHVybiAiTUVTU0FHRSI7CisJCWNhc2Ug TE9HSUNBTF9SRVBfTVNHX0RETDoKKwkJCXJldHVybiAiRERMIjsKIAkJY2FzZSBMT0dJQ0FMX1JF UF9NU0dfQkVHSU5fUFJFUEFSRToKIAkJCXJldHVybiAiQkVHSU4gUFJFUEFSRSI7CiAJCWNhc2Ug TE9HSUNBTF9SRVBfTVNHX1BSRVBBUkU6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvcmVvcmRlcmJ1ZmZlci5jCmluZGV4IDI2ZDI1MmJkODcuLmQyMTA0MmU3MjUgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCisr KyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCkBAIC05 NCw2ICs5NCw3IEBACiAjaW5jbHVkZSAibGliL2JpbmFyeWhlYXAuaCIKICNpbmNsdWRlICJtaXNj YWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9kZGxt ZXNzYWdlLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbC5oIgogI2luY2x1ZGUgInJl cGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9zbG90Lmgi CkBAIC01MTYsNiArNTE3LDE0IEBAIFJlb3JkZXJCdWZmZXJSZXR1cm5DaGFuZ2UoUmVvcmRlckJ1 ZmZlciAqcmIsIFJlb3JkZXJCdWZmZXJDaGFuZ2UgKmNoYW5nZSwKIAkJCQlwZnJlZShjaGFuZ2Ut PmRhdGEubXNnLm1lc3NhZ2UpOwogCQkJY2hhbmdlLT5kYXRhLm1zZy5tZXNzYWdlID0gTlVMTDsK IAkJCWJyZWFrOworCQljYXNlIFJFT1JERVJfQlVGRkVSX0NIQU5HRV9EREw6CisJCQlpZiAoY2hh bmdlLT5kYXRhLmRkbC5wcmVmaXggIT0gTlVMTCkKKwkJCQlwZnJlZShjaGFuZ2UtPmRhdGEuZGRs LnByZWZpeCk7CisJCQljaGFuZ2UtPmRhdGEuZGRsLnByZWZpeCA9IE5VTEw7CisJCQlpZiAoY2hh bmdlLT5kYXRhLmRkbC5tZXNzYWdlICE9IE5VTEwpCisJCQkJcGZyZWUoY2hhbmdlLT5kYXRhLmRk bC5tZXNzYWdlKTsKKwkJCWNoYW5nZS0+ZGF0YS5kZGwubWVzc2FnZSA9IE5VTEw7CisJCQlicmVh azsKIAkJY2FzZSBSRU9SREVSX0JVRkZFUl9DSEFOR0VfSU5WQUxJREFUSU9OOgogCQkJaWYgKGNo YW5nZS0+ZGF0YS5pbnZhbC5pbnZhbGlkYXRpb25zKQogCQkJCXBmcmVlKGNoYW5nZS0+ZGF0YS5p bnZhbC5pbnZhbGlkYXRpb25zKTsKQEAgLTg5NSw2ICs5MDQsMzYgQEAgUmVvcmRlckJ1ZmZlclF1 ZXVlTWVzc2FnZShSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsCiAJfQogfQog CisvKgorICogQSB0cmFuc2FjdGlvbmFsIERETCBtZXNzYWdlIGlzIHF1ZXVlZCB0byBiZSBwcm9j ZXNzZWQgdXBvbiBjb21taXQuCisgKi8KK3ZvaWQKK1Jlb3JkZXJCdWZmZXJRdWV1ZURETE1lc3Nh Z2UoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLAorCQkJCQkJCSBYTG9nUmVj UHRyIGxzbiwgY29uc3QgY2hhciAqcHJlZml4LAorCQkJCQkJCSBTaXplIG1lc3NhZ2Vfc2l6ZSwg Y29uc3QgY2hhciAqbWVzc2FnZSwKKwkJCQkJCQkgT2lkIHJlbGlkLCBEZXBhcnNlZENvbW1hbmRU eXBlIGNtZHR5cGUpCit7CisJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0OworCVJlb3JkZXJCdWZm ZXJDaGFuZ2UgKmNoYW5nZTsKKworCUFzc2VydChUcmFuc2FjdGlvbklkSXNWYWxpZCh4aWQpKTsK KworCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8ocmItPmNvbnRleHQpOworCisJ Y2hhbmdlID0gUmVvcmRlckJ1ZmZlckdldENoYW5nZShyYik7CisJY2hhbmdlLT5hY3Rpb24gPSBS RU9SREVSX0JVRkZFUl9DSEFOR0VfRERMOworCWNoYW5nZS0+ZGF0YS5kZGwucHJlZml4ID0gcHN0 cmR1cChwcmVmaXgpOworCWNoYW5nZS0+ZGF0YS5kZGwucmVsaWQgPSByZWxpZDsKKwljaGFuZ2Ut PmRhdGEuZGRsLmNtZHR5cGUgPSBjbWR0eXBlOworCWNoYW5nZS0+ZGF0YS5kZGwubWVzc2FnZV9z aXplID0gbWVzc2FnZV9zaXplOworCWNoYW5nZS0+ZGF0YS5kZGwubWVzc2FnZSA9IHBhbGxvYyht ZXNzYWdlX3NpemUpOworCW1lbWNweShjaGFuZ2UtPmRhdGEuZGRsLm1lc3NhZ2UsIG1lc3NhZ2Us IG1lc3NhZ2Vfc2l6ZSk7CisKKwlSZW9yZGVyQnVmZmVyUXVldWVDaGFuZ2UocmIsIHhpZCwgbHNu LCBjaGFuZ2UsIGZhbHNlKTsKKworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsK K30KKwogLyoKICAqIEFzc2VydFRYTkxzbk9yZGVyCiAgKgkJVmVyaWZ5IExTTiBvcmRlcmluZyBv ZiB0cmFuc2FjdGlvbiBsaXN0cyBpbiB0aGUgcmVvcmRlcmJ1ZmZlcgpAQCAtMTk5Nyw2ICsyMDM2 LDI5IEBAIFJlb3JkZXJCdWZmZXJBcHBseU1lc3NhZ2UoUmVvcmRlckJ1ZmZlciAqcmIsIFJlb3Jk ZXJCdWZmZXJUWE4gKnR4biwKIAkJCQkJY2hhbmdlLT5kYXRhLm1zZy5tZXNzYWdlKTsKIH0KIAor LyoKKyAqIEhlbHBlciBmdW5jdGlvbiBmb3IgUmVvcmRlckJ1ZmZlclByb2Nlc3NUWE4gZm9yIGFw cGx5aW5nIHRoZSBEREwgbWVzc2FnZS4KKyAqLworc3RhdGljIGlubGluZSB2b2lkCitSZW9yZGVy QnVmZmVyQXBwbHlERExNZXNzYWdlKFJlb3JkZXJCdWZmZXIgKnJiLCBSZW9yZGVyQnVmZmVyVFhO ICp0eG4sCisJCQkJCQkJIFJlb3JkZXJCdWZmZXJDaGFuZ2UgKmNoYW5nZSwgYm9vbCBzdHJlYW1p bmcpCit7CisJaWYgKHN0cmVhbWluZykKKwkJcmItPnN0cmVhbV9kZGwocmIsIHR4biwgY2hhbmdl LT5sc24sCisJCQkJCQkJICBjaGFuZ2UtPmRhdGEuZGRsLnByZWZpeCwKKwkJCQkJCQkgIGNoYW5n ZS0+ZGF0YS5kZGwucmVsaWQsCisJCQkJCQkJICBjaGFuZ2UtPmRhdGEuZGRsLmNtZHR5cGUsCisJ CQkJCQkJICBjaGFuZ2UtPmRhdGEuZGRsLm1lc3NhZ2Vfc2l6ZSwKKwkJCQkJCQkgIGNoYW5nZS0+ ZGF0YS5kZGwubWVzc2FnZSk7CisJZWxzZQorCQlyYi0+ZGRsKHJiLCB0eG4sIGNoYW5nZS0+bHNu LAorCQkJCQkgICBjaGFuZ2UtPmRhdGEuZGRsLnByZWZpeCwKKwkJCQkJICAgY2hhbmdlLT5kYXRh LmRkbC5yZWxpZCwKKwkJCQkJICAgY2hhbmdlLT5kYXRhLmRkbC5jbWR0eXBlLAorCQkJCQkgICBj aGFuZ2UtPmRhdGEuZGRsLm1lc3NhZ2Vfc2l6ZSwKKwkJCQkJICAgY2hhbmdlLT5kYXRhLmRkbC5t ZXNzYWdlKTsKK30KKwogLyoKICAqIEZ1bmN0aW9uIHRvIHN0b3JlIHRoZSBjb21tYW5kIGlkIGFu ZCBzbmFwc2hvdCBhdCB0aGUgZW5kIG9mIHRoZSBjdXJyZW50CiAgKiBzdHJlYW0gc28gdGhhdCB3 ZSBjYW4gcmV1c2UgdGhlIHNhbWUgd2hpbGUgc2VuZGluZyB0aGUgbmV4dCBzdHJlYW0uCkBAIC0y Mzc5LDYgKzI0NDEsMTAgQEAgUmVvcmRlckJ1ZmZlclByb2Nlc3NUWE4oUmVvcmRlckJ1ZmZlciAq cmIsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKIAkJCQkJUmVvcmRlckJ1ZmZlckFwcGx5TWVzc2Fn ZShyYiwgdHhuLCBjaGFuZ2UsIHN0cmVhbWluZyk7CiAJCQkJCWJyZWFrOwogCisJCQkJY2FzZSBS RU9SREVSX0JVRkZFUl9DSEFOR0VfRERMOgorCQkJCQlSZW9yZGVyQnVmZmVyQXBwbHlERExNZXNz YWdlKHJiLCB0eG4sIGNoYW5nZSwgc3RyZWFtaW5nKTsKKwkJCQkJYnJlYWs7CisKIAkJCQljYXNl IFJFT1JERVJfQlVGRkVSX0NIQU5HRV9JTlZBTElEQVRJT046CiAJCQkJCS8qIEV4ZWN1dGUgdGhl IGludmFsaWRhdGlvbiBtZXNzYWdlcyBsb2NhbGx5ICovCiAJCQkJCVJlb3JkZXJCdWZmZXJFeGVj dXRlSW52YWxpZGF0aW9ucyhjaGFuZ2UtPmRhdGEuaW52YWwubmludmFsaWRhdGlvbnMsCkBAIC0z ODM1LDYgKzM5MDEsMzkgQEAgUmVvcmRlckJ1ZmZlclNlcmlhbGl6ZUNoYW5nZShSZW9yZGVyQnVm ZmVyICpyYiwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogCQkJCQkgICBjaGFuZ2UtPmRhdGEubXNn Lm1lc3NhZ2Vfc2l6ZSk7CiAJCQkJZGF0YSArPSBjaGFuZ2UtPmRhdGEubXNnLm1lc3NhZ2Vfc2l6 ZTsKIAorCQkJCWJyZWFrOworCQkJfQorCQljYXNlIFJFT1JERVJfQlVGRkVSX0NIQU5HRV9EREw6 CisJCQl7CisJCQkJY2hhcgkgICAqZGF0YTsKKwkJCQlTaXplCQlwcmVmaXhfc2l6ZSA9IHN0cmxl bihjaGFuZ2UtPmRhdGEuZGRsLnByZWZpeCkgKyAxOworCisJCQkJc3ogKz0gcHJlZml4X3NpemUg KyBjaGFuZ2UtPmRhdGEuZGRsLm1lc3NhZ2Vfc2l6ZSArCisJCQkJCXNpemVvZihTaXplKSArIHNp emVvZihPaWQpICsgc2l6ZW9mKERlcGFyc2VkQ29tbWFuZFR5cGUpICsgc2l6ZW9mKFNpemUpOwor CQkJCVJlb3JkZXJCdWZmZXJTZXJpYWxpemVSZXNlcnZlKHJiLCBzeik7CisKKwkJCQlkYXRhID0g KChjaGFyICopIHJiLT5vdXRidWYpICsgc2l6ZW9mKFJlb3JkZXJCdWZmZXJEaXNrQ2hhbmdlKTsK KworCQkJCS8qIG1pZ2h0IGhhdmUgYmVlbiByZWFsbG9jYXRlZCBhYm92ZSAqLworCQkJCW9uZGlz ayA9IChSZW9yZGVyQnVmZmVyRGlza0NoYW5nZSAqKSByYi0+b3V0YnVmOworCisJCQkJLyogd3Jp dGUgdGhlIHByZWZpeCwgcmVsaWQgYW5kIGNtZHR5cGUgaW5jbHVkaW5nIHRoZSBzaXplICovCisJ CQkJbWVtY3B5KGRhdGEsICZwcmVmaXhfc2l6ZSwgc2l6ZW9mKFNpemUpKTsKKwkJCQlkYXRhICs9 IHNpemVvZihTaXplKTsKKwkJCQltZW1jcHkoZGF0YSwgJmNoYW5nZS0+ZGF0YS5kZGwucmVsaWQs IHNpemVvZihPaWQpKTsKKwkJCQlkYXRhICs9IHNpemVvZihPaWQpOworCQkJCW1lbWNweShkYXRh LCAmY2hhbmdlLT5kYXRhLmRkbC5jbWR0eXBlLCBzaXplb2YoRGVwYXJzZWRDb21tYW5kVHlwZSkp OworCQkJCWRhdGEgKz0gc2l6ZW9mKERlcGFyc2VkQ29tbWFuZFR5cGUpOworCQkJCW1lbWNweShk YXRhLCBjaGFuZ2UtPmRhdGEuZGRsLnByZWZpeCwgcHJlZml4X3NpemUpOworCQkJCWRhdGEgKz0g cHJlZml4X3NpemU7CisKKwkJCQkvKiB3cml0ZSB0aGUgbWVzc2FnZSBpbmNsdWRpbmcgdGhlIHNp emUgKi8KKwkJCQltZW1jcHkoZGF0YSwgJmNoYW5nZS0+ZGF0YS5kZGwubWVzc2FnZV9zaXplLCBz aXplb2YoU2l6ZSkpOworCQkJCWRhdGEgKz0gc2l6ZW9mKFNpemUpOworCQkJCW1lbWNweShkYXRh LCBjaGFuZ2UtPmRhdGEuZGRsLm1lc3NhZ2UsCisJCQkJCSAgIGNoYW5nZS0+ZGF0YS5kZGwubWVz c2FnZV9zaXplKTsKKwkJCQlkYXRhICs9IGNoYW5nZS0+ZGF0YS5kZGwubWVzc2FnZV9zaXplOwor CiAJCQkJYnJlYWs7CiAJCQl9CiAJCWNhc2UgUkVPUkRFUl9CVUZGRVJfQ0hBTkdFX0lOVkFMSURB VElPTjoKQEAgLTQxNDksNiArNDI0OCwxNSBAQCBSZW9yZGVyQnVmZmVyQ2hhbmdlU2l6ZShSZW9y ZGVyQnVmZmVyQ2hhbmdlICpjaGFuZ2UpCiAJCQkJc3ogKz0gcHJlZml4X3NpemUgKyBjaGFuZ2Ut PmRhdGEubXNnLm1lc3NhZ2Vfc2l6ZSArCiAJCQkJCXNpemVvZihTaXplKSArIHNpemVvZihTaXpl KTsKIAorCQkJCWJyZWFrOworCQkJfQorCQljYXNlIFJFT1JERVJfQlVGRkVSX0NIQU5HRV9EREw6 CisJCQl7CisJCQkJU2l6ZQkJcHJlZml4X3NpemUgPSBzdHJsZW4oY2hhbmdlLT5kYXRhLmRkbC5w cmVmaXgpICsgMTsKKworCQkJCXN6ICs9IHByZWZpeF9zaXplICsgY2hhbmdlLT5kYXRhLmRkbC5t ZXNzYWdlX3NpemUgKworCQkJCQlzaXplb2YoU2l6ZSkgKyBzaXplb2YoU2l6ZSkgKyBzaXplb2Yo T2lkKSArIHNpemVvZihEZXBhcnNlZENvbW1hbmRUeXBlKTsKKwogCQkJCWJyZWFrOwogCQkJfQog CQljYXNlIFJFT1JERVJfQlVGRkVSX0NIQU5HRV9JTlZBTElEQVRJT046CkBAIC00NDI2LDYgKzQ1 MzQsMzMgQEAgUmVvcmRlckJ1ZmZlclJlc3RvcmVDaGFuZ2UoUmVvcmRlckJ1ZmZlciAqcmIsIFJl b3JkZXJCdWZmZXJUWE4gKnR4biwKIAkJCQkJICAgY2hhbmdlLT5kYXRhLm1zZy5tZXNzYWdlX3Np emUpOwogCQkJCWRhdGEgKz0gY2hhbmdlLT5kYXRhLm1zZy5tZXNzYWdlX3NpemU7CiAKKwkJCQli cmVhazsKKwkJCX0KKwkJY2FzZSBSRU9SREVSX0JVRkZFUl9DSEFOR0VfRERMOgorCQkJeworCQkJ CVNpemUJCXByZWZpeF9zaXplOworCisJCQkJLyogcmVhZCBwcmVmaXggKi8KKwkJCQltZW1jcHko JnByZWZpeF9zaXplLCBkYXRhLCBzaXplb2YoU2l6ZSkpOworCQkJCWRhdGEgKz0gc2l6ZW9mKFNp emUpOworCQkJCW1lbWNweSgmY2hhbmdlLT5kYXRhLmRkbC5yZWxpZCwgZGF0YSwgc2l6ZW9mKE9p ZCkpOworCQkJCWRhdGEgKz0gc2l6ZW9mKE9pZCk7CisJCQkJbWVtY3B5KCZjaGFuZ2UtPmRhdGEu ZGRsLmNtZHR5cGUsIGRhdGEsIHNpemVvZihEZXBhcnNlZENvbW1hbmRUeXBlKSk7CisJCQkJZGF0 YSArPSBzaXplb2YoRGVwYXJzZWRDb21tYW5kVHlwZSk7CisJCQkJY2hhbmdlLT5kYXRhLmRkbC5w cmVmaXggPSBNZW1vcnlDb250ZXh0QWxsb2MocmItPmNvbnRleHQsIHByZWZpeF9zaXplKTsKKwkJ CQltZW1jcHkoY2hhbmdlLT5kYXRhLmRkbC5wcmVmaXgsIGRhdGEsIHByZWZpeF9zaXplKTsKKwkJ CQlBc3NlcnQoY2hhbmdlLT5kYXRhLmRkbC5wcmVmaXhbcHJlZml4X3NpemUgLSAxXSA9PSAnXDAn KTsKKwkJCQlkYXRhICs9IHByZWZpeF9zaXplOworCisJCQkJLyogcmVhZCB0aGUgbWVzc2FnZSAq LworCQkJCW1lbWNweSgmY2hhbmdlLT5kYXRhLm1zZy5tZXNzYWdlX3NpemUsIGRhdGEsIHNpemVv ZihTaXplKSk7CisJCQkJZGF0YSArPSBzaXplb2YoU2l6ZSk7CisJCQkJY2hhbmdlLT5kYXRhLm1z Zy5tZXNzYWdlID0gTWVtb3J5Q29udGV4dEFsbG9jKHJiLT5jb250ZXh0LAorCQkJCQkJCQkJCQkJ CQkJICBjaGFuZ2UtPmRhdGEubXNnLm1lc3NhZ2Vfc2l6ZSk7CisJCQkJbWVtY3B5KGNoYW5nZS0+ ZGF0YS5tc2cubWVzc2FnZSwgZGF0YSwKKwkJCQkJICAgY2hhbmdlLT5kYXRhLm1zZy5tZXNzYWdl X3NpemUpOworCQkJCWRhdGEgKz0gY2hhbmdlLT5kYXRhLm1zZy5tZXNzYWdlX3NpemU7CisKIAkJ CQlicmVhazsKIAkJCX0KIAkJY2FzZSBSRU9SREVSX0JVRkZFUl9DSEFOR0VfSU5WQUxJREFUSU9O OgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyBi L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKaW5kZXggMGVlNzY0ZDY4 Zi4uNWQyY2RjZTVlYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC93b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5j CkBAIC0xNjYsNiArMTY2LDcgQEAKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJu b2Rlcy9tYWtlZnVuY3MuaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvb3B0aW1pemVyLmgiCisjaW5j bHVkZSAicGFyc2VyL2FuYWx5emUuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfcmVsYXRpb24u aCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2Jnd29ya2VyLmgi CkBAIC0xOTEsNyArMTkyLDEwIEBACiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIKKyNpbmNs dWRlICJ0Y29wL2RkbGRlcGFyc2UuaCIKKyNpbmNsdWRlICJ0Y29wL3BxdWVyeS5oIgogI2luY2x1 ZGUgInRjb3AvdGNvcHByb3QuaCIKKyNpbmNsdWRlICJ0Y29wL3V0aWxpdHkuaCIKICNpbmNsdWRl ICJ1dGlscy9hY2wuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0 aWxzL2NhdGNhY2hlLmgiCkBAIC0zMjc3LDYgKzMyODEsMTg5IEBAIGFwcGx5X2hhbmRsZV90cnVu Y2F0ZShTdHJpbmdJbmZvIHMpCiAJZW5kX3JlcGxpY2F0aW9uX3N0ZXAoKTsKIH0KIAorLyoKKyAq IEhhbmRsZSBDUkVBVEUgVEFCTEUgY29tbWFuZAorICoKKyAqIENhbGwgQWRkU3Vic2NyaXB0aW9u UmVsU3RhdGUgZm9yIENSRUFURSBUQUJMRSBjb21tYW5kIHRvIHNldCB0aGUgcmVsc3RhdGUgdG8K KyAqIFNVQlJFTF9TVEFURV9SRUFEWSBzbyBETUwgY2hhbmdlcyBvbiB0aGlzIG5ldyB0YWJsZSBj YW4gYmUgcmVwbGljYXRlZCB3aXRob3V0CisgKiBoYXZpbmcgdG8gbWFudWFsbHkgcnVuICJBTFRF UiBTVUJTQ1JJUFRJT04gLi4uIFJFRlJFU0ggUFVCTElDQVRJT04iCisgKi8KK3N0YXRpYyB2b2lk Citwb3N0cHJvY2Vzc19kZGxfY3JlYXRlX3RhYmxlKFJhd1N0bXQgKmNvbW1hbmQpCit7CisJQ29t bWFuZFRhZwljb21tYW5kVGFnOworCVJhbmdlVmFyICAgKnJ2ID0gTlVMTDsKKwlPaWQJCQlyZWxp ZDsKKwlPaWQJCQlyZWxuYW1lc3BhY2Vfb2lkID0gSW52YWxpZE9pZDsKKwlDcmVhdGVTdG10ICpj c3RtdDsKKwljaGFyCSAgICpzY2hlbWFuYW1lID0gTlVMTDsKKwljaGFyCSAgICpyZWxuYW1lID0g TlVMTDsKKworCWNvbW1hbmRUYWcgPSBDcmVhdGVDb21tYW5kVGFnKChOb2RlICopIGNvbW1hbmQp OworCisJaWYgKGNvbW1hbmRUYWcgIT0gQ01EVEFHX0NSRUFURV9UQUJMRSkKKwkJcmV0dXJuOwor CisJY3N0bXQgPSAoQ3JlYXRlU3RtdCAqKSBjb21tYW5kLT5zdG10OworCXJ2ID0gY3N0bXQtPnJl bGF0aW9uOworCWlmICghcnYpCisJCXJldHVybjsKKworCXNjaGVtYW5hbWUgPSBydi0+c2NoZW1h bmFtZTsKKwlyZWxuYW1lID0gcnYtPnJlbG5hbWU7CisKKwlpZiAoc2NoZW1hbmFtZSAhPSBOVUxM KQorCQlyZWxuYW1lc3BhY2Vfb2lkID0gZ2V0X25hbWVzcGFjZV9vaWQoc2NoZW1hbmFtZSwgZmFs c2UpOworCisJaWYgKE9pZElzVmFsaWQocmVsbmFtZXNwYWNlX29pZCkpCisJCXJlbGlkID0gZ2V0 X3JlbG5hbWVfcmVsaWQocmVsbmFtZSwgcmVsbmFtZXNwYWNlX29pZCk7CisJZWxzZQorCQlyZWxp ZCA9IFJlbG5hbWVHZXRSZWxpZChyZWxuYW1lKTsKKworCWlmIChPaWRJc1ZhbGlkKHJlbGlkKSkK Kwl7CisJCUFkZFN1YnNjcmlwdGlvblJlbFN0YXRlKE15U3Vic2NyaXB0aW9uLT5vaWQsIHJlbGlk LAorCQkJCQkJCQlTVUJSRUxfU1RBVEVfUkVBRFksCisJCQkJCQkJCUludmFsaWRYTG9nUmVjUHRy KTsKKwkJZXJlcG9ydChERUJVRzEsCisJCQkJKGVycm1zZ19pbnRlcm5hbCgidGFibGUgXCIlc1wi IGFkZGVkIHRvIHN1YnNjcmlwdGlvbiBcIiVzXCIiLAorCQkJCQkJCQkgcmVsbmFtZSwgTXlTdWJz Y3JpcHRpb24tPm5hbWUpKSk7CisJfQorfQorCisvKgorICogSGFuZGxlIERETCBjb21tYW5kcwor ICoKKyAqIEhhbmRsZSBEREwgcmVwbGljYXRpb24gbWVzc2FnZXMuIENvbnZlcnQgdGhlIGpzb24g c3RyaW5nIGludG8gYSBxdWVyeQorICogc3RyaW5nIGFuZCBydW4gaXQgdGhyb3VnaCB0aGUgcXVl cnkgcG9ydGFsLgorICovCitzdGF0aWMgdm9pZAorYXBwbHlfaGFuZGxlX2RkbChTdHJpbmdJbmZv IHMpCit7CisJWExvZ1JlY1B0cglsc247CisJY29uc3QgY2hhciAqcHJlZml4ID0gTlVMTDsKKwlj aGFyCSAgICptZXNzYWdlID0gTlVMTDsKKwljaGFyCSAgICpkZGxfY29tbWFuZDsKKwlTaXplCQlz ejsKKwlMaXN0CSAgICpwYXJzZXRyZWVfbGlzdDsKKwlMaXN0Q2VsbCAgICpwYXJzZXRyZWVfaXRl bTsKKwlEZXN0UmVjZWl2ZXIgKnJlY2VpdmVyOworCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsK Kwljb25zdCBjaGFyICpzYXZlX2RlYnVnX3F1ZXJ5X3N0cmluZyA9IGRlYnVnX3F1ZXJ5X3N0cmlu ZzsKKworCW1lc3NhZ2UgPSBsb2dpY2FscmVwX3JlYWRfZGRsKHMsICZsc24sICZwcmVmaXgsICZz eik7CisKKwlTZXRDdXJyZW50U3RhdGVtZW50U3RhcnRUaW1lc3RhbXAoKTsKKworCWlmICghSXNU cmFuc2FjdGlvblN0YXRlKCkpCisJeworCQlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQlt YXliZV9yZXJlYWRfc3Vic2NyaXB0aW9uKCk7CisJfQorCisJTWVtb3J5Q29udGV4dFN3aXRjaFRv KEFwcGx5TWVzc2FnZUNvbnRleHQpOworCisJZGRsX2NvbW1hbmQgPSBkZXBhcnNlX2RkbF9qc29u X3RvX3N0cmluZyhtZXNzYWdlKTsKKwlkZWJ1Z19xdWVyeV9zdHJpbmcgPSBkZGxfY29tbWFuZDsK KworCS8qIERlc3ROb25lIGZvciBsb2dpY2FsIHJlcGxpY2F0aW9uICovCisJcmVjZWl2ZXIgPSBD cmVhdGVEZXN0UmVjZWl2ZXIoRGVzdE5vbmUpOworCXBhcnNldHJlZV9saXN0ID0gcGdfcGFyc2Vf cXVlcnkoZGRsX2NvbW1hbmQpOworCisJZm9yZWFjaChwYXJzZXRyZWVfaXRlbSwgcGFyc2V0cmVl X2xpc3QpCisJeworCQlMaXN0CSAgICpwbGFudHJlZV9saXN0OworCQlMaXN0CSAgICpxdWVyeXRy ZWVfbGlzdDsKKwkJUmF3U3RtdCAgICAqY29tbWFuZCA9IChSYXdTdG10ICopIGxmaXJzdChwYXJz ZXRyZWVfaXRlbSk7CisJCUNvbW1hbmRUYWcJY29tbWFuZFRhZzsKKwkJTWVtb3J5Q29udGV4dCBw ZXJfcGFyc2V0cmVlX2NvbnRleHQgPSBOVUxMOworCQlQb3J0YWwJCXBvcnRhbDsKKwkJYm9vbAkJ c25hcHNob3Rfc2V0ID0gZmFsc2U7CisKKwkJY29tbWFuZFRhZyA9IENyZWF0ZUNvbW1hbmRUYWco KE5vZGUgKikgY29tbWFuZCk7CisKKwkJLyogSWYgd2UgZ290IGEgY2FuY2VsIHNpZ25hbCBpbiBw YXJzaW5nIG9yIHByaW9yIGNvbW1hbmQsIHF1aXQgKi8KKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMo KTsKKworCQkvKgorCQkgKiBTZXQgdXAgYSBzbmFwc2hvdCBpZiBwYXJzZSBhbmFseXNpcy9wbGFu bmluZyB3aWxsIG5lZWQgb25lLgorCQkgKi8KKwkJaWYgKGFuYWx5emVfcmVxdWlyZXNfc25hcHNo b3QoY29tbWFuZCkpCisJCXsKKwkJCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNu YXBzaG90KCkpOworCQkJc25hcHNob3Rfc2V0ID0gdHJ1ZTsKKwkJfQorCisJCS8qCisJCSAqIFdl IGRvIHRoZSB3b3JrIGZvciBlYWNoIHBhcnNldHJlZSBpbiBhIHNob3J0LWxpdmVkIGNvbnRleHQs IHRvCisJCSAqIGxpbWl0IHRoZSBtZW1vcnkgdXNlZCB3aGVuIHRoZXJlIGFyZSBtYW55IGNvbW1h bmRzIGluIHRoZSBzdHJpbmcuCisJCSAqLworCQlwZXJfcGFyc2V0cmVlX2NvbnRleHQgPQorCQkJ QWxsb2NTZXRDb250ZXh0Q3JlYXRlKEN1cnJlbnRNZW1vcnlDb250ZXh0LAorCQkJCQkJCQkgICJl eGVjdXRlX3NxbF9zdHJpbmcgcGVyLXN0YXRlbWVudCBjb250ZXh0IiwKKwkJCQkJCQkJICBBTExP Q1NFVF9ERUZBVUxUX1NJWkVTKTsKKwkJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hU byhwZXJfcGFyc2V0cmVlX2NvbnRleHQpOworCisJCXF1ZXJ5dHJlZV9saXN0ID0gcGdfYW5hbHl6 ZV9hbmRfcmV3cml0ZV9maXhlZHBhcmFtcyhjb21tYW5kLAorCQkJCQkJCQkJCQkJCQkJZGRsX2Nv bW1hbmQsCisJCQkJCQkJCQkJCQkJCQlOVUxMLCAwLCBOVUxMKTsKKworCQlwbGFudHJlZV9saXN0 ID0gcGdfcGxhbl9xdWVyaWVzKHF1ZXJ5dHJlZV9saXN0LCBkZGxfY29tbWFuZCwgMCwgTlVMTCk7 CisKKwkJLyogRG9uZSB3aXRoIHRoZSBzbmFwc2hvdCB1c2VkIGZvciBwYXJzaW5nL3BsYW5uaW5n ICovCisJCWlmIChzbmFwc2hvdF9zZXQpCisJCQlQb3BBY3RpdmVTbmFwc2hvdCgpOworCisJCXBv cnRhbCA9IENyZWF0ZVBvcnRhbCgibG9naWNhbCByZXBsaWNhdGlvbiIsIHRydWUsIHRydWUpOwor CisJCS8qCisJCSAqIFdlIGRvbid0IGhhdmUgdG8gY29weSBhbnl0aGluZyBpbnRvIHRoZSBwb3J0 YWwsIGJlY2F1c2UgZXZlcnl0aGluZworCQkgKiB3ZSBhcmUgcGFzc2luZyBoZXJlIGlzIGluIEFw cGx5TWVzc2FnZUNvbnRleHQgb3IgdGhlCisJCSAqIHBlcl9wYXJzZXRyZWVfY29udGV4dCwgYW5k IHNvIHdpbGwgb3V0bGl2ZSB0aGUgcG9ydGFsIGFueXdheS4KKwkJICovCisJCVBvcnRhbERlZmlu ZVF1ZXJ5KHBvcnRhbCwKKwkJCQkJCSAgTlVMTCwKKwkJCQkJCSAgZGRsX2NvbW1hbmQsCisJCQkJ CQkgIGNvbW1hbmRUYWcsCisJCQkJCQkgIHBsYW50cmVlX2xpc3QsCisJCQkJCQkgIE5VTEwpOwor CisJCS8qCisJCSAqIFN0YXJ0IHRoZSBwb3J0YWwuICBObyBwYXJhbWV0ZXJzIGhlcmUuCisJCSAq LworCQlQb3J0YWxTdGFydChwb3J0YWwsIE5VTEwsIDAsIEludmFsaWRTbmFwc2hvdCk7CisKKwkJ LyoKKwkJICogU3dpdGNoIGJhY2sgdG8gdHJhbnNhY3Rpb24gY29udGV4dCBmb3IgZXhlY3V0aW9u LgorCQkgKi8KKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOworCisJCSh2b2lk KSBQb3J0YWxSdW4ocG9ydGFsLAorCQkJCQkJIEZFVENIX0FMTCwKKwkJCQkJCSB0cnVlLAorCQkJ CQkJIHRydWUsCisJCQkJCQkgcmVjZWl2ZXIsCisJCQkJCQkgcmVjZWl2ZXIsCisJCQkJCQkgTlVM TCk7CisKKwkJUG9ydGFsRHJvcChwb3J0YWwsIGZhbHNlKTsKKworCQlDb21tYW5kQ291bnRlcklu Y3JlbWVudCgpOworCisJCS8qCisJCSAqIFRhYmxlIGNyZWF0ZWQgYnkgRERMIHJlcGxpY2F0aW9u IChkYXRhYmFzZSBsZXZlbCkgaXMgYXV0b21hdGljYWxseQorCQkgKiBhZGRlZCB0byB0aGUgc3Vi c2NyaXB0aW9uIGhlcmUuCisJCSAqLworCQlwb3N0cHJvY2Vzc19kZGxfY3JlYXRlX3RhYmxlKGNv bW1hbmQpOworCisJCS8qIE5vdyB3ZSBtYXkgZHJvcCB0aGUgcGVyLXBhcnNldHJlZSBjb250ZXh0 LCBpZiBvbmUgd2FzIGNyZWF0ZWQuICovCisJCU1lbW9yeUNvbnRleHREZWxldGUocGVyX3BhcnNl dHJlZV9jb250ZXh0KTsKKwl9CisKKwlkZWJ1Z19xdWVyeV9zdHJpbmcgPSBzYXZlX2RlYnVnX3F1 ZXJ5X3N0cmluZzsKKworCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7Cit9CiAKIC8qCiAgKiBM b2dpY2FsIHJlcGxpY2F0aW9uIHByb3RvY29sIG1lc3NhZ2UgZGlzcGF0Y2hlci4KQEAgLTMzNDIs NiArMzUyOSwxMCBAQCBhcHBseV9kaXNwYXRjaChTdHJpbmdJbmZvIHMpCiAJCQkgKi8KIAkJCWJy ZWFrOwogCisJCWNhc2UgTE9HSUNBTF9SRVBfTVNHX0RETDoKKwkJCWFwcGx5X2hhbmRsZV9kZGwo cyk7CisJCQlicmVhazsKKwogCQljYXNlIExPR0lDQUxfUkVQX01TR19TVFJFQU1fU1RBUlQ6CiAJ CQlhcHBseV9oYW5kbGVfc3RyZWFtX3N0YXJ0KHMpOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYwppbmRleCBiMDhjYTU1MDQxLi5jMTBmN2Yy NWUxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1 dC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKQEAg LTE4LDYgKzE4LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX3B1YmxpY2F0aW9uX3JlbC5oIgog I2luY2x1ZGUgImNhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMv ZGVmcmVtLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmgiCiAjaW5jbHVk ZSAiY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1 dG9yLmgiCiAjaW5jbHVkZSAiZm1nci5oIgpAQCAtNTUsNiArNTYsMTEgQEAgc3RhdGljIHZvaWQg cGdvdXRwdXRfbWVzc2FnZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCiAJCQkJCQkJIFJl b3JkZXJCdWZmZXJUWE4gKnR4biwgWExvZ1JlY1B0ciBtZXNzYWdlX2xzbiwKIAkJCQkJCQkgYm9v bCB0cmFuc2FjdGlvbmFsLCBjb25zdCBjaGFyICpwcmVmaXgsCiAJCQkJCQkJIFNpemUgc3osIGNv bnN0IGNoYXIgKm1lc3NhZ2UpOworc3RhdGljIHZvaWQgcGdvdXRwdXRfZGRsKExvZ2ljYWxEZWNv ZGluZ0NvbnRleHQgKmN0eCwKKwkJCQkJCSBSZW9yZGVyQnVmZmVyVFhOICp0eG4sIFhMb2dSZWNQ dHIgbWVzc2FnZV9sc24sCisJCQkJCQkgY29uc3QgY2hhciAqcHJlZml4LCBPaWQgcmVsaWQsCisJ CQkJCQkgRGVwYXJzZWRDb21tYW5kVHlwZSBjbWR0eXBlLAorCQkJCQkJIFNpemUgc3osIGNvbnN0 IGNoYXIgKm1lc3NhZ2UpOwogc3RhdGljIGJvb2wgcGdvdXRwdXRfb3JpZ2luX2ZpbHRlcihMb2dp Y2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCiAJCQkJCQkJCSAgIFJlcE9yaWdpbklkIG9yaWdpbl9p ZCk7CiBzdGF0aWMgdm9pZCBwZ291dHB1dF9iZWdpbl9wcmVwYXJlX3R4bihMb2dpY2FsRGVjb2Rp bmdDb250ZXh0ICpjdHgsCkBAIC0yMDcsNiArMjEzLDEzIEBAIHR5cGVkZWYgc3RydWN0IFJlbGF0 aW9uU3luY0VudHJ5CiB0eXBlZGVmIHN0cnVjdCBQR091dHB1dFR4bkRhdGEKIHsKIAlib29sCQlz ZW50X2JlZ2luX3R4bjsgLyogZmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgQkVHSU4gaGFzIGJlZW4g c2VudCAqLworCS8qCisJICogTWFpbnRhaW4gbGlzdCBvZiBkZWxldGVkIG9pZHMgd2hpY2ggYXJl IGFkZGVkIGF0IGNvbW1hbmQgc3RhcnQuCisJICogVGhpcyBpcyByZXF1aXJlZCBiZWNhdXNlIGF0 IGNvbW1hbmQgZW5kIHdoZW4gdGhlIGFjdHVhbCBjb21tYW5kIGlzIHNlbnQKKwkgKiB0aGUgY2F0 YWxvZ3MgaGF2ZSBiZWVuIG1vZGlmaWVkIGFuZCBpdCBpcyBub3QgcG9zc2libGUgdG8ga25vdyBp ZiB0aGUgb2lkCisJICogd2FzIHJlZmVycmluZyB0byBhbiBvYmplY3QgdGhhdCB3YXMgcGFydCBv ZiB0aGUgcHVibGljYXRpb24uCisJICovCisJTGlzdAkgICAqZGVsZXRlZF9yZWxpZHM7IC8qIG1h aW50YWluIGxpc3Qgb2YgZGVsZXRlZCB0YWJsZSBvaWRzICovCiB9IFBHT3V0cHV0VHhuRGF0YTsK IAogLyogTWFwIHVzZWQgdG8gcmVtZW1iZXIgd2hpY2ggcmVsYXRpb24gc2NoZW1hcyB3ZSBzZW50 LiAqLwpAQCAtMjU0LDYgKzI2Nyw3IEBAIF9QR19vdXRwdXRfcGx1Z2luX2luaXQoT3V0cHV0UGx1 Z2luQ2FsbGJhY2tzICpjYikKIAljYi0+Y2hhbmdlX2NiID0gcGdvdXRwdXRfY2hhbmdlOwogCWNi LT50cnVuY2F0ZV9jYiA9IHBnb3V0cHV0X3RydW5jYXRlOwogCWNiLT5tZXNzYWdlX2NiID0gcGdv dXRwdXRfbWVzc2FnZTsKKwljYi0+ZGRsX2NiID0gcGdvdXRwdXRfZGRsOwogCWNiLT5jb21taXRf Y2IgPSBwZ291dHB1dF9jb21taXRfdHhuOwogCiAJY2ItPmJlZ2luX3ByZXBhcmVfY2IgPSBwZ291 dHB1dF9iZWdpbl9wcmVwYXJlX3R4bjsKQEAgLTI3MCw2ICsyODQsNyBAQCBfUEdfb3V0cHV0X3Bs dWdpbl9pbml0KE91dHB1dFBsdWdpbkNhbGxiYWNrcyAqY2IpCiAJY2ItPnN0cmVhbV9jb21taXRf Y2IgPSBwZ291dHB1dF9zdHJlYW1fY29tbWl0OwogCWNiLT5zdHJlYW1fY2hhbmdlX2NiID0gcGdv dXRwdXRfY2hhbmdlOwogCWNiLT5zdHJlYW1fbWVzc2FnZV9jYiA9IHBnb3V0cHV0X21lc3NhZ2U7 CisJY2ItPnN0cmVhbV9kZGxfY2IgPSBwZ291dHB1dF9kZGw7CiAJY2ItPnN0cmVhbV90cnVuY2F0 ZV9jYiA9IHBnb3V0cHV0X3RydW5jYXRlOwogCS8qIHRyYW5zYWN0aW9uIHN0cmVhbWluZyAtIHR3 by1waGFzZSBjb21taXQgKi8KIAljYi0+c3RyZWFtX3ByZXBhcmVfY2IgPSBwZ291dHB1dF9zdHJl YW1fcHJlcGFyZV90eG47CkBAIC01MDUsNiArNTIwLDcgQEAgcGdvdXRwdXRfc3RhcnR1cChMb2dp Y2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIE91dHB1dFBsdWdpbk9wdGlvbnMgKm9wdCwKIAogCQkv KiBJbml0IHB1YmxpY2F0aW9uIHN0YXRlLiAqLwogCQlkYXRhLT5wdWJsaWNhdGlvbnMgPSBOSUw7 CisJCWRhdGEtPmRlbGV0ZWRfcmVsaWRzID0gTklMOwogCQlwdWJsaWNhdGlvbnNfdmFsaWQgPSBm YWxzZTsKIAogCQkvKgpAQCAtNTMzLDYgKzU0OSwzNCBAQCBwZ291dHB1dF9zdGFydHVwKExvZ2lj YWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgT3V0cHV0UGx1Z2luT3B0aW9ucyAqb3B0LAogCX0KIH0K IAorLyogSW5pdGlhbGl6ZSB0aGUgcGVyLXRyYW5zYWN0aW9uIHByaXZhdGUgZGF0YSBmb3IgdGhl IGdpdmVuIHRyYW5zYWN0aW9uLiAqLworc3RhdGljIHZvaWQKK2luaXRfdHhuX2RhdGEoTG9naWNh bERlY29kaW5nQ29udGV4dCAqY3R4LCBSZW9yZGVyQnVmZmVyVFhOICp0eG4pCit7CisJUEdPdXRw dXRUeG5EYXRhICp0eG5kYXRhOworCisJaWYgKHR4bi0+b3V0cHV0X3BsdWdpbl9wcml2YXRlICE9 IE5VTEwpCisJCXJldHVybjsKKworCXR4bmRhdGEgPSBNZW1vcnlDb250ZXh0QWxsb2NaZXJvKGN0 eC0+Y29udGV4dCwgc2l6ZW9mKFBHT3V0cHV0VHhuRGF0YSkpOworCisJdHhuLT5vdXRwdXRfcGx1 Z2luX3ByaXZhdGUgPSB0eG5kYXRhOworfQorCisvKiBDbGVhbiB1cCB0aGUgcGVyLXRyYW5zYWN0 aW9uIHByaXZhdGUgZGF0YSBmb3IgdGhlIGdpdmVuIHRyYW5zYWN0aW9uLiAqLworc3RhdGljIHZv aWQKK2NsZWFuX3R4bl9kYXRhKFJlb3JkZXJCdWZmZXJUWE4gKnR4bikKK3sKKwlQR091dHB1dFR4 bkRhdGEgKnR4bmRhdGEgPSAoUEdPdXRwdXRUeG5EYXRhICopIHR4bi0+b3V0cHV0X3BsdWdpbl9w cml2YXRlOworCisJaWYgKHR4bmRhdGEgPT0gTlVMTCkKKwkJcmV0dXJuOworCisJbGlzdF9mcmVl KHR4bmRhdGEtPmRlbGV0ZWRfcmVsaWRzKTsKKwlwZnJlZSh0eG5kYXRhKTsKKwl0eG4tPm91dHB1 dF9wbHVnaW5fcHJpdmF0ZSA9IE5VTEw7Cit9CisKIC8qCiAgKiBCRUdJTiBjYWxsYmFjay4KICAq CkBAIC01NDYsMTAgKzU5MCw3IEBAIHBnb3V0cHV0X3N0YXJ0dXAoTG9naWNhbERlY29kaW5nQ29u dGV4dCAqY3R4LCBPdXRwdXRQbHVnaW5PcHRpb25zICpvcHQsCiBzdGF0aWMgdm9pZAogcGdvdXRw dXRfYmVnaW5fdHhuKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgUmVvcmRlckJ1ZmZlclRY TiAqdHhuKQogewotCVBHT3V0cHV0VHhuRGF0YSAqdHhuZGF0YSA9IE1lbW9yeUNvbnRleHRBbGxv Y1plcm8oY3R4LT5jb250ZXh0LAotCQkJCQkJCQkJCQkJCSAgc2l6ZW9mKFBHT3V0cHV0VHhuRGF0 YSkpOwotCi0JdHhuLT5vdXRwdXRfcGx1Z2luX3ByaXZhdGUgPSB0eG5kYXRhOworCWluaXRfdHhu X2RhdGEoY3R4LCB0eG4pOwogfQogCiAvKgpAQCAtNTk0LDggKzYzNSw3IEBAIHBnb3V0cHV0X2Nv bW1pdF90eG4oTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBSZW9yZGVyQnVmZmVyVFhOICp0 eG4sCiAJICovCiAJc2VudF9iZWdpbl90eG4gPSB0eG5kYXRhLT5zZW50X2JlZ2luX3R4bjsKIAlP dXRwdXRQbHVnaW5VcGRhdGVQcm9ncmVzcyhjdHgsICFzZW50X2JlZ2luX3R4bik7Ci0JcGZyZWUo dHhuZGF0YSk7Ci0JdHhuLT5vdXRwdXRfcGx1Z2luX3ByaXZhdGUgPSBOVUxMOworCWNsZWFuX3R4 bl9kYXRhKHR4bik7CiAKIAlpZiAoIXNlbnRfYmVnaW5fdHhuKQogCXsKQEAgLTYzNyw2ICs2Nzcs OCBAQCBwZ291dHB1dF9wcmVwYXJlX3R4bihMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFJl b3JkZXJCdWZmZXJUWE4gKnR4biwKIAlPdXRwdXRQbHVnaW5QcmVwYXJlV3JpdGUoY3R4LCB0cnVl KTsKIAlsb2dpY2FscmVwX3dyaXRlX3ByZXBhcmUoY3R4LT5vdXQsIHR4biwgcHJlcGFyZV9sc24p OwogCU91dHB1dFBsdWdpbldyaXRlKGN0eCwgdHJ1ZSk7CisKKwljbGVhbl90eG5fZGF0YSh0eG4p OwogfQogCiAvKgpAQCAtMTY2NSw2ICsxNzA3LDExMiBAQCBwZ291dHB1dF9tZXNzYWdlKExvZ2lj YWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogCU91dHB1dFBs dWdpbldyaXRlKGN0eCwgdHJ1ZSk7CiB9CiAKKy8qIENoZWNrIGlmIHRoZSBnaXZlbiBvYmplY3Qg aXMgcHVibGlzaGVkLiAqLworc3RhdGljIGJvb2wKK2lzX29iamVjdF9wdWJsaXNoZWQoTG9naWNh bERlY29kaW5nQ29udGV4dCAqY3R4LCBPaWQgb2JqaWQpCit7CisJUmVsYXRpb24JcmVsYXRpb24g PSBOVUxMOworCVJlbGF0aW9uU3luY0VudHJ5ICpyZWxlbnRyeTsKKwlQR091dHB1dERhdGEgKmRh dGEgPSAoUEdPdXRwdXREYXRhICopIGN0eC0+b3V0cHV0X3BsdWdpbl9wcml2YXRlOworCisJLyog Rmlyc3QgY2hlY2sgdGhlIERETCBjb21tYW5kIGZpbHRlci4gKi8KKwlzd2l0Y2ggKGdldF9yZWxf cmVsa2luZChvYmppZCkpCisJeworCQljYXNlIFJFTEtJTkRfUkVMQVRJT046CisJCWNhc2UgUkVM S0lORF9QQVJUSVRJT05FRF9UQUJMRToKKwkJCXJlbGF0aW9uID0gUmVsYXRpb25JZEdldFJlbGF0 aW9uKG9iamlkKTsKKwkJCXJlbGVudHJ5ID0gZ2V0X3JlbF9zeW5jX2VudHJ5KGRhdGEsIHJlbGF0 aW9uKTsKKwkJCVJlbGF0aW9uQ2xvc2UocmVsYXRpb24pOworCisJCQkvKiBPbmx5IHNlbmQgdGhp cyBkZGwgaWYgd2UgcHVibGlzaCBkZGwgbWVzc2FnZS4gKi8KKwkJCWlmIChyZWxlbnRyeS0+cHVi YWN0aW9ucy5wdWJkZGxfdGFibGUpCisJCQkJcmV0dXJuIHRydWU7CisKKwkJCWJyZWFrOworCisJ CWNhc2UgUkVMS0lORF9TRVFVRU5DRToKKwkJCS8qIFNlbmQgc2VxdWVuY2VzICovCisJCQlyZXR1 cm4gdHJ1ZTsKKworCQlkZWZhdWx0OgorCQkJLyogdW5zdXBwb3J0ZWQgb2JqZWN0cyAqLworCQkJ cmV0dXJuIGZhbHNlOworCX0KKworCXJldHVybiBmYWxzZTsKK30KKworLyoKKyAqIFNlbmQgdGhl IGRlY29kZWQgRERMIG1lc3NhZ2UuCisgKi8KK3N0YXRpYyB2b2lkCitwZ291dHB1dF9kZGwoTG9n aWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCisJCQkgWExv Z1JlY1B0ciBtZXNzYWdlX2xzbiwKKwkJCSBjb25zdCBjaGFyICpwcmVmaXgsIE9pZCByZWxpZCwg RGVwYXJzZWRDb21tYW5kVHlwZSBjbWR0eXBlLAorCQkJIFNpemUgc3osIGNvbnN0IGNoYXIgKm1l c3NhZ2UpCit7CisJUEdPdXRwdXRUeG5EYXRhICp0eG5kYXRhID0gKFBHT3V0cHV0VHhuRGF0YSAq KSB0eG4tPm91dHB1dF9wbHVnaW5fcHJpdmF0ZTsKKworCS8qCisJICogQ2hlY2sgaWYgdGhlIGdp dmVuIG9iamVjdCBpcyBwdWJsaXNoZWQuIE5vdGUgdGhhdCBmb3IgZHJvcHBlZCBvYmplY3RzLAor CSAqIHdlIGNhbm5vdCBnZXQgdGhlIHJlcXVpcmVkIGluZm9ybWF0aW9uIGZyb20gdGhlIGNhdGFs b2csIHNvIHdlIHNraXAgdGhlCisJICogY2hlY2sgZm9yIHRoZW0uCisJICovCisJaWYgKGNtZHR5 cGUgIT0gRENUX1RhYmxlRHJvcEVuZCAmJiAhaXNfb2JqZWN0X3B1Ymxpc2hlZChjdHgsIHJlbGlk KSkKKwkJcmV0dXJuOworCisJc3dpdGNoIChjbWR0eXBlKQorCXsKKwkJY2FzZSBEQ1RfVGFibGVE cm9wU3RhcnQ6CisJCQl7CisJCQkJTWVtb3J5Q29udGV4dAlvbGRjdHg7CisKKwkJCQlpbml0X3R4 bl9kYXRhKGN0eCwgdHhuKTsKKworCQkJCXR4bmRhdGEgPSAoUEdPdXRwdXRUeG5EYXRhICopIHR4 bi0+b3V0cHV0X3BsdWdpbl9wcml2YXRlOworCisJCQkJLyoKKwkJCQkgKiBPbiBEUk9QIHN0YXJ0 LCBhZGQgdGhlIHJlbGlkIHRvIGEgZGVsZXRlZF9yZWxpZCBsaXN0IGlmIHRoZQorCQkJCSAqIHJl bGlkIGlzIHBhcnQgb2YgYSBwdWJsaWNhdGlvbiB0aGF0IHN1cHBvcnRzIGRkbAorCQkJCSAqIHB1 YmxpY2F0aW9uLiBXZSBuZWVkIHRoaXMgYmVjYXVzZSBvbiBEUk9QIGVuZCwgdGhlIHJlbGlkCisJ CQkJICogd2lsbCBubyBsb25nZXIgYmUgdmFsaWQuIExhdGVyIG9uIERyb3AgZW5kLCB2ZXJpZnkg dGhhdCB0aGUKKwkJCQkgKiBkcm9wIGlzIGZvciBhIHJlbGlkIHRoYXQgaXMgb24gdGhlIGRlbGV0 ZWRfcmlkIGxpc3QsIGFuZAorCQkJCSAqIG9ubHkgdGhlbiBzZW5kIHRoZSBkZGwgbWVzc2FnZS4K KwkJCQkgKi8KKwkJCQlvbGRjdHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oY3R4LT5jb250ZXh0 KTsKKwkJCQl0eG5kYXRhLT5kZWxldGVkX3JlbGlkcyA9IGxhcHBlbmRfb2lkKHR4bmRhdGEtPmRl bGV0ZWRfcmVsaWRzLAorCQkJCQkJCQkJCQkJCSAgcmVsaWQpOworCQkJCU1lbW9yeUNvbnRleHRT d2l0Y2hUbyhvbGRjdHgpOworCQkJfQorCQkJcmV0dXJuOworCisJCWNhc2UgRENUX1RhYmxlRHJv cEVuZDoKKwkJCWlmICghbGlzdF9tZW1iZXJfb2lkKHR4bmRhdGEtPmRlbGV0ZWRfcmVsaWRzLCBy ZWxpZCkpCisJCQkJcmV0dXJuOworCisJCQl0eG5kYXRhLT5kZWxldGVkX3JlbGlkcyA9IGxpc3Rf ZGVsZXRlX29pZCh0eG5kYXRhLT5kZWxldGVkX3JlbGlkcywKKwkJCQkJCQkJCQkJCQkgIHJlbGlk KTsKKwkJCWJyZWFrOworCisJCWNhc2UgRENUX1RhYmxlQWx0ZXI6CisJCWNhc2UgRENUX1NpbXBs ZUNtZDoKKwkJCS8qIGRvIG5vdGhpbmcgKi8KKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQll bG9nKEVSUk9SLCAidW5zdXBwb3J0ZWQgdHlwZSAlZCIsIGNtZHR5cGUpOworCQkJYnJlYWs7CisJ fQorCisJLyogU2VuZCBCRUdJTiBpZiB3ZSBoYXZlbid0IHlldCAqLworCWlmICh0eG5kYXRhICYm ICF0eG5kYXRhLT5zZW50X2JlZ2luX3R4bikKKwkJcGdvdXRwdXRfc2VuZF9iZWdpbihjdHgsIHR4 bik7CisKKwlPdXRwdXRQbHVnaW5QcmVwYXJlV3JpdGUoY3R4LCB0cnVlKTsKKwlsb2dpY2FscmVw X3dyaXRlX2RkbChjdHgtPm91dCwgbWVzc2FnZV9sc24sIHByZWZpeCwgc3osIG1lc3NhZ2UpOwor CU91dHB1dFBsdWdpbldyaXRlKGN0eCwgdHJ1ZSk7Cit9CisKIC8qCiAgKiBSZXR1cm4gdHJ1ZSBp ZiB0aGUgZGF0YSBpcyBhc3NvY2lhdGVkIHdpdGggYW4gb3JpZ2luIGFuZCB0aGUgdXNlciBoYXMK ICAqIHJlcXVlc3RlZCB0aGUgY2hhbmdlcyB0aGF0IGRvbid0IGhhdmUgYW4gb3JpZ2luLCBmYWxz ZSBvdGhlcndpc2UuCkBAIC0xODEzLDYgKzE5NjEsNyBAQCBwZ291dHB1dF9zdHJlYW1fYWJvcnQo c3RydWN0IExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwKIAlPdXRwdXRQbHVnaW5Xcml0ZShj dHgsIHRydWUpOwogCiAJY2xlYW51cF9yZWxfc3luY19jYWNoZSh0b3B0eG4tPnhpZCwgZmFsc2Up OworCWNsZWFuX3R4bl9kYXRhKHR4bik7CiB9CiAKIC8qCkBAIC0xODM4LDYgKzE5ODcsNyBAQCBw Z291dHB1dF9zdHJlYW1fY29tbWl0KHN0cnVjdCBMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgs CiAJT3V0cHV0UGx1Z2luV3JpdGUoY3R4LCB0cnVlKTsKIAogCWNsZWFudXBfcmVsX3N5bmNfY2Fj aGUodHhuLT54aWQsIHRydWUpOworCWNsZWFuX3R4bl9kYXRhKHR4bik7CiB9CiAKIC8qCkBAIC0x ODU2LDYgKzIwMDYsOCBAQCBwZ291dHB1dF9zdHJlYW1fcHJlcGFyZV90eG4oTG9naWNhbERlY29k aW5nQ29udGV4dCAqY3R4LAogCU91dHB1dFBsdWdpblByZXBhcmVXcml0ZShjdHgsIHRydWUpOwog CWxvZ2ljYWxyZXBfd3JpdGVfc3RyZWFtX3ByZXBhcmUoY3R4LT5vdXQsIHR4biwgcHJlcGFyZV9s c24pOwogCU91dHB1dFBsdWdpbldyaXRlKGN0eCwgdHJ1ZSk7CisKKwljbGVhbl90eG5fZGF0YSh0 eG4pOwogfQogCiAvKgpAQCAtMTk3Miw4ICsyMTI0LDcgQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBH T3V0cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRpb24pCiAJCWVudHJ5LT5yZXBsaWNhdGVf dmFsaWQgPSBmYWxzZTsKIAkJZW50cnktPnNjaGVtYV9zZW50ID0gZmFsc2U7CiAJCWVudHJ5LT5z dHJlYW1lZF90eG5zID0gTklMOwotCQllbnRyeS0+cHViYWN0aW9ucy5wdWJpbnNlcnQgPSBlbnRy eS0+cHViYWN0aW9ucy5wdWJ1cGRhdGUgPQotCQkJZW50cnktPnB1YmFjdGlvbnMucHViZGVsZXRl ID0gZW50cnktPnB1YmFjdGlvbnMucHVidHJ1bmNhdGUgPSBmYWxzZTsKKwkJbWVtc2V0KCZlbnRy eS0+cHViYWN0aW9ucywgMCwgc2l6ZW9mKGVudHJ5LT5wdWJhY3Rpb25zKSk7CiAJCWVudHJ5LT5u ZXdfc2xvdCA9IE5VTEw7CiAJCWVudHJ5LT5vbGRfc2xvdCA9IE5VTEw7CiAJCW1lbXNldChlbnRy eS0+ZXhwcnN0YXRlLCAwLCBzaXplb2YoZW50cnktPmV4cHJzdGF0ZSkpOwpAQCAtMjAyNywxMCAr MjE3OCw3IEBAIGdldF9yZWxfc3luY19lbnRyeShQR091dHB1dERhdGEgKmRhdGEsIFJlbGF0aW9u IHJlbGF0aW9uKQogCQllbnRyeS0+c3RyZWFtZWRfdHhucyA9IE5JTDsKIAkJYm1zX2ZyZWUoZW50 cnktPmNvbHVtbnMpOwogCQllbnRyeS0+Y29sdW1ucyA9IE5VTEw7Ci0JCWVudHJ5LT5wdWJhY3Rp b25zLnB1Ymluc2VydCA9IGZhbHNlOwotCQllbnRyeS0+cHViYWN0aW9ucy5wdWJ1cGRhdGUgPSBm YWxzZTsKLQkJZW50cnktPnB1YmFjdGlvbnMucHViZGVsZXRlID0gZmFsc2U7Ci0JCWVudHJ5LT5w dWJhY3Rpb25zLnB1YnRydW5jYXRlID0gZmFsc2U7CisJCW1lbXNldCgmZW50cnktPnB1YmFjdGlv bnMsIDAsIHNpemVvZihlbnRyeS0+cHViYWN0aW9ucykpOwogCiAJCS8qCiAJCSAqIFR1cGxlIHNs b3RzIGNsZWFudXBzLiAoV2lsbCBiZSByZWJ1aWx0IGxhdGVyIGlmIG5lZWRlZCkuCkBAIC0yMTI5 LDUzICsyMjc3LDYxIEBAIGdldF9yZWxfc3luY19lbnRyeShQR091dHB1dERhdGEgKmRhdGEsIFJl bGF0aW9uIHJlbGF0aW9uKQogCQkJCQlwdWJsaXNoID0gdHJ1ZTsKIAkJCX0KIAotCQkJLyoKLQkJ CSAqIElmIHRoZSByZWxhdGlvbiBpcyB0byBiZSBwdWJsaXNoZWQsIGRldGVybWluZSBhY3Rpb25z IHRvCi0JCQkgKiBwdWJsaXNoLCBhbmQgbGlzdCBvZiBjb2x1bW5zLCBpZiBhcHByb3ByaWF0ZS4K LQkJCSAqCi0JCQkgKiBEb24ndCBwdWJsaXNoIGNoYW5nZXMgZm9yIHBhcnRpdGlvbmVkIHRhYmxl cywgYmVjYXVzZQotCQkJICogcHVibGlzaGluZyB0aG9zZSBvZiBpdHMgcGFydGl0aW9ucyBzdWZm aWNlcywgdW5sZXNzIHBhcnRpdGlvbgotCQkJICogY2hhbmdlcyB3b24ndCBiZSBwdWJsaXNoZWQg ZHVlIHRvIHB1YnZpYXJvb3QgYmVpbmcgc2V0LgotCQkJICovCi0JCQlpZiAocHVibGlzaCAmJgot CQkJCShyZWxraW5kICE9IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUgfHwgcHViLT5wdWJ2aWFy b290KSkKKwkJCWlmIChwdWJsaXNoKQogCQkJewotCQkJCWVudHJ5LT5wdWJhY3Rpb25zLnB1Ymlu c2VydCB8PSBwdWItPnB1YmFjdGlvbnMucHViaW5zZXJ0OwotCQkJCWVudHJ5LT5wdWJhY3Rpb25z LnB1YnVwZGF0ZSB8PSBwdWItPnB1YmFjdGlvbnMucHVidXBkYXRlOwotCQkJCWVudHJ5LT5wdWJh Y3Rpb25zLnB1YmRlbGV0ZSB8PSBwdWItPnB1YmFjdGlvbnMucHViZGVsZXRlOwotCQkJCWVudHJ5 LT5wdWJhY3Rpb25zLnB1YnRydW5jYXRlIHw9IHB1Yi0+cHViYWN0aW9ucy5wdWJ0cnVuY2F0ZTsK LQogCQkJCS8qCi0JCQkJICogV2Ugd2FudCB0byBwdWJsaXNoIHRoZSBjaGFuZ2VzIGFzIHRoZSB0 b3AtbW9zdCBhbmNlc3RvcgotCQkJCSAqIGFjcm9zcyBhbGwgcHVibGljYXRpb25zLiBTbyB3ZSBu ZWVkIHRvIGNoZWNrIGlmIHRoZSBhbHJlYWR5Ci0JCQkJICogY2FsY3VsYXRlZCBsZXZlbCBpcyBo aWdoZXIgdGhhbiB0aGUgbmV3IG9uZS4gSWYgeWVzLCB3ZSBjYW4KLQkJCQkgKiBpZ25vcmUgdGhl IG5ldyB2YWx1ZSAoYXMgaXQncyBhIGNoaWxkKS4gT3RoZXJ3aXNlIHRoZSBuZXcKLQkJCQkgKiB2 YWx1ZSBpcyBhbiBhbmNlc3Rvciwgc28gd2Uga2VlcCBpdC4KKwkJCQkgKiBUaGUgYmVoYXZpb3Ig b2YgRERMIGxvZ2ljYWwgcmVwbGljYXRpb24gaXMgdW5yZWxhdGVkIHRvCisJCQkJICogcHVidmlh cm9vdC4KIAkJCQkgKi8KLQkJCQlpZiAocHVibGlzaF9hbmNlc3Rvcl9sZXZlbCA+IGFuY2VzdG9y X2xldmVsKQotCQkJCQljb250aW51ZTsKKwkJCQllbnRyeS0+cHViYWN0aW9ucy5wdWJkZGxfdGFi bGUgfD0gcHViLT5wdWJhY3Rpb25zLnB1YmRkbF90YWJsZTsKIAogCQkJCS8qCi0JCQkJICogSWYg d2UgZm91bmQgYW4gYW5jZXN0b3IgaGlnaGVyIHVwIGluIHRoZSB0cmVlLCBkaXNjYXJkIHRoZQot CQkJCSAqIGxpc3Qgb2YgcHVibGljYXRpb25zIHRocm91Z2ggd2hpY2ggd2UgcmVwbGljYXRlIGl0 LCBhbmQgdXNlCi0JCQkJICogdGhlIG5ldyBhbmNlc3Rvci4KKwkJCQkgKiBJZiB0aGUgcmVsYXRp b24gaXMgdG8gYmUgcHVibGlzaGVkLCBkZXRlcm1pbmUgYWN0aW9ucyB0bworCQkJCSAqIHB1Ymxp c2gsIGFuZCBsaXN0IG9mIGNvbHVtbnMsIGlmIGFwcHJvcHJpYXRlLgorCQkJCSAqCisJCQkJICog RG9uJ3QgcHVibGlzaCBjaGFuZ2VzIGZvciBwYXJ0aXRpb25lZCB0YWJsZXMsIGJlY2F1c2UKKwkJ CQkgKiBwdWJsaXNoaW5nIHRob3NlIG9mIGl0cyBwYXJ0aXRpb25zIHN1ZmZpY2VzLCB1bmxlc3Mg cGFydGl0aW9uCisJCQkJICogY2hhbmdlcyB3b24ndCBiZSBwdWJsaXNoZWQgZHVlIHRvIHB1YnZp YXJvb3QgYmVpbmcgc2V0LgogCQkJCSAqLwotCQkJCWlmIChwdWJsaXNoX2FuY2VzdG9yX2xldmVs IDwgYW5jZXN0b3JfbGV2ZWwpCisJCQkJaWYgKHJlbGtpbmQgIT0gUkVMS0lORF9QQVJUSVRJT05F RF9UQUJMRSB8fCBwdWItPnB1YnZpYXJvb3QpCiAJCQkJewotCQkJCQlwdWJsaXNoX2FzX3JlbGlk ID0gcHViX3JlbGlkOwotCQkJCQlwdWJsaXNoX2FuY2VzdG9yX2xldmVsID0gYW5jZXN0b3JfbGV2 ZWw7CisJCQkJCWVudHJ5LT5wdWJhY3Rpb25zLnB1Ymluc2VydCB8PSBwdWItPnB1YmFjdGlvbnMu cHViaW5zZXJ0OworCQkJCQllbnRyeS0+cHViYWN0aW9ucy5wdWJ1cGRhdGUgfD0gcHViLT5wdWJh Y3Rpb25zLnB1YnVwZGF0ZTsKKwkJCQkJZW50cnktPnB1YmFjdGlvbnMucHViZGVsZXRlIHw9IHB1 Yi0+cHViYWN0aW9ucy5wdWJkZWxldGU7CisJCQkJCWVudHJ5LT5wdWJhY3Rpb25zLnB1YnRydW5j YXRlIHw9IHB1Yi0+cHViYWN0aW9ucy5wdWJ0cnVuY2F0ZTsKIAotCQkJCQkvKiByZXNldCB0aGUg cHVibGljYXRpb24gbGlzdCBmb3IgdGhpcyByZWxhdGlvbiAqLwotCQkJCQlyZWxfcHVibGljYXRp b25zID0gTklMOwotCQkJCX0KLQkJCQllbHNlCi0JCQkJewotCQkJCQkvKiBTYW1lIGFuY2VzdG9y IGxldmVsLCBoYXMgdG8gYmUgdGhlIHNhbWUgT0lELiAqLwotCQkJCQlBc3NlcnQocHVibGlzaF9h c19yZWxpZCA9PSBwdWJfcmVsaWQpOwotCQkJCX0KKwkJCQkJLyoKKwkJCQkJICogV2Ugd2FudCB0 byBwdWJsaXNoIHRoZSBjaGFuZ2VzIGFzIHRoZSB0b3AtbW9zdCBhbmNlc3RvcgorCQkJCQkgKiBh Y3Jvc3MgYWxsIHB1YmxpY2F0aW9ucy4gU28gd2UgbmVlZCB0byBjaGVjayBpZiB0aGUgYWxyZWFk eQorCQkJCQkgKiBjYWxjdWxhdGVkIGxldmVsIGlzIGhpZ2hlciB0aGFuIHRoZSBuZXcgb25lLiBJ ZiB5ZXMsIHdlIGNhbgorCQkJCQkgKiBpZ25vcmUgdGhlIG5ldyB2YWx1ZSAoYXMgaXQncyBhIGNo aWxkKS4gT3RoZXJ3aXNlIHRoZSBuZXcKKwkJCQkJICogdmFsdWUgaXMgYW4gYW5jZXN0b3IsIHNv IHdlIGtlZXAgaXQuCisJCQkJCSAqLworCQkJCQlpZiAocHVibGlzaF9hbmNlc3Rvcl9sZXZlbCA+ IGFuY2VzdG9yX2xldmVsKQorCQkJCQkJY29udGludWU7CisKKwkJCQkJLyoKKwkJCQkJICogSWYg d2UgZm91bmQgYW4gYW5jZXN0b3IgaGlnaGVyIHVwIGluIHRoZSB0cmVlLCBkaXNjYXJkIHRoZQor CQkJCQkgKiBsaXN0IG9mIHB1YmxpY2F0aW9ucyB0aHJvdWdoIHdoaWNoIHdlIHJlcGxpY2F0ZSBp dCwgYW5kIHVzZQorCQkJCQkgKiB0aGUgbmV3IGFuY2VzdG9yLgorCQkJCQkgKi8KKwkJCQkJaWYg KHB1Ymxpc2hfYW5jZXN0b3JfbGV2ZWwgPCBhbmNlc3Rvcl9sZXZlbCkKKwkJCQkJeworCQkJCQkJ cHVibGlzaF9hc19yZWxpZCA9IHB1Yl9yZWxpZDsKKwkJCQkJCXB1Ymxpc2hfYW5jZXN0b3JfbGV2 ZWwgPSBhbmNlc3Rvcl9sZXZlbDsKKworCQkJCQkJLyogcmVzZXQgdGhlIHB1YmxpY2F0aW9uIGxp c3QgZm9yIHRoaXMgcmVsYXRpb24gKi8KKwkJCQkJCXJlbF9wdWJsaWNhdGlvbnMgPSBOSUw7CisJ CQkJCX0KKwkJCQkJZWxzZQorCQkJCQl7CisJCQkJCQkvKiBTYW1lIGFuY2VzdG9yIGxldmVsLCBo YXMgdG8gYmUgdGhlIHNhbWUgT0lELiAqLworCQkJCQkJQXNzZXJ0KHB1Ymxpc2hfYXNfcmVsaWQg PT0gcHViX3JlbGlkKTsKKwkJCQkJfQogCi0JCQkJLyogVHJhY2sgcHVibGljYXRpb25zIGZvciB0 aGlzIGFuY2VzdG9yLiAqLwotCQkJCXJlbF9wdWJsaWNhdGlvbnMgPSBsYXBwZW5kKHJlbF9wdWJs aWNhdGlvbnMsIHB1Yik7CisJCQkJCS8qIFRyYWNrIHB1YmxpY2F0aW9ucyBmb3IgdGhpcyBhbmNl c3Rvci4gKi8KKwkJCQkJcmVsX3B1YmxpY2F0aW9ucyA9IGxhcHBlbmQocmVsX3B1YmxpY2F0aW9u cywgcHViKTsKKwkJCQl9CiAJCQl9CiAJCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNv cC9jbWR0YWcuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvY21kdGFnLmMKaW5kZXggNGJkNzEzYTBiNC4u YTMxYjA2MWViNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9jbWR0YWcuYworKysgYi9z cmMvYmFja2VuZC90Y29wL2NtZHRhZy5jCkBAIC0yNiwxMCArMjYsMTEgQEAgdHlwZWRlZiBzdHJ1 Y3QgQ29tbWFuZFRhZ0JlaGF2aW9yCiAJY29uc3QgYm9vbAl0YWJsZV9yZXdyaXRlX29rOwogCWNv bnN0IGJvb2wJZGlzcGxheV9yb3djb3VudDsJLyogc2hvdWxkIHRoZSBudW1iZXIgb2Ygcm93cyBh ZmZlY3RlZCBiZQogCQkJCQkJCQkJICogc2hvd24gaW4gdGhlIGNvbW1hbmQgY29tcGxldGlvbiBz dHJpbmcgKi8KKwljb25zdCBib29sCWRkbF9yZXBsaWNhdGlvbl9vazsKIH0gQ29tbWFuZFRhZ0Jl aGF2aW9yOwogCi0jZGVmaW5lIFBHX0NNRFRBRyh0YWcsIG5hbWUsIGV2dHJnb2ssIHJ3cm9rLCBy b3djbnQpIFwKLQl7IG5hbWUsICh1aW50OCkgKHNpemVvZihuYW1lKSAtIDEpLCBldnRyZ29rLCBy d3Jvaywgcm93Y250IH0sCisjZGVmaW5lIFBHX0NNRFRBRyh0YWcsIG5hbWUsIGV2dHJnb2ssIHJ3 cm9rLCByb3djbnQsIGRkbF9yZXBsX29rKSBcCisJeyBuYW1lLCAodWludDgpIChzaXplb2YobmFt ZSkgLSAxKSwgZXZ0cmdvaywgcndyb2ssIHJvd2NudCwgZGRsX3JlcGxfb2sgfSwKIAogc3RhdGlj IGNvbnN0IENvbW1hbmRUYWdCZWhhdmlvciB0YWdfYmVoYXZpb3JbQ09NTUFORF9UQUdfTkVYVFRB R10gPSB7CiAjaW5jbHVkZSAidGNvcC9jbWR0YWdsaXN0LmgiCkBAIC01Nyw2ICs1OCwyMSBAQCBH ZXRDb21tYW5kVGFnTmFtZUFuZExlbihDb21tYW5kVGFnIGNvbW1hbmRUYWcsIFNpemUgKmxlbikK IAlyZXR1cm4gdGFnX2JlaGF2aW9yW2NvbW1hbmRUYWddLm5hbWU7CiB9CiAKK0NvbW1hbmRUYWcg KgorR2V0Q29tbWFuZFRhZ3NGb3JERExSZXBsKGludCAqbmNvbW1hbmRzKQoreworCUNvbW1hbmRU YWcgKmRkbHJlcGxfY29tbWFuZHMgPSBwYWxsb2MwKENPTU1BTkRfVEFHX05FWFRUQUcgKiBzaXpl b2YoQ29tbWFuZFRhZykpOworCSpuY29tbWFuZHMgPSAwOworCisJZm9yKGludCBpID0gMDsgaSA8 IENPTU1BTkRfVEFHX05FWFRUQUc7IGkrKykKKwl7CisJCWlmICh0YWdfYmVoYXZpb3JbaV0uZGRs X3JlcGxpY2F0aW9uX29rKQorCQkJZGRscmVwbF9jb21tYW5kc1soKm5jb21tYW5kcykrK10gPSAo Q29tbWFuZFRhZykgaTsKKwl9CisKKwlyZXR1cm4gZGRscmVwbF9jb21tYW5kczsKK30KKwogYm9v bAogY29tbWFuZF90YWdfZGlzcGxheV9yb3djb3VudChDb21tYW5kVGFnIGNvbW1hbmRUYWcpCiB7 CkBAIC03NSw2ICs5MSwxMiBAQCBjb21tYW5kX3RhZ190YWJsZV9yZXdyaXRlX29rKENvbW1hbmRU YWcgY29tbWFuZFRhZykKIAlyZXR1cm4gdGFnX2JlaGF2aW9yW2NvbW1hbmRUYWddLnRhYmxlX3Jl d3JpdGVfb2s7CiB9CiAKK2Jvb2wKK2NvbW1hbmRfdGFnX2RkbF9yZXBsaWNhdGlvbl9vayhDb21t YW5kVGFnIGNvbW1hbmRUYWcpCit7CisJcmV0dXJuIHRhZ19iZWhhdmlvcltjb21tYW5kVGFnXS5k ZGxfcmVwbGljYXRpb25fb2s7Cit9CisKIC8qCiAgKiBTZWFyY2ggQ29tbWFuZFRhZyBieSBuYW1l CiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMgYi9zcmMvYmFja2Vu ZC90Y29wL3V0aWxpdHkuYwppbmRleCBjMGY3ZjI5NzQ3Li43NjY3YjllMzRiIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3V0aWxp dHkuYwpAQCAtODk1LDcgKzg5NSw3IEBAIHN0YW5kYXJkX1Byb2Nlc3NVdGlsaXR5KFBsYW5uZWRT dG10ICpwc3RtdCwKIAogCQljYXNlIFRfQ3JlYXRlRXZlbnRUcmlnU3RtdDoKIAkJCS8qIG5vIGV2 ZW50IHRyaWdnZXJzIG9uIGV2ZW50IHRyaWdnZXJzICovCi0JCQlDcmVhdGVFdmVudFRyaWdnZXIo KENyZWF0ZUV2ZW50VHJpZ1N0bXQgKikgcGFyc2V0cmVlKTsKKwkJCUNyZWF0ZUV2ZW50VHJpZ2dl cigoQ3JlYXRlRXZlbnRUcmlnU3RtdCAqKSBwYXJzZXRyZWUsIGZhbHNlKTsKIAkJCWJyZWFrOwog CiAJCWNhc2UgVF9BbHRlckV2ZW50VHJpZ1N0bXQ6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91 dGlscy9hZHQvcnVsZXV0aWxzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMK aW5kZXggMmQxOTYxZjEyZC4uMjY0Mzc2NzAxYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L3J1bGV1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMu YwpAQCAtMTI2MjQsNyArMTI2MjQsOCBAQCBnZXRfcmFuZ2VfcGFydGJvdW5kX3N0cmluZyhMaXN0 ICpib3VuZF9kYXR1bXMpCiAgKiBwYXNzZWQgYXR0cmlidXRlIGhhcyBhIGRlZmF1bHQgdmFsdWUu CiAgKi8KIGNoYXIgKgotcmVsYXRpb25fZ2V0X2NvbHVtbl9kZWZhdWx0KFJlbGF0aW9uIHJlbCwg QXR0ck51bWJlciBhdHRubywgTGlzdCAqZHBjb250ZXh0KQorcmVsYXRpb25fZ2V0X2NvbHVtbl9k ZWZhdWx0KFJlbGF0aW9uIHJlbCwgQXR0ck51bWJlciBhdHRubywgTGlzdCAqZHBjb250ZXh0LAor CQkJCQkJCSBOb2RlICoqZXhwcikKIHsKIAlOb2RlCSAgICpkZWZ2YWw7CiAJY2hhcgkgICAqZGVm c3RyOwpAQCAtMTI2MzQsNSArMTI2MzUsOSBAQCByZWxhdGlvbl9nZXRfY29sdW1uX2RlZmF1bHQo UmVsYXRpb24gcmVsLCBBdHRyTnVtYmVyIGF0dG5vLCBMaXN0ICpkcGNvbnRleHQpCiAKIAlkZWZz dHIgPSBkZXBhcnNlX2V4cHJlc3Npb24oZGVmdmFsLCBkcGNvbnRleHQsIGZhbHNlLCBmYWxzZSk7 CiAKKwkvKiBDb2xsZWN0IHRoZSBleHByZXNzaW9uIGZvciBsYXRlciByZXBsaWNhdGlvbiBzYWZl dHkgY2hlY2tzICovCisJaWYgKGV4cHIpCisJCSpleHByID0gZGVmdmFsOworCiAJcmV0dXJuIGRl ZnN0cjsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMg Yi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCmluZGV4IDhhMDg0NjNjMmIuLmYz MDIyZjA4YzEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMK KysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYwpAQCAtNTcyMCw2ICs1NzIw LDcgQEAgUmVsYXRpb25CdWlsZFB1YmxpY2F0aW9uRGVzYyhSZWxhdGlvbiByZWxhdGlvbiwgUHVi bGljYXRpb25EZXNjICpwdWJkZXNjKQogCQlwdWJkZXNjLT5wdWJhY3Rpb25zLnB1YnVwZGF0ZSB8 PSBwdWJmb3JtLT5wdWJ1cGRhdGU7CiAJCXB1YmRlc2MtPnB1YmFjdGlvbnMucHViZGVsZXRlIHw9 IHB1YmZvcm0tPnB1YmRlbGV0ZTsKIAkJcHViZGVzYy0+cHViYWN0aW9ucy5wdWJ0cnVuY2F0ZSB8 PSBwdWJmb3JtLT5wdWJ0cnVuY2F0ZTsKKwkJcHViZGVzYy0+cHViYWN0aW9ucy5wdWJkZGxfdGFi bGUgfD0gcHViZm9ybS0+cHViZGRsX3RhYmxlOwogCiAJCS8qCiAJCSAqIENoZWNrIGlmIGFsbCBj b2x1bW5zIHJlZmVyZW5jZWQgaW4gdGhlIGZpbHRlciBleHByZXNzaW9uIGFyZSBwYXJ0CmRpZmYg LS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1 bXAuYwppbmRleCA1ZGFiMWJhOWVhLi4zMzQ3MjZjZDBkIDEwMDY0NAotLS0gYS9zcmMvYmluL3Bn X2R1bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKQEAgLTUxLDYg KzUxLDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX2xhcmdlb2JqZWN0X2QuaCIKICNpbmNsdWRl ICJjYXRhbG9nL3BnX2xhcmdlb2JqZWN0X21ldGFkYXRhX2QuaCIKICNpbmNsdWRlICJjYXRhbG9n L3BnX3Byb2NfZC5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfcHVibGljYXRpb24uaCIKICNpbmNs dWRlICJjYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHJp Z2dlcl9kLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlX2QuaCIKQEAgLTQwNDcsNiArNDA0 OCw3IEBAIGdldFB1YmxpY2F0aW9ucyhBcmNoaXZlICpmb3V0LCBpbnQgKm51bVB1YmxpY2F0aW9u cykKIAlpbnQJCQlpX3B1YnVwZGF0ZTsKIAlpbnQJCQlpX3B1YmRlbGV0ZTsKIAlpbnQJCQlpX3B1 YnRydW5jYXRlOworCWludAkJCWlfcHViZGRsX3RhYmxlOwogCWludAkJCWlfcHVidmlhcm9vdDsK IAlpbnQJCQlpLAogCQkJCW50dXBzOwpAQCAtNDA2MiwyMyArNDA2NCwyOSBAQCBnZXRQdWJsaWNh dGlvbnMoQXJjaGl2ZSAqZm91dCwgaW50ICpudW1QdWJsaWNhdGlvbnMpCiAJcmVzZXRQUUV4cEJ1 ZmZlcihxdWVyeSk7CiAKIAkvKiBHZXQgdGhlIHB1YmxpY2F0aW9ucy4gKi8KLQlpZiAoZm91dC0+ cmVtb3RlVmVyc2lvbiA+PSAxMzAwMDApCisJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTYw MDAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKIAkJCQkJCQkgIlNFTEVDVCBwLnRh Ymxlb2lkLCBwLm9pZCwgcC5wdWJuYW1lLCAiCiAJCQkJCQkJICJwLnB1Ym93bmVyLCAiCi0JCQkJ CQkJICJwLnB1YmFsbHRhYmxlcywgcC5wdWJpbnNlcnQsIHAucHVidXBkYXRlLCBwLnB1YmRlbGV0 ZSwgcC5wdWJ0cnVuY2F0ZSwgcC5wdWJ2aWFyb290ICIKKwkJCQkJCQkgInAucHViYWxsdGFibGVz LCBwLnB1Ymluc2VydCwgcC5wdWJ1cGRhdGUsIHAucHViZGVsZXRlLCBwLnB1YnRydW5jYXRlLCBw LnB1YmRkbF90YWJsZSwgcC5wdWJ2aWFyb290ICIKKwkJCQkJCQkgIkZST00gcGdfcHVibGljYXRp b24gcCIpOworCWVsc2UgaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTMwMDAwKQorCQlhcHBl bmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKKwkJCQkJCQkgIlNFTEVDVCBwLnRhYmxlb2lkLCBwLm9p ZCwgcC5wdWJuYW1lLCAiCisJCQkJCQkJICJwLnB1Ym93bmVyLCAiCisJCQkJCQkJICJwLnB1YmFs bHRhYmxlcywgcC5wdWJpbnNlcnQsIHAucHVidXBkYXRlLCBwLnB1YmRlbGV0ZSwgcC5wdWJ0cnVu Y2F0ZSwgZmFsc2UgYXMgcC5wdWJkZGxfdGFibGUsIHAucHVidmlhcm9vdCAiCiAJCQkJCQkJICJG Uk9NIHBnX3B1YmxpY2F0aW9uIHAiKTsKIAllbHNlIGlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49 IDExMDAwMCkKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCiAJCQkJCQkJICJTRUxFQ1Qg cC50YWJsZW9pZCwgcC5vaWQsIHAucHVibmFtZSwgIgogCQkJCQkJCSAicC5wdWJvd25lciwgIgot CQkJCQkJCSAicC5wdWJhbGx0YWJsZXMsIHAucHViaW5zZXJ0LCBwLnB1YnVwZGF0ZSwgcC5wdWJk ZWxldGUsIHAucHVidHJ1bmNhdGUsIGZhbHNlIEFTIHB1YnZpYXJvb3QgIgorCQkJCQkJCSAicC5w dWJhbGx0YWJsZXMsIHAucHViaW5zZXJ0LCBwLnB1YnVwZGF0ZSwgcC5wdWJkZWxldGUsIHAucHVi dHJ1bmNhdGUsIGZhbHNlIGFzIHAucHViZGRsX3RhYmxlLCBmYWxzZSBBUyBwdWJ2aWFyb290ICIK IAkJCQkJCQkgIkZST00gcGdfcHVibGljYXRpb24gcCIpOwogCWVsc2UKIAkJYXBwZW5kUFFFeHBC dWZmZXJTdHIocXVlcnksCiAJCQkJCQkJICJTRUxFQ1QgcC50YWJsZW9pZCwgcC5vaWQsIHAucHVi bmFtZSwgIgogCQkJCQkJCSAicC5wdWJvd25lciwgIgotCQkJCQkJCSAicC5wdWJhbGx0YWJsZXMs IHAucHViaW5zZXJ0LCBwLnB1YnVwZGF0ZSwgcC5wdWJkZWxldGUsIGZhbHNlIEFTIHB1YnRydW5j YXRlLCBmYWxzZSBBUyBwdWJ2aWFyb290ICIKKwkJCQkJCQkgInAucHViYWxsdGFibGVzLCBwLnB1 Ymluc2VydCwgcC5wdWJ1cGRhdGUsIHAucHViZGVsZXRlLCBmYWxzZSBBUyBwdWJ0cnVuY2F0ZSwg ZmFsc2UgYXMgcC5wdWJkZGxfdGFibGUsIGZhbHNlIEFTIHB1YnZpYXJvb3QgIgogCQkJCQkJCSAi RlJPTSBwZ19wdWJsaWNhdGlvbiBwIik7CiAKIAlyZXMgPSBFeGVjdXRlU3FsUXVlcnkoZm91dCwg cXVlcnktPmRhdGEsIFBHUkVTX1RVUExFU19PSyk7CkBAIC00MDk0LDYgKzQxMDIsNyBAQCBnZXRQ dWJsaWNhdGlvbnMoQXJjaGl2ZSAqZm91dCwgaW50ICpudW1QdWJsaWNhdGlvbnMpCiAJaV9wdWJ1 cGRhdGUgPSBQUWZudW1iZXIocmVzLCAicHVidXBkYXRlIik7CiAJaV9wdWJkZWxldGUgPSBQUWZu dW1iZXIocmVzLCAicHViZGVsZXRlIik7CiAJaV9wdWJ0cnVuY2F0ZSA9IFBRZm51bWJlcihyZXMs ICJwdWJ0cnVuY2F0ZSIpOworCWlfcHViZGRsX3RhYmxlID0gUFFmbnVtYmVyKHJlcywgInB1YmRk bF90YWJsZSIpOwogCWlfcHVidmlhcm9vdCA9IFBRZm51bWJlcihyZXMsICJwdWJ2aWFyb290Iik7 CiAKIAlwdWJpbmZvID0gcGdfbWFsbG9jKG50dXBzICogc2l6ZW9mKFB1YmxpY2F0aW9uSW5mbykp OwpAQCAtNDExNyw2ICs0MTI2LDggQEAgZ2V0UHVibGljYXRpb25zKEFyY2hpdmUgKmZvdXQsIGlu dCAqbnVtUHVibGljYXRpb25zKQogCQkJKHN0cmNtcChQUWdldHZhbHVlKHJlcywgaSwgaV9wdWJk ZWxldGUpLCAidCIpID09IDApOwogCQlwdWJpbmZvW2ldLnB1YnRydW5jYXRlID0KIAkJCShzdHJj bXAoUFFnZXR2YWx1ZShyZXMsIGksIGlfcHVidHJ1bmNhdGUpLCAidCIpID09IDApOworCQlwdWJp bmZvW2ldLnB1YmRkbF90YWJsZSA9CisJCQkoc3RyY21wKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3B1 YmRkbF90YWJsZSksICJ0IikgPT0gMCk7CiAJCXB1YmluZm9baV0ucHVidmlhcm9vdCA9CiAJCQko c3RyY21wKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3B1YnZpYXJvb3QpLCAidCIpID09IDApOwogCkBA IC00MTk2LDcgKzQyMDcsMTAgQEAgZHVtcFB1YmxpY2F0aW9uKEFyY2hpdmUgKmZvdXQsIGNvbnN0 IFB1YmxpY2F0aW9uSW5mbyAqcHViaW5mbykKIAkJZmlyc3QgPSBmYWxzZTsKIAl9CiAKLQlhcHBl bmRQUUV4cEJ1ZmZlckNoYXIocXVlcnksICdcJycpOworCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1 ZXJ5LCAiJyIpOworCisJaWYgKHB1YmluZm8tPnB1YmRkbF90YWJsZSkKKwkJYXBwZW5kUFFFeHBC dWZmZXJTdHIocXVlcnksICIsIGRkbCA9ICd0YWJsZSciKTsKIAogCWlmIChwdWJpbmZvLT5wdWJ2 aWFyb290KQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiwgcHVibGlzaF92aWFfcGFy dGl0aW9uX3Jvb3QgPSB0cnVlIik7CkBAIC03OTkyLDYgKzgwMDYsNyBAQCBnZXRFdmVudFRyaWdn ZXJzKEFyY2hpdmUgKmZvdXQsIGludCAqbnVtRXZlbnRUcmlnZ2VycykKIAogCXF1ZXJ5ID0gY3Jl YXRlUFFFeHBCdWZmZXIoKTsKIAorCS8qU2tpcCBpbnRlcm5hbGx5IGNyZWF0ZWQgZXZlbnQgdHJp Z2dlcnMgYnkgY2hlY2tpbmcgZXZ0aXNpbnRlcm5hbCAqLwogCWFwcGVuZFBRRXhwQnVmZmVyU3Ry KHF1ZXJ5LAogCQkJCQkJICJTRUxFQ1QgZS50YWJsZW9pZCwgZS5vaWQsIGV2dG5hbWUsIGV2dGVu YWJsZWQsICIKIAkJCQkJCSAiZXZ0ZXZlbnQsIGV2dG93bmVyLCAiCkBAIC04MDAwLDYgKzgwMTUs NyBAQCBnZXRFdmVudFRyaWdnZXJzKEFyY2hpdmUgKmZvdXQsIGludCAqbnVtRXZlbnRUcmlnZ2Vy cykKIAkJCQkJCSAiIGZyb20gdW5uZXN0KGV2dHRhZ3MpIGFzIHQoeCkpLCAnLCAnKSBhcyBldnR0 YWdzLCAiCiAJCQkJCQkgImUuZXZ0Zm9pZDo6cmVncHJvYyBhcyBldnRmbmFtZSAiCiAJCQkJCQkg IkZST00gcGdfZXZlbnRfdHJpZ2dlciBlICIKKwkJCQkJCSAiV0hFUkUgTk9UIGUuZXZ0aXNpbnRl cm5hbCAiCiAJCQkJCQkgIk9SREVSIEJZIGUub2lkIik7CiAKIAlyZXMgPSBFeGVjdXRlU3FsUXVl cnkoZm91dCwgcXVlcnktPmRhdGEsIFBHUkVTX1RVUExFU19PSyk7CmRpZmYgLS1naXQgYS9zcmMv YmluL3BnX2R1bXAvcGdfZHVtcC5oIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAppbmRleCBi YzhmMmVjMzZkLi43NjczZDE1M2FhIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVt cC5oCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKQEAgLTYyMSw2ICs2MjEsNyBAQCB0 eXBlZGVmIHN0cnVjdCBfUHVibGljYXRpb25JbmZvCiAJYm9vbAkJcHVidXBkYXRlOwogCWJvb2wJ CXB1YmRlbGV0ZTsKIAlib29sCQlwdWJ0cnVuY2F0ZTsKKwlib29sCQlwdWJkZGxfdGFibGU7CiAJ Ym9vbAkJcHVidmlhcm9vdDsKIH0gUHVibGljYXRpb25JbmZvOwogCmRpZmYgLS1naXQgYS9zcmMv YmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbCBiL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19k dW1wLnBsCmluZGV4IDYzYmI0Njg5ZDQuLmM0NzYwMjcyYTMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4v cGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCisrKyBiL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19k dW1wLnBsCkBAIC0yOTEyLDcgKzI5MTIsNyBAQCBteSAldGVzdHMgPSAoCiAJCWNyZWF0ZV9vcmRl ciA9PiA1MCwKIAkJY3JlYXRlX3NxbCA9PiAnQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjIKIAkJCQkJ CSBGT1IgQUxMIFRBQkxFUwotCQkJCQkJIFdJVEggKHB1Ymxpc2ggPSBcJ1wnKTsnLAorCQkJCQkJ IFdJVEggKHB1Ymxpc2ggPSBcJ1wnLCBkZGwgPSBcJ1wnKTsnLAogCQlyZWdleHAgPT4gcXIvXgog CQkJXFFDUkVBVEUgUFVCTElDQVRJT04gcHViMiBGT1IgQUxMIFRBQkxFUyBXSVRIIChwdWJsaXNo ID0gJycpO1xFCiAJCQkveG0sCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3dhbGR1bXAvLmdpdGln bm9yZSBiL3NyYy9iaW4vcGdfd2FsZHVtcC8uZ2l0aWdub3JlCmluZGV4IGVjNTFmNDFjNzYuLjRk ZjU2NjBiNTEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfd2FsZHVtcC8uZ2l0aWdub3JlCisrKyBi L3NyYy9iaW4vcGdfd2FsZHVtcC8uZ2l0aWdub3JlCkBAIC0xMCw2ICsxMCw3IEBACiAvZ2lzdGRl c2MuYwogL2hhc2hkZXNjLmMKIC9oZWFwZGVzYy5jCisvbG9naWNhbGRkbG1zZ2Rlc2MuYwogL2xv Z2ljYWxtc2dkZXNjLmMKIC9teGFjdGRlc2MuYwogL25idGRlc2MuYwpkaWZmIC0tZ2l0IGEvc3Jj L2Jpbi9wZ193YWxkdW1wL3JtZ3JkZXNjLmMgYi9zcmMvYmluL3BnX3dhbGR1bXAvcm1ncmRlc2Mu YwppbmRleCA2YjhjMTdiYjRjLi5kYWYxNzMwMjUyIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3dh bGR1bXAvcm1ncmRlc2MuYworKysgYi9zcmMvYmluL3BnX3dhbGR1bXAvcm1ncmRlc2MuYwpAQCAt MjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbW1hbmRzL2RiY29tbWFuZHNfeGxvZy5oIgogI2lu Y2x1ZGUgImNvbW1hbmRzL3NlcXVlbmNlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdGFibGVzcGFj ZS5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL2RkbG1lc3NhZ2UuaCIKICNpbmNsdWRlICJyZXBs aWNhdGlvbi9tZXNzYWdlLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vb3JpZ2luLmgiCiAjaW5j bHVkZSAicm1ncmRlc2MuaCIKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jIGIv c3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKaW5kZXggOTMyNWE0NmI4Zi4uNzUwZWExOWRjMSAxMDA2 NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2Rlc2Ny aWJlLmMKQEAgLTYxODAsNyArNjE4MCw3IEBAIGxpc3RQdWJsaWNhdGlvbnMoY29uc3QgY2hhciAq cGF0dGVybikKIAlQUUV4cEJ1ZmZlckRhdGEgYnVmOwogCVBHcmVzdWx0ICAgKnJlczsKIAlwcmlu dFF1ZXJ5T3B0IG15b3B0ID0gcHNldC5wb3B0OwotCXN0YXRpYyBjb25zdCBib29sIHRyYW5zbGF0 ZV9jb2x1bW5zW10gPSB7ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg ZmFsc2UsIGZhbHNlfTsKKwlzdGF0aWMgY29uc3QgYm9vbCB0cmFuc2xhdGVfY29sdW1uc1tdID0g e2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg ZmFsc2UsIGZhbHNlfTsKIAogCWlmIChwc2V0LnN2ZXJzaW9uIDwgMTAwMDAwKQogCXsKQEAgLTYy MDcsNiArNjIwNywxMCBAQCBsaXN0UHVibGljYXRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4pCiAJ CQkJCSAgZ2V0dGV4dF9ub29wKCJJbnNlcnRzIiksCiAJCQkJCSAgZ2V0dGV4dF9ub29wKCJVcGRh dGVzIiksCiAJCQkJCSAgZ2V0dGV4dF9ub29wKCJEZWxldGVzIikpOworCWlmIChwc2V0LnN2ZXJz aW9uID49IDE2MDAwMCkKKwkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCSAgIixcbiAg cHViZGRsX3RhYmxlIEFTIFwiJXNcIiIsCisJCQkJCQkgIGdldHRleHRfbm9vcCgiVGFibGUgRERM cyIpKTsKIAlpZiAocHNldC5zdmVyc2lvbiA+PSAxMTAwMDApCiAJCWFwcGVuZFBRRXhwQnVmZmVy KCZidWYsCiAJCQkJCQkgICIsXG4gIHB1YnRydW5jYXRlIEFTIFwiJXNcIiIsCkBAIC02MzA1LDYg KzYzMDksNyBAQCBkZXNjcmliZVB1YmxpY2F0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuKQogCVBH cmVzdWx0ICAgKnJlczsKIAlib29sCQloYXNfcHVidHJ1bmNhdGU7CiAJYm9vbAkJaGFzX3B1YnZp YXJvb3Q7CisJYm9vbAkJaGFzX3B1YmRkbDsKIAogCVBRRXhwQnVmZmVyRGF0YSB0aXRsZTsKIAlw cmludFRhYmxlQ29udGVudCBjb250OwpAQCAtNjMxOSw2ICs2MzI0LDcgQEAgZGVzY3JpYmVQdWJs aWNhdGlvbnMoY29uc3QgY2hhciAqcGF0dGVybikKIAkJcmV0dXJuIHRydWU7CiAJfQogCisJaGFz X3B1YmRkbCA9ICAocHNldC5zdmVyc2lvbiA+PSAxNjAwMDApOwogCWhhc19wdWJ0cnVuY2F0ZSA9 IChwc2V0LnN2ZXJzaW9uID49IDExMDAwMCk7CiAJaGFzX3B1YnZpYXJvb3QgPSAocHNldC5zdmVy c2lvbiA+PSAxMzAwMDApOwogCkBAIC02MzI4LDYgKzYzMzQsOSBAQCBkZXNjcmliZVB1YmxpY2F0 aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuKQogCQkJCQkgICJTRUxFQ1Qgb2lkLCBwdWJuYW1lLFxu IgogCQkJCQkgICIgIHBnX2NhdGFsb2cucGdfZ2V0X3VzZXJieWlkKHB1Ym93bmVyKSBBUyBvd25l cixcbiIKIAkJCQkJICAiICBwdWJhbGx0YWJsZXMsIHB1Ymluc2VydCwgcHVidXBkYXRlLCBwdWJk ZWxldGUiKTsKKwlpZiAoaGFzX3B1YmRkbCkKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1ZiwK KwkJCQkJCQkgIiwgcHViZGRsX3RhYmxlIik7CiAJaWYgKGhhc19wdWJ0cnVuY2F0ZSkKIAkJYXBw ZW5kUFFFeHBCdWZmZXJTdHIoJmJ1ZiwKIAkJCQkJCQkgIiwgcHVidHJ1bmNhdGUiKTsKQEAgLTYz ODEsNiArNjM5MCw4IEBAIGRlc2NyaWJlUHVibGljYXRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4p CiAJCWJvb2wJCXB1YmFsbHRhYmxlcyA9IHN0cmNtcChQUWdldHZhbHVlKHJlcywgaSwgMyksICJ0 IikgPT0gMDsKIAkJcHJpbnRUYWJsZU9wdCBteW9wdCA9IHBzZXQucG9wdC50b3B0OwogCisJCWlm IChoYXNfcHViZGRsKQorCQkJbmNvbHMrKzsKIAkJaWYgKGhhc19wdWJ0cnVuY2F0ZSkKIAkJCW5j b2xzKys7CiAJCWlmIChoYXNfcHVidmlhcm9vdCkKQEAgLTYzOTUsNiArNjQwNiw4IEBAIGRlc2Ny aWJlUHVibGljYXRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4pCiAJCXByaW50VGFibGVBZGRIZWFk ZXIoJmNvbnQsIGdldHRleHRfbm9vcCgiSW5zZXJ0cyIpLCB0cnVlLCBhbGlnbik7CiAJCXByaW50 VGFibGVBZGRIZWFkZXIoJmNvbnQsIGdldHRleHRfbm9vcCgiVXBkYXRlcyIpLCB0cnVlLCBhbGln bik7CiAJCXByaW50VGFibGVBZGRIZWFkZXIoJmNvbnQsIGdldHRleHRfbm9vcCgiRGVsZXRlcyIp LCB0cnVlLCBhbGlnbik7CisJCWlmIChoYXNfcHViZGRsKQorCQkJcHJpbnRUYWJsZUFkZEhlYWRl cigmY29udCwgZ2V0dGV4dF9ub29wKCJUYWJsZSBERExzIiksIHRydWUsIGFsaWduKTsKIAkJaWYg KGhhc19wdWJ0cnVuY2F0ZSkKIAkJCXByaW50VGFibGVBZGRIZWFkZXIoJmNvbnQsIGdldHRleHRf bm9vcCgiVHJ1bmNhdGVzIiksIHRydWUsIGFsaWduKTsKIAkJaWYgKGhhc19wdWJ2aWFyb290KQpA QCAtNjQwNSwxMCArNjQxOCwxMiBAQCBkZXNjcmliZVB1YmxpY2F0aW9ucyhjb25zdCBjaGFyICpw YXR0ZXJuKQogCQlwcmludFRhYmxlQWRkQ2VsbCgmY29udCwgUFFnZXR2YWx1ZShyZXMsIGksIDQp LCBmYWxzZSwgZmFsc2UpOwogCQlwcmludFRhYmxlQWRkQ2VsbCgmY29udCwgUFFnZXR2YWx1ZShy ZXMsIGksIDUpLCBmYWxzZSwgZmFsc2UpOwogCQlwcmludFRhYmxlQWRkQ2VsbCgmY29udCwgUFFn ZXR2YWx1ZShyZXMsIGksIDYpLCBmYWxzZSwgZmFsc2UpOwotCQlpZiAoaGFzX3B1YnRydW5jYXRl KQorCQlpZiAoaGFzX3B1YmRkbCkKIAkJCXByaW50VGFibGVBZGRDZWxsKCZjb250LCBQUWdldHZh bHVlKHJlcywgaSwgNyksIGZhbHNlLCBmYWxzZSk7Ci0JCWlmIChoYXNfcHVidmlhcm9vdCkKKwkJ aWYgKGhhc19wdWJ0cnVuY2F0ZSkKIAkJCXByaW50VGFibGVBZGRDZWxsKCZjb250LCBQUWdldHZh bHVlKHJlcywgaSwgOCksIGZhbHNlLCBmYWxzZSk7CisJCWlmIChoYXNfcHVidmlhcm9vdCkKKwkJ CXByaW50VGFibGVBZGRDZWxsKCZjb250LCBQUWdldHZhbHVlKHJlcywgaSwgOSksIGZhbHNlLCBm YWxzZSk7CiAKIAkJaWYgKCFwdWJhbGx0YWJsZXMpCiAJCXsKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2FjY2Vzcy9ybWdybGlzdC5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3JtZ3JsaXN0LmgKaW5k ZXggNDYzYmNiNjdjNS4uYWJjYmU5NzU5MyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNz L3JtZ3JsaXN0LmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3JtZ3JsaXN0LmgKQEAgLTQ3LDMg KzQ3LDQgQEAgUEdfUk1HUihSTV9DT01NSVRfVFNfSUQsICJDb21taXRUcyIsIGNvbW1pdF90c19y ZWRvLCBjb21taXRfdHNfZGVzYywgY29tbWl0X3RzX2kKIFBHX1JNR1IoUk1fUkVQTE9SSUdJTl9J RCwgIlJlcGxpY2F0aW9uT3JpZ2luIiwgcmVwbG9yaWdpbl9yZWRvLCByZXBsb3JpZ2luX2Rlc2Ms IHJlcGxvcmlnaW5faWRlbnRpZnksIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwpCiBQR19STUdSKFJN X0dFTkVSSUNfSUQsICJHZW5lcmljIiwgZ2VuZXJpY19yZWRvLCBnZW5lcmljX2Rlc2MsIGdlbmVy aWNfaWRlbnRpZnksIE5VTEwsIE5VTEwsIGdlbmVyaWNfbWFzaywgTlVMTCkKIFBHX1JNR1IoUk1f TE9HSUNBTE1TR19JRCwgIkxvZ2ljYWxNZXNzYWdlIiwgbG9naWNhbG1zZ19yZWRvLCBsb2dpY2Fs bXNnX2Rlc2MsIGxvZ2ljYWxtc2dfaWRlbnRpZnksIE5VTEwsIE5VTEwsIE5VTEwsIGxvZ2ljYWxt c2dfZGVjb2RlKQorUEdfUk1HUihSTV9MT0dJQ0FMRERMTVNHX0lELCAiTG9naWNhbERETE1lc3Nh Z2UiLCBsb2dpY2FsZGRsbXNnX3JlZG8sIGxvZ2ljYWxkZGxtc2dfZGVzYywgbG9naWNhbGRkbG1z Z19pZGVudGlmeSwgTlVMTCwgTlVMTCwgTlVMTCwgbG9naWNhbGRkbF9kZWNvZGUpCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2V2ZW50X3RyaWdnZXIuaCBiL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfZXZlbnRfdHJpZ2dlci5oCmluZGV4IGUzMDU1MGY2ZTEuLmY4ZjAwZTg4ZmEg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfZXZlbnRfdHJpZ2dlci5oCisrKyBi L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfZXZlbnRfdHJpZ2dlci5oCkBAIC0zNiw2ICszNiw3IEBA IENBVEFMT0cocGdfZXZlbnRfdHJpZ2dlciwzNDY2LEV2ZW50VHJpZ2dlclJlbGF0aW9uSWQpCiAJ CQkJCQkJCQkJCQkgKiBjYWxsZWQgKi8KIAljaGFyCQlldnRlbmFibGVkOwkJLyogdHJpZ2dlcidz IGZpcmluZyBjb25maWd1cmF0aW9uIFdSVAogCQkJCQkJCQkgKiBzZXNzaW9uX3JlcGxpY2F0aW9u X3JvbGUgKi8KKwlib29sCQlldnRpc2ludGVybmFsOwkvKiB0cmlnZ2VyIGlzIHN5c3RlbS1nZW5l cmF0ZWQgKi8KIAogI2lmZGVmIENBVEFMT0dfVkFSTEVOCiAJdGV4dAkJZXZ0dGFnc1sxXTsJCS8q IGNvbW1hbmQgVEFHcyB0aGlzIGV2ZW50IHRyaWdnZXIgdGFyZ2V0cyAqLwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf cHJvYy5kYXQKaW5kZXggNzZmZjIzYjc3OS4uMDE0MTE2ZmY5ZSAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3By b2MuZGF0CkBAIC0xMTE0NSw2ICsxMTE0NSwxNCBAQAogICBwcm9uYW1lID0+ICdwZ19sb2dpY2Fs X2VtaXRfbWVzc2FnZScsIHByb3ZvbGF0aWxlID0+ICd2JywgcHJvcGFyYWxsZWwgPT4gJ3UnLAog ICBwcm9yZXR0eXBlID0+ICdwZ19sc24nLCBwcm9hcmd0eXBlcyA9PiAnYm9vbCB0ZXh0IGJ5dGVh JywKICAgcHJvc3JjID0+ICdwZ19sb2dpY2FsX2VtaXRfbWVzc2FnZV9ieXRlYScgfSwKK3sgb2lk ID0+ICczODEzJywgZGVzY3IgPT4gJ2VtaXQgYSB0ZXh0dWFsIGxvZ2ljYWwgZGVjb2RpbmcgbWVz c2FnZScsCisgIHByb25hbWUgPT4gJ3BnX2xvZ2ljYWxfZW1pdF9kZGxfbWVzc2FnZScsIHByb3Zv bGF0aWxlID0+ICd2JywgcHJvcGFyYWxsZWwgPT4gJ3UnLAorICBwcm9yZXR0eXBlID0+ICdwZ19s c24nLCBwcm9hcmd0eXBlcyA9PiAnYm9vbCB0ZXh0IHRleHQnLAorICBwcm9zcmMgPT4gJ3BnX2xv Z2ljYWxfZW1pdF9kZGxfbWVzc2FnZV90ZXh0JyB9LAoreyBvaWQgPT4gJzM4MTQnLCBkZXNjciA9 PiAnZW1pdCBhIGJpbmFyeSBsb2dpY2FsIGRlY29kaW5nIG1lc3NhZ2UnLAorICBwcm9uYW1lID0+ ICdwZ19sb2dpY2FsX2VtaXRfZGRsX21lc3NhZ2UnLCBwcm92b2xhdGlsZSA9PiAndicsIHByb3Bh cmFsbGVsID0+ICd1JywKKyAgcHJvcmV0dHlwZSA9PiAncGdfbHNuJywgcHJvYXJndHlwZXMgPT4g J3RleHQgcmVnY2xhc3MgaW50NCB0ZXh0JywKKyAgcHJvc3JjID0+ICdwZ19sb2dpY2FsX2VtaXRf ZGRsX21lc3NhZ2VfYnl0ZWEnIH0sCiAKICMgZXZlbnQgdHJpZ2dlcnMKIHsgb2lkID0+ICczNTY2 JywgZGVzY3IgPT4gJ2xpc3Qgb2JqZWN0cyBkcm9wcGVkIGJ5IHRoZSBjdXJyZW50IGNvbW1hbmQn LApAQCAtMTIwNDksNSArMTIwNTcsMTcgQEAKIHsgb2lkID0+ICc0NjQzJywgZGVzY3IgPT4gJ2V4 cGFuZCBKU09OIGZvcm1hdCBEREwgdG8gYSBwbGFpbiB0ZXh0IERETCBjb21tYW5kJywKICAgcHJv bmFtZSA9PiAnZGRsX2RlcGFyc2VfZXhwYW5kX2NvbW1hbmQnLCBwcm9yZXR0eXBlID0+ICd0ZXh0 JywKICAgcHJvYXJndHlwZXMgPT4gJ3RleHQnLCBwcm9zcmMgPT4gJ2RkbF9kZXBhcnNlX2V4cGFu ZF9jb21tYW5kJyB9LAoreyBvaWQgPT4gJzQ2NDQnLCBkZXNjciA9PiAndHJpZ2dlciBmb3IgZGRs IGNvbW1hbmQgZGVwYXJzZSBlbmQnLAorICBwcm9uYW1lID0+ICdwdWJsaWNhdGlvbl9kZXBhcnNl X2RkbF9jb21tYW5kX2VuZCcsIHByb3JldHR5cGUgPT4gJ2V2ZW50X3RyaWdnZXInLAorICBwcm9h cmd0eXBlcyA9PiAnJywgcHJvc3JjID0+ICdwdWJsaWNhdGlvbl9kZXBhcnNlX2RkbF9jb21tYW5k X2VuZCcgfSwKK3sgb2lkID0+ICc0NjQ1JywgZGVzY3IgPT4gJ3RyaWdnZXIgZm9yIGRkbCBjb21t YW5kIGRlcGFyc2Ugc3RhcnQnLAorICBwcm9uYW1lID0+ICdwdWJsaWNhdGlvbl9kZXBhcnNlX2Rk bF9jb21tYW5kX3N0YXJ0JywgcHJvcmV0dHlwZSA9PiAnZXZlbnRfdHJpZ2dlcicsCisgIHByb2Fy Z3R5cGVzID0+ICcnLCBwcm9zcmMgPT4gJ3B1YmxpY2F0aW9uX2RlcGFyc2VfZGRsX2NvbW1hbmRf c3RhcnQnIH0sCit7IG9pZCA9PiAnNDY0NicsIGRlc2NyID0+ICd0cmlnZ2VyIGZvciBkZGwgY29t bWFuZCBkZXBhcnNlIHRhYmxlIHJld3JpdGUnLAorICBwcm9uYW1lID0+ICdwdWJsaWNhdGlvbl9k ZXBhcnNlX3RhYmxlX3Jld3JpdGUnLCBwcm9yZXR0eXBlID0+ICdldmVudF90cmlnZ2VyJywKKyAg cHJvYXJndHlwZXMgPT4gJycsIHByb3NyYyA9PiAncHVibGljYXRpb25fZGVwYXJzZV90YWJsZV9y ZXdyaXRlJyB9LAoreyBvaWQgPT4gJzQ2NDcnLCBkZXNjciA9PiAndHJpZ2dlciBmb3IgZGRsIGNv bW1hbmQgZGVwYXJzZSB0YWJsZSBpbml0JywKKyAgcHJvbmFtZSA9PiAncHVibGljYXRpb25fZGVw YXJzZV90YWJsZV9pbml0X3dyaXRlJywgcHJvcmV0dHlwZSA9PiAnZXZlbnRfdHJpZ2dlcicsCisg IHByb2FyZ3R5cGVzID0+ICcnLCBwcm9zcmMgPT4gJ3B1YmxpY2F0aW9uX2RlcGFyc2VfdGFibGVf aW5pdF93cml0ZScgfSwKIAogXQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19w dWJsaWNhdGlvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oCmluZGV4 IDZlY2FhMmEwMWUuLjMwM2Y1NDEyZDggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfcHVibGljYXRpb24uaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9u LmgKQEAgLTE4LDggKzE4LDE2IEBACiAjZGVmaW5lIFBHX1BVQkxJQ0FUSU9OX0gKIAogI2luY2x1 ZGUgImNhdGFsb2cvZ2VuYmtpLmgiCi0jaW5jbHVkZSAiY2F0YWxvZy9vYmplY3RhZGRyZXNzLmgi CiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wdWJsaWNhdGlvbl9kLmgiCisjaW5jbHVkZSAibm9kZXMv cGdfbGlzdC5oIgorCisvKiBQdWJsaWNhdGlvbiB0cmlnZ2VyIGV2ZW50cyAqLworI2RlZmluZSBQ VUJfVFJJR19ERExfQ01EX1NUQVJUICJkZGxfY29tbWFuZF9zdGFydCIKKyNkZWZpbmUgUFVCX1RS SUdfRERMX0NNRF9FTkQgImRkbF9jb21tYW5kX2VuZCIKKyNkZWZpbmUgUFVCX1RSSUdfVEJMX1JF V1JJVEUgInRhYmxlX3Jld3JpdGUiCisKKy8qIFB1YmxpY2F0aW9uIGV2ZW50IHRyaWdnZXIgcHJl Zml4ICovCisjZGVmaW5lIFBVQl9FVkVOVF9UUklHX0ZPUk1BVCAicGdfZGVwYXJzZV90cmlnXyVz XyV1IgogCiAvKiAtLS0tLS0tLS0tLS0tLS0tCiAgKgkJcGdfcHVibGljYXRpb24gZGVmaW5pdGlv bi4gIGNwcCB0dXJucyB0aGlzIGludG8KQEAgLTU0LDYgKzYyLDkgQEAgQ0FUQUxPRyhwZ19wdWJs aWNhdGlvbiw2MTA0LFB1YmxpY2F0aW9uUmVsYXRpb25JZCkKIAogCS8qIHRydWUgaWYgcGFydGl0 aW9uIGNoYW5nZXMgYXJlIHB1Ymxpc2hlZCB1c2luZyByb290IHNjaGVtYSAqLwogCWJvb2wJCXB1 YnZpYXJvb3Q7CisKKwkvKiB0cnVlIGlmIHRhYmxlIGRkbHMgYXJlIHB1Ymxpc2hlZCAqLworCWJv b2wJCXB1YmRkbF90YWJsZTsKIH0gRm9ybURhdGFfcGdfcHVibGljYXRpb247CiAKIC8qIC0tLS0t LS0tLS0tLS0tLS0KQEAgLTcyLDYgKzgzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUHVibGljYXRpb25B Y3Rpb25zCiAJYm9vbAkJcHVidXBkYXRlOwogCWJvb2wJCXB1YmRlbGV0ZTsKIAlib29sCQlwdWJ0 cnVuY2F0ZTsKKwlib29sCQlwdWJkZGxfdGFibGU7CiB9IFB1YmxpY2F0aW9uQWN0aW9uczsKIAog dHlwZWRlZiBzdHJ1Y3QgUHVibGljYXRpb25EZXNjCkBAIC0xMDMsMTMgKzExNSw2IEBAIHR5cGVk ZWYgc3RydWN0IFB1YmxpY2F0aW9uCiAJUHVibGljYXRpb25BY3Rpb25zIHB1YmFjdGlvbnM7CiB9 IFB1YmxpY2F0aW9uOwogCi10eXBlZGVmIHN0cnVjdCBQdWJsaWNhdGlvblJlbEluZm8KLXsKLQlS ZWxhdGlvbglyZWxhdGlvbjsKLQlOb2RlCSAgICp3aGVyZUNsYXVzZTsKLQlMaXN0CSAgICpjb2x1 bW5zOwotfSBQdWJsaWNhdGlvblJlbEluZm87Ci0KIGV4dGVybiBQdWJsaWNhdGlvbiAqR2V0UHVi bGljYXRpb24oT2lkIHB1YmlkKTsKIGV4dGVybiBQdWJsaWNhdGlvbiAqR2V0UHVibGljYXRpb25C eU5hbWUoY29uc3QgY2hhciAqcHVibmFtZSwgYm9vbCBtaXNzaW5nX29rKTsKIGV4dGVybiBMaXN0 ICpHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhPaWQgcmVsaWQpOwpAQCAtMTQ1LDE0ICsxNTAsNiBA QCBleHRlcm4gTGlzdCAqR2V0UHViUGFydGl0aW9uT3B0aW9uUmVsYXRpb25zKExpc3QgKnJlc3Vs dCwKIGV4dGVybiBPaWQJR2V0VG9wTW9zdEFuY2VzdG9ySW5QdWJsaWNhdGlvbihPaWQgcHVib2lk LCBMaXN0ICphbmNlc3RvcnMsCiAJCQkJCQkJCQkJCWludCAqYW5jZXN0b3JfbGV2ZWwpOwogCi1l eHRlcm4gYm9vbCBpc19wdWJsaXNoYWJsZV9yZWxhdGlvbihSZWxhdGlvbiByZWwpOwogZXh0ZXJu IGJvb2wgaXNfc2NoZW1hX3B1YmxpY2F0aW9uKE9pZCBwdWJpZCk7Ci1leHRlcm4gT2JqZWN0QWRk cmVzcyBwdWJsaWNhdGlvbl9hZGRfcmVsYXRpb24oT2lkIHB1YmlkLCBQdWJsaWNhdGlvblJlbElu Zm8gKnByaSwKLQkJCQkJCQkJCQkJICBib29sIGlmX25vdF9leGlzdHMpOwotZXh0ZXJuIE9iamVj dEFkZHJlc3MgcHVibGljYXRpb25fYWRkX3NjaGVtYShPaWQgcHViaWQsIE9pZCBzY2hlbWFpZCwK LQkJCQkJCQkJCQkJYm9vbCBpZl9ub3RfZXhpc3RzKTsKLQotZXh0ZXJuIEJpdG1hcHNldCAqcHVi X2NvbGxpc3RfdG9fYml0bWFwc2V0KEJpdG1hcHNldCAqY29sdW1ucywgRGF0dW0gcHViY29scywK LQkJCQkJCQkJCQkgICBNZW1vcnlDb250ZXh0IG1jeHQpOwogCiAjZW5kaWYJCQkJCQkJLyogUEdf UFVCTElDQVRJT05fSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXZlbnRf dHJpZ2dlci5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5oCmluZGV4IDI4 YjM0ODZiOWUuLjM5MjcwMzFhMmUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V2 ZW50X3RyaWdnZXIuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmgK QEAgLTczLDYgKzczLDEyIEBAIHR5cGVkZWYgc3RydWN0IFNRTERyb3BPYmplY3QKICNkZWZpbmUg QVRfUkVXUklURV9DT0xVTU5fUkVXUklURQkJMHgwNAogI2RlZmluZSBBVF9SRVdSSVRFX0FDQ0VT U19NRVRIT0QJCTB4MDgKIAorLyogVHJpZ2dlciBldmVudHMgKi8KKyNkZWZpbmUgVFJJR19ERExf Q01EX1NUQVJUICJkZGxfY29tbWFuZF9zdGFydCIKKyNkZWZpbmUgVFJJR19ERExfQ01EX0VORCAi ZGRsX2NvbW1hbmRfZW5kIgorI2RlZmluZSBUUklHX1RCTF9SRVdSSVRFICJ0YWJsZV9yZXdyaXRl IgorI2RlZmluZSBUUklHX1RCTF9DTURfRFJPUCAic3FsX2Ryb3AiCisKIC8qCiAgKiBFdmVudFRy aWdnZXJEYXRhIGlzIHRoZSBub2RlIHR5cGUgdGhhdCBpcyBwYXNzZWQgYXMgZm1nciAiY29udGV4 dCIgaW5mbwogICogd2hlbiBhIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgZXZlbnQgdHJpZ2dl ciBtYW5hZ2VyLgpAQCAtODAsNyArODYsNyBAQCB0eXBlZGVmIHN0cnVjdCBTUUxEcm9wT2JqZWN0 CiAjZGVmaW5lIENBTExFRF9BU19FVkVOVF9UUklHR0VSKGZjaW5mbykgXAogCSgoZmNpbmZvKS0+ Y29udGV4dCAhPSBOVUxMICYmIElzQSgoZmNpbmZvKS0+Y29udGV4dCwgRXZlbnRUcmlnZ2VyRGF0 YSkpCiAKLWV4dGVybiBPaWQJQ3JlYXRlRXZlbnRUcmlnZ2VyKENyZWF0ZUV2ZW50VHJpZ1N0bXQg KnN0bXQpOworZXh0ZXJuIE9pZAlDcmVhdGVFdmVudFRyaWdnZXIoQ3JlYXRlRXZlbnRUcmlnU3Rt dCAqc3RtdCwgYm9vbCBpc19pbnRlcm5hbCk7CiBleHRlcm4gT2lkCWdldF9ldmVudF90cmlnZ2Vy X29pZChjb25zdCBjaGFyICp0cmlnbmFtZSwgYm9vbCBtaXNzaW5nX29rKTsKIAogZXh0ZXJuIE9p ZAlBbHRlckV2ZW50VHJpZ2dlcihBbHRlckV2ZW50VHJpZ1N0bXQgKnN0bXQpOwpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmggYi9zcmMvaW5jbHVkZS9j b21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuaAppbmRleCA3MGQ1ZTM2ODBhLi5hM2ZjYTllNjRjIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuaAorKysgYi9z cmMvaW5jbHVkZS9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuaApAQCAtMjIsNiArMjIsMTMgQEAK IC8qIFNhbWUgYXMgTUFYTlVNTUVTU0FHRVMgaW4gc2ludmFsYWR0LmMgKi8KICNkZWZpbmUgTUFY X1JFTENBQ0hFX0lOVkFMX01TR1MgNDA5NgogCit0eXBlZGVmIHN0cnVjdCBQdWJsaWNhdGlvblJl bEluZm8KK3sKKwlSZWxhdGlvbglyZWxhdGlvbjsKKwlOb2RlCSAgICp3aGVyZUNsYXVzZTsKKwlM aXN0CSAgICpjb2x1bW5zOworfSBQdWJsaWNhdGlvblJlbEluZm87CisKIGV4dGVybiBPYmplY3RB ZGRyZXNzIENyZWF0ZVB1YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlUHVibGlj YXRpb25TdG10ICpzdG10KTsKIGV4dGVybiB2b2lkIEFsdGVyUHVibGljYXRpb24oUGFyc2VTdGF0 ZSAqcHN0YXRlLCBBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCk7CiBleHRlcm4gdm9pZCBSZW1v dmVQdWJsaWNhdGlvbkJ5SWQoT2lkIHB1YmlkKTsKQEAgLTM1LDUgKzQyLDEyIEBAIGV4dGVybiBi b29sIHB1Yl9yZl9jb250YWluc19pbnZhbGlkX2NvbHVtbihPaWQgcHViaWQsIFJlbGF0aW9uIHJl bGF0aW9uLAogCQkJCQkJCQkJCSAgIExpc3QgKmFuY2VzdG9ycywgYm9vbCBwdWJ2aWFyb290KTsK IGV4dGVybiBib29sIHB1Yl9jb2xsaXN0X2NvbnRhaW5zX2ludmFsaWRfY29sdW1uKE9pZCBwdWJp ZCwgUmVsYXRpb24gcmVsYXRpb24sCiAJCQkJCQkJCQkJCQlMaXN0ICphbmNlc3RvcnMsIGJvb2wg cHVidmlhcm9vdCk7CitleHRlcm4gQml0bWFwc2V0ICpwdWJfY29sbGlzdF90b19iaXRtYXBzZXQo Qml0bWFwc2V0ICpjb2x1bW5zLCBEYXR1bSBwdWJjb2xzLAorCQkJCQkJCQkJCSAgIE1lbW9yeUNv bnRleHQgbWN4dCk7CitleHRlcm4gT2JqZWN0QWRkcmVzcyBwdWJsaWNhdGlvbl9hZGRfcmVsYXRp b24oT2lkIHB1YmlkLCBQdWJsaWNhdGlvblJlbEluZm8gKnByaSwKKwkJCQkJCQkJCQkJICBib29s IGlmX25vdF9leGlzdHMpOworZXh0ZXJuIE9iamVjdEFkZHJlc3MgcHVibGljYXRpb25fYWRkX3Nj aGVtYShPaWQgcHViaWQsIE9pZCBzY2hlbWFpZCwKKwkJCQkJCQkJCQkJYm9vbCBpZl9ub3RfZXhp c3RzKTsKK2V4dGVybiBib29sIGlzX3B1Ymxpc2hhYmxlX3JlbGF0aW9uKFJlbGF0aW9uIHJlbCk7 CiAKICNlbmRpZgkJCQkJCQkvKiBQVUJMSUNBVElPTkNNRFNfSCAqLwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvcmVwbGljYXRpb24vZGRsbWVzc2FnZS5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRp b24vZGRsbWVzc2FnZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmU1 MzBlYTZkMjYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9kZGxt ZXNzYWdlLmgKQEAgLTAsMCArMSw2MCBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBkZGxtZXNz YWdlLmgKKyAqCSAgIEV4cG9ydHMgZnJvbSByZXBsaWNhdGlvbi9sb2dpY2FsL2RkbG1lc3NhZ2Uu YworICoKKyAqIENvcHlyaWdodCAoYykgMjAyMywgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1l bnQgR3JvdXAKKyAqCisgKiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9kZGxtZXNzYWdlLmgKKyAq LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorICovCisjaWZuZGVmIFBHX0xPR0lDQUxfRERMX01FU1NBR0VfSAor I2RlZmluZSBQR19MT0dJQ0FMX0RETF9NRVNTQUdFX0gKKworI2luY2x1ZGUgImFjY2Vzcy94bG9n LmgiCisjaW5jbHVkZSAiYWNjZXNzL3hsb2dkZWZzLmgiCisjaW5jbHVkZSAiYWNjZXNzL3hsb2dy ZWFkZXIuaCIKKyNpbmNsdWRlICJub2Rlcy9ub2Rlcy5oIgorCisKKy8qCisgKiBTdXBwb3J0IGZv ciBrZWVwaW5nIHRyYWNrIG9mIGRlcGFyc2VkIGNvbW1hbmRzLgorICovCit0eXBlZGVmIGVudW0g RGVwYXJzZWRDb21tYW5kVHlwZQoreworCURDVF9PYmplY3RDcmVhdGUsCisJRENUX09iamVjdERy b3AsCisJRENUX1NpbXBsZUNtZCwKKwlEQ1RfVGFibGVBbHRlciwKKwlEQ1RfVGFibGVEcm9wRW5k LAorCURDVF9UYWJsZURyb3BTdGFydAorfSBEZXBhcnNlZENvbW1hbmRUeXBlOworCisvKgorICog R2VuZXJpYyBsb2dpY2FsIGRlY29kaW5nIERETCBtZXNzYWdlIHdhbCByZWNvcmQuCisgKi8KK3R5 cGVkZWYgc3RydWN0IHhsX2xvZ2ljYWxfZGRsX21lc3NhZ2UKK3sKKwlPaWQJCQlkYklkOwkJCS8q IGRhdGFiYXNlIE9pZCBlbWl0dGVkIGZyb20gKi8KKwlTaXplCQlwcmVmaXhfc2l6ZTsJLyogbGVu Z3RoIG9mIHByZWZpeCBpbmNsdWRpbmcgbnVsbCB0ZXJtaW5hdG9yICovCisJT2lkCQkJcmVsaWQ7 CQkJLyogaWQgb2YgdGhlIHRhYmxlICovCisJRGVwYXJzZWRDb21tYW5kVHlwZSBjbWR0eXBlOwkv KiB0eXBlIG9mIHNxbCBjb21tYW5kICovCisJU2l6ZQkJbWVzc2FnZV9zaXplOwkvKiBzaXplIG9m IHRoZSBtZXNzYWdlICovCisKKwkvKgorCSAqIHBheWxvYWQsIGluY2x1ZGluZyBudWxsLXRlcm1p bmF0ZWQgcHJlZml4IG9mIGxlbmd0aCBwcmVmaXhfc2l6ZQorCSAqLworCWNoYXIJCW1lc3NhZ2Vb RkxFWElCTEVfQVJSQVlfTUVNQkVSXTsKK30geGxfbG9naWNhbF9kZGxfbWVzc2FnZTsKKworI2Rl ZmluZSBTaXplT2ZMb2dpY2FsRERMTWVzc2FnZQkob2Zmc2V0b2YoeGxfbG9naWNhbF9kZGxfbWVz c2FnZSwgbWVzc2FnZSkpCisKK2V4dGVybiBYTG9nUmVjUHRyIExvZ0xvZ2ljYWxERExNZXNzYWdl KGNvbnN0IGNoYXIgKnByZWZpeCwgT2lkIHJlbGlkLCBEZXBhcnNlZENvbW1hbmRUeXBlIGNtZHR5 cGUsCisJCQkJCQkJCQkgICBjb25zdCBjaGFyICpkZGxfbWVzc2FnZSwgc2l6ZV90IHNpemUpOwor CisvKiBSTUdSIEFQSSovCisjZGVmaW5lIFhMT0dfTE9HSUNBTF9ERExfTUVTU0FHRQkweDAwCit2 b2lkCQlsb2dpY2FsZGRsbXNnX3JlZG8oWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpOwordm9pZAkJ bG9naWNhbGRkbG1zZ19kZXNjKFN0cmluZ0luZm8gYnVmLCBYTG9nUmVhZGVyU3RhdGUgKnJlY29y ZCk7Citjb25zdCBjaGFyICpsb2dpY2FsZGRsbXNnX2lkZW50aWZ5KHVpbnQ4IGluZm8pOworCisj ZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2RlY29kZS5oIGIvc3Jj L2luY2x1ZGUvcmVwbGljYXRpb24vZGVjb2RlLmgKaW5kZXggMTRmYTkyMWFiNC4uYzlhYzcwOGQz MiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vZGVjb2RlLmgKKysrIGIvc3Jj L2luY2x1ZGUvcmVwbGljYXRpb24vZGVjb2RlLmgKQEAgLTI3LDYgKzI3LDcgQEAgZXh0ZXJuIHZv aWQgaGVhcDJfZGVjb2RlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1 ZmZlciAqYnVmKTsKIGV4dGVybiB2b2lkIHhhY3RfZGVjb2RlKExvZ2ljYWxEZWNvZGluZ0NvbnRl eHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmKTsKIGV4dGVybiB2b2lkIHN0YW5kYnlfZGVj b2RlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmKTsK IGV4dGVybiB2b2lkIGxvZ2ljYWxtc2dfZGVjb2RlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0 eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmKTsKK2V4dGVybiB2b2lkIGxvZ2ljYWxkZGxfZGVjb2Rl KExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmKTsKIAog ZXh0ZXJuIHZvaWQgTG9naWNhbERlY29kaW5nUHJvY2Vzc1JlY29yZChMb2dpY2FsRGVjb2RpbmdD b250ZXh0ICpjdHgsCiAJCQkJCQkJCQkJIFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKTsKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oIGIvc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKaW5kZXggMGVhMmRmNTA4OC4uNWZiM2JhYWVi MSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKKysr IGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKQEAgLTY2LDYgKzY2LDcg QEAgdHlwZWRlZiBlbnVtIExvZ2ljYWxSZXBNc2dUeXBlCiAJTE9HSUNBTF9SRVBfTVNHX1JFTEFU SU9OID0gJ1InLAogCUxPR0lDQUxfUkVQX01TR19UWVBFID0gJ1knLAogCUxPR0lDQUxfUkVQX01T R19NRVNTQUdFID0gJ00nLAorCUxPR0lDQUxfUkVQX01TR19EREwgPSAnTCcsCiAJTE9HSUNBTF9S RVBfTVNHX0JFR0lOX1BSRVBBUkUgPSAnYicsCiAJTE9HSUNBTF9SRVBfTVNHX1BSRVBBUkUgPSAn UCcsCiAJTE9HSUNBTF9SRVBfTVNHX0NPTU1JVF9QUkVQQVJFRCA9ICdLJywKQEAgLTI0Niw2ICsy NDcsOSBAQCBleHRlcm4gTGlzdCAqbG9naWNhbHJlcF9yZWFkX3RydW5jYXRlKFN0cmluZ0luZm8g aW4sCiAJCQkJCQkJCQkgIGJvb2wgKmNhc2NhZGUsIGJvb2wgKnJlc3RhcnRfc2Vxcyk7CiBleHRl cm4gdm9pZCBsb2dpY2FscmVwX3dyaXRlX21lc3NhZ2UoU3RyaW5nSW5mbyBvdXQsIFRyYW5zYWN0 aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbiwKIAkJCQkJCQkJCSBib29sIHRyYW5zYWN0aW9uYWws IGNvbnN0IGNoYXIgKnByZWZpeCwgU2l6ZSBzeiwgY29uc3QgY2hhciAqbWVzc2FnZSk7CitleHRl cm4gdm9pZCBsb2dpY2FscmVwX3dyaXRlX2RkbChTdHJpbmdJbmZvIG91dCwgWExvZ1JlY1B0ciBs c24sCisJCQkJCQkJCQkJY29uc3QgY2hhciAqcHJlZml4LCBTaXplIHN6LCBjb25zdCBjaGFyICpt ZXNzYWdlKTsKK2V4dGVybiBjaGFyICpsb2dpY2FscmVwX3JlYWRfZGRsKFN0cmluZ0luZm8gaW4s IFhMb2dSZWNQdHIgKmxzbiwgY29uc3QgY2hhciAqKnByZWZpeCwgU2l6ZSAqc3opOwogZXh0ZXJu IHZvaWQgbG9naWNhbHJlcF93cml0ZV9yZWwoU3RyaW5nSW5mbyBvdXQsIFRyYW5zYWN0aW9uSWQg eGlkLAogCQkJCQkJCQkgUmVsYXRpb24gcmVsLCBCaXRtYXBzZXQgKmNvbHVtbnMpOwogZXh0ZXJu IExvZ2ljYWxSZXBSZWxhdGlvbiAqbG9naWNhbHJlcF9yZWFkX3JlbChTdHJpbmdJbmZvIGluKTsK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL291dHB1dF9wbHVnaW4uaCBiL3Ny Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL291dHB1dF9wbHVnaW4uaAppbmRleCAzYWM2NzI5Mzg2Li4y YWQ5NmQzNzRhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9vdXRwdXRfcGx1 Z2luLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vb3V0cHV0X3BsdWdpbi5oCkBAIC05 MCw2ICs5MCwxOCBAQCB0eXBlZGVmIHZvaWQgKCpMb2dpY2FsRGVjb2RlTWVzc2FnZUNCKSAoc3Ry dWN0IExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwKIAkJCQkJCQkJCQlTaXplIG1lc3NhZ2Vf c2l6ZSwKIAkJCQkJCQkJCQljb25zdCBjaGFyICptZXNzYWdlKTsKIAorLyoKKyAqIENhbGxiYWNr IGZvciB0aGUgbG9naWNhbCBkZWNvZGluZyBEREwgbWVzc2FnZXMuCisgKi8KK3R5cGVkZWYgdm9p ZCAoKkxvZ2ljYWxEZWNvZGVERExNZXNzYWdlQ0IpIChzdHJ1Y3QgTG9naWNhbERlY29kaW5nQ29u dGV4dCAqY3R4LAorCQkJCQkJCQkJCSAgIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKKwkJCQkJCQkJ CQkgICBYTG9nUmVjUHRyIG1lc3NhZ2VfbHNuLAorCQkJCQkJCQkJCSAgIGNvbnN0IGNoYXIgKnBy ZWZpeCwKKwkJCQkJCQkJCQkgICBPaWQgcmVsaWQsCisJCQkJCQkJCQkJICAgRGVwYXJzZWRDb21t YW5kVHlwZSBjbWR0eXBlLAorCQkJCQkJCQkJCSAgIFNpemUgbWVzc2FnZV9zaXplLAorCQkJCQkJ CQkJCSAgIGNvbnN0IGNoYXIgKm1lc3NhZ2UpOworCiAvKgogICogRmlsdGVyIGNoYW5nZXMgYnkg b3JpZ2luLgogICovCkBAIC0yMDEsNiArMjEzLDE5IEBAIHR5cGVkZWYgdm9pZCAoKkxvZ2ljYWxE ZWNvZGVTdHJlYW1NZXNzYWdlQ0IpIChzdHJ1Y3QgTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4 CiAJCQkJCQkJCQkJCSAgU2l6ZSBtZXNzYWdlX3NpemUsCiAJCQkJCQkJCQkJCSAgY29uc3QgY2hh ciAqbWVzc2FnZSk7CiAKKy8qCisgKiBDYWxsYmFjayBmb3Igc3RyZWFtaW5nIGxvZ2ljYWwgZGVj b2RpbmcgRERMIG1lc3NhZ2VzIGZyb20gaW4tcHJvZ3Jlc3MKKyAqIHRyYW5zYWN0aW9ucy4KKyAq LwordHlwZWRlZiB2b2lkICgqTG9naWNhbERlY29kZVN0cmVhbURETE1lc3NhZ2VDQikgKHN0cnVj dCBMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCisJCQkJCQkJCQkJCQkgUmVvcmRlckJ1ZmZl clRYTiAqdHhuLAorCQkJCQkJCQkJCQkJIFhMb2dSZWNQdHIgbWVzc2FnZV9sc24sCisJCQkJCQkJ CQkJCQkgY29uc3QgY2hhciAqcHJlZml4LAorCQkJCQkJCQkJCQkJIE9pZCByZWxpZCwKKwkJCQkJ CQkJCQkJCSBEZXBhcnNlZENvbW1hbmRUeXBlIGNtZHR5cGUsCisJCQkJCQkJCQkJCQkgU2l6ZSBt ZXNzYWdlX3NpemUsCisJCQkJCQkJCQkJCQkgY29uc3QgY2hhciAqbWVzc2FnZSk7CisKIC8qCiAg KiBDYWxsYmFjayBmb3Igc3RyZWFtaW5nIHRydW5jYXRlcyBmcm9tIGluLXByb2dyZXNzIHRyYW5z YWN0aW9ucy4KICAqLwpAQCAtMjIxLDYgKzI0Niw3IEBAIHR5cGVkZWYgc3RydWN0IE91dHB1dFBs dWdpbkNhbGxiYWNrcwogCUxvZ2ljYWxEZWNvZGVUcnVuY2F0ZUNCIHRydW5jYXRlX2NiOwogCUxv Z2ljYWxEZWNvZGVDb21taXRDQiBjb21taXRfY2I7CiAJTG9naWNhbERlY29kZU1lc3NhZ2VDQiBt ZXNzYWdlX2NiOworCUxvZ2ljYWxEZWNvZGVERExNZXNzYWdlQ0IgZGRsX2NiOwogCUxvZ2ljYWxE ZWNvZGVGaWx0ZXJCeU9yaWdpbkNCIGZpbHRlcl9ieV9vcmlnaW5fY2I7CiAJTG9naWNhbERlY29k ZVNodXRkb3duQ0Igc2h1dGRvd25fY2I7CiAKQEAgLTIzOSw2ICsyNjUsNyBAQCB0eXBlZGVmIHN0 cnVjdCBPdXRwdXRQbHVnaW5DYWxsYmFja3MKIAlMb2dpY2FsRGVjb2RlU3RyZWFtQ29tbWl0Q0Ig c3RyZWFtX2NvbW1pdF9jYjsKIAlMb2dpY2FsRGVjb2RlU3RyZWFtQ2hhbmdlQ0Igc3RyZWFtX2No YW5nZV9jYjsKIAlMb2dpY2FsRGVjb2RlU3RyZWFtTWVzc2FnZUNCIHN0cmVhbV9tZXNzYWdlX2Ni OworCUxvZ2ljYWxEZWNvZGVTdHJlYW1ERExNZXNzYWdlQ0Igc3RyZWFtX2RkbF9jYjsKIAlMb2dp Y2FsRGVjb2RlU3RyZWFtVHJ1bmNhdGVDQiBzdHJlYW1fdHJ1bmNhdGVfY2I7CiB9IE91dHB1dFBs dWdpbkNhbGxiYWNrczsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcGdv dXRwdXQuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Bnb3V0cHV0LmgKaW5kZXggYjRhODAx NTQwMy4uYTJjZjk5YjRlNCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcGdv dXRwdXQuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9wZ291dHB1dC5oCkBAIC0yNSw2 ICsyNSw3IEBAIHR5cGVkZWYgc3RydWN0IFBHT3V0cHV0RGF0YQogCXVpbnQzMgkJcHJvdG9jb2xf dmVyc2lvbjsKIAlMaXN0CSAgICpwdWJsaWNhdGlvbl9uYW1lczsKIAlMaXN0CSAgICpwdWJsaWNh dGlvbnM7CisJTGlzdAkgICAqZGVsZXRlZF9yZWxpZHM7CiAJYm9vbAkJYmluYXJ5OwogCWNoYXIJ CXN0cmVhbWluZzsKIAlib29sCQltZXNzYWdlczsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3Jk ZXJidWZmZXIuaAppbmRleCAxYjlkYjIyYWNiLi4yYjM3Yzk2YzFmIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oCkBAIC0xMSw2ICsxMSw4IEBACiAKICNpbmNsdWRlICJh Y2Nlc3MvaHR1cF9kZXRhaWxzLmgiCiAjaW5jbHVkZSAibGliL2lsaXN0LmgiCisjaW5jbHVkZSAi bm9kZXMvbm9kZXMuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9kZGxtZXNzYWdlLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9zaW52YWwuaCIKICNpbmNsdWRlICJ1dGlscy9oc2VhcmNoLmgiCiAjaW5j bHVkZSAidXRpbHMvcmVsY2FjaGUuaCIKQEAgLTY2LDYgKzY4LDcgQEAgdHlwZWRlZiBlbnVtIFJl b3JkZXJCdWZmZXJDaGFuZ2VUeXBlCiAJUkVPUkRFUl9CVUZGRVJfQ0hBTkdFX1VQREFURSwKIAlS RU9SREVSX0JVRkZFUl9DSEFOR0VfREVMRVRFLAogCVJFT1JERVJfQlVGRkVSX0NIQU5HRV9NRVNT QUdFLAorCVJFT1JERVJfQlVGRkVSX0NIQU5HRV9EREwsCiAJUkVPUkRFUl9CVUZGRVJfQ0hBTkdF X0lOVkFMSURBVElPTiwKIAlSRU9SREVSX0JVRkZFUl9DSEFOR0VfSU5URVJOQUxfU05BUFNIT1Qs CiAJUkVPUkRFUl9CVUZGRVJfQ0hBTkdFX0lOVEVSTkFMX0NPTU1BTkRfSUQsCkBAIC0xMzksNiAr MTQyLDE2IEBAIHR5cGVkZWYgc3RydWN0IFJlb3JkZXJCdWZmZXJDaGFuZ2UKIAkJCWNoYXIJICAg Km1lc3NhZ2U7CiAJCX0JCQltc2c7CiAKKwkJLyogRERMICovCisJCXN0cnVjdAorCQl7CisJCQlj aGFyCSAgICpwcmVmaXg7CisJCQlTaXplCQltZXNzYWdlX3NpemU7CisJCQljaGFyCSAgICptZXNz YWdlOworCQkJT2lkCQkJcmVsaWQ7CisJCQlEZXBhcnNlZENvbW1hbmRUeXBlIGNtZHR5cGU7CisJ CX0JCQlkZGw7CisKIAkJLyogTmV3IHNuYXBzaG90LCBzZXQgd2hlbiBhY3Rpb24gPT0gKl9JTlRF Uk5BTF9TTkFQU0hPVCAqLwogCQlTbmFwc2hvdAlzbmFwc2hvdDsKIApAQCAtNDcwLDYgKzQ4Mywx NiBAQCB0eXBlZGVmIHZvaWQgKCpSZW9yZGVyQnVmZmVyTWVzc2FnZUNCKSAoUmVvcmRlckJ1ZmZl ciAqcmIsCiAJCQkJCQkJCQkJY29uc3QgY2hhciAqcHJlZml4LCBTaXplIHN6LAogCQkJCQkJCQkJ CWNvbnN0IGNoYXIgKm1lc3NhZ2UpOwogCisvKiBEREwgbWVzc2FnZSBjYWxsYmFjayBzaWduYXR1 cmUgKi8KK3R5cGVkZWYgdm9pZCAoKlJlb3JkZXJCdWZmZXJERExNZXNzYWdlQ0IpIChSZW9yZGVy QnVmZmVyICpyYiwKKwkJCQkJCQkJCQkgICBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCisJCQkJCQkJ CQkJICAgWExvZ1JlY1B0ciBtZXNzYWdlX2xzbiwKKwkJCQkJCQkJCQkgICBjb25zdCBjaGFyICpw cmVmaXgsCisJCQkJCQkJCQkJICAgT2lkIHJlbGlkLAorCQkJCQkJCQkJCSAgIERlcGFyc2VkQ29t bWFuZFR5cGUgY21kdHlwZSwKKwkJCQkJCQkJCQkgICBTaXplIHN6LAorCQkJCQkJCQkJCSAgIGNv bnN0IGNoYXIgKm1lc3NhZ2UpOworCiAvKiBiZWdpbiBwcmVwYXJlIGNhbGxiYWNrIHNpZ25hdHVy ZSAqLwogdHlwZWRlZiB2b2lkICgqUmVvcmRlckJ1ZmZlckJlZ2luUHJlcGFyZUNCKSAoUmVvcmRl ckJ1ZmZlciAqcmIsCiAJCQkJCQkJCQkJCSBSZW9yZGVyQnVmZmVyVFhOICp0eG4pOwpAQCAtNTM2 LDYgKzU1OSwxNyBAQCB0eXBlZGVmIHZvaWQgKCpSZW9yZGVyQnVmZmVyU3RyZWFtTWVzc2FnZUNC KSAoCiAJCQkJCQkJCQkJCSAgY29uc3QgY2hhciAqcHJlZml4LCBTaXplIHN6LAogCQkJCQkJCQkJ CQkgIGNvbnN0IGNoYXIgKm1lc3NhZ2UpOwogCisvKiBzdHJlYW0gRERMIG1lc3NhZ2UgY2FsbGJh Y2sgc2lnbmF0dXJlICovCit0eXBlZGVmIHZvaWQgKCpSZW9yZGVyQnVmZmVyU3RyZWFtRERMTWVz c2FnZUNCKSAoCisJCQkJCQkJCQkJCQkgUmVvcmRlckJ1ZmZlciAqcmIsCisJCQkJCQkJCQkJCQkg UmVvcmRlckJ1ZmZlclRYTiAqdHhuLAorCQkJCQkJCQkJCQkJIFhMb2dSZWNQdHIgbWVzc2FnZV9s c24sCisJCQkJCQkJCQkJCQkgY29uc3QgY2hhciAqcHJlZml4LAorCQkJCQkJCQkJCQkJIE9pZCBy ZWxpZCwKKwkJCQkJCQkJCQkJCSBEZXBhcnNlZENvbW1hbmRUeXBlIGNtZHR5cGUsCisJCQkJCQkJ CQkJCQkgU2l6ZSBzeiwKKwkJCQkJCQkJCQkJCSBjb25zdCBjaGFyICptZXNzYWdlKTsKKwogLyog c3RyZWFtIHRydW5jYXRlIGNhbGxiYWNrIHNpZ25hdHVyZSAqLwogdHlwZWRlZiB2b2lkICgqUmVv cmRlckJ1ZmZlclN0cmVhbVRydW5jYXRlQ0IpICgKIAkJCQkJCQkJCQkJICAgUmVvcmRlckJ1ZmZl ciAqcmIsCkBAIC01OTIsNiArNjI2LDcgQEAgc3RydWN0IFJlb3JkZXJCdWZmZXIKIAlSZW9yZGVy QnVmZmVyQXBwbHlUcnVuY2F0ZUNCIGFwcGx5X3RydW5jYXRlOwogCVJlb3JkZXJCdWZmZXJDb21t aXRDQiBjb21taXQ7CiAJUmVvcmRlckJ1ZmZlck1lc3NhZ2VDQiBtZXNzYWdlOworCVJlb3JkZXJC dWZmZXJERExNZXNzYWdlQ0IgZGRsOwogCiAJLyoKIAkgKiBDYWxsYmFja3MgdG8gYmUgY2FsbGVk IHdoZW4gc3RyZWFtaW5nIGEgdHJhbnNhY3Rpb24gYXQgcHJlcGFyZSB0aW1lLgpAQCAtNjExLDYg KzY0Niw3IEBAIHN0cnVjdCBSZW9yZGVyQnVmZmVyCiAJUmVvcmRlckJ1ZmZlclN0cmVhbUNvbW1p dENCIHN0cmVhbV9jb21taXQ7CiAJUmVvcmRlckJ1ZmZlclN0cmVhbUNoYW5nZUNCIHN0cmVhbV9j aGFuZ2U7CiAJUmVvcmRlckJ1ZmZlclN0cmVhbU1lc3NhZ2VDQiBzdHJlYW1fbWVzc2FnZTsKKwlS ZW9yZGVyQnVmZmVyU3RyZWFtRERMTWVzc2FnZUNCIHN0cmVhbV9kZGw7CiAJUmVvcmRlckJ1ZmZl clN0cmVhbVRydW5jYXRlQ0Igc3RyZWFtX3RydW5jYXRlOwogCiAJLyoKQEAgLTY5Niw2ICs3MzIs OSBAQCBleHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyUXVldWVNZXNzYWdlKFJlb3JkZXJCdWZmZXIg KnJiLCBUcmFuc2FjdGlvbklkIHhpZCwKIAkJCQkJCQkJCSAgU25hcHNob3Qgc25hcCwgWExvZ1Jl Y1B0ciBsc24sCiAJCQkJCQkJCQkgIGJvb2wgdHJhbnNhY3Rpb25hbCwgY29uc3QgY2hhciAqcHJl Zml4LAogCQkJCQkJCQkJICBTaXplIG1lc3NhZ2Vfc2l6ZSwgY29uc3QgY2hhciAqbWVzc2FnZSk7 CitleHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyUXVldWVERExNZXNzYWdlKFJlb3JkZXJCdWZmZXIg KiwgVHJhbnNhY3Rpb25JZCwgWExvZ1JlY1B0ciBsc24sCisJCQkJCQkJCQkJIGNvbnN0IGNoYXIg KnByZWZpeCwgU2l6ZSBtZXNzYWdlX3NpemUsCisJCQkJCQkJCQkJIGNvbnN0IGNoYXIgKm1lc3Nh Z2UsIE9pZCByZWxpZCwgRGVwYXJzZWRDb21tYW5kVHlwZSBjbWR0eXBlKTsKIGV4dGVybiB2b2lk IFJlb3JkZXJCdWZmZXJDb21taXQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlk LAogCQkJCQkJCQlYTG9nUmVjUHRyIGNvbW1pdF9sc24sIFhMb2dSZWNQdHIgZW5kX2xzbiwKIAkJ CQkJCQkJVGltZXN0YW1wVHogY29tbWl0X3RpbWUsIFJlcE9yaWdpbklkIG9yaWdpbl9pZCwgWExv Z1JlY1B0ciBvcmlnaW5fbHNuKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Rjb3AvY21kdGFn LmggYi9zcmMvaW5jbHVkZS90Y29wL2NtZHRhZy5oCmluZGV4IDFlNzUxNGRjZmYuLjMyY2NjMTU2 ZDAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Rjb3AvY21kdGFnLmgKKysrIGIvc3JjL2luY2x1 ZGUvdGNvcC9jbWR0YWcuaApAQCAtMTYsNyArMTYsNyBAQAogLyogYnVmZmVyIHNpemUgcmVxdWly ZWQgZm9yIGNvbW1hbmQgY29tcGxldGlvbiB0YWdzICovCiAjZGVmaW5lIENPTVBMRVRJT05fVEFH X0JVRlNJWkUJNjQKIAotI2RlZmluZSBQR19DTURUQUcodGFnLCBuYW1lLCBldnRyZ29rLCByd3Jv aywgcm93Y250KSBcCisjZGVmaW5lIFBHX0NNRFRBRyh0YWcsIG5hbWUsIGV2dHJnb2ssIHJ3cm9r LCByb3djbnQsIGRkbF9yZXBsX29rKSBcCiAJdGFnLAogCiB0eXBlZGVmIGVudW0gQ29tbWFuZFRh ZwpAQCAtNTMsOSArNTMsMTEgQEAgQ29weVF1ZXJ5Q29tcGxldGlvbihRdWVyeUNvbXBsZXRpb24g KmRzdCwgY29uc3QgUXVlcnlDb21wbGV0aW9uICpzcmMpCiBleHRlcm4gdm9pZCBJbml0aWFsaXpl UXVlcnlDb21wbGV0aW9uKFF1ZXJ5Q29tcGxldGlvbiAqcWMpOwogZXh0ZXJuIGNvbnN0IGNoYXIg KkdldENvbW1hbmRUYWdOYW1lKENvbW1hbmRUYWcgY29tbWFuZFRhZyk7CiBleHRlcm4gY29uc3Qg Y2hhciAqR2V0Q29tbWFuZFRhZ05hbWVBbmRMZW4oQ29tbWFuZFRhZyBjb21tYW5kVGFnLCBTaXpl ICpsZW4pOworZXh0ZXJuIENvbW1hbmRUYWcgKkdldENvbW1hbmRUYWdzRm9yRERMUmVwbChpbnQg Km5jb21tYW5kcyk7CiBleHRlcm4gYm9vbCBjb21tYW5kX3RhZ19kaXNwbGF5X3Jvd2NvdW50KENv bW1hbmRUYWcgY29tbWFuZFRhZyk7CiBleHRlcm4gYm9vbCBjb21tYW5kX3RhZ19ldmVudF90cmln Z2VyX29rKENvbW1hbmRUYWcgY29tbWFuZFRhZyk7CiBleHRlcm4gYm9vbCBjb21tYW5kX3RhZ190 YWJsZV9yZXdyaXRlX29rKENvbW1hbmRUYWcgY29tbWFuZFRhZyk7CitleHRlcm4gYm9vbCBjb21t YW5kX3RhZ19kZGxfcmVwbGljYXRpb25fb2soQ29tbWFuZFRhZyBjb21tYW5kVGFnKTsKIGV4dGVy biBDb21tYW5kVGFnIEdldENvbW1hbmRUYWdFbnVtKGNvbnN0IGNoYXIgKmNvbW1hbmRuYW1lKTsK IGV4dGVybiBTaXplIEJ1aWxkUXVlcnlDb21wbGV0aW9uU3RyaW5nKGNoYXIgKmJ1ZmYsIGNvbnN0 IFF1ZXJ5Q29tcGxldGlvbiAqcWMsCiAJCQkJCQkJCQkgICBib29sIG5hbWVvbmx5KTsKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL3Rjb3AvY21kdGFnbGlzdC5oIGIvc3JjL2luY2x1ZGUvdGNvcC9j bWR0YWdsaXN0LmgKaW5kZXggZTczOGFjMWMwOS4uN2Y0NGExNTBlYiAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvdGNvcC9jbWR0YWdsaXN0LmgKKysrIGIvc3JjL2luY2x1ZGUvdGNvcC9jbWR0YWds aXN0LmgKQEAgLTIzLDE5NiArMjMsMTk2IEBACiAgKiB0ZXh0dWFsIG5hbWUsIHNvIHRoYXQgd2Ug Y2FuIGJzZWFyY2ggb24gaXQ7IHNlZSBHZXRDb21tYW5kVGFnRW51bSgpLgogICovCiAKLS8qIHN5 bWJvbCBuYW1lLCB0ZXh0dWFsIG5hbWUsIGV2ZW50X3RyaWdnZXJfb2ssIHRhYmxlX3Jld3JpdGVf b2ssIHJvd2NvdW50ICovCi1QR19DTURUQUcoQ01EVEFHX1VOS05PV04sICI/Pz8iLCBmYWxzZSwg ZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19BTFRFUl9BQ0NFU1NfTUVUSE9ELCAiQUxU RVIgQUNDRVNTIE1FVEhPRCIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdf QUxURVJfQUdHUkVHQVRFLCAiQUxURVIgQUdHUkVHQVRFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQot UEdfQ01EVEFHKENNRFRBR19BTFRFUl9DQVNULCAiQUxURVIgQ0FTVCIsIHRydWUsIGZhbHNlLCBm YWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQUxURVJfQ09MTEFUSU9OLCAiQUxURVIgQ09MTEFUSU9O IiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19BTFRFUl9DT05TVFJBSU5U LCAiQUxURVIgQ09OU1RSQUlOVCIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURU QUdfQUxURVJfQ09OVkVSU0lPTiwgIkFMVEVSIENPTlZFUlNJT04iLCB0cnVlLCBmYWxzZSwgZmFs c2UpCi1QR19DTURUQUcoQ01EVEFHX0FMVEVSX0RBVEFCQVNFLCAiQUxURVIgREFUQUJBU0UiLCBm YWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19BTFRFUl9ERUZBVUxUX1BSSVZJ TEVHRVMsICJBTFRFUiBERUZBVUxUIFBSSVZJTEVHRVMiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1Q R19DTURUQUcoQ01EVEFHX0FMVEVSX0RPTUFJTiwgIkFMVEVSIERPTUFJTiIsIHRydWUsIGZhbHNl LCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQUxURVJfRVZFTlRfVFJJR0dFUiwgIkFMVEVSIEVW RU5UIFRSSUdHRVIiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19BTFRF Ul9FWFRFTlNJT04sICJBTFRFUiBFWFRFTlNJT04iLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19D TURUQUcoQ01EVEFHX0FMVEVSX0ZPUkVJR05fREFUQV9XUkFQUEVSLCAiQUxURVIgRk9SRUlHTiBE QVRBIFdSQVBQRVIiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0FMVEVS X0ZPUkVJR05fVEFCTEUsICJBTFRFUiBGT1JFSUdOIFRBQkxFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNl KQotUEdfQ01EVEFHKENNRFRBR19BTFRFUl9GVU5DVElPTiwgIkFMVEVSIEZVTkNUSU9OIiwgdHJ1 ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19BTFRFUl9JTkRFWCwgIkFMVEVSIElO REVYIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19BTFRFUl9MQU5HVUFH RSwgIkFMVEVSIExBTkdVQUdFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRB R19BTFRFUl9MQVJHRV9PQkpFQ1QsICJBTFRFUiBMQVJHRSBPQkpFQ1QiLCB0cnVlLCBmYWxzZSwg ZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0FMVEVSX01BVEVSSUFMSVpFRF9WSUVXLCAiQUxURVIg TUFURVJJQUxJWkVEIFZJRVciLCB0cnVlLCB0cnVlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdf QUxURVJfT1BFUkFUT1IsICJBTFRFUiBPUEVSQVRPUiIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBH X0NNRFRBRyhDTURUQUdfQUxURVJfT1BFUkFUT1JfQ0xBU1MsICJBTFRFUiBPUEVSQVRPUiBDTEFT UyIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQUxURVJfT1BFUkFUT1Jf RkFNSUxZLCAiQUxURVIgT1BFUkFUT1IgRkFNSUxZIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdf Q01EVEFHKENNRFRBR19BTFRFUl9QT0xJQ1ksICJBTFRFUiBQT0xJQ1kiLCB0cnVlLCBmYWxzZSwg ZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0FMVEVSX1BST0NFRFVSRSwgIkFMVEVSIFBST0NFRFVS RSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQUxURVJfUFVCTElDQVRJ T04sICJBTFRFUiBQVUJMSUNBVElPTiIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhD TURUQUdfQUxURVJfUk9MRSwgIkFMVEVSIFJPTEUiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdf Q01EVEFHKENNRFRBR19BTFRFUl9ST1VUSU5FLCAiQUxURVIgUk9VVElORSIsIHRydWUsIGZhbHNl LCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQUxURVJfUlVMRSwgIkFMVEVSIFJVTEUiLCB0cnVl LCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0FMVEVSX1NDSEVNQSwgIkFMVEVSIFND SEVNQSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQUxURVJfU0VRVUVO Q0UsICJBTFRFUiBTRVFVRU5DRSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURU QUdfQUxURVJfU0VSVkVSLCAiQUxURVIgU0VSVkVSIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdf Q01EVEFHKENNRFRBR19BTFRFUl9TVEFUSVNUSUNTLCAiQUxURVIgU1RBVElTVElDUyIsIHRydWUs IGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQUxURVJfU1VCU0NSSVBUSU9OLCAiQUxU RVIgU1VCU0NSSVBUSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19B TFRFUl9TWVNURU0sICJBTFRFUiBTWVNURU0iLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01E VEFHKENNRFRBR19BTFRFUl9UQUJMRSwgIkFMVEVSIFRBQkxFIiwgdHJ1ZSwgdHJ1ZSwgZmFsc2Up Ci1QR19DTURUQUcoQ01EVEFHX0FMVEVSX1RBQkxFU1BBQ0UsICJBTFRFUiBUQUJMRVNQQUNFIiwg ZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQUxURVJfVEVYVF9TRUFSQ0hf Q09ORklHVVJBVElPTiwgIkFMVEVSIFRFWFQgU0VBUkNIIENPTkZJR1VSQVRJT04iLCB0cnVlLCBm YWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0FMVEVSX1RFWFRfU0VBUkNIX0RJQ1RJT05B UlksICJBTFRFUiBURVhUIFNFQVJDSCBESUNUSU9OQVJZIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQot UEdfQ01EVEFHKENNRFRBR19BTFRFUl9URVhUX1NFQVJDSF9QQVJTRVIsICJBTFRFUiBURVhUIFNF QVJDSCBQQVJTRVIiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0FMVEVS X1RFWFRfU0VBUkNIX1RFTVBMQVRFLCAiQUxURVIgVEVYVCBTRUFSQ0ggVEVNUExBVEUiLCB0cnVl LCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0FMVEVSX1RSQU5TRk9STSwgIkFMVEVS IFRSQU5TRk9STSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQUxURVJf VFJJR0dFUiwgIkFMVEVSIFRSSUdHRVIiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUco Q01EVEFHX0FMVEVSX1RZUEUsICJBTFRFUiBUWVBFIiwgdHJ1ZSwgdHJ1ZSwgZmFsc2UpCi1QR19D TURUQUcoQ01EVEFHX0FMVEVSX1VTRVJfTUFQUElORywgIkFMVEVSIFVTRVIgTUFQUElORyIsIHRy dWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQUxURVJfVklFVywgIkFMVEVSIFZJ RVciLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0FOQUxZWkUsICJBTkFM WVpFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQkVHSU4sICJCRUdJ TiIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0NBTEwsICJDQUxMIiwg ZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ0hFQ0tQT0lOVCwgIkNIRUNL UE9JTlQiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19DTE9TRSwgIkNM T1NFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ0xPU0VfQ1VSU09S LCAiQ0xPU0UgQ1VSU09SIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdf Q0xPU0VfQ1VSU09SX0FMTCwgIkNMT1NFIENVUlNPUiBBTEwiLCBmYWxzZSwgZmFsc2UsIGZhbHNl KQotUEdfQ01EVEFHKENNRFRBR19DTFVTVEVSLCAiQ0xVU1RFUiIsIGZhbHNlLCBmYWxzZSwgZmFs c2UpCi1QR19DTURUQUcoQ01EVEFHX0NPTU1FTlQsICJDT01NRU5UIiwgdHJ1ZSwgZmFsc2UsIGZh bHNlKQotUEdfQ01EVEFHKENNRFRBR19DT01NSVQsICJDT01NSVQiLCBmYWxzZSwgZmFsc2UsIGZh bHNlKQotUEdfQ01EVEFHKENNRFRBR19DT01NSVRfUFJFUEFSRUQsICJDT01NSVQgUFJFUEFSRUQi LCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19DT1BZLCAiQ09QWSIsIGZh bHNlLCBmYWxzZSwgdHJ1ZSkKLVBHX0NNRFRBRyhDTURUQUdfQ09QWV9GUk9NLCAiQ09QWSBGUk9N IiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX0FDQ0VTU19N RVRIT0QsICJDUkVBVEUgQUNDRVNTIE1FVEhPRCIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NN RFRBRyhDTURUQUdfQ1JFQVRFX0FHR1JFR0FURSwgIkNSRUFURSBBR0dSRUdBVEUiLCB0cnVlLCBm YWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0NSRUFURV9DQVNULCAiQ1JFQVRFIENBU1Qi LCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0NSRUFURV9DT0xMQVRJT04s ICJDUkVBVEUgQ09MTEFUSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRB R19DUkVBVEVfQ09OU1RSQUlOVCwgIkNSRUFURSBDT05TVFJBSU5UIiwgdHJ1ZSwgZmFsc2UsIGZh bHNlKQotUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfQ09OVkVSU0lPTiwgIkNSRUFURSBDT05WRVJT SU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfREFUQUJB U0UsICJDUkVBVEUgREFUQUJBU0UiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENN RFRBR19DUkVBVEVfRE9NQUlOLCAiQ1JFQVRFIERPTUFJTiIsIHRydWUsIGZhbHNlLCBmYWxzZSkK LVBHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX0VWRU5UX1RSSUdHRVIsICJDUkVBVEUgRVZFTlQgVFJJ R0dFUiIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0NSRUFURV9FWFRF TlNJT04sICJDUkVBVEUgRVhURU5TSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFH KENNRFRBR19DUkVBVEVfRk9SRUlHTl9EQVRBX1dSQVBQRVIsICJDUkVBVEUgRk9SRUlHTiBEQVRB IFdSQVBQRVIiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0NSRUFURV9G T1JFSUdOX1RBQkxFLCAiQ1JFQVRFIEZPUkVJR04gVEFCTEUiLCB0cnVlLCBmYWxzZSwgZmFsc2Up Ci1QR19DTURUQUcoQ01EVEFHX0NSRUFURV9GVU5DVElPTiwgIkNSRUFURSBGVU5DVElPTiIsIHRy dWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX0lOREVYLCAiQ1JFQVRF IElOREVYIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfTEFO R1VBR0UsICJDUkVBVEUgTEFOR1VBR0UiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUco Q01EVEFHX0NSRUFURV9NQVRFUklBTElaRURfVklFVywgIkNSRUFURSBNQVRFUklBTElaRUQgVklF VyIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX09QRVJBVE9S LCAiQ1JFQVRFIE9QRVJBVE9SIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRB R19DUkVBVEVfT1BFUkFUT1JfQ0xBU1MsICJDUkVBVEUgT1BFUkFUT1IgQ0xBU1MiLCB0cnVlLCBm YWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0NSRUFURV9PUEVSQVRPUl9GQU1JTFksICJD UkVBVEUgT1BFUkFUT1IgRkFNSUxZIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENN RFRBR19DUkVBVEVfUE9MSUNZLCAiQ1JFQVRFIFBPTElDWSIsIHRydWUsIGZhbHNlLCBmYWxzZSkK LVBHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1BST0NFRFVSRSwgIkNSRUFURSBQUk9DRURVUkUiLCB0 cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0NSRUFURV9QVUJMSUNBVElPTiwg IkNSRUFURSBQVUJMSUNBVElPTiIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURU QUdfQ1JFQVRFX1JPTEUsICJDUkVBVEUgUk9MRSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19D TURUQUcoQ01EVEFHX0NSRUFURV9ST1VUSU5FLCAiQ1JFQVRFIFJPVVRJTkUiLCB0cnVlLCBmYWxz ZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0NSRUFURV9SVUxFLCAiQ1JFQVRFIFJVTEUiLCB0 cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0NSRUFURV9TQ0hFTUEsICJDUkVB VEUgU0NIRU1BIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19DUkVBVEVf U0VRVUVOQ0UsICJDUkVBVEUgU0VRVUVOQ0UiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURU QUcoQ01EVEFHX0NSRUFURV9TRVJWRVIsICJDUkVBVEUgU0VSVkVSIiwgdHJ1ZSwgZmFsc2UsIGZh bHNlKQotUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfU1RBVElTVElDUywgIkNSRUFURSBTVEFUSVNU SUNTIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfU1VCU0NS SVBUSU9OLCAiQ1JFQVRFIFNVQlNDUklQVElPTiIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NN RFRBRyhDTURUQUdfQ1JFQVRFX1RBQkxFLCAiQ1JFQVRFIFRBQkxFIiwgdHJ1ZSwgZmFsc2UsIGZh bHNlKQotUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfVEFCTEVfQVMsICJDUkVBVEUgVEFCTEUgQVMi LCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0NSRUFURV9UQUJMRVNQQUNF LCAiQ1JFQVRFIFRBQkxFU1BBQ0UiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENN RFRBR19DUkVBVEVfVEVYVF9TRUFSQ0hfQ09ORklHVVJBVElPTiwgIkNSRUFURSBURVhUIFNFQVJD SCBDT05GSUdVUkFUSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19D UkVBVEVfVEVYVF9TRUFSQ0hfRElDVElPTkFSWSwgIkNSRUFURSBURVhUIFNFQVJDSCBESUNUSU9O QVJZIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfVEVYVF9T RUFSQ0hfUEFSU0VSLCAiQ1JFQVRFIFRFWFQgU0VBUkNIIFBBUlNFUiIsIHRydWUsIGZhbHNlLCBm YWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1RFWFRfU0VBUkNIX1RFTVBMQVRFLCAiQ1JF QVRFIFRFWFQgU0VBUkNIIFRFTVBMQVRFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFH KENNRFRBR19DUkVBVEVfVFJBTlNGT1JNLCAiQ1JFQVRFIFRSQU5TRk9STSIsIHRydWUsIGZhbHNl LCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1RSSUdHRVIsICJDUkVBVEUgVFJJR0dF UiIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1RZUEUsICJD UkVBVEUgVFlQRSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ1JFQVRF X1VTRVJfTUFQUElORywgIkNSRUFURSBVU0VSIE1BUFBJTkciLCB0cnVlLCBmYWxzZSwgZmFsc2Up Ci1QR19DTURUQUcoQ01EVEFHX0NSRUFURV9WSUVXLCAiQ1JFQVRFIFZJRVciLCB0cnVlLCBmYWxz ZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RFQUxMT0NBVEUsICJERUFMTE9DQVRFIiwgZmFs c2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfREVBTExPQ0FURV9BTEwsICJERUFM TE9DQVRFIEFMTCIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RFQ0xB UkVfQ1VSU09SLCAiREVDTEFSRSBDVVJTT1IiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01E VEFHKENNRFRBR19ERUxFVEUsICJERUxFVEUiLCBmYWxzZSwgZmFsc2UsIHRydWUpCi1QR19DTURU QUcoQ01EVEFHX0RJU0NBUkQsICJESVNDQVJEIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NN RFRBRyhDTURUQUdfRElTQ0FSRF9BTEwsICJESVNDQVJEIEFMTCIsIGZhbHNlLCBmYWxzZSwgZmFs c2UpCi1QR19DTURUQUcoQ01EVEFHX0RJU0NBUkRfUExBTlMsICJESVNDQVJEIFBMQU5TIiwgZmFs c2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfRElTQ0FSRF9TRVFVRU5DRVMsICJE SVNDQVJEIFNFUVVFTkNFUyIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFH X0RJU0NBUkRfVEVNUCwgIkRJU0NBUkQgVEVNUCIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19D TURUQUcoQ01EVEFHX0RPLCAiRE8iLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENN RFRBR19EUk9QX0FDQ0VTU19NRVRIT0QsICJEUk9QIEFDQ0VTUyBNRVRIT0QiLCB0cnVlLCBmYWxz ZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RST1BfQUdHUkVHQVRFLCAiRFJPUCBBR0dSRUdB VEUiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RST1BfQ0FTVCwgIkRS T1AgQ0FTVCIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfRFJPUF9DT0xM QVRJT04sICJEUk9QIENPTExBVElPTiIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhD TURUQUdfRFJPUF9DT05TVFJBSU5ULCAiRFJPUCBDT05TVFJBSU5UIiwgdHJ1ZSwgZmFsc2UsIGZh bHNlKQotUEdfQ01EVEFHKENNRFRBR19EUk9QX0NPTlZFUlNJT04sICJEUk9QIENPTlZFUlNJT04i LCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RST1BfREFUQUJBU0UsICJE Uk9QIERBVEFCQVNFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfRFJP UF9ET01BSU4sICJEUk9QIERPTUFJTiIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhD TURUQUdfRFJPUF9FVkVOVF9UUklHR0VSLCAiRFJPUCBFVkVOVCBUUklHR0VSIiwgZmFsc2UsIGZh bHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfRFJPUF9FWFRFTlNJT04sICJEUk9QIEVYVEVO U0lPTiIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfRFJPUF9GT1JFSUdO X0RBVEFfV1JBUFBFUiwgIkRST1AgRk9SRUlHTiBEQVRBIFdSQVBQRVIiLCB0cnVlLCBmYWxzZSwg ZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RST1BfRk9SRUlHTl9UQUJMRSwgIkRST1AgRk9SRUlH TiBUQUJMRSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfRFJPUF9GVU5D VElPTiwgIkRST1AgRlVOQ1RJT04iLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01E VEFHX0RST1BfSU5ERVgsICJEUk9QIElOREVYIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01E VEFHKENNRFRBR19EUk9QX0xBTkdVQUdFLCAiRFJPUCBMQU5HVUFHRSIsIHRydWUsIGZhbHNlLCBm YWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfRFJPUF9NQVRFUklBTElaRURfVklFVywgIkRST1AgTUFU RVJJQUxJWkVEIFZJRVciLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RS T1BfT1BFUkFUT1IsICJEUk9QIE9QRVJBVE9SIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01E VEFHKENNRFRBR19EUk9QX09QRVJBVE9SX0NMQVNTLCAiRFJPUCBPUEVSQVRPUiBDTEFTUyIsIHRy dWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfRFJPUF9PUEVSQVRPUl9GQU1JTFks ICJEUk9QIE9QRVJBVE9SIEZBTUlMWSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhD TURUQUdfRFJPUF9PV05FRCwgIkRST1AgT1dORUQiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19D TURUQUcoQ01EVEFHX0RST1BfUE9MSUNZLCAiRFJPUCBQT0xJQ1kiLCB0cnVlLCBmYWxzZSwgZmFs c2UpCi1QR19DTURUQUcoQ01EVEFHX0RST1BfUFJPQ0VEVVJFLCAiRFJPUCBQUk9DRURVUkUiLCB0 cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RST1BfUFVCTElDQVRJT04sICJE Uk9QIFBVQkxJQ0FUSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19E Uk9QX1JPTEUsICJEUk9QIFJPTEUiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENN RFRBR19EUk9QX1JPVVRJTkUsICJEUk9QIFJPVVRJTkUiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1Q R19DTURUQUcoQ01EVEFHX0RST1BfUlVMRSwgIkRST1AgUlVMRSIsIHRydWUsIGZhbHNlLCBmYWxz ZSkKLVBHX0NNRFRBRyhDTURUQUdfRFJPUF9TQ0hFTUEsICJEUk9QIFNDSEVNQSIsIHRydWUsIGZh bHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfRFJPUF9TRVFVRU5DRSwgIkRST1AgU0VRVUVO Q0UiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RST1BfU0VSVkVSLCAi RFJPUCBTRVJWRVIiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RST1Bf U1RBVElTVElDUywgIkRST1AgU1RBVElTVElDUyIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NN RFRBRyhDTURUQUdfRFJPUF9TVUJTQ1JJUFRJT04sICJEUk9QIFNVQlNDUklQVElPTiIsIHRydWUs IGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfRFJPUF9UQUJMRSwgIkRST1AgVEFCTEUi LCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RST1BfVEFCTEVTUEFDRSwg IkRST1AgVEFCTEVTUEFDRSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFH X0RST1BfVEVYVF9TRUFSQ0hfQ09ORklHVVJBVElPTiwgIkRST1AgVEVYVCBTRUFSQ0ggQ09ORklH VVJBVElPTiIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfRFJPUF9URVhU X1NFQVJDSF9ESUNUSU9OQVJZLCAiRFJPUCBURVhUIFNFQVJDSCBESUNUSU9OQVJZIiwgdHJ1ZSwg ZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19EUk9QX1RFWFRfU0VBUkNIX1BBUlNFUiwg IkRST1AgVEVYVCBTRUFSQ0ggUEFSU0VSIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFH KENNRFRBR19EUk9QX1RFWFRfU0VBUkNIX1RFTVBMQVRFLCAiRFJPUCBURVhUIFNFQVJDSCBURU1Q TEFURSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfRFJPUF9UUkFOU0ZP Uk0sICJEUk9QIFRSQU5TRk9STSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURU QUdfRFJPUF9UUklHR0VSLCAiRFJPUCBUUklHR0VSIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdf Q01EVEFHKENNRFRBR19EUk9QX1RZUEUsICJEUk9QIFRZUEUiLCB0cnVlLCBmYWxzZSwgZmFsc2Up Ci1QR19DTURUQUcoQ01EVEFHX0RST1BfVVNFUl9NQVBQSU5HLCAiRFJPUCBVU0VSIE1BUFBJTkci LCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RST1BfVklFVywgIkRST1Ag VklFVyIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfRVhFQ1VURSwgIkVY RUNVVEUiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19FWFBMQUlOLCAi RVhQTEFJTiIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0ZFVENILCAi RkVUQ0giLCBmYWxzZSwgZmFsc2UsIHRydWUpCi1QR19DTURUQUcoQ01EVEFHX0dSQU5ULCAiR1JB TlQiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0dSQU5UX1JPTEUsICJH UkFOVCBST0xFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfSU1QT1JU X0ZPUkVJR05fU0NIRU1BLCAiSU1QT1JUIEZPUkVJR04gU0NIRU1BIiwgdHJ1ZSwgZmFsc2UsIGZh bHNlKQotUEdfQ01EVEFHKENNRFRBR19JTlNFUlQsICJJTlNFUlQiLCBmYWxzZSwgZmFsc2UsIHRy dWUpCi1QR19DTURUQUcoQ01EVEFHX0xJU1RFTiwgIkxJU1RFTiIsIGZhbHNlLCBmYWxzZSwgZmFs c2UpCi1QR19DTURUQUcoQ01EVEFHX0xPQUQsICJMT0FEIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkK LVBHX0NNRFRBRyhDTURUQUdfTE9DS19UQUJMRSwgIkxPQ0sgVEFCTEUiLCBmYWxzZSwgZmFsc2Us IGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19NRVJHRSwgIk1FUkdFIiwgZmFsc2UsIGZhbHNlLCB0 cnVlKQotUEdfQ01EVEFHKENNRFRBR19NT1ZFLCAiTU9WRSIsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkK LVBHX0NNRFRBRyhDTURUQUdfTk9USUZZLCAiTk9USUZZIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkK LVBHX0NNRFRBRyhDTURUQUdfUFJFUEFSRSwgIlBSRVBBUkUiLCBmYWxzZSwgZmFsc2UsIGZhbHNl KQotUEdfQ01EVEFHKENNRFRBR19QUkVQQVJFX1RSQU5TQUNUSU9OLCAiUFJFUEFSRSBUUkFOU0FD VElPTiIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX1JFQVNTSUdOX09X TkVELCAiUkVBU1NJR04gT1dORUQiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENN RFRBR19SRUZSRVNIX01BVEVSSUFMSVpFRF9WSUVXLCAiUkVGUkVTSCBNQVRFUklBTElaRUQgVklF VyIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfUkVJTkRFWCwgIlJFSU5E RVgiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19SRUxFQVNFLCAiUkVM RUFTRSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX1JFU0VULCAiUkVT RVQiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19SRVZPS0UsICJSRVZP S0UiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX1JFVk9LRV9ST0xFLCAi UkVWT0tFIFJPTEUiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19ST0xM QkFDSywgIlJPTExCQUNLIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdf Uk9MTEJBQ0tfUFJFUEFSRUQsICJST0xMQkFDSyBQUkVQQVJFRCIsIGZhbHNlLCBmYWxzZSwgZmFs c2UpCi1QR19DTURUQUcoQ01EVEFHX1NBVkVQT0lOVCwgIlNBVkVQT0lOVCIsIGZhbHNlLCBmYWxz ZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX1NFQ1VSSVRZX0xBQkVMLCAiU0VDVVJJVFkgTEFC RUwiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX1NFTEVDVCwgIlNFTEVD VCIsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKLVBHX0NNRFRBRyhDTURUQUdfU0VMRUNUX0ZPUl9LRVlf U0hBUkUsICJTRUxFQ1QgRk9SIEtFWSBTSEFSRSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19D TURUQUcoQ01EVEFHX1NFTEVDVF9GT1JfTk9fS0VZX1VQREFURSwgIlNFTEVDVCBGT1IgTk8gS0VZ IFVQREFURSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX1NFTEVDVF9G T1JfU0hBUkUsICJTRUxFQ1QgRk9SIFNIQVJFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NN RFRBRyhDTURUQUdfU0VMRUNUX0ZPUl9VUERBVEUsICJTRUxFQ1QgRk9SIFVQREFURSIsIGZhbHNl LCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX1NFTEVDVF9JTlRPLCAiU0VMRUNUIElO VE8iLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX1NFVCwgIlNFVCIsIGZh bHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX1NFVF9DT05TVFJBSU5UUywgIlNF VCBDT05TVFJBSU5UUyIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX1NI T1csICJTSE9XIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfU1RBUlRf VFJBTlNBQ1RJT04sICJTVEFSVCBUUkFOU0FDVElPTiIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1Q R19DTURUQUcoQ01EVEFHX1RSVU5DQVRFX1RBQkxFLCAiVFJVTkNBVEUgVEFCTEUiLCBmYWxzZSwg ZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19VTkxJU1RFTiwgIlVOTElTVEVOIiwgZmFs c2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfVVBEQVRFLCAiVVBEQVRFIiwgZmFs c2UsIGZhbHNlLCB0cnVlKQotUEdfQ01EVEFHKENNRFRBR19WQUNVVU0sICJWQUNVVU0iLCBmYWxz ZSwgZmFsc2UsIGZhbHNlKQorLyogc3ltYm9sIG5hbWUsIHRleHR1YWwgbmFtZSwgZXZlbnRfdHJp Z2dlcl9vaywgdGFibGVfcmV3cml0ZV9vaywgcm93Y291bnQsIGRkbF9yZXBsX29rICovCitQR19D TURUQUcoQ01EVEFHX1VOS05PV04sICI/Pz8iLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkK K1BHX0NNRFRBRyhDTURUQUdfQUxURVJfQUNDRVNTX01FVEhPRCwgIkFMVEVSIEFDQ0VTUyBNRVRI T0QiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19BTFRFUl9B R0dSRUdBVEUsICJBTFRFUiBBR0dSRUdBVEUiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQ R19DTURUQUcoQ01EVEFHX0FMVEVSX0NBU1QsICJBTFRFUiBDQVNUIiwgdHJ1ZSwgZmFsc2UsIGZh bHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19BTFRFUl9DT0xMQVRJT04sICJBTFRFUiBDT0xM QVRJT04iLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0FMVEVS X0NPTlNUUkFJTlQsICJBTFRFUiBDT05TVFJBSU5UIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCBmYWxz ZSkKK1BHX0NNRFRBRyhDTURUQUdfQUxURVJfQ09OVkVSU0lPTiwgIkFMVEVSIENPTlZFUlNJT04i LCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0FMVEVSX0RBVEFC QVNFLCAiQUxURVIgREFUQUJBU0UiLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NN RFRBRyhDTURUQUdfQUxURVJfREVGQVVMVF9QUklWSUxFR0VTLCAiQUxURVIgREVGQVVMVCBQUklW SUxFR0VTIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19BTFRF Ul9ET01BSU4sICJBTFRFUiBET01BSU4iLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19D TURUQUcoQ01EVEFHX0FMVEVSX0VWRU5UX1RSSUdHRVIsICJBTFRFUiBFVkVOVCBUUklHR0VSIiwg ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0FMVEVSX0VYVEVO U0lPTiwgIkFMVEVSIEVYVEVOU0lPTiIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NN RFRBRyhDTURUQUdfQUxURVJfRk9SRUlHTl9EQVRBX1dSQVBQRVIsICJBTFRFUiBGT1JFSUdOIERB VEEgV1JBUFBFUiIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdf QUxURVJfRk9SRUlHTl9UQUJMRSwgIkFMVEVSIEZPUkVJR04gVEFCTEUiLCB0cnVlLCBmYWxzZSwg ZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0FMVEVSX0ZVTkNUSU9OLCAiQUxURVIgRlVO Q1RJT04iLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0FMVEVS X0lOREVYLCAiQUxURVIgSU5ERVgiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURU QUcoQ01EVEFHX0FMVEVSX0xBTkdVQUdFLCAiQUxURVIgTEFOR1VBR0UiLCB0cnVlLCBmYWxzZSwg ZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0FMVEVSX0xBUkdFX09CSkVDVCwgIkFMVEVS IExBUkdFIE9CSkVDVCIsIHRydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01E VEFHX0FMVEVSX01BVEVSSUFMSVpFRF9WSUVXLCAiQUxURVIgTUFURVJJQUxJWkVEIFZJRVciLCB0 cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQUxURVJfT1BFUkFUT1Is ICJBTFRFUiBPUEVSQVRPUiIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhD TURUQUdfQUxURVJfT1BFUkFUT1JfQ0xBU1MsICJBTFRFUiBPUEVSQVRPUiBDTEFTUyIsIHRydWUs IGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQUxURVJfT1BFUkFUT1JfRkFN SUxZLCAiQUxURVIgT1BFUkFUT1IgRkFNSUxZIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQor UEdfQ01EVEFHKENNRFRBR19BTFRFUl9QT0xJQ1ksICJBTFRFUiBQT0xJQ1kiLCB0cnVlLCBmYWxz ZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0FMVEVSX1BST0NFRFVSRSwgIkFMVEVS IFBST0NFRFVSRSIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdf QUxURVJfUFVCTElDQVRJT04sICJBTFRFUiBQVUJMSUNBVElPTiIsIHRydWUsIGZhbHNlLCBmYWxz ZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQUxURVJfUk9MRSwgIkFMVEVSIFJPTEUiLCBmYWxz ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfQUxURVJfUk9VVElORSwg IkFMVEVSIFJPVVRJTkUiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01E VEFHX0FMVEVSX1JVTEUsICJBTFRFUiBSVUxFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQor UEdfQ01EVEFHKENNRFRBR19BTFRFUl9TQ0hFTUEsICJBTFRFUiBTQ0hFTUEiLCB0cnVlLCBmYWxz ZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0FMVEVSX1NFUVVFTkNFLCAiQUxURVIg U0VRVUVOQ0UiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0FM VEVSX1NFUlZFUiwgIkFMVEVSIFNFUlZFUiIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BH X0NNRFRBRyhDTURUQUdfQUxURVJfU1RBVElTVElDUywgIkFMVEVSIFNUQVRJU1RJQ1MiLCB0cnVl LCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0FMVEVSX1NVQlNDUklQVElP TiwgIkFMVEVSIFNVQlNDUklQVElPTiIsIHRydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19D TURUQUcoQ01EVEFHX0FMVEVSX1NZU1RFTSwgIkFMVEVSIFNZU1RFTSIsIGZhbHNlLCBmYWxzZSwg ZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19BTFRFUl9UQUJMRSwgIkFMVEVSIFRBQkxF IiwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0FMVEVSX1RBQkxF U1BBQ0UsICJBTFRFUiBUQUJMRVNQQUNFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQ R19DTURUQUcoQ01EVEFHX0FMVEVSX1RFWFRfU0VBUkNIX0NPTkZJR1VSQVRJT04sICJBTFRFUiBU RVhUIFNFQVJDSCBDT05GSUdVUkFUSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdf Q01EVEFHKENNRFRBR19BTFRFUl9URVhUX1NFQVJDSF9ESUNUSU9OQVJZLCAiQUxURVIgVEVYVCBT RUFSQ0ggRElDVElPTkFSWSIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhD TURUQUdfQUxURVJfVEVYVF9TRUFSQ0hfUEFSU0VSLCAiQUxURVIgVEVYVCBTRUFSQ0ggUEFSU0VS IiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19BTFRFUl9URVhU X1NFQVJDSF9URU1QTEFURSwgIkFMVEVSIFRFWFQgU0VBUkNIIFRFTVBMQVRFIiwgdHJ1ZSwgZmFs c2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19BTFRFUl9UUkFOU0ZPUk0sICJBTFRF UiBUUkFOU0ZPUk0iLCB0cnVlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRB R19BTFRFUl9UUklHR0VSLCAiQUxURVIgVFJJR0dFUiIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1 ZSkKK1BHX0NNRFRBRyhDTURUQUdfQUxURVJfVFlQRSwgIkFMVEVSIFRZUEUiLCB0cnVlLCB0cnVl LCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQUxURVJfVVNFUl9NQVBQSU5HLCAiQUxU RVIgVVNFUiBNQVBQSU5HIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENN RFRBR19BTFRFUl9WSUVXLCAiQUxURVIgVklFVyIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkK K1BHX0NNRFRBRyhDTURUQUdfQU5BTFlaRSwgIkFOQUxZWkUiLCBmYWxzZSwgZmFsc2UsIGZhbHNl LCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfQkVHSU4sICJCRUdJTiIsIGZhbHNlLCBmYWxzZSwg ZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19DQUxMLCAiQ0FMTCIsIGZhbHNlLCBmYWxz ZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19DSEVDS1BPSU5ULCAiQ0hFQ0tQT0lO VCIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19DTE9TRSwg IkNMT1NFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0NM T1NFX0NVUlNPUiwgIkNMT1NFIENVUlNPUiIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQor UEdfQ01EVEFHKENNRFRBR19DTE9TRV9DVVJTT1JfQUxMLCAiQ0xPU0UgQ1VSU09SIEFMTCIsIGZh bHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19DTFVTVEVSLCAiQ0xV U1RFUiIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19DT01N RU5ULCAiQ09NTUVOVCIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURU QUdfQ09NTUlULCAiQ09NTUlUIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURU QUcoQ01EVEFHX0NPTU1JVF9QUkVQQVJFRCwgIkNPTU1JVCBQUkVQQVJFRCIsIGZhbHNlLCBmYWxz ZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19DT1BZLCAiQ09QWSIsIGZhbHNlLCBm YWxzZSwgdHJ1ZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0NPUFlfRlJPTSwgIkNPUFkgRlJP TSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19DUkVBVEVf QUNDRVNTX01FVEhPRCwgIkNSRUFURSBBQ0NFU1MgTUVUSE9EIiwgdHJ1ZSwgZmFsc2UsIGZhbHNl LCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfQUdHUkVHQVRFLCAiQ1JFQVRFIEFHR1JF R0FURSIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQ1JFQVRF X0NBU1QsICJDUkVBVEUgQ0FTVCIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRB RyhDTURUQUdfQ1JFQVRFX0NPTExBVElPTiwgIkNSRUFURSBDT0xMQVRJT04iLCB0cnVlLCBmYWxz ZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0NSRUFURV9DT05TVFJBSU5ULCAiQ1JF QVRFIENPTlNUUkFJTlQiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENN RFRBR19DUkVBVEVfQ09OVkVSU0lPTiwgIkNSRUFURSBDT05WRVJTSU9OIiwgdHJ1ZSwgZmFsc2Us IGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfREFUQUJBU0UsICJDUkVBVEUg REFUQUJBU0UiLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdf Q1JFQVRFX0RPTUFJTiwgIkNSRUFURSBET01BSU4iLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUp CitQR19DTURUQUcoQ01EVEFHX0NSRUFURV9FVkVOVF9UUklHR0VSLCAiQ1JFQVRFIEVWRU5UIFRS SUdHRVIiLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfQ1JF QVRFX0VYVEVOU0lPTiwgIkNSRUFURSBFWFRFTlNJT04iLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRy dWUpCitQR19DTURUQUcoQ01EVEFHX0NSRUFURV9GT1JFSUdOX0RBVEFfV1JBUFBFUiwgIkNSRUFU RSBGT1JFSUdOIERBVEEgV1JBUFBFUiIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NN RFRBRyhDTURUQUdfQ1JFQVRFX0ZPUkVJR05fVEFCTEUsICJDUkVBVEUgRk9SRUlHTiBUQUJMRSIs IHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX0ZVTkNU SU9OLCAiQ1JFQVRFIEZVTkNUSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01E VEFHKENNRFRBR19DUkVBVEVfSU5ERVgsICJDUkVBVEUgSU5ERVgiLCB0cnVlLCBmYWxzZSwgZmFs c2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0NSRUFURV9MQU5HVUFHRSwgIkNSRUFURSBMQU5H VUFHRSIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQ1JFQVRF X01BVEVSSUFMSVpFRF9WSUVXLCAiQ1JFQVRFIE1BVEVSSUFMSVpFRCBWSUVXIiwgdHJ1ZSwgZmFs c2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfT1BFUkFUT1IsICJDUkVB VEUgT1BFUkFUT1IiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFH X0NSRUFURV9PUEVSQVRPUl9DTEFTUywgIkNSRUFURSBPUEVSQVRPUiBDTEFTUyIsIHRydWUsIGZh bHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX09QRVJBVE9SX0ZBTUlM WSwgIkNSRUFURSBPUEVSQVRPUiBGQU1JTFkiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQ R19DTURUQUcoQ01EVEFHX0NSRUFURV9QT0xJQ1ksICJDUkVBVEUgUE9MSUNZIiwgdHJ1ZSwgZmFs c2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfUFJPQ0VEVVJFLCAiQ1JF QVRFIFBST0NFRFVSRSIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURU QUdfQ1JFQVRFX1BVQkxJQ0FUSU9OLCAiQ1JFQVRFIFBVQkxJQ0FUSU9OIiwgdHJ1ZSwgZmFsc2Us IGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfUk9MRSwgIkNSRUFURSBST0xF IiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0NSRUFURV9S T1VUSU5FLCAiQ1JFQVRFIFJPVVRJTkUiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdf Q01EVEFHKENNRFRBR19DUkVBVEVfUlVMRSwgIkNSRUFURSBSVUxFIiwgdHJ1ZSwgZmFsc2UsIGZh bHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfU0NIRU1BLCAiQ1JFQVRFIFNDSEVN QSIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1NF UVVFTkNFLCAiQ1JFQVRFIFNFUVVFTkNFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdf Q01EVEFHKENNRFRBR19DUkVBVEVfU0VSVkVSLCAiQ1JFQVRFIFNFUlZFUiIsIHRydWUsIGZhbHNl LCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1NUQVRJU1RJQ1MsICJDUkVB VEUgU1RBVElTVElDUyIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURU QUdfQ1JFQVRFX1NVQlNDUklQVElPTiwgIkNSRUFURSBTVUJTQ1JJUFRJT04iLCB0cnVlLCBmYWxz ZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfVEFCTEUsICJDUkVBVEUg VEFCTEUiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0NSRUFU RV9UQUJMRV9BUywgIkNSRUFURSBUQUJMRSBBUyIsIHRydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2Up CitQR19DTURUQUcoQ01EVEFHX0NSRUFURV9UQUJMRVNQQUNFLCAiQ1JFQVRFIFRBQkxFU1BBQ0Ui LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1RF WFRfU0VBUkNIX0NPTkZJR1VSQVRJT04sICJDUkVBVEUgVEVYVCBTRUFSQ0ggQ09ORklHVVJBVElP TiIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1RF WFRfU0VBUkNIX0RJQ1RJT05BUlksICJDUkVBVEUgVEVYVCBTRUFSQ0ggRElDVElPTkFSWSIsIHRy dWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1RFWFRfU0VB UkNIX1BBUlNFUiwgIkNSRUFURSBURVhUIFNFQVJDSCBQQVJTRVIiLCB0cnVlLCBmYWxzZSwgZmFs c2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0NSRUFURV9URVhUX1NFQVJDSF9URU1QTEFURSwg IkNSRUFURSBURVhUIFNFQVJDSCBURU1QTEFURSIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkK K1BHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1RSQU5TRk9STSwgIkNSRUFURSBUUkFOU0ZPUk0iLCB0 cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0NSRUFURV9UUklHR0VS LCAiQ1JFQVRFIFRSSUdHRVIiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUco Q01EVEFHX0NSRUFURV9UWVBFLCAiQ1JFQVRFIFRZUEUiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRy dWUpCitQR19DTURUQUcoQ01EVEFHX0NSRUFURV9VU0VSX01BUFBJTkcsICJDUkVBVEUgVVNFUiBN QVBQSU5HIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19DUkVB VEVfVklFVywgIkNSRUFURSBWSUVXIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01E VEFHKENNRFRBR19ERUFMTE9DQVRFLCAiREVBTExPQ0FURSIsIGZhbHNlLCBmYWxzZSwgZmFsc2Us IGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19ERUFMTE9DQVRFX0FMTCwgIkRFQUxMT0NBVEUgQUxM IiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0RFQ0xBUkVf Q1VSU09SLCAiREVDTEFSRSBDVVJTT1IiLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BH X0NNRFRBRyhDTURUQUdfREVMRVRFLCAiREVMRVRFIiwgZmFsc2UsIGZhbHNlLCB0cnVlLCBmYWxz ZSkKK1BHX0NNRFRBRyhDTURUQUdfRElTQ0FSRCwgIkRJU0NBUkQiLCBmYWxzZSwgZmFsc2UsIGZh bHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfRElTQ0FSRF9BTEwsICJESVNDQVJEIEFMTCIs IGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19ESVNDQVJEX1BM QU5TLCAiRElTQ0FSRCBQTEFOUyIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01E VEFHKENNRFRBR19ESVNDQVJEX1NFUVVFTkNFUywgIkRJU0NBUkQgU0VRVUVOQ0VTIiwgZmFsc2Us IGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0RJU0NBUkRfVEVNUCwgIkRJ U0NBUkQgVEVNUCIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRB R19ETywgIkRPIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFH X0RST1BfQUNDRVNTX01FVEhPRCwgIkRST1AgQUNDRVNTIE1FVEhPRCIsIHRydWUsIGZhbHNlLCBm YWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfRFJPUF9BR0dSRUdBVEUsICJEUk9QIEFHR1JF R0FURSIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfRFJPUF9D QVNULCAiRFJPUCBDQVNUIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENN RFRBR19EUk9QX0NPTExBVElPTiwgIkRST1AgQ09MTEFUSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNl LCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19EUk9QX0NPTlNUUkFJTlQsICJEUk9QIENPTlNUUkFJ TlQiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19EUk9QX0NP TlZFUlNJT04sICJEUk9QIENPTlZFUlNJT04iLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQ R19DTURUQUcoQ01EVEFHX0RST1BfREFUQUJBU0UsICJEUk9QIERBVEFCQVNFIiwgZmFsc2UsIGZh bHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0RST1BfRE9NQUlOLCAiRFJPUCBE T01BSU4iLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0RST1Bf RVZFTlRfVFJJR0dFUiwgIkRST1AgRVZFTlQgVFJJR0dFUiIsIGZhbHNlLCBmYWxzZSwgZmFsc2Us IGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19EUk9QX0VYVEVOU0lPTiwgIkRST1AgRVhURU5TSU9O IiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19EUk9QX0ZPUkVJ R05fREFUQV9XUkFQUEVSLCAiRFJPUCBGT1JFSUdOIERBVEEgV1JBUFBFUiIsIHRydWUsIGZhbHNl LCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfRFJPUF9GT1JFSUdOX1RBQkxFLCAiRFJP UCBGT1JFSUdOIFRBQkxFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENN RFRBR19EUk9QX0ZVTkNUSU9OLCAiRFJPUCBGVU5DVElPTiIsIHRydWUsIGZhbHNlLCBmYWxzZSwg dHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfRFJPUF9JTkRFWCwgIkRST1AgSU5ERVgiLCB0cnVlLCBm YWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0RST1BfTEFOR1VBR0UsICJEUk9Q IExBTkdVQUdFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19E Uk9QX01BVEVSSUFMSVpFRF9WSUVXLCAiRFJPUCBNQVRFUklBTElaRUQgVklFVyIsIHRydWUsIGZh bHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfRFJPUF9PUEVSQVRPUiwgIkRST1Ag T1BFUkFUT1IiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0RS T1BfT1BFUkFUT1JfQ0xBU1MsICJEUk9QIE9QRVJBVE9SIENMQVNTIiwgdHJ1ZSwgZmFsc2UsIGZh bHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19EUk9QX09QRVJBVE9SX0ZBTUlMWSwgIkRST1Ag T1BFUkFUT1IgRkFNSUxZIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENN RFRBR19EUk9QX09XTkVELCAiRFJPUCBPV05FRCIsIHRydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2Up CitQR19DTURUQUcoQ01EVEFHX0RST1BfUE9MSUNZLCAiRFJPUCBQT0xJQ1kiLCB0cnVlLCBmYWxz ZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0RST1BfUFJPQ0VEVVJFLCAiRFJPUCBQ Uk9DRURVUkUiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0RS T1BfUFVCTElDQVRJT04sICJEUk9QIFBVQkxJQ0FUSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0 cnVlKQorUEdfQ01EVEFHKENNRFRBR19EUk9QX1JPTEUsICJEUk9QIFJPTEUiLCBmYWxzZSwgZmFs c2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfRFJPUF9ST1VUSU5FLCAiRFJPUCBS T1VUSU5FIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19EUk9Q X1JVTEUsICJEUk9QIFJVTEUiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUco Q01EVEFHX0RST1BfU0NIRU1BLCAiRFJPUCBTQ0hFTUEiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRy dWUpCitQR19DTURUQUcoQ01EVEFHX0RST1BfU0VRVUVOQ0UsICJEUk9QIFNFUVVFTkNFIiwgdHJ1 ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19EUk9QX1NFUlZFUiwgIkRS T1AgU0VSVkVSIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19E Uk9QX1NUQVRJU1RJQ1MsICJEUk9QIFNUQVRJU1RJQ1MiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRy dWUpCitQR19DTURUQUcoQ01EVEFHX0RST1BfU1VCU0NSSVBUSU9OLCAiRFJPUCBTVUJTQ1JJUFRJ T04iLCB0cnVlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19EUk9QX1RB QkxFLCAiRFJPUCBUQUJMRSIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhD TURUQUdfRFJPUF9UQUJMRVNQQUNFLCAiRFJPUCBUQUJMRVNQQUNFIiwgZmFsc2UsIGZhbHNlLCBm YWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0RST1BfVEVYVF9TRUFSQ0hfQ09ORklHVVJB VElPTiwgIkRST1AgVEVYVCBTRUFSQ0ggQ09ORklHVVJBVElPTiIsIHRydWUsIGZhbHNlLCBmYWxz ZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfRFJPUF9URVhUX1NFQVJDSF9ESUNUSU9OQVJZLCAi RFJPUCBURVhUIFNFQVJDSCBESUNUSU9OQVJZIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQor UEdfQ01EVEFHKENNRFRBR19EUk9QX1RFWFRfU0VBUkNIX1BBUlNFUiwgIkRST1AgVEVYVCBTRUFS Q0ggUEFSU0VSIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19E Uk9QX1RFWFRfU0VBUkNIX1RFTVBMQVRFLCAiRFJPUCBURVhUIFNFQVJDSCBURU1QTEFURSIsIHRy dWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfRFJPUF9UUkFOU0ZPUk0s ICJEUk9QIFRSQU5TRk9STSIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhD TURUQUdfRFJPUF9UUklHR0VSLCAiRFJPUCBUUklHR0VSIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0 cnVlKQorUEdfQ01EVEFHKENNRFRBR19EUk9QX1RZUEUsICJEUk9QIFRZUEUiLCB0cnVlLCBmYWxz ZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0RST1BfVVNFUl9NQVBQSU5HLCAiRFJP UCBVU0VSIE1BUFBJTkciLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01E VEFHX0RST1BfVklFVywgIkRST1AgVklFVyIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BH X0NNRFRBRyhDTURUQUdfRVhFQ1VURSwgIkVYRUNVVEUiLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBm YWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfRVhQTEFJTiwgIkVYUExBSU4iLCBmYWxzZSwgZmFsc2Us IGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfRkVUQ0gsICJGRVRDSCIsIGZhbHNlLCBm YWxzZSwgdHJ1ZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0dSQU5ULCAiR1JBTlQiLCB0cnVl LCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0dSQU5UX1JPTEUsICJHUkFO VCBST0xFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0lN UE9SVF9GT1JFSUdOX1NDSEVNQSwgIklNUE9SVCBGT1JFSUdOIFNDSEVNQSIsIHRydWUsIGZhbHNl LCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfSU5TRVJULCAiSU5TRVJUIiwgZmFsc2Us IGZhbHNlLCB0cnVlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfTElTVEVOLCAiTElTVEVOIiwg ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0xPQUQsICJMT0FE IiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0xPQ0tfVEFC TEUsICJMT0NLIFRBQkxFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUco Q01EVEFHX01FUkdFLCAiTUVSR0UiLCBmYWxzZSwgZmFsc2UsIHRydWUsIGZhbHNlKQorUEdfQ01E VEFHKENNRFRBR19NT1ZFLCAiTU9WRSIsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UpCitQR19D TURUQUcoQ01EVEFHX05PVElGWSwgIk5PVElGWSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl KQorUEdfQ01EVEFHKENNRFRBR19QUkVQQVJFLCAiUFJFUEFSRSIsIGZhbHNlLCBmYWxzZSwgZmFs c2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19QUkVQQVJFX1RSQU5TQUNUSU9OLCAiUFJFUEFS RSBUUkFOU0FDVElPTiIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENN RFRBR19SRUFTU0lHTl9PV05FRCwgIlJFQVNTSUdOIE9XTkVEIiwgZmFsc2UsIGZhbHNlLCBmYWxz ZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX1JFRlJFU0hfTUFURVJJQUxJWkVEX1ZJRVcsICJS RUZSRVNIIE1BVEVSSUFMSVpFRCBWSUVXIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdf Q01EVEFHKENNRFRBR19SRUlOREVYLCAiUkVJTkRFWCIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZh bHNlKQorUEdfQ01EVEFHKENNRFRBR19SRUxFQVNFLCAiUkVMRUFTRSIsIGZhbHNlLCBmYWxzZSwg ZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19SRVNFVCwgIlJFU0VUIiwgZmFsc2UsIGZh bHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX1JFVk9LRSwgIlJFVk9LRSIsIHRy dWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfUkVWT0tFX1JPTEUsICJS RVZPS0UgUk9MRSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRB R19ST0xMQkFDSywgIlJPTExCQUNLIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19D TURUQUcoQ01EVEFHX1JPTExCQUNLX1BSRVBBUkVELCAiUk9MTEJBQ0sgUFJFUEFSRUQiLCBmYWxz ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfU0FWRVBPSU5ULCAiU0FW RVBPSU5UIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX1NF Q1VSSVRZX0xBQkVMLCAiU0VDVVJJVFkgTEFCRUwiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUp CitQR19DTURUQUcoQ01EVEFHX1NFTEVDVCwgIlNFTEVDVCIsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwg ZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX1NFTEVDVF9GT1JfS0VZX1NIQVJFLCAiU0VMRUNUIEZP UiBLRVkgU0hBUkUiLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURU QUdfU0VMRUNUX0ZPUl9OT19LRVlfVVBEQVRFLCAiU0VMRUNUIEZPUiBOTyBLRVkgVVBEQVRFIiwg ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX1NFTEVDVF9GT1Jf U0hBUkUsICJTRUxFQ1QgRk9SIFNIQVJFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQ R19DTURUQUcoQ01EVEFHX1NFTEVDVF9GT1JfVVBEQVRFLCAiU0VMRUNUIEZPUiBVUERBVEUiLCBm YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfU0VMRUNUX0lOVE8s ICJTRUxFQ1QgSU5UTyIsIHRydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01E VEFHX1NFVCwgIlNFVCIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENN RFRBR19TRVRfQ09OU1RSQUlOVFMsICJTRVQgQ09OU1RSQUlOVFMiLCBmYWxzZSwgZmFsc2UsIGZh bHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfU0hPVywgIlNIT1ciLCBmYWxzZSwgZmFsc2Us IGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfU1RBUlRfVFJBTlNBQ1RJT04sICJTVEFS VCBUUkFOU0FDVElPTiIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENN RFRBR19UUlVOQ0FURV9UQUJMRSwgIlRSVU5DQVRFIFRBQkxFIiwgZmFsc2UsIGZhbHNlLCBmYWxz ZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX1VOTElTVEVOLCAiVU5MSVNURU4iLCBmYWxzZSwg ZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfVVBEQVRFLCAiVVBEQVRFIiwg ZmFsc2UsIGZhbHNlLCB0cnVlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfVkFDVVVNLCAiVkFD VVVNIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS90Y29wL2RkbGRlcGFyc2UuaCBiL3NyYy9pbmNsdWRlL3Rjb3AvZGRsZGVwYXJzZS5oCmluZGV4 IDBjY2I0ZDFlZGUuLjdmZGZmZjQ5NDYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Rjb3AvZGRs ZGVwYXJzZS5oCisrKyBiL3NyYy9pbmNsdWRlL3Rjb3AvZGRsZGVwYXJzZS5oCkBAIC0yLDggKzIs NyBAQAogICoKICAqIGRkbGRlcGFyc2UuaAogICoKLSAqIFBvcnRpb25zIENvcHlyaWdodCAoYykg MTk5Ni0yMDIzLCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAotICogUG9ydGlv bnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlm b3JuaWEKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAyMywgUG9zdGdyZVNRTCBHbG9iYWwg RGV2ZWxvcG1lbnQgR3JvdXAKICAqCiAgKiBzcmMvaW5jbHVkZS90Y29wL2RkbGRlcGFyc2UuaAog ICoKQEAgLTE0LDcgKzEzLDE1IEBACiAKICNpbmNsdWRlICJ0Y29wL2RlcGFyc2VfdXRpbGl0eS5o IgogCi1leHRlcm4gY2hhciAqZGVwYXJzZV91dGlsaXR5X2NvbW1hbmQoQ29sbGVjdGVkQ29tbWFu ZCAqY21kKTsKKy8qIENvbnRleHQgaW5mbyBuZWVkZWQgZm9yIGRlcGFyc2luZyBkZGwgY29tbWFu ZCAqLwordHlwZWRlZiBzdHJ1Y3QKK3sKKwkvKiBUaGUgbWF4aW11bSB2b2xhdGlsaXR5IG9mIGZ1 bmN0aW9ucyBpbiBleHByZXNzaW9ucyBvZiBhIERETCBjb21tYW5kLiAqLworCWNoYXIJCW1heF92 b2xhdGlsaXR5OworfQkJCWRkbF9kZXBhcnNlX2NvbnRleHQ7CisKK2V4dGVybiBjaGFyICpkZXBh cnNlX3V0aWxpdHlfY29tbWFuZChDb2xsZWN0ZWRDb21tYW5kICpjbWQsCisJCQkJCQkJCQkgZGRs X2RlcGFyc2VfY29udGV4dCAqIGNvbnRleHQpOwogZXh0ZXJuIGNoYXIgKmRlcGFyc2VfZGRsX2pz b25fdG9fc3RyaW5nKGNoYXIgKmpzb25iKTsKIGV4dGVybiBjaGFyICpkZXBhcnNlX2Ryb3BfdGFi bGUoY29uc3QgY2hhciAqb2JqaWRlbnRpdHksIE5vZGUgKnBhcnNldHJlZSk7CiAKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgKaW5k ZXggMTQyNmEzNTNjZC4uYTY1NmY1YmQ3YyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMv cmVsLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgKQEAgLTE3LDEwICsxNywxMiBAQAog I2luY2x1ZGUgImFjY2Vzcy90dXBkZXNjLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2cuaCIKICNp bmNsdWRlICJjYXRhbG9nL2NhdGFsb2cuaCIKKyNpbmNsdWRlICJjYXRhbG9nL29iamVjdGFkZHJl c3MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2NsYXNzLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9w Z19pbmRleC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcHVibGljYXRpb24uaCIKICNpbmNsdWRl ICJub2Rlcy9iaXRtYXBzZXQuaCIKKyNpbmNsdWRlICJub2Rlcy9sb2Nrb3B0aW9ucy5oIgogI2lu Y2x1ZGUgInBhcnRpdGlvbmluZy9wYXJ0ZGVmcy5oIgogI2luY2x1ZGUgInJld3JpdGUvcHJzMmxv Y2suaCIKICNpbmNsdWRlICJzdG9yYWdlL2Jsb2NrLmgiCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS91dGlscy9ydWxldXRpbHMuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3J1bGV1dGlscy5oCmluZGV4 IDUwYThhMTRkMTEuLjZiZGRmMDlkYTcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3J1 bGV1dGlscy5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3J1bGV1dGlscy5oCkBAIC02MCw2ICs2 MCw2IEBAIGV4dGVybiBjaGFyICpmbGF0dGVuX3JlbG9wdGlvbnMoT2lkIHJlbGlkKTsKIGV4dGVy biBjaGFyICpwZ19nZXRfc3RhdGlzdGljc29iamRlZl9zdHJpbmcoT2lkIHN0YXRleHRpZCk7CiAK IGV4dGVybiBjaGFyICpyZWxhdGlvbl9nZXRfY29sdW1uX2RlZmF1bHQoUmVsYXRpb24gcmVsLCBB dHRyTnVtYmVyIGF0dG5vLAotCQkJCQkJCQkJCSBMaXN0ICpkcGNvbnRleHQpOworCQkJCQkJCQkJ CSBMaXN0ICpkcGNvbnRleHQsIE5vZGUgKipleHByKTsKIAogI2VuZGlmCQkJCQkJCS8qIFJVTEVV VElMU19IICovCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwub3V0 IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wc3FsLm91dAppbmRleCBjMDYyYzNkYzdiLi4y ZTRlZjAzZmVmIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwub3V0 CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHNxbC5vdXQKQEAgLTYyMzQsOSArNjIz NCw5IEBAIExpc3Qgb2Ygc2NoZW1hcwogKDAgcm93cykKIAogXGRScCAibm8uc3VjaC5wdWJsaWNh dGlvbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgcHVibGljYXRpb25z Ci0gTmFtZSB8IE93bmVyIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRl cyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgcHVibGljYXRpb25zCisgTmFt ZSB8IE93bmVyIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRh YmxlIERETHMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLSstLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLQogKDAgcm93cykKIAogXGRScyAibm8uc3VjaC5zdWJzY3JpcHRpb24iCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dCBiL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0CmluZGV4IDY5ZGM2Y2ZkODUu LjZhNWFmMmZkM2YgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGlj YXRpb24ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0 CkBAIC0zMCwyMCArMzAsMjAgQEAgRVJST1I6ICBjb25mbGljdGluZyBvciByZWR1bmRhbnQgb3B0 aW9ucwogTElORSAxOiAuLi51Yl94eHggV0lUSCAocHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3Qg PSAndHJ1ZScsIHB1Ymxpc2hfdmkuLi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCiBcZFJwCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBwdWJsaWNhdGlvbnMKLSAgICAgICAg TmFtZSAgICAgICAgfCAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5z ZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHRlc3Rw aWJfaW5zX3RydW5jdCB8IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0 ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBmCi0gdGVzdHB1Yl9kZWZh dWx0ICAgIHwgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAg fCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBwdWJsaWNhdGlvbnMKKyAg ICAgICAgTmFtZSAgICAgICAgfCAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVz IHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVGFibGUgRERMcyB8IFRydW5jYXRlcyB8 IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgdGVzdHBpYl9pbnNfdHJ1bmN0IHwgcmVncmVzc19w dWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAg ICB8IGYgICAgICAgICAgfCBmICAgICAgICAgfCBmCisgdGVzdHB1Yl9kZWZhdWx0ICAgIHwgcmVn cmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgfCB0ICAgICAgIHwg ZiAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICAgfCBmCiAoMiByb3dzKQogCiBBTFRFUiBQ VUJMSUNBVElPTiB0ZXN0cHViX2RlZmF1bHQgU0VUIChwdWJsaXNoID0gJ2luc2VydCwgdXBkYXRl LCBkZWxldGUnKTsKIFxkUnAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBMaXN0IG9mIHB1YmxpY2F0aW9ucwotICAgICAgICBOYW1lICAgICAgICB8ICAgICAg ICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERl bGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gdGVzdHBpYl9pbnNfdHJ1bmN0IHwgcmVn cmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwg ZiAgICAgICB8IGYgICAgICAgICB8IGYKLSB0ZXN0cHViX2RlZmF1bHQgICAgfCByZWdyZXNzX3B1 YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgZiAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBMaXN0IG9mIHB1YmxpY2F0aW9ucworICAgICAgICBOYW1lICAgICAgICB8 ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRl cyB8IERlbGV0ZXMgfCBUYWJsZSBERExzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0KKyB0ZXN0cGliX2luc190cnVuY3QgfCByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBm ICAgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgICB8IGYg ICAgICAgICB8IGYKKyB0ZXN0cHViX2RlZmF1bHQgICAgfCByZWdyZXNzX3B1YmxpY2F0aW9uX3Vz ZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICAg ICB8IGYgICAgICAgICB8IGYKICgyIHJvd3MpCiAKIC0tLSBhZGRpbmcgdGFibGVzCkBAIC04Nywx MCArODcsMTAgQEAgUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKIC0tIHNob3VsZCBiZSBhYmxl IHRvIGFkZCBzY2hlbWEgdG8gJ0ZPUiBUQUJMRScgcHVibGljYXRpb24KIEFMVEVSIFBVQkxJQ0FU SU9OIHRlc3RwdWJfZm9ydGFibGUgQUREIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CiBcZFJw KyB0ZXN0cHViX2ZvcnRhYmxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1Ymxp Y2F0aW9uIHRlc3RwdWJfZm9ydGFibGUKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwg dGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJv b3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGlj YXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1Ymxp Y2F0aW9uIHRlc3RwdWJfZm9ydGFibGUKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwg dGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVGFibGUgRERMcyB8IFRydW5j YXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJs ZXM6CiAgICAgInB1YmxpYy50ZXN0cHViX3RibDEiCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgpAQCAt OTksMjAgKzk5LDIwIEBAIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAtLSBzaG91bGQgYmUgYWJsZSB0 byBkcm9wIHNjaGVtYSBmcm9tICdGT1IgVEFCTEUnIHB1YmxpY2F0aW9uCiBBTFRFUiBQVUJMSUNB VElPTiB0ZXN0cHViX2ZvcnRhYmxlIERST1AgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDsKIFxk UnArIHRlc3RwdWJfZm9ydGFibGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVi bGljYXRpb24gdGVzdHB1Yl9mb3J0YWJsZQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFs bCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEg cm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJs aWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVi bGljYXRpb24gdGVzdHB1Yl9mb3J0YWJsZQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFs bCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUYWJsZSBERExzIHwgVHJ1 bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgICB8IGYKIFRh YmxlczoKICAgICAicHVibGljLnRlc3RwdWJfdGJsMSIKIAogLS0gc2hvdWxkIGJlIGFibGUgdG8g c2V0IHNjaGVtYSB0byAnRk9SIFRBQkxFJyBwdWJsaWNhdGlvbgogQUxURVIgUFVCTElDQVRJT04g dGVzdHB1Yl9mb3J0YWJsZSBTRVQgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDsKIFxkUnArIHRl c3RwdWJfZm9ydGFibGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRp b24gdGVzdHB1Yl9mb3J0YWJsZQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJs ZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAK LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlv bl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRp b24gdGVzdHB1Yl9mb3J0YWJsZQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJs ZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUYWJsZSBERExzIHwgVHJ1bmNhdGVz IHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBm cm9tIHNjaGVtYXM6CiAgICAgInB1Yl90ZXN0IgogCkBAIC0xMjMsMTAgKzEyMywxMCBAQCBDUkVB VEUgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JzY2hlbWEgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgcHVi X3Rlc3Q7CiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JfdGJsX3NjaGVtYSBGT1IgVEFC TEVTIElOIFNDSEVNQSBwdWJfdGVzdCwgVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl9ub3BrOwogUkVT RVQgY2xpZW50X21pbl9tZXNzYWdlczsKIFxkUnArIHRlc3RwdWJfZm9yX3RibF9zY2hlbWEKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JfdGJsX3Nj aGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwg VXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JfdGJs X3NjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRz IHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUYWJsZSBERExzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3Qg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdy ZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHViX3Rl c3QudGVzdHB1Yl9ub3BrIgogVGFibGVzIGZyb20gc2NoZW1hczoKQEAgLTE0NCwxMCArMTQ0LDEw IEBAIExJTkUgMTogLi4uQ0FUSU9OIHRlc3RwdWJfcGFyc2VydHN0IEZPUiBUQUJMRVMgSU4gU0NI RU1BIGZvbywgdGVzdC5mb287CiAtLSBzaG91bGQgYmUgYWJsZSB0byBhZGQgYSB0YWJsZSBvZiB0 aGUgc2FtZSBzY2hlbWEgdG8gdGhlIHNjaGVtYSBwdWJsaWNhdGlvbgogQUxURVIgUFVCTElDQVRJ T04gdGVzdHB1Yl9mb3JzY2hlbWEgQUREIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfbm9wazsKIFxk UnArIHRlc3RwdWJfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVi bGljYXRpb24gdGVzdHB1Yl9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBB bGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlh IHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVi bGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1 YmxpY2F0aW9uIHRlc3RwdWJfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwg QWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRhYmxlIERETHMgfCBU cnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICAgIHwgZgog VGFibGVzOgogICAgICJwdWJfdGVzdC50ZXN0cHViX25vcGsiCiBUYWJsZXMgZnJvbSBzY2hlbWFz OgpAQCAtMTU2LDEwICsxNTYsMTAgQEAgVGFibGVzIGZyb20gc2NoZW1hczoKIC0tIHNob3VsZCBi ZSBhYmxlIHRvIGRyb3AgdGhlIHRhYmxlCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnNj aGVtYSBEUk9QIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfbm9wazsKIFxkUnArIHRlc3RwdWJfZm9y c2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1 Yl9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5z ZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8 IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBm CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3Rw dWJfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IElu c2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRhYmxlIERETHMgfCBUcnVuY2F0ZXMgfCBWaWEg cm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQor IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzIGZyb20gc2No ZW1hczoKICAgICAicHViX3Rlc3QiCiAKQEAgLTE3MCwxMCArMTcwLDEwIEBAIEVSUk9SOiAgcmVs YXRpb24gInRlc3RwdWJfbm9wayIgaXMgbm90IHBhcnQgb2YgdGhlIHB1YmxpY2F0aW9uCiAtLSBz aG91bGQgYmUgYWJsZSB0byBzZXQgdGFibGUgdG8gc2NoZW1hIHB1YmxpY2F0aW9uCiBBTFRFUiBQ VUJMSUNBVElPTiB0ZXN0cHViX2ZvcnNjaGVtYSBTRVQgVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl9u b3BrOwogXGRScCsgdGVzdHB1Yl9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAg ICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0 ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVn cmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAg ICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVGFibGUg RERMcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAg ICAgfCBmCiBUYWJsZXM6CiAgICAgInB1Yl90ZXN0LnRlc3RwdWJfbm9wayIKIApAQCAtMTk1LDEw ICsxOTUsMTAgQEAgUHVibGljYXRpb25zOgogICAgICJ0ZXN0cHViX2ZvcmFsbHRhYmxlcyIKIAog XGRScCsgdGVzdHB1Yl9mb3JhbGx0YWJsZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9yYWxsdGFibGVzCi0gICAgICAgICAgT3duZXIgICAgICAg ICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRl cyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdy ZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCB0ICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBm ICAgICAgIHwgZiAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JhbGx0YWJsZXMKKyAgICAgICAgICBPd25lciAgICAg ICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVGFibGUg RERMcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgdCAgICAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAg ICAgfCBmCiAoMSByb3cpCiAKIERST1AgVEFCTEUgdGVzdHB1Yl90YmwyOwpAQCAtMjEwLDE5ICsy MTAsMTkgQEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWIzIEZPUiBUQUJMRSB0ZXN0cHViX3Ri bDM7CiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjQgRk9SIFRBQkxFIE9OTFkgdGVzdHB1Yl90 YmwzOwogUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKIFxkUnArIHRlc3RwdWIzCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMwotICAgICAg ICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERl bGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIzCisgICAgICAgICAg T3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRl cyB8IFRhYmxlIERETHMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNl ciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAg IHwgdCAgICAgICAgIHwgZgogVGFibGVzOgogICAgICJwdWJsaWMudGVzdHB1Yl90YmwzIgogICAg ICJwdWJsaWMudGVzdHB1Yl90YmwzYSIKIAogXGRScCsgdGVzdHB1YjQKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI0Ci0gICAgICAgICAgT3du ZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8 IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjQKKyAgICAgICAgICBPd25lciAg ICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVGFi bGUgRERMcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAg ICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICAgfCB0ICAg ICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInB1YmxpYy50ZXN0cHViX3RibDMiCiAKQEAgLTI0Mywx MCArMjQzLDEwIEBAIFVQREFURSB0ZXN0cHViX3BhcnRlZDEgU0VUIGEgPSAxOwogLS0gb25seSBw YXJlbnQgaXMgbGlzdGVkIGFzIGJlaW5nIGluIHB1YmxpY2F0aW9uLCBub3QgdGhlIHBhcnRpdGlv bgogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JwYXJ0ZWQgQUREIFRBQkxFIHRlc3RwdWJf cGFydGVkOwogXGRScCsgdGVzdHB1Yl9mb3JwYXJ0ZWQKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnBhcnRlZAotICAgICAgICAgIE93bmVyICAg ICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVu Y2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0g cmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JwYXJ0ZWQKKyAgICAgICAgICBPd25lciAg ICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVGFi bGUgRERMcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAg ICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICAgfCB0ICAg ICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInB1YmxpYy50ZXN0cHViX3BhcnRlZCIKIApAQCAtMjYx LDEwICsyNjEsMTAgQEAgQUxURVIgVEFCTEUgdGVzdHB1Yl9wYXJ0ZWQgREVUQUNIIFBBUlRJVElP TiB0ZXN0cHViX3BhcnRlZDE7CiBVUERBVEUgdGVzdHB1Yl9wYXJ0ZWQxIFNFVCBhID0gMTsKIEFM VEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9ycGFydGVkIFNFVCAocHVibGlzaF92aWFfcGFydGl0 aW9uX3Jvb3QgPSB0cnVlKTsKIFxkUnArIHRlc3RwdWJfZm9ycGFydGVkCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JwYXJ0ZWQKLSAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxl dGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9ycGFydGVkCisgICAgICAg ICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVs ZXRlcyB8IFRhYmxlIERETHMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25f dXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAg ICAgIHwgdCAgICAgICAgIHwgdAogVGFibGVzOgogICAgICJwdWJsaWMudGVzdHB1Yl9wYXJ0ZWQi CiAKQEAgLTI5MywxMCArMjkzLDEwIEBAIFNFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9S JzsKIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViNSBGT1IgVEFCTEUgdGVzdHB1Yl9yZl90Ymwx LCB0ZXN0cHViX3JmX3RibDIgV0hFUkUgKGMgPD4gJ3Rlc3QnIEFORCBkIDwgNSkgV0lUSCAocHVi bGlzaCA9ICdpbnNlcnQnKTsKIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiBcZFJwKyB0ZXN0 cHViNQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVz dHB1YjUKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8 IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAg ICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBmCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHVi NQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBk YXRlcyB8IERlbGV0ZXMgfCBUYWJsZSBERExzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1 YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAg IHwgZiAgICAgICAgICB8IGYgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHVibGljLnRlc3Rw dWJfcmZfdGJsMSIKICAgICAicHVibGljLnRlc3RwdWJfcmZfdGJsMiIgV0hFUkUgKChjIDw+ICd0 ZXN0Jzo6dGV4dCkgQU5EIChkIDwgNSkpCkBAIC0zMDksMTAgKzMwOSwxMCBAQCBUYWJsZXM6CiAK IEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI1IEFERCBUQUJMRSB0ZXN0cHViX3JmX3RibDMgV0hF UkUgKGUgPiAxMDAwIEFORCBlIDwgMjAwMCk7CiBcZFJwKyB0ZXN0cHViNQotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjUKLSAgICAgICAgICBP d25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVz IHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwg ZiAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNQorICAgICAgICAgIE93bmVy ICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBU YWJsZSBERExzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBm ICAgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgICB8IGYg ICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHVibGljLnRlc3RwdWJfcmZfdGJsMSIKICAgICAi cHVibGljLnRlc3RwdWJfcmZfdGJsMiIgV0hFUkUgKChjIDw+ICd0ZXN0Jzo6dGV4dCkgQU5EIChk IDwgNSkpCkBAIC0zMjgsMTAgKzMyOCwxMCBAQCBQdWJsaWNhdGlvbnM6CiAKIEFMVEVSIFBVQkxJ Q0FUSU9OIHRlc3RwdWI1IERST1AgVEFCTEUgdGVzdHB1Yl9yZl90YmwyOwogXGRScCsgdGVzdHB1 YjUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3Rw dWI1Ci0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBV cGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAg ICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjUK KyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0 ZXMgfCBEZWxldGVzIHwgVGFibGUgRERMcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJs aWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICB8 IGYgICAgICAgICAgfCBmICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInB1YmxpYy50ZXN0cHVi X3JmX3RibDEiCiAgICAgInB1YmxpYy50ZXN0cHViX3JmX3RibDMiIFdIRVJFICgoZSA+IDEwMDAp IEFORCAoZSA8IDIwMDApKQpAQCAtMzM5LDEwICszMzksMTAgQEAgVGFibGVzOgogLS0gcmVtb3Zl IHRlc3RwdWJfcmZfdGJsMSBhbmQgYWRkIHRlc3RwdWJfcmZfdGJsMyBhZ2FpbiAoYW5vdGhlciBX SEVSRSBleHByZXNzaW9uKQogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjUgU0VUIFRBQkxFIHRl c3RwdWJfcmZfdGJsMyBXSEVSRSAoZSA+IDMwMCBBTkQgZSA8IDUwMCk7CiBcZFJwKyB0ZXN0cHVi NQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1 YjUKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVw ZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAg ICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBmCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNQor ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRl cyB8IERlbGV0ZXMgfCBUYWJsZSBERExzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1Ymxp Y2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAgIHwg ZiAgICAgICAgICB8IGYgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHVibGljLnRlc3RwdWJf cmZfdGJsMyIgV0hFUkUgKChlID4gMzAwKSBBTkQgKGUgPCA1MDApKQogCkBAIC0zNzUsMTAgKzM3 NSwxMCBAQCBTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CiBDUkVBVEUgUFVCTElD QVRJT04gdGVzdHB1Yl9zeW50YXgxIEZPUiBUQUJMRSB0ZXN0cHViX3JmX3RibDEsIE9OTFkgdGVz dHB1Yl9yZl90YmwzIFdIRVJFIChlIDwgOTk5KSBXSVRIIChwdWJsaXNoID0gJ2luc2VydCcpOwog UkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKIFxkUnArIHRlc3RwdWJfc3ludGF4MQotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX3N5bnRheDEKLSAg ICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMg fCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0 ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBmCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX3N5bnRheDEKKyAg ICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMg fCBEZWxldGVzIHwgVGFibGUgRERMcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNh dGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICB8IGYg ICAgICAgICAgfCBmICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInB1YmxpYy50ZXN0cHViX3Jm X3RibDEiCiAgICAgInB1YmxpYy50ZXN0cHViX3JmX3RibDMiIFdIRVJFIChlIDwgOTk5KQpAQCAt Mzg4LDEwICszODgsMTAgQEAgU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOwogQ1JF QVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfc3ludGF4MiBGT1IgVEFCTEUgdGVzdHB1Yl9yZl90Ymwx LCB0ZXN0cHViX3JmX3NjaGVtYTEudGVzdHB1Yl9yZl90Ymw1IFdIRVJFIChoIDwgOTk5KSBXSVRI IChwdWJsaXNoID0gJ2luc2VydCcpOwogUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKIFxkUnAr IHRlc3RwdWJfc3ludGF4MgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNh dGlvbiB0ZXN0cHViX3N5bnRheDIKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFi bGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3Qg Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRp b25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBmICAg ICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNh dGlvbiB0ZXN0cHViX3N5bnRheDIKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFi bGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVGFibGUgRERMcyB8IFRydW5jYXRl cyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAg fCBmICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICAgfCBmCiBUYWJsZXM6 CiAgICAgInB1YmxpYy50ZXN0cHViX3JmX3RibDEiCiAgICAgInRlc3RwdWJfcmZfc2NoZW1hMS50 ZXN0cHViX3JmX3RibDUiIFdIRVJFIChoIDwgOTk5KQpAQCAtNTA2LDEwICs1MDYsMTAgQEAgQ1JF QVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI2IEZPUiBUQUJMRVMgSU4gU0NIRU1BIHRlc3RwdWJfcmZf c2NoZW1hMjsKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI2IFNFVCBUQUJMRVMgSU4gU0NIRU1B IHRlc3RwdWJfcmZfc2NoZW1hMiwgVEFCTEUgdGVzdHB1Yl9yZl9zY2hlbWEyLnRlc3RwdWJfcmZf dGJsNiBXSEVSRSAoaSA8IDk5KTsKIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiBcZFJwKyB0 ZXN0cHViNgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24g dGVzdHB1YjYKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0 cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYg ICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0 cHViNgorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwg VXBkYXRlcyB8IERlbGV0ZXMgfCBUYWJsZSBERExzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNz X3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAidGVzdHB1Yl9y Zl9zY2hlbWEyLnRlc3RwdWJfcmZfdGJsNiIgV0hFUkUgKGkgPCA5OSkKIFRhYmxlcyBmcm9tIHNj aGVtYXM6CkBAIC03MjMsMTAgKzcyMywxMCBAQCBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl90 YWJsZV9pbnMgV0lUSCAocHVibGlzaCA9ICdpbnNlcnQsIHRydW5jYXRlJyk7CiBSRVNFVCBjbGll bnRfbWluX21lc3NhZ2VzOwogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl90YWJsZV9pbnMgQURE IFRBQkxFIHRlc3RwdWJfdGJsNSAoYSk7CQktLSBvawogXGRScCsgdGVzdHB1Yl90YWJsZV9pbnMK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX3RhYmxl X2lucwotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwg VXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAg ICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl90YWJs ZV9pbnMKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8 IFVwZGF0ZXMgfCBEZWxldGVzIHwgVGFibGUgRERMcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVz c19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAg ICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInB1YmxpYy50 ZXN0cHViX3RibDUiIChhKQogCkBAIC05MDAsMTAgKzkwMCwxMCBAQCBDUkVBVEUgVEFCTEUgdGVz dHB1Yl90YmxfYm90aF9maWx0ZXJzIChhIGludCwgYiBpbnQsIGMgaW50LCBQUklNQVJZIEtFWSAo YSxjKSk7CiBBTFRFUiBUQUJMRSB0ZXN0cHViX3RibF9ib3RoX2ZpbHRlcnMgUkVQTElDQSBJREVO VElUWSBVU0lORyBJTkRFWCB0ZXN0cHViX3RibF9ib3RoX2ZpbHRlcnNfcGtleTsKIEFMVEVSIFBV QkxJQ0FUSU9OIHRlc3RwdWJfYm90aF9maWx0ZXJzIEFERCBUQUJMRSB0ZXN0cHViX3RibF9ib3Ro X2ZpbHRlcnMgKGEsYykgV0hFUkUgKGMgIT0gMSk7CiBcZFJwKyB0ZXN0cHViX2JvdGhfZmlsdGVy cwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9ib3Ro X2ZpbHRlcnMKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0 cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYg ICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2Jv dGhfZmlsdGVycworICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNl cnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUYWJsZSBERExzIHwgVHJ1bmNhdGVzIHwgVmlhIHJv b3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyBy ZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHVi bGljLnRlc3RwdWJfdGJsX2JvdGhfZmlsdGVycyIgKGEsIGMpIFdIRVJFIChjIDw+IDEpCiAKQEAg LTExMDgsMTAgKzExMDgsMTAgQEAgRVJST1I6ICByZWxhdGlvbiAidGVzdHB1Yl90YmwxIiBpcyBh bHJlYWR5IG1lbWJlciBvZiBwdWJsaWNhdGlvbiAidGVzdHB1Yl9mb3J0YmwKIENSRUFURSBQVUJM SUNBVElPTiB0ZXN0cHViX2ZvcnRibCBGT1IgVEFCTEUgdGVzdHB1Yl90YmwxOwogRVJST1I6ICBw dWJsaWNhdGlvbiAidGVzdHB1Yl9mb3J0YmwiIGFscmVhZHkgZXhpc3RzCiBcZFJwKyB0ZXN0cHVi X2ZvcnRibAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVz dHB1Yl9mb3J0YmwKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5z ZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8 IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBm CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0 cHViX2ZvcnRibAorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNl cnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUYWJsZSBERExzIHwgVHJ1bmNhdGVzIHwgVmlhIHJv b3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyBy ZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHVi X3Rlc3QudGVzdHB1Yl9ub3BrIgogICAgICJwdWJsaWMudGVzdHB1Yl90YmwxIgpAQCAtMTE0OSwx MCArMTE0OSwxMCBAQCBQdWJsaWNhdGlvbnM6CiAgICAgInRlc3RwdWJfZm9ydGJsIgogCiBcZFJw KyB0ZXN0cHViX2RlZmF1bHQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGlj YXRpb24gdGVzdHB1Yl9kZWZhdWx0Ci0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRh YmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290 IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0 aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgZiAg ICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGlj YXRpb24gdGVzdHB1Yl9kZWZhdWx0CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRh YmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRhYmxlIERETHMgfCBUcnVuY2F0 ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgIHwgZgogVGFibGVz OgogICAgICJwdWJfdGVzdC50ZXN0cHViX25vcGsiCiAgICAgInB1YmxpYy50ZXN0cHViX3RibDEi CkBAIC0xMjMwLDEwICsxMjMwLDEwIEBAIFJFVk9LRSBDUkVBVEUgT04gREFUQUJBU0UgcmVncmVz c2lvbiBGUk9NIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlcjI7CiBEUk9QIFRBQkxFIHRlc3RwdWJf cGFydGVkOwogRFJPUCBUQUJMRSB0ZXN0cHViX3RibDE7CiBcZFJwKyB0ZXN0cHViX2RlZmF1bHQK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9kZWZh dWx0Ci0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBV cGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICAgIHwgZgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9kZWZh dWx0CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBV cGRhdGVzIHwgRGVsZXRlcyB8IFRhYmxlIERETHMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3Nf cHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgIHwgZgogKDEgcm93KQogCiAtLSBmYWlsIC0gbXVz dCBiZSBvd25lciBvZiBwdWJsaWNhdGlvbgpAQCAtMTI0MywyMCArMTI0MywyMCBAQCBFUlJPUjog IG11c3QgYmUgb3duZXIgb2YgcHVibGljYXRpb24gdGVzdHB1Yl9kZWZhdWx0CiBSRVNFVCBST0xF OwogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9kZWZhdWx0IFJFTkFNRSBUTyB0ZXN0cHViX2Zv bzsKIFxkUnAgdGVzdHB1Yl9mb28KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBMaXN0IG9mIHB1YmxpY2F0aW9ucwotICAgIE5hbWUgICAgIHwgICAgICAgICAgT3du ZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8 IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLQotIHRlc3RwdWJfZm9vIHwgcmVncmVzc19wdWJsaWNhdGlvbl91c2Vy IHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICB8 IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0 IG9mIHB1YmxpY2F0aW9ucworICAgIE5hbWUgICAgIHwgICAgICAgICAgT3duZXIgICAgICAgICAg IHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRhYmxlIERETHMg fCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgdGVzdHB1Yl9mb28gfCByZWdyZXNzX3B1 YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgZiAgICAgICAgICB8IGYgICAgICAgICB8IGYKICgxIHJvdykKIAogLS0gcmVuYW1lIGJhY2sg dG8ga2VlcCB0aGUgcmVzdCBzaW1wbGUKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9vIFJF TkFNRSBUTyB0ZXN0cHViX2RlZmF1bHQ7CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2RlZmF1 bHQgT1dORVIgVE8gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyMjsKIFxkUnAgdGVzdHB1Yl9kZWZh dWx0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9m IHB1YmxpY2F0aW9ucwotICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVz IHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0KLSB0ZXN0cHViX2RlZmF1bHQgfCByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIy IHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICB8 IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBM aXN0IG9mIHB1YmxpY2F0aW9ucworICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAg ICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVGFi bGUgRERMcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHRlc3RwdWJfZGVm YXVsdCB8IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlcjIgfCBmICAgICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgICB8IGYKICgxIHJvdykK IAogLS0gYWRkaW5nIHNjaGVtYXMgYW5kIHRhYmxlcwpAQCAtMTI3MiwxOSArMTI3MiwxOSBAQCBD UkVBVEUgVEFCTEUgIkNVUlJFTlRfU0NIRU1BIi4iQ1VSUkVOVF9TQ0hFTUEiKGlkIGludCk7CiBT RVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CiBDUkVBVEUgUFVCTElDQVRJT04gdGVz dHB1YjFfZm9yc2NoZW1hIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0MTsKIFxkUnArIHRl c3RwdWIxX2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0 aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0 YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9v dCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNh dGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNh dGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwg dGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVGFibGUgRERMcyB8IFRydW5j YXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJs ZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVzdDEiCiAKIENSRUFURSBQVUJMSUNBVElPTiB0 ZXN0cHViMl9mb3JzY2hlbWEgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QxLCBwdWJfdGVz dDIsIHB1Yl90ZXN0MzsKIFxkUnArIHRlc3RwdWIyX2ZvcnNjaGVtYQotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIyX2ZvcnNjaGVtYQotICAgICAgICAg IE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0 ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMl9mb3JzY2hlbWEKKyAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxl dGVzIHwgVGFibGUgRERMcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91 c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAg ICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVzdDEi CiAgICAgInB1Yl90ZXN0MiIKQEAgLTEyOTgsNDQgKzEyOTgsNDQgQEAgQ1JFQVRFIFBVQkxJQ0FU SU9OIHRlc3RwdWI2X2ZvcnNjaGVtYSBGT1IgVEFCTEVTIElOIFNDSEVNQSAiQ1VSUkVOVF9TQ0hF TUEiLCBDVVIKIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnRhYmxlIEZPUiBUQUJMRSAi Q1VSUkVOVF9TQ0hFTUEiLiJDVVJSRU5UX1NDSEVNQSI7CiBSRVNFVCBjbGllbnRfbWluX21lc3Nh Z2VzOwogXGRScCsgdGVzdHB1YjNfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUHVibGljYXRpb24gdGVzdHB1YjNfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAg ICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5j YXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSBy ZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIzX2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAg ICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUYWJs ZSBERExzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAg ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICAgICB8IHQgICAg ICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgInB1YmxpYyIKIAogXGRScCsgdGVz dHB1YjRfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRp b24gdGVzdHB1YjRfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRh YmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290 IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0 aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0 aW9uIHRlc3RwdWI0X2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0 YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUYWJsZSBERExzIHwgVHJ1bmNh dGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxl cyBmcm9tIHNjaGVtYXM6CiAgICAgIkNVUlJFTlRfU0NIRU1BIgogCiBcZFJwKyB0ZXN0cHViNV9m b3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0 cHViNV9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwg SW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNl ciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAg fCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVz dHB1YjVfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8 IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRhYmxlIERETHMgfCBUcnVuY2F0ZXMgfCBW aWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzIGZyb20g c2NoZW1hczoKICAgICAiQ1VSUkVOVF9TQ0hFTUEiCiAgICAgInB1YmxpYyIKIAogXGRScCsgdGVz dHB1YjZfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRp b24gdGVzdHB1YjZfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRh YmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290 IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0 aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0 aW9uIHRlc3RwdWI2X2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0 YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUYWJsZSBERExzIHwgVHJ1bmNh dGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxl cyBmcm9tIHNjaGVtYXM6CiAgICAgIkNVUlJFTlRfU0NIRU1BIgogICAgICJwdWJsaWMiCiAKIFxk UnArIHRlc3RwdWJfZm9ydGFibGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVi bGljYXRpb24gdGVzdHB1Yl9mb3J0YWJsZQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFs bCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEg cm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJs aWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVi bGljYXRpb24gdGVzdHB1Yl9mb3J0YWJsZQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFs bCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUYWJsZSBERExzIHwgVHJ1 bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgICB8IGYKIFRh YmxlczoKICAgICAiQ1VSUkVOVF9TQ0hFTUEuQ1VSUkVOVF9TQ0hFTUEiCiAKQEAgLTEzNjksMTAg KzEzNjksMTAgQEAgRVJST1I6ICBzY2hlbWEgInRlc3RwdWJfdmlldyIgZG9lcyBub3QgZXhpc3QK IC0tIGRyb3BwaW5nIHRoZSBzY2hlbWEgc2hvdWxkIHJlZmxlY3QgdGhlIGNoYW5nZSBpbiBwdWJs aWNhdGlvbgogRFJPUCBTQ0hFTUEgcHViX3Rlc3QzOwogXGRScCsgdGVzdHB1YjJfZm9yc2NoZW1h Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjJfZm9y c2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMg fCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAg ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIyX2Zv cnNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRz IHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUYWJsZSBERExzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3Qg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdy ZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6 CiAgICAgInB1Yl90ZXN0MSIKICAgICAicHViX3Rlc3QyIgpAQCAtMTM4MCwyMCArMTM4MCwyMCBA QCBUYWJsZXMgZnJvbSBzY2hlbWFzOgogLS0gcmVuYW1pbmcgdGhlIHNjaGVtYSBzaG91bGQgcmVm bGVjdCB0aGUgY2hhbmdlIGluIHB1YmxpY2F0aW9uCiBBTFRFUiBTQ0hFTUEgcHViX3Rlc3QxIFJF TkFNRSB0byBwdWJfdGVzdDFfcmVuYW1lZDsKIFxkUnArIHRlc3RwdWIyX2ZvcnNjaGVtYQotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIyX2ZvcnNjaGVt YQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBk YXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMl9mb3JzY2hl bWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVw ZGF0ZXMgfCBEZWxldGVzIHwgVGFibGUgRERMcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19w dWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IGYgICAgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAg ICJwdWJfdGVzdDFfcmVuYW1lZCIKICAgICAicHViX3Rlc3QyIgogCiBBTFRFUiBTQ0hFTUEgcHVi X3Rlc3QxX3JlbmFtZWQgUkVOQU1FIHRvIHB1Yl90ZXN0MTsKIFxkUnArIHRlc3RwdWIyX2ZvcnNj aGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIy X2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNl cnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwg ZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHVi Ml9mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5z ZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVGFibGUgRERMcyB8IFRydW5jYXRlcyB8IFZpYSBy b290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisg cmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hl bWFzOgogICAgICJwdWJfdGVzdDEiCiAgICAgInB1Yl90ZXN0MiIKQEAgLTE0MDEsMTAgKzE0MDEs MTAgQEAgVGFibGVzIGZyb20gc2NoZW1hczoKIC0tIGFsdGVyIHB1YmxpY2F0aW9uIGFkZCBzY2hl bWEKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWIxX2ZvcnNjaGVtYSBBREQgVEFCTEVTIElOIFND SEVNQSBwdWJfdGVzdDI7CiBcZFJwKyB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxl dGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCisgICAgICAg ICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVs ZXRlcyB8IFRhYmxlIERETHMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25f dXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAg ICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAicHViX3Rlc3Qx IgogICAgICJwdWJfdGVzdDIiCkBAIC0xNDEzLDEwICsxNDEzLDEwIEBAIFRhYmxlcyBmcm9tIHNj aGVtYXM6CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViMV9mb3JzY2hlbWEgQUREIFRBQkxFUyBJ TiBTQ0hFTUEgbm9uX2V4aXN0ZW50X3NjaGVtYTsKIEVSUk9SOiAgc2NoZW1hICJub25fZXhpc3Rl bnRfc2NoZW1hIiBkb2VzIG5vdCBleGlzdAogXGRScCsgdGVzdHB1YjFfZm9yc2NoZW1hCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1h Ci0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRh dGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVt YQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBk YXRlcyB8IERlbGV0ZXMgfCBUYWJsZSBERExzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1 YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgZiAgICAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAg InB1Yl90ZXN0MSIKICAgICAicHViX3Rlc3QyIgpAQCAtMTQyNSwxMCArMTQyNSwxMCBAQCBUYWJs ZXMgZnJvbSBzY2hlbWFzOgogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjFfZm9yc2NoZW1hIEFE RCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0MTsKIEVSUk9SOiAgc2NoZW1hICJwdWJfdGVzdDEi IGlzIGFscmVhZHkgbWVtYmVyIG9mIHB1YmxpY2F0aW9uICJ0ZXN0cHViMV9mb3JzY2hlbWEiCiBc ZFJwKyB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ dWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAg fCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwg VmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3Nf cHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAg IHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRhYmxlIERETHMg fCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICAgIHwg ZgogVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAicHViX3Rlc3QxIgogICAgICJwdWJfdGVzdDIi CkBAIC0xNDM2LDEwICsxNDM2LDEwIEBAIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAtLSBhbHRlciBw dWJsaWNhdGlvbiBkcm9wIHNjaGVtYQogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjFfZm9yc2No ZW1hIERST1AgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDI7CiBcZFJwKyB0ZXN0cHViMV9mb3Jz Y2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHVi MV9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5z ZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8 IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBm CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1 YjFfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IElu c2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRhYmxlIERETHMgfCBUcnVuY2F0ZXMgfCBWaWEg cm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQor IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzIGZyb20gc2No ZW1hczoKICAgICAicHViX3Rlc3QxIgogCkBAIC0xNDQ3LDEwICsxNDQ3LDEwIEBAIFRhYmxlcyBm cm9tIHNjaGVtYXM6CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViMV9mb3JzY2hlbWEgRFJPUCBU QUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0MjsKIEVSUk9SOiAgdGFibGVzIGZyb20gc2NoZW1hICJw dWJfdGVzdDIiIGFyZSBub3QgcGFydCBvZiB0aGUgcHVibGljYXRpb24KIFxkUnArIHRlc3RwdWIx X2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRl c3RwdWIxX2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMg fCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91 c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg ICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0 ZXN0cHViMV9mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVz IHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVGFibGUgRERMcyB8IFRydW5jYXRlcyB8 IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXMgZnJv bSBzY2hlbWFzOgogICAgICJwdWJfdGVzdDEiCiAKQEAgLTE0NTgsMjkgKzE0NTgsMjkgQEAgVGFi bGVzIGZyb20gc2NoZW1hczoKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWIxX2ZvcnNjaGVtYSBE Uk9QIFRBQkxFUyBJTiBTQ0hFTUEgbm9uX2V4aXN0ZW50X3NjaGVtYTsKIEVSUk9SOiAgc2NoZW1h ICJub25fZXhpc3RlbnRfc2NoZW1hIiBkb2VzIG5vdCBleGlzdAogXGRScCsgdGVzdHB1YjFfZm9y c2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1 YjFfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IElu c2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIg fCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwg ZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3Rw dWIxX2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJ bnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUYWJsZSBERExzIHwgVHJ1bmNhdGVzIHwgVmlh IHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0K KyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNj aGVtYXM6CiAgICAgInB1Yl90ZXN0MSIKIAogLS0gZHJvcCBhbGwgc2NoZW1hcwogQUxURVIgUFVC TElDQVRJT04gdGVzdHB1YjFfZm9yc2NoZW1hIERST1AgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVz dDE7CiBcZFJwKyB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAg ICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNh dGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJl Z3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAg ICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRhYmxl IERETHMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAg ICAgIHwgZgogKDEgcm93KQogCiAtLSBhbHRlciBwdWJsaWNhdGlvbiBzZXQgbXVsdGlwbGUgc2No ZW1hCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViMV9mb3JzY2hlbWEgU0VUIFRBQkxFUyBJTiBT Q0hFTUEgcHViX3Rlc3QxLCBwdWJfdGVzdDI7CiBcZFJwKyB0ZXN0cHViMV9mb3JzY2hlbWEKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hl bWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVw ZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2No ZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBV cGRhdGVzIHwgRGVsZXRlcyB8IFRhYmxlIERETHMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3Nf cHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCBmICAgICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzIGZyb20gc2NoZW1hczoKICAg ICAicHViX3Rlc3QxIgogICAgICJwdWJfdGVzdDIiCkBAIC0xNDg5LDEwICsxNDg5LDEwIEBAIFRh YmxlcyBmcm9tIHNjaGVtYXM6CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViMV9mb3JzY2hlbWEg U0VUIFRBQkxFUyBJTiBTQ0hFTUEgbm9uX2V4aXN0ZW50X3NjaGVtYTsKIEVSUk9SOiAgc2NoZW1h ICJub25fZXhpc3RlbnRfc2NoZW1hIiBkb2VzIG5vdCBleGlzdAogXGRScCsgdGVzdHB1YjFfZm9y c2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1 YjFfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IElu c2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIg fCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwg ZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3Rw dWIxX2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJ bnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUYWJsZSBERExzIHwgVHJ1bmNhdGVzIHwgVmlh IHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0K KyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNj aGVtYXM6CiAgICAgInB1Yl90ZXN0MSIKICAgICAicHViX3Rlc3QyIgpAQCAtMTUwMSwxMCArMTUw MSwxMCBAQCBUYWJsZXMgZnJvbSBzY2hlbWFzOgogLS0gcmVtb3ZpbmcgdGhlIGR1cGxpY2F0ZSBz Y2hlbWFzCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViMV9mb3JzY2hlbWEgU0VUIFRBQkxFUyBJ TiBTQ0hFTUEgcHViX3Rlc3QxLCBwdWJfdGVzdDE7CiBcZFJwKyB0ZXN0cHViMV9mb3JzY2hlbWEK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3Jz Y2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8 IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9y c2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMg fCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRhYmxlIERETHMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jl c3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzIGZyb20gc2NoZW1hczoK ICAgICAicHViX3Rlc3QxIgogCkBAIC0xNTgzLDE4ICsxNTgzLDE4IEBAIFNFVCBjbGllbnRfbWlu X21lc3NhZ2VzID0gJ0VSUk9SJzsKIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViM19mb3JzY2hl bWE7CiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogXGRScCsgdGVzdHB1YjNfZm9yc2NoZW1h Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjNfZm9y c2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMg fCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAg ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIzX2Zv cnNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRz IHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUYWJsZSBERExzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3Qg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdy ZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgICB8IGYKICgxIHJvdykKIAogQUxURVIgUFVC TElDQVRJT04gdGVzdHB1YjNfZm9yc2NoZW1hIFNFVCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0 MTsKIFxkUnArIHRlc3RwdWIzX2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIzX2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAg ICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0 ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVn cmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViM19mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAg ICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVGFibGUg RERMcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAg ICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVzdDEiCiAKQEAgLTE2MDQs MjAgKzE2MDQsMjAgQEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yc2NoZW1hX2ZvcnRh YmxlIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0MSwgVEEKIENSRUFURSBQVUJMSUNBVElP TiB0ZXN0cHViX2ZvcnRhYmxlX2ZvcnNjaGVtYSBGT1IgVEFCTEUgcHViX3Rlc3QyLnRibDEsIFRB QkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QxOwogUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKIFxk UnArIHRlc3RwdWJfZm9yc2NoZW1hX2ZvcnRhYmxlCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnNjaGVtYV9mb3J0YWJsZQotICAgICAgICAgIE93bmVy ICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBU cnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t Ci0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9yc2NoZW1hX2ZvcnRhYmxlCisgICAgICAgICAg T3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRl cyB8IFRhYmxlIERETHMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNl ciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAg IHwgdCAgICAgICAgIHwgZgogVGFibGVzOgogICAgICJwdWJfdGVzdDIudGJsMSIKIFRhYmxlcyBm cm9tIHNjaGVtYXM6CiAgICAgInB1Yl90ZXN0MSIKIAogXGRScCsgdGVzdHB1Yl9mb3J0YWJsZV9m b3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJf Zm9ydGFibGVfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxl cyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9u X3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVz dHB1Yl9mb3J0YWJsZV9mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwg dGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVGFibGUgRERMcyB8IFRydW5j YXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJs ZXM6CiAgICAgInB1Yl90ZXN0Mi50YmwxIgogVGFibGVzIGZyb20gc2NoZW1hczoKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L3N1YnNjcmlw dGlvbi9tZXNvbi5idWlsZAppbmRleCBiZDY3M2E5ZDY4Li43ZGZjYzEzODk5IDEwMDY0NAotLS0g YS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vbWVzb24uYnVpbGQKKysrIGIvc3JjL3Rlc3Qvc3Vic2Ny aXB0aW9uL21lc29uLmJ1aWxkCkBAIC00MCw2ICs0MCw3IEBAIHRlc3RzICs9IHsKICAgICAgICd0 LzAzMV9jb2x1bW5fbGlzdC5wbCcsCiAgICAgICAndC8wMzJfc3Vic2NyaWJlX3VzZV9pbmRleC5w bCcsCiAgICAgICAndC8wMzNfcnVuX2FzX3RhYmxlX293bmVyLnBsJywKKyAgICAgICd0LzAzNF9k ZGxfcmVwbGljYXRpb24ucGwnLAogICAgICAgJ3QvMTAwX2J1Z3MucGwnLAogICAgIF0sCiAgIH0s CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzRfZGRsX3JlcGxpY2F0aW9u LnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM0X2RkbF9yZXBsaWNhdGlvbi5wbApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5lMWJkMGE5MTA4Ci0tLSAvZGV2L251 bGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM0X2RkbF9yZXBsaWNhdGlvbi5wbApA QCAtMCwwICsxLDM4MyBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjIsIFBvc3RncmVTUUwgR2xvYmFs IERldmVsb3BtZW50IEdyb3VwCisjIFJlZ3Jlc3Npb24gdGVzdHMgZm9yIGxvZ2ljYWwgcmVwbGlj YXRpb24gb2YgRERMcworIwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKK3VzZSBQb3N0Z3Jl U1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFRl c3Q6Ok1vcmU7CisKK215ICRub2RlX3B1Ymxpc2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0 ZXItPm5ldygncHVibGlzaGVyJyk7Ciskbm9kZV9wdWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVh bWluZyA9PiAnbG9naWNhbCcpOworJG5vZGVfcHVibGlzaGVyLT5zdGFydDsKKworbXkgJG5vZGVf c3Vic2NyaWJlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3Vic2NyaWJlcicp OworJG5vZGVfc3Vic2NyaWJlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7 Ciskbm9kZV9zdWJzY3JpYmVyLT5zdGFydDsKKworbXkgJGRkbCA9ICJDUkVBVEUgVEFCTEUgdGVz dF9yZXAoaWQgaW50IHByaW1hcnkga2V5LCBuYW1lIHZhcmNoYXIsIHZhbHVlIGludGVnZXIpOyI7 Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAkZGRsKTsKKyRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0ZXN0X3JlcCBWQUxV RVMgKDEsICdkYXRhMScsIDEpOyIpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICRkZGwpOworCitteSAkcHVibGlzaGVyX2Nvbm5zdHIgPSAkbm9kZV9wdWJsaXNoZXIt PmNvbm5zdHIgLiAnIGRibmFtZT1wb3N0Z3Jlcyc7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCSJDUkVBVEUgUFVCTElDQVRJT04gbXlwdWIgRk9SIEFMTCBUQUJMRVMg d2l0aCAocHVibGlzaCA9ICdpbnNlcnQsIHVwZGF0ZSwgZGVsZXRlJywgZGRsID0gJ3RhYmxlJyk7 Iik7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFNV QlNDUklQVElPTiBteXN1YiBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHInIFBVQkxJQ0FU SU9OIG15cHViOyIpOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdteXN1Yicp OworCisjIE1ha2Ugc3VyZSB3ZSBoYXZlIGZ1bGx5IHN5bmNocm9uaXplZCB0aGUgdGFibGUuCisj IFRoaXMgcHJldmVudHMgQUxURVIgVEFCTEUgY29tbWFuZCBiZWxvdyBmcm9tIGJlaW5nIGV4ZWN1 dGVkIGR1cmluZyB0YWJsZSBzeW5jaHJvbml6YXRpb24uCiskbm9kZV9zdWJzY3JpYmVyLT5wb2xs X3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisgICAiU0VMRUNUIENPVU5UKDEpID0gMCBGUk9NIHBn X3N1YnNjcmlwdGlvbl9yZWwgc3IgV0hFUkUgc3Iuc3JzdWJzdGF0ZSBOT1QgSU4gKCdzJywgJ3In KSBBTkQgc3Iuc3JyZWxpZCA9ICd0ZXN0X3JlcCc6OnJlZ2NsYXNzIgorKTsKKworIyBUZXN0IEFM VEVSIFRBQkxFIEFERAorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkFM VEVSIFRBQkxFIHRlc3RfcmVwIEFERCBjNCBpbnQ7Iik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdGVzdF9yZXAgVkFMVUVTICgyLCAnZGF0YTIn LCAyLCAyKTsiKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgnbXlzdWInKTsK K215ICRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNF TEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfcmVwIFdIRVJFIGM0ID0gMjsiKTsKK2lzKCRyZXN1bHQs IHFxKDEpLCAnQUxURVIgdGVzdF9yZXAgQUREIHJlcGxpY2F0ZWQnKTsKKworIyBUZXN0IEFMVEVS IFRBQkxFIERST1AKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJBTFRF UiBUQUJMRSB0ZXN0X3JlcCBEUk9QIGM0OyIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgIkRFTEVURSBGUk9NIHRlc3RfcmVwIHdoZXJlIGlkID0gMjsiKTsKKyRub2Rl X3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgnbXlzdWInKTsKKyRyZXN1bHQgPSAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBmcm9tIHRl c3RfcmVwOyIpOworaXMoJHJlc3VsdCwgcXEoMSksICdBTFRFUiB0ZXN0X3JlcCBEUk9QIHJlcGxp Y2F0ZWQnKTsKKworIyBUZXN0IEFMVEVSIFRBQkxFIEFMVEVSIFRZUEUKKyRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJBTFRFUiBUQUJMRSB0ZXN0X3JlcCBBTFRFUiB2YWx1 ZSBUWVBFIHZhcmNoYXIiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJJTlNFUlQgSU5UTyB0ZXN0X3JlcCBWQUxVRVMgKDMsICdkYXRhMycsICczJyk7Iik7Ciskbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ215c3ViJyk7CiskcmVzdWx0ID0gJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0 ZXN0X3JlcCBXSEVSRSB2YWx1ZSA9ICczJzsiKTsKK2lzKCRyZXN1bHQsIHFxKDEpLCAnQUxURVIg dGVzdF9yZXAgQUxURVIgQ09MVU1OIFRZUEUgcmVwbGljYXRlZCcpOworCisjIFRlc3QgQUxURVIg VEFCTEUgQUxURVIgU0VUIERFRkFVTFQKKyMgQ2hlY2sgaWYgd2UgaGF2ZSB0aGUgZGVmYXVsdCB2 YWx1ZSBhZnRlciB0aGUgZGlyZWN0IGluc2VydCB0byBzdWJzY3JpYmVyIG5vZGUuCiskbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQUxURVIgVEFCTEUgdGVzdF9yZXAgQUxU RVIgQ09MVU1OIHZhbHVlIFNFVCBERUZBVUxUICdmb28nIik7Ciskbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJ215c3ViJyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgIklOU0VSVCBJTlRPIHRlc3RfcmVwIFZBTFVFUyAoNCwgJ2RhdGE0Jyk7Iik7Cisk cmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1Qg dmFsdWUgRlJPTSB0ZXN0X3JlcCBXSEVSRSBpZCA9IDQ7Iik7CitpcygkcmVzdWx0LCAnZm9vJywg J0FMVEVSIHRlc3RfcmVwIEFMVEVSIFNFVCBERUZBVUxUIHJlcGxpY2F0ZWQnKTsKKworIyBUZXN0 IEFMVEVSIFRBQkxFIEFMVEVSIERST1AgREVGQVVMVAorIyBDaGVjayBpZiB3ZSBkb24ndCBoYXZl IHRoZSBkZWZhdWx0IHZhbHVlIHByZXZpb3VzbHkgZGVmaW5lZC4KKyRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJBTFRFUiBUQUJMRSB0ZXN0X3JlcCBBTFRFUiBDT0xVTU4g dmFsdWUgRFJPUCBERUZBVUxUOyIpOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVw KCdteXN1YicpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJJTlNF UlQgSU5UTyB0ZXN0X3JlcCBWQUxVRVMgKDUsICdkYXRhNScpOyIpOworJHJlc3VsdCA9ICRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIHZhbHVlIElTIE5VTEwg RlJPTSB0ZXN0X3JlcCBXSEVSRSBpZCA9IDU7Iik7CitpcygkcmVzdWx0LCBxKHQpLCAnQUxURVIg dGVzdF9yZXAgQUxURVIgRFJPUCBERUZBVUxUIHJlcGxpY2F0ZWQnKTsKKworIyBUZXN0IEFMVEVS IFRBQkxFIEFMVEVSIFNFVCBOT1QgTlVMTAorIyBSZW1vdmUgdGhlIGV4aXN0aW5nIHJlY29yZCB0 aGF0IGNvbnRhaW5zIG51bGwgdmFsdWUgZmlyc3QuCitteSAoJHN0ZG91dCwgJHN0ZGVycik7Cisk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRFTEVURSBGUk9NIHRlc3Rf cmVwIFdIRVJFIGlkID0gNTsiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICJBTFRFUiBUQUJMRSB0ZXN0X3JlcCBBTFRFUiB2YWx1ZSBTRVQgTk9UIE5VTEw7Iik7Cisk bm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ215c3ViJyk7Ciskbm9kZV9zdWJzY3Jp YmVyLT5wc3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0ZXN0X3JlcCBWQUxVRVMgKDYsICdk YXRhNicpOyIsCisJCQkJCSAgIG9uX2Vycm9yX3N0b3AgPT4gMCwKKwkJCQkJICAgc3RkZXJyID0+ IFwkc3RkZXJyLAorCQkJCQkgICBzdGRvdXQgPT4gXCRzdGRvdXQpOworJHN0ZGVyciA9fiAvRVJS T1I6ICBudWxsIHZhbHVlIGluIGNvbHVtbiBcInZhbHVlXCIgb2YgcmVsYXRpb24gXCJ0ZXN0X3Jl cFwiIHZpb2xhdGVzIG5vdC1udWxsIGNvbnN0cmFpbnQvCisgIG9yIGRpZSAiZmFpbGVkIHRvIHJl cGxpY2F0ZSBBTFRFUiBUQUJMRSBBTFRFUiBTRVQgTk9UIE5VTEwiOworCisjIFRlc3QgQUxURVIg VEFCTEUgQUxURVIgRFJPUCBOT1QgTlVMTAorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgIkFMVEVSIFRBQkxFIHRlc3RfcmVwIEFMVEVSIHZhbHVlIERST1AgTk9UIE5VTEw7 Iik7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ215c3ViJyk7CisjIEluc2Vy dCBzYW1lIGRhdGEgdGhhdCBoYXMgTlVMTCB2YWx1ZS4gVGhpcyBmYWlsZWQgYmVmb3JlIGJ1dCBu b3cgc2hvdWxkIHN1Y2NlZWQuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgIklOU0VSVCBJTlRPIHRlc3RfcmVwIFZBTFVFUyAoNiwgJ2RhdGE2Jyk7Iik7CiskcmVzdWx0 ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgdmFsdWUg SVMgTlVMTCBGUk9NIHRlc3RfcmVwIFdIRVJFIGlkID0gNjsiKTsKK2lzKCRyZXN1bHQsIHEodCks ICJBTFRFUiB0ZXN0X3JlcCBBTFRFUiBEUk9QIE5PVCBOVUxMIHJlcGxpY2F0ZWQiKTsKKworIyBU ZXN0IEFMVEVSIFRBQkxFIFNFVCBVTkxPR0dFRAorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgJ0FMVEVSIFRBQkxFIHRlc3RfcmVwIFNFVCBVTkxPR0dFRDsnKTsKKyRub2Rl X3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgnbXlzdWInKTsKKyRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0ZXN0X3JlcCBWQUxVRVMgKDcsICdk YXRhNycsICc3Jyk7Iik7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ215c3Vi Jyk7CiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJT RUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3JlcCBXSEVSRSBpZCA9IDc7Iik7CitpcygkcmVzdWx0 LCBxcSgwKSwgJ0FMVEVSIHRlc3RfcmVwIFNFVCBVTkxPR0dFRCByZXBsaWNhdGVkJyk7CisKKyMg VGVzdCBBTFRFUiBUQUJMRSBTRVQgTE9HR0VECiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAnQUxURVIgVEFCTEUgdGVzdF9yZXAgU0VUIExPR0dFRDsnKTsKKyRub2RlX3B1 Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgnbXlzdWInKTsKKyRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0ZXN0X3JlcCBWQUxVRVMgKDgsICdkYXRh OCcsICc4Jyk7Iik7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ215c3ViJyk7 CiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxF Q1QgY291bnQoKikgRlJPTSB0ZXN0X3JlcCBXSEVSRSBpZCA9IDg7Iik7CitpcygkcmVzdWx0LCBx cSgxKSwgJ0FMVEVSIHRlc3RfcmVwIFNFVCBMT0dHRUQgcmVwbGljYXRlZCcpOworCisjIFRlc3Qg Q1JFQVRFIFRBQkxFIGFuZCBETUwgY2hhbmdlcworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgIkNSRUFURSBUQUJMRSB0bXAgKGEgaW50LCBiIHZhcmNoYXIpOyIpOworJG5v ZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdteXN1YicpOworJHJlc3VsdCA9ICRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIGZyb20g cGdfdGFibGVzIHdoZXJlIHRhYmxlbmFtZSA9ICd0bXAnOyIpOworaXMoJHJlc3VsdCwgcXEoMSks ICdDUkVBVEUgdG1wIGlzIHJlcGxpY2F0ZWQnKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0bXAgdmFsdWVzICgxLCAnYScpIik7Ciskbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdG1wIHZhbHVlcyAo MiwgJ2InKSIpOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdteXN1YicpOwor JHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNU IGNvdW50KCopIGZyb20gdG1wOyIpOworaXMoJHJlc3VsdCwgcXEoMiksICdETUwgQ2hhbmdlcyB0 byB0bXAgYXJlIHJlcGxpY2F0ZWQnKTsKKworIyBUZXN0IENSRUFURSBUQUJMRSBJTkhFUklUUwor JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNSRUFURSBUQUJMRSB0bXAy IChjMyBpbnQpIElOSEVSSVRTICh0bXApOyIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgIklOU0VSVCBJTlRPIHRtcDIgVkFMVUVTICgxLCAnYScsIDEpOyIpOworJG5v ZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdteXN1YicpOworJHJlc3VsdCA9ICRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIGZyb20g cGdfdGFibGVzIHdoZXJlIHRhYmxlbmFtZSA9ICd0bXAyJzsiKTsKK2lzKCRyZXN1bHQsIHFxKDEp LCAnQ1JFQVRFIFRBQkxFIElOSEVSSVRTIGlzIHJlcGxpY2F0ZWQnKTsKKyRyZXN1bHQgPSAkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBmcm9t IHRtcDI7Iik7CitpcygkcmVzdWx0LCBxcSgxKSwgJ2luc2VydGluZyBzb21lIGRhdGEgdG8gaW5o ZXJpdGVkIHRhYmxlIHJlcGxpY2F0ZWQnKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsICJEUk9QIFRBQkxFIHRtcDIiKTsKKworIyBUZXN0IENSRUFURSBUQUJMRSBMSUtF Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIFRBQkxFIHRt cDMgKGMzIGludCwgTElLRSB0bXApOyIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgIklOU0VSVCBJTlRPIHRtcDMgVkFMVUVTICgxLCAxLCAnYScpOyIpOworJG5vZGVf cHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdteXN1YicpOworJHJlc3VsdCA9ICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIGZyb20gcGdf dGFibGVzIHdoZXJlIHRhYmxlbmFtZSA9ICd0bXAzJzsiKTsKK2lzKCRyZXN1bHQsIHFxKDEpLCAn Q1JFQVRFIFRBQkxFIExJS0UgcmVwbGljYXRlZCcpOworJHJlc3VsdCA9ICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIGZyb20gdG1wMzsiKTsK K2lzKCRyZXN1bHQsIHFxKDEpLCAnaW5zZXJ0IHNvbWUgZGF0YSB0byBhIHRhYmxlIGRlZmluZWQg d2l0aCBMSUtFIHJlcGxpY2F0ZWQnKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICJEUk9QIFRBQkxFIHRtcDMiKTsKKworIyBUZXN0IERST1AgVEFCTEUKKyRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIFRBQkxFIHRtcDsiKTsKKyRub2Rl X3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgnbXlzdWInKTsKKyRyZXN1bHQgPSAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBmcm9tIHBn X3RhYmxlcyB3aGVyZSB0YWJsZW5hbWUgPSAndG1wJzsiKTsKK2lzKCRyZXN1bHQsIHFxKDApLCAn VEFCTEUgdG1wIGlzIGRyb3BwZWQnKTsKKworIyBUZXN0IENSRUFURSBUQUJMRSBJRiBOT1QgRVhJ U1RTCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIFRBQkxF IElGIE5PVCBFWElTVFMgdG1wIChpZCBpbnQpOyIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJTlRPIHRtcCBWQUxVRVMgKDEpOyIpOworJG5vZGVfcHVi bGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdteXN1YicpOworJHJlc3VsdCA9ICRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIGZyb20gcGdfdGFi bGVzIHdoZXJlIHRhYmxlbmFtZSA9ICd0bXAnOyIpOworaXMoJHJlc3VsdCwgcXEoMSksICdDUkVB VEUgVEFCTEUgSUYgTk9UIEVYSVNUUyByZXBsaWNhdGVkJyk7CiskcmVzdWx0ID0gJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgZnJvbSB0bXA7 Iik7CitpcygkcmVzdWx0LCBxcSgxKSwgJ2luc2VydGluZyBkYXRhIHRvIGEgdGFibGUgcmVwbGlj YXRlZCcpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgVEFC TEUgdG1wIik7CisKKyMgVGVzdCBDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyAoY2hlY2sgaWYg d2Ugc2tpcCB0byBjcmVhdGUgYSB0YWJsZQorIyB3aGVuIHdlIGhhdmUgdGhlIHRhYmxlIG9uIHRo ZSBzdWJzY3JpYmVyIGluIGFkdmFuY2UsIGFuZCBpZiB3ZSBzdWNjZWVkCisjIGluIHJlcGxpY2F0 aW5nIGNoYW5nZXMuKQorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJD UkVBVEUgVEFCTEUgdG1wIChpZCBpbnQpOyIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgIkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIHRtcCAoaWQgaW50KTsiKTsK KyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0bXAg VkFMVUVTICgxKTsiKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgnbXlzdWIn KTsKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNF TEVDVCBjb3VudCgqKSBmcm9tIHRtcDsiKTsKK2lzKCRyZXN1bHQsIHFxKDEpLCAnQ1JFQVRFIFRB QkxFIElGIE5PVCBFWElTVFMgcmVwbGljYXRlZCcpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgIkRST1AgVEFCTEUgdG1wIik7CisKKyMgVGVzdCBDUkVBVEUgVEFCTEUg SUYgTk9UIEVYSVNUUyAoY2hlY2sgaWYgd2Ugc2tpcCB0byBjcmVhdGUgYSB0YWJsZQorIyB3aGVu IHdlIGhhdmUgdGhlIHRhYmxlIG9uIHRoZSBwdWJsaXNoZXIsIGJ1dCBub3Qgb24gdGhlIHN1YnNj cmliZXIuKQorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNSRUFURSBU QUJMRSB0bXAgKGlkIGludCk7Iik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgdG1wIChpZCBpbnQpOyIpOworJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJTlRPIHRtcCBWQUxVRVMg KDEpOyIpOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdteXN1YicpOworJHJl c3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNv dW50KCopIGZyb20gdG1wOyIpOworaXMoJHJlc3VsdCwgcXEoMSksICdDUkVBVEUgVEFCTEUgSUYg Tk9UIEVYSVNUUyByZXBsaWNhdGVkJyk7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAiRFJPUCBUQUJMRSB0bXAiKTsKKworIyBUZXN0IENSRUFURSBUQUJMRSB3aXRoIGNv bGxhdGUKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDUkVBVEUgVEFC TEUgdG1wIChuYW1lIHRleHQgQ09MTEFURSBcIkNcIik7Iik7Ciskbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdG1wIFZBTFVFUyAoJ2ZvbycpOyIpOwor JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdteXN1YicpOworJHJlc3VsdCA9ICRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvbGxhdGlvbl9u YW1lIEZST00gaW5mb3JtYXRpb25fc2NoZW1hLmNvbHVtbnMgV0hFUkUgdGFibGVfbmFtZSA9ICd0 bXAnOyIpOworaXMoJHJlc3VsdCwgcXEoQyksICdDUkVBVEUgVEFCTEUgd2l0aCBjb2xsYXRlIHJl cGxpY2F0ZWQnKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9Q IFRBQkxFIHRtcCIpOworCisjIFRlc3QgQ1JFQVRFIFRBQkxFIHdpdGggbmFtZWQgY29uc3RyYWlu dAorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNSRUFURSBUQUJMRSB0 bXAgKGlkIGludCBDT05TVFJBSU5UIFwibXVzdCBiZSBiaWdnZXIgdGhhbiAxMFwiIENIRUNLIChp ZCA+IDEwKSk7Iik7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ215c3ViJyk7 Ciskbm9kZV9zdWJzY3JpYmVyLT5wc3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0bXAgVkFM VUVTICgxKTsiLAorCQkJCQkgICBvbl9lcnJvcl9zdG9wID0+IDAsCisJCQkJCSAgIHN0ZGVyciA9 PiBcJHN0ZGVyciwKKwkJCQkJICAgc3Rkb3V0ID0+IFwkc3Rkb3V0KTsKKyRzdGRlcnIgPX4gL0VS Uk9SOiAgbmV3IHJvdyBmb3IgcmVsYXRpb24gInRtcCIgdmlvbGF0ZXMgY2hlY2sgY29uc3RyYWlu dCAibXVzdCBiZSBiaWdnZXIgdGhhbiAxMCIvCisgIG9yIGRpZSAiZmFpbGVkIHRvIHJlcGxpY2F0 ZSBuYW1lZCBjb25zdHJhaW50IGF0IGNyZWF0aW5nIHRhYmxlIjsKKyRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIFRBQkxFIHRtcDsiKTsKKworIyBUZXN0IENSRUFU RSBUQUJMRSB3aXRoIHZhcmlvdXMgdHlwZXMgb2YgY29uc3RyYWludHMuCisjIE5PVCBOVUxMIGNv bnN0cmFpbnQKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDUkVBVEUg VEFCTEUgdG1wIChpZCBpbnQsIG5hbWUgdGV4dCBOT1QgTlVMTCk7Iik7Ciskbm9kZV9wdWJsaXNo ZXItPndhaXRfZm9yX2NhdGNodXAoJ215c3ViJyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5wc3FsKCdw b3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0bXAgVkFMVUVTICgxKTsiLAorCQkJCQkgICBvbl9lcnJv cl9zdG9wID0+IDAsCisJCQkJCSAgIHN0ZGVyciA9PiBcJHN0ZGVyciwKKwkJCQkJICAgc3Rkb3V0 ID0+IFwkc3Rkb3V0KTsKKyRzdGRlcnIgPX4gL0VSUk9SOiAgbnVsbCB2YWx1ZSBpbiBjb2x1bW4g Im5hbWUiIG9mIHJlbGF0aW9uICJ0bXAiIHZpb2xhdGVzIG5vdC1udWxsIGNvbnN0cmFpbnQvCisg IG9yIGRpZSAiZmFpbGVkIHRvIHJlcGxpY2F0ZSBub24gbnVsbCBjb25zdHJhaW50IGF0IGNyZWF0 aW5nIHRhYmxlIjsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9Q IFRBQkxFIHRtcDsiKTsKKworIyBOVUxMIGNvbnN0cmFpbnQKKyRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICJDUkVBVEUgVEFCTEUgdG1wIChpZCBpbnQsIG5hbWUgdGV4dCBO VUxMKTsiKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgnbXlzdWInKTsKKyRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdG1wIFZB TFVFUyAoMSk7Iik7CiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICJTRUxFQ1QgbmFtZSBJUyBOVUxMIEZST00gdG1wOyIpOworaXMoJHJlc3VsdCwgcXEo dCksICJDUkVBVEUgVEFCTEUgd2l0aCBOVUxMIGNvbnN0cmFpbnQgcmVwbGljYXRlZCIpOworJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgVEFCTEUgdG1wIik7CisK KyMgQ0hFQ0sgY29uc3RyYWludAorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgIkNSRUFURSBUQUJMRSB0bXAgKGlkIGludCwgcHJvZHVjdF9hbWUgdGV4dCwgcHJpY2UgaW50 IENIRUNLIChwcmljZSA+IDApKTsiKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1 cCgnbXlzdWInKTsKKyRub2RlX3N1YnNjcmliZXItPnBzcWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJ TlRPIHRtcCBWQUxVRVMgKDEsICdmb28nLCAtMTAwKTsiLAorCQkJCQkgICBvbl9lcnJvcl9zdG9w ID0+IDAsCisJCQkJCSAgIHN0ZGVyciA9PiBcJHN0ZGVyciwKKwkJCQkJICAgc3Rkb3V0ID0+IFwk c3Rkb3V0KTsKKyRzdGRlcnIgPX4gL0VSUk9SOiAgbmV3IHJvdyBmb3IgcmVsYXRpb24gInRtcCIg dmlvbGF0ZXMgY2hlY2sgY29uc3RyYWludCAidG1wX3ByaWNlX2NoZWNrIi8KKyAgb3IgZGllICJm YWlsZWQgdG8gcmVwbGljYXRlIENIRUNLIGNvbnN0cmFpbnQiOworJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgVEFCTEUgdG1wOyIpOworCisjIERFRkFVTFQKKyRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDUkVBVEUgVEFCTEUgdG1wIChp ZCBpbnQsIG5hbWUgdGV4dCBERUZBVUxUICdmb28nKTsiKTsKKyRub2RlX3B1Ymxpc2hlci0+d2Fp dF9mb3JfY2F0Y2h1cCgnbXlzdWInKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAiSU5TRVJUIElOVE8gdG1wIFZBTFVFUyAoMSk7Iik7CiskcmVzdWx0ID0gJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgbmFtZSBmcm9tIHRtcDsi KTsKK2lzKCRyZXN1bHQsIHFxKGZvbyksICJDUkVBVEUgVEFCTEUgd2l0aCBkZWZhdWx0IHZhbHVl IHJlcGxpY2F0ZWQiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJE Uk9QIFRBQkxFIHRtcCIpOworCisjIFVOSVFVRSBjb25zdHJhaW50Ciskbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIFRBQkxFIHRtcCAoaWQgaW50IFVOSVFVRSk7 Iik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8g dG1wIFZBTFVFUyAoMSk7Iik7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ215 c3ViJyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5wc3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0 bXAgVkFMVUVTICgxKTsiLAorCQkJCQkgICBvbl9lcnJvcl9zdG9wID0+IDAsCisJCQkJCSAgIHN0 ZGVyciA9PiBcJHN0ZGVyciwKKwkJCQkJICAgc3Rkb3V0ID0+IFwkc3Rkb3V0KTsKKyRzdGRlcnIg PX4gL0VSUk9SOiAgZHVwbGljYXRlIGtleSB2YWx1ZSB2aW9sYXRlcyB1bmlxdWUgY29uc3RyYWlu dCAidG1wX2lkX2tleSIvCisgIG9yIGRpZSAiZmFpbGVkIHRvIHJlcGxpY2F0ZSBjb25zdHJhaW50 IGF0IGNyZWF0aW5nIHRhYmxlIjsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICJEUk9QIFRBQkxFIHRtcDsiKTsKKworIyBQUklNQVJZIEtFWQorJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNSRUFURSBUQUJMRSB0bXAgKGlkIGludCBQUklNQVJZ IEtFWSwgbmFtZSB0ZXh0KTsiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICJJTlNFUlQgSU5UTyB0bXAgVkFMVUVTICgxLCAnZm9vJyk7Iik7Ciskbm9kZV9wdWJsaXNo ZXItPndhaXRfZm9yX2NhdGNodXAoJ215c3ViJyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5wc3FsKCdw b3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0bXAgVkFMVUVTICgxLCAnYmFyJyk7IiwKKwkJCQkJICAg b25fZXJyb3Jfc3RvcCA9PiAwLAorCQkJCQkgICBzdGRlcnIgPT4gXCRzdGRlcnIsCisJCQkJCSAg IHN0ZG91dCA9PiBcJHN0ZG91dCk7Ciskc3RkZXJyID1+IC9FUlJPUjogIGR1cGxpY2F0ZSBrZXkg dmFsdWUgdmlvbGF0ZXMgdW5pcXVlIGNvbnN0cmFpbnQgInRtcF9wa2V5Ii8KKyAgb3IgZGllICJm YWlsZWQgdG8gcmVwbGljYXRlIHByaW1hcnkga2V5IGF0IGNyZWF0aW5nIHRhYmxlIjsKKyRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIFRBQkxFIHRtcDsiKTsKKwor IyBFWENMVURFCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRF IFRBQkxFIGNpcmNsZXMgKGMgY2lyY2xlLCBFWENMVURFIFVTSU5HIGdpc3QgKGMgV0lUSCAmJikp OyIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJTlRP IGNpcmNsZXMgVkFMVUVTICgnPCgxLCAxKSwgMT4nOjpjaXJjbGUpOyIpOworJG5vZGVfcHVibGlz aGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdteXN1YicpOworJG5vZGVfc3Vic2NyaWJlci0+cHNxbCgn cG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gY2lyY2xlcyBWQUxVRVMgKCc8KDEsIDEpLCAxPic6OmNp cmNsZSk7IiwKKwkJCQkJICAgb25fZXJyb3Jfc3RvcCA9PiAwLAorCQkJCQkgICBzdGRlcnIgPT4g XCRzdGRlcnIsCisJCQkJCSAgIHN0ZG91dCA9PiBcJHN0ZG91dCk7Ciskc3RkZXJyID1+IC9FUlJP UjogIGNvbmZsaWN0aW5nIGtleSB2YWx1ZSB2aW9sYXRlcyBleGNsdXNpb24gY29uc3RyYWludCAi Y2lyY2xlc19jX2V4Y2wiLworICBvciBkaWUgImZhaWxlZCB0byByZXBsaWNhdGUgRVhDTFVERSBh dCBjcmVhdGluZyB0YWJsZSI7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAiRFJPUCBUQUJMRSBjaXJjbGVzIik7CisKKyMgUkVGRVJFTkNFUworJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNSRUFURSBUQUJMRSBwcm9kdWN0IChpZCBpbnQgUFJJ TUFSWSBLRVksIG5hbWUgdGV4dCk7Iik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAiSU5TRVJUIElOVE8gcHJvZHVjdCBWQUxVRVMgKDEsICdmb28nKTsiKTsKKyRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyBwcm9kdWN0IFZB TFVFUyAoMiwgJ2JhcicpOyIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgIkNSRUFURSBUQUJMRSBvcmRlcnMgKG9yZGVyX2lkIGludCBQUklNQVJZIEtFWSwgcHJvZHVj dF9pZCBpbnQgUkVGRVJFTkNFUyBwcm9kdWN0IChpZCkpIik7Ciskbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJ215c3ViJyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5wc3FsKCdwb3N0Z3Jl cycsICJJTlNFUlQgSU5UTyBvcmRlcnMgVkFMVUVTICgxLCAxMCkiLAorCQkJCQkgICBvbl9lcnJv cl9zdG9wID0+IDAsCisJCQkJCSAgIHN0ZGVyciA9PiBcJHN0ZGVyciwKKwkJCQkJICAgc3Rkb3V0 ID0+IFwkc3Rkb3V0KTsKKyRzdGRlcnIgPX4gL0VSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0 YWJsZSAib3JkZXJzIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJvcmRlcnNfcHJv ZHVjdF9pZF9ma2V5Ii8KKyAgb3IgZGllICJmYWlsZWQgdG8gcmVwbGljYXRlIFJFRkVSRU5DRVMg YXQgY3JlYXRpbmcgdGFibGUiOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgIkRST1AgVEFCTEUgb3JkZXJzIik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAiRFJPUCBUQUJMRSBwcm9kdWN0Iik7CisKKyMgREVGRVJSQUJMRQorJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNSRUFURSBUQUJMRSB0bXAgKGlkIGludCBQ UklNQVJZIEtFWSBERUZFUlJBQkxFLCBuYW1lIHRleHQpOyIpOworJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJTlRPIHRtcCBWQUxVRVMgKDEsICdmb28nKTsi KTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0 bXAgVkFMVUVTICgyLCAnYmFyJyk7Iik7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNo dXAoJ215c3ViJyk7CisjIFF1aWNrIGNoZWNrIG9mIGRlZmVycmFibGUgY2xhdXNlCiskbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlVQREFURSB0bXAgU0VUIGlkID0gaWQg KyAxOyIpOworIyBBbHNvLCBleGVjdXRlIGEgdGVzdCB0aGF0IHNob3VsZCBmYWlsIGZvciBJTklU SUFMTFkgSU1NRURJQVRFKHRoZSBkZWZhdWx0KQorJG5vZGVfc3Vic2NyaWJlci0+cHNxbCgncG9z dGdyZXMnLCBxcSgKK0JFR0lOOworVVBEQVRFIHRtcCBTRVQgaWQgPSBpZCArIDE7CitJTlNFUlQg SU5UTyB0bXAgVkFMVUVTICgzLCAnZm9vYmFyJyk7CitERUxFVEUgRlJPTSB0bXAgV0hFUkUgaWQg PSAzOworQ09NTUlUOworKSwgb25fZXJyb3Jfc3RvcCA9PiAwLCBzdGRlcnIgPT4gXCRzdGRlcnIs IHN0ZG91dCA9PiBcJHN0ZG91dCk7Ciskc3RkZXJyID1+IC9FUlJPUjogIGR1cGxpY2F0ZSBrZXkg dmFsdWUgdmlvbGF0ZXMgdW5pcXVlIGNvbnN0cmFpbnQgInRtcF9wa2V5Ii8KKyAgb3IgZGllICJm YWlsZWQgdG8gcmVwbGljYXRlIERFRkVSUkFCTEUgYXQgY3JlYXRpbmcgdGFibGUiOworJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgVEFCTEUgdG1wOyIpOworCisj IE5PVCBERUZFUlJBQkxFCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi Q1JFQVRFIFRBQkxFIHRtcCAoaWQgaW50IFBSSU1BUlkgS0VZIE5PVCBERUZFUlJBQkxFLCBuYW1l IHRleHQpOyIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIklOU0VS VCBJTlRPIHRtcCBWQUxVRVMgKDEsICdmb28nKTsiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0bXAgVkFMVUVTICgyLCAnYmFyJyk7Iik7Cisk bm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ215c3ViJyk7Ciskbm9kZV9zdWJzY3Jp YmVyLT5wc3FsKCdwb3N0Z3JlcycsICJVUERBVEUgdG1wIFNFVCBpZCA9IGlkICsgMTsiLAorCQkJ CQkgICBvbl9lcnJvcl9zdG9wID0+IDAsCisJCQkJCSAgIHN0ZGVyciA9PiBcJHN0ZGVyciwKKwkJ CQkJICAgc3Rkb3V0ID0+IFwkc3Rkb3V0KTsKKyRzdGRlcnIgPX4gL0VSUk9SOiAgZHVwbGljYXRl IGtleSB2YWx1ZSB2aW9sYXRlcyB1bmlxdWUgY29uc3RyYWludCAidG1wX3BrZXkiLworICBvciBk aWUgImZhaWxlZCB0byByZXBsaWNhdGUgTk9UIERFRkVSUkFCTEUgYXQgY3JlYXRpbmcgdGFibGUi OworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgVEFCTEUgdG1w OyIpOworCisjIERFRkVSUkFCTEUgYW5kIElOSVRJQUxMWSBERUZFUlJFRAorJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNSRUFURSBUQUJMRSB0bXAgKGlkIGludCBQUklN QVJZIEtFWSBERUZFUlJBQkxFIElOSVRJQUxMWSBERUZFUlJFRCwgbmFtZSB0ZXh0KTsiKTsKKyRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0bXAgVkFM VUVTICgxLCAnZm9vJyk7Iik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAiSU5TRVJUIElOVE8gdG1wIFZBTFVFUyAoMiwgJ2JhcicpOyIpOworJG5vZGVfcHVibGlzaGVy LT53YWl0X2Zvcl9jYXRjaHVwKCdteXN1YicpOworIyBRdWljayBjaGVjayBvZiBkZWZlcnJhYmxl IGNsYXVzZQorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJVUERBVEUg dG1wIFNFVCBpZCA9IGlkICsgMTsiKTsKKyMgQWxzbywgZXhlY3V0ZSBhIHRlc3QgdGhhdCBzaG91 bGQgc3VjY2VlZCBmb3IgSU5JVElBTExZIERFRkVSUkVECiskbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgcXEoCitCRUdJTjsKK1VQREFURSB0bXAgU0VUIGlkID0gaWQgKyAx OworSU5TRVJUIElOVE8gdG1wIFZBTFVFUyAoMywgJ2Zvb2JhcicpOworREVMRVRFIEZST00gdG1w IFdIRVJFIGlkID0gMzsKK0NPTU1JVDsKKykpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgIkRST1AgVEFCTEUgdG1wOyIpOworCisjIFRlc3QgQ1JFQVRFIFRBQkxFIHdp dGggdGFibGUgY29uc3RyYWludAorIyBXZSB3aWxsIHNldCB0d28gY2hlY2tzIGFuZCBjb25kdWN0 IHR3byBpbnNlcnRzIHRoYXQgc2hvdWxkIGZhaWwgcmVzcGVjdGl2ZWx5LgorJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIHRtcCAocHJpY2UgaW50 LCBkaXNjb3VudGVkX3ByaWNlIGludCwgQ0hFQ0sgKGRpc2NvdW50ZWRfcHJpY2UgPiAwIEFORCBw cmljZSA+IGRpc2NvdW50ZWRfcHJpY2UpKTsiKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3Jf Y2F0Y2h1cCgnbXlzdWInKTsKKyRub2RlX3N1YnNjcmliZXItPnBzcWwoJ3Bvc3RncmVzJywgIklO U0VSVCBJTlRPIHRtcCBWQUxVRVMgKDEwMCwgMCk7IiwKKwkJCQkJICAgb25fZXJyb3Jfc3RvcCA9 PiAwLAorCQkJCQkgICBzdGRlcnIgPT4gXCRzdGRlcnIsCisJCQkJCSAgIHN0ZG91dCA9PiBcJHN0 ZG91dCk7Ciskc3RkZXJyID1+IC9FUlJPUjogIG5ldyByb3cgZm9yIHJlbGF0aW9uICJ0bXAiIHZp b2xhdGVzIGNoZWNrIGNvbnN0cmFpbnQgInRtcF9jaGVjayIvCisgIG9yIGRpZSAiZmFpbGVkIHRv IHJlcGxpY2F0ZSB0YWJsZSBjb25zdHJhaW50IChmaXJzdCBjb25kaXRpb24pIGF0IGNyZWF0aW5n IHRhYmxlIjsKKyRub2RlX3N1YnNjcmliZXItPnBzcWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJTlRP IHRtcCBWQUxVRVMgKDUwLCAxMDApOyIsCisJCQkJCSAgIG9uX2Vycm9yX3N0b3AgPT4gMCwKKwkJ CQkJICAgc3RkZXJyID0+IFwkc3RkZXJyLAorCQkJCQkgICBzdGRvdXQgPT4gXCRzdGRvdXQpOwor JHN0ZGVyciA9fiAvRVJST1I6ICBuZXcgcm93IGZvciByZWxhdGlvbiAidG1wIiB2aW9sYXRlcyBj aGVjayBjb25zdHJhaW50ICJ0bXBfY2hlY2siLworICBvciBkaWUgImZhaWxlZCB0byByZXBsaWNh dGUgdGFibGUgY29uc3RyYWludCAoc2Vjb25kIGNvbmRpdGlvbikgYXQgY3JlYXRpbmcgdGFibGUi OworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgVEFCTEUgdG1w OyIpOworCisjIFRlc3QgQ1JFQVRFIFRBQkxFIFdJVEggc3Ryb3JhZ2VfcGFyYW1ldGVyCiskbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIFRBQkxFIHRtcCAoaWQg aW50KSBXSVRIIChmaWxsZmFjdG9yID0gODApOyIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJTlRPIHRtcCBWQUxVRVMgKDEpOyIpOworJG5vZGVfcHVi bGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdteXN1YicpOworJG5vZGVfc3Vic2NyaWJlci0+cHNx bCgncG9zdGdyZXMnLCAiU0VMRUNUIHJlbG9wdGlvbnMgRlJPTSBwZ19jbGFzcyBXSEVSRSByZWxu YW1lID0gJ3RtcCc7IiwKKwkJCQkJICAgb25fZXJyb3Jfc3RvcCA9PiAwLAorCQkJCQkgICBzdGRl cnIgPT4gXCRzdGRlcnIsCisJCQkJCSAgIHN0ZG91dCA9PiBcJHN0ZG91dCk7Ciskc3Rkb3V0ID1+ IC97ZmlsbGZhY3Rvcj04MH0vCisgIG9yIGRpZSAiZmFpbGVkIHRvIHJlcGxpY2F0ZSBzdG9yYWdl IG9wdGlvbiI7CiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICJTRUxFQ1QgY291bnQoKikgZnJvbSB0bXA7Iik7CitpcygkcmVzdWx0LCBxcSgxKSwgJ0NS RUFURSBUQUJMRSB3aXRoIHN0b3JhZ2VfcGFyYW1ldGVyIHJlcGxpY2F0ZWQnKTsKKyRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIFRBQkxFIHRtcDsiKTsKKworIyBU ZXN0IENSRUFURSBUQUJMRSB3aXRoIHNlcmlhbCBjb2x1bW5zCiskbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIFNFUVVFTkNFIHNlcmlhbCBTVEFSVCAxMDE7Iik7 Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIFRBQkxFIHRt cCAoaWQgc2VyaWFsIHByaW1hcnkga2V5LCBkYXRhIHRleHQpOyIpOworJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJTlRPIHRtcCBWQUxVRVMgKG5leHR2YWwo J3NlcmlhbCcpLCAnb25lJyk7Iik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiSU5TRVJUIElOVE8gdG1wIFZBTFVFUyAobmV4dHZhbCgnc2VyaWFsJyksICd0d28nKTsi KTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgnbXlzdWInKTsKKyRyZXN1bHQg PSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBzdW0oaWQp IGZyb20gdG1wOyIpOworaXMoJHJlc3VsdCwgcXEoMjAzKSwgJ0NSRUFURSBUQUJMRSB3aXRoIHNl cmlhbCBjb2x1bW4gcmVwbGljYXRlZCcpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgIkRST1AgVEFCTEUgdG1wOyIpOworcGFzcyAiRERMIHJlcGxpY2F0aW9uIHRlc3Rz IHBhc3NlZDoiOworCiskbm9kZV9zdWJzY3JpYmVyLT5zdG9wOworJG5vZGVfcHVibGlzaGVyLT5z dG9wOworCitkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90 eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggN2M4 YWU3ZmU3Yi4uZWIxZjkzNGVlMyAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVk ZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTU2Niw2 ICs1NjYsNyBAQCBEZWZFbGVtQWN0aW9uCiBEZWZhdWx0QUNMSW5mbwogRGVmaW5lU3RtdAogRGVs ZXRlU3RtdAorRGVwYXJzZWRDb21tYW5kVHlwZQogRGVwZW5kZW5jeUdlbmVyYXRvcgogRGVwZW5k ZW5jeUdlbmVyYXRvckRhdGEKIERlcGVuZGVuY3lUeXBlCkBAIC0xNDYxLDYgKzE0NjIsNyBAQCBM b2dpY2FsRGVjb2RlQmVnaW5QcmVwYXJlQ0IKIExvZ2ljYWxEZWNvZGVDaGFuZ2VDQgogTG9naWNh bERlY29kZUNvbW1pdENCCiBMb2dpY2FsRGVjb2RlQ29tbWl0UHJlcGFyZWRDQgorTG9naWNhbERl Y29kZURETE1lc3NhZ2VDQgogTG9naWNhbERlY29kZUZpbHRlckJ5T3JpZ2luQ0IKIExvZ2ljYWxE ZWNvZGVGaWx0ZXJQcmVwYXJlQ0IKIExvZ2ljYWxEZWNvZGVNZXNzYWdlQ0IKQEAgLTE0NzEsNiAr MTQ3Myw3IEBAIExvZ2ljYWxEZWNvZGVTdGFydHVwQ0IKIExvZ2ljYWxEZWNvZGVTdHJlYW1BYm9y dENCCiBMb2dpY2FsRGVjb2RlU3RyZWFtQ2hhbmdlQ0IKIExvZ2ljYWxEZWNvZGVTdHJlYW1Db21t aXRDQgorTG9naWNhbERlY29kZVN0cmVhbURETE1lc3NhZ2VDQgogTG9naWNhbERlY29kZVN0cmVh bU1lc3NhZ2VDQgogTG9naWNhbERlY29kZVN0cmVhbVByZXBhcmVDQgogTG9naWNhbERlY29kZVN0 cmVhbVN0YXJ0Q0IKQEAgLTIzMTQsNiArMjMxNyw3IEBAIFJlb3JkZXJCdWZmZXJDaGFuZ2UKIFJl b3JkZXJCdWZmZXJDaGFuZ2VUeXBlCiBSZW9yZGVyQnVmZmVyQ29tbWl0Q0IKIFJlb3JkZXJCdWZm ZXJDb21taXRQcmVwYXJlZENCCitSZW9yZGVyQnVmZmVyRERMTWVzc2FnZUNCCiBSZW9yZGVyQnVm ZmVyRGlza0NoYW5nZQogUmVvcmRlckJ1ZmZlckl0ZXJUWE5FbnRyeQogUmVvcmRlckJ1ZmZlckl0 ZXJUWE5TdGF0ZQpAQCAtMjMyMyw2ICsyMzI3LDcgQEAgUmVvcmRlckJ1ZmZlclJvbGxiYWNrUHJl cGFyZWRDQgogUmVvcmRlckJ1ZmZlclN0cmVhbUFib3J0Q0IKIFJlb3JkZXJCdWZmZXJTdHJlYW1D aGFuZ2VDQgogUmVvcmRlckJ1ZmZlclN0cmVhbUNvbW1pdENCCitSZW9yZGVyQnVmZmVyU3RyZWFt RERMTWVzc2FnZUNCCiBSZW9yZGVyQnVmZmVyU3RyZWFtTWVzc2FnZUNCCiBSZW9yZGVyQnVmZmVy U3RyZWFtUHJlcGFyZUNCCiBSZW9yZGVyQnVmZmVyU3RyZWFtU3RhcnRDQgpAQCAtMzkxNiw2ICsz OTIxLDcgQEAgeGxfaGVhcF92aXNpYmxlCiB4bF9pbnZhbGlkX3BhZ2UKIHhsX2ludmFsaWRfcGFn ZV9rZXkKIHhsX2ludmFsaWRhdGlvbnMKK3hsX2xvZ2ljYWxfZGRsX21lc3NhZ2UKIHhsX2xvZ2lj YWxfbWVzc2FnZQogeGxfbXVsdGlfaW5zZXJ0X3R1cGxlCiB4bF9tdWx0aXhhY3RfY3JlYXRlCi0t IAoyLjM0LjEKCg== --00000000000023744d05ff537465--