Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sZ5uU-00GNdH-T9 for pgsql-hackers@arkaria.postgresql.org; Wed, 31 Jul 2024 09:46:19 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1sZ5tU-004O4F-KG for pgsql-hackers@arkaria.postgresql.org; Wed, 31 Jul 2024 09:45:16 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sZ5tT-004O45-Bd for pgsql-hackers@lists.postgresql.org; Wed, 31 Jul 2024 09:45:16 +0000 Received: from mail-lf1-x129.google.com ([2a00:1450:4864:20::129]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1sZ5tK-002M3b-AC for pgsql-hackers@lists.postgresql.org; Wed, 31 Jul 2024 09:45:13 +0000 Received: by mail-lf1-x129.google.com with SMTP id 2adb3069b0e04-52efdf02d13so8939070e87.2 for ; Wed, 31 Jul 2024 02:45:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cybertec-at.20230601.gappssmtp.com; s=20230601; t=1722419104; x=1723023904; darn=lists.postgresql.org; h=mime-version:user-agent:references:in-reply-to:date:cc:to:from :subject:message-id:from:to:cc:subject:date:message-id:reply-to; bh=nbyK5rn32hnW3wksCJTvldYxRONdP9ykUPP9NLD31e4=; b=VSAww5iQ54qPmFKGw5q6aY/lqAeEAPfsYjzw8i6M6vaGHJA0lPccRtNofcd5j1rfXp 2xlf6gN0y8RR9Hwpyai5v8Z0SuNmHm9L1gW3wGO3PEOB+jTwEF7RRXBkFD4O/UsRmET3 ANBdgUYdRrG5rt6aEKsz3gw9SKrOm0Z9KHW4DKeZR/Z54t7H5h9V1ISBxaKIJEDRUuA+ 0kXGGJ7SXK+O0woYAY1dDZHJk1ARhL2yIb4S5t/MOyx+AaIkSBkKdbtrSorTz+P4o14q ESvWAicBzhBREa9DbumxGCbBEKV2eIRZK7aooG4uUoSzLW7Yucf6w/xfClEHQsdTWJnV J95g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722419104; x=1723023904; h=mime-version:user-agent:references:in-reply-to:date:cc:to:from :subject:message-id:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=nbyK5rn32hnW3wksCJTvldYxRONdP9ykUPP9NLD31e4=; b=Moy3F3LnqKY3fZbUWHigESmb+89QjiLRKCHj6dT4sGuDdEgVtecaB+BMZMWsq3jBKB 2ZacN8f1LFdGbCBYjTkh0dCP/LZVT3yxmkoF2IQMFidfezFC2VmwXW1AxGlZH4rn3pA7 a6ltAZjb3iws5RQWEXeYJd+R1ql/F4F6UWWZS5VLXw5HMCvA+LUx2nMH1ooP1BcPiX9X NzhGJX7fxx/UWDDhMpeWu3NyXN2Zh9z8R821CAAu6WnBJEiyy7pCrgq/lwvGA+q70F0u PBxMLESlO6v3hfoKk1beuE+RZzC00BUBn/ghV7rRFDn1YseyatxUdnskrUdV6DwYEzfZ KVWQ== X-Forwarded-Encrypted: i=1; AJvYcCUNNWQIBSZAFM2GBTXOtQlaWjWCDzbaRMoRwusmh7D0hRa7ZSkm910b3MvOJ8doKPA3mnCo4gcP/ND9fg0EVgrBUFfaeYKDKTwdI7yfmcFVf9pD X-Gm-Message-State: AOJu0YwhzDEWHH+EzqA9BX3qVryFrX3IXjFWbSfDBZJq1zyFVx/h5NBK Upf/mSaaZRDGPaVmz+ReylMQEBpD2OtNeI59GfAajQvBTf3KIUvAG0WEB9VzXyY= X-Google-Smtp-Source: AGHT+IEvsgwXSytTEH10bWnJVDQvo/0otHflLZWy8yOaPW57Jgds5/qRq1sv7RX328CfsuQBsP1mqA== X-Received: by 2002:a05:6512:3f06:b0:52c:cd77:fe03 with SMTP id 2adb3069b0e04-5309b270367mr11841254e87.14.1722419103459; Wed, 31 Jul 2024 02:45:03 -0700 (PDT) Received: from dynamic-pd01.res.v6.highway.a1.net ([2001:871:5e:9ed8:351c:ef50:841f:494c]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a7acab23624sm745712866b.20.2024.07.31.02.45.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 31 Jul 2024 02:45:02 -0700 (PDT) Message-ID: Subject: Re: proposal: schema variables From: Laurenz Albe To: Pavel Stehule Cc: Erik Rijkers , Michael Paquier , Amit Kapila , DUVAL REMI , PostgreSQL Hackers Date: Wed, 31 Jul 2024 11:45:00 +0200 In-Reply-To: References: <20200924035637.GF28585@paquier.xyz> <20201001033824.GC8130@paquier.xyz> <51a9a68e8a998d04df17417d45c1dbd4@xs4all.nl> <89817942c99da01cd5e7850fe418436b@xs4all.nl> <56ca532c37eb0b540961f74a7bd5db39@xs4all.nl> <8181bd3abc647bdae5a4f78e71e62478a98c75f4.camel@cybertec.at> <9e67d49deb18270eddb95e602c83f02b98459843.camel@cybertec.at> <3b662dc5b615d4c20a55e8e2fbe6fc00fe00609d.camel@cybertec.at> <6996931e8c9edf3b82223e74e92326a7ed06c1d6.camel@cybertec.at> <67aa68a7e6dfb44c0cbbdf7f97cadfede4269ce5.camel@cybertec.at> <263ef86d2cc97751e4833d79f3713d4a02b4cfb0.camel@cybertec.at> Content-Type: multipart/mixed; boundary="=-ck/4UnhDo36KLHDuWECU" User-Agent: Evolution 3.52.3 (3.52.3-1.fc40) MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=-ck/4UnhDo36KLHDuWECU Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, 2024-07-31 at 09:04 +0200, Pavel Stehule wrote: > st 31. 7. 2024 v=C2=A08:57 odes=C3=ADlatel Laurenz Albe napsal: > > On Wed, 2024-07-31 at 08:41 +0200, Pavel Stehule wrote: > > > Probably you didn't attach new files - the second patch is not comple= te. Or you didn't make changes there? > >=20 > > Hm.=C2=A0 What is missing? >=20 > let.sgml, > session_variable.c > svariable_receiver.c=C2=A0 > session_variable.h > ... Argh, I forgit the new files, sorry. The attached patches should be complete. Yours, Laurenz Albe --=-ck/4UnhDo36KLHDuWECU Content-Disposition: attachment; filename*0=v20240731-0001-Enhancing-catalog-for-support-session-vari.pat; filename*1=ch Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name="v20240731-0001-Enhancing-catalog-for-support-session-vari.patch"; charset="UTF-8" RnJvbSA0NzA1ZGIwZGUzZjlmNTAzMWZhODIzODkwODQyMWQyMTdhNzdlMjkxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMYXVyZW56IEFsYmUgPGxhdXJlbnouYWxiZUBjeWJlcnRlYy5h dD4KRGF0ZTogVHVlLCAzMCBKdWwgMjAyNCAyMTozOToxMiArMDIwMApTdWJqZWN0OiBbUEFUQ0gg djIwMjQwNzMxIDEvMl0gRW5oYW5jaW5nIGNhdGFsb2cgZm9yIHN1cHBvcnQgc2Vzc2lvbiB2YXJp YWJsZXMKIGFuZCByZWxhdGVkIHN1cHBvcnQKClRoaXMgcGF0Y2ggaW50cm9kdWNlcyBuZXcgc3lz dGVtIGNhdGFsb2cgdGFibGUgcGdfdmFyaWFibGUuIFRoaXMgdGFibGUgaG9sZHMgbWV0YWRhdGEg YWJvdXQKc2Vzc2lvbiB2YXJpYWJsZXMgY3JlYXRlZCBieSBjb21tYW5kIENSRUFURSBWQVJJQUJM RSwgYW5kIGRyb3BwZWQgYnkgY29tbWFuZCBEUk9QIFZBUklBQkxFLgpCb3RoIGNvbW1hbmRzIGFy ZSBpbXBsZW1lbnRlZCBieSB0aGlzIHBhdGNoLiBQb3NzaWJpbGl0eSB0byBjaGFuZ2Ugb3duZXIs IHNjaGVtYSBvciByZW5hbWUuCgpBY2Nlc3MgdG8gc2Vzc2lvbiB2YXJpYWJsZXMgY2FuIGJlIGNv bnRyb2xsZWQgYnkgU0VMRUNUIG9yIFVQREFURSByaWdodHMuIEJvdGggcmlnaHRzIGFyZQppbnRy b2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggdG9vLgoKVGhpcyBwYXRjaCBlbmhhbmNpbmcgcGdfZHVtcCBh bmQgcHNxbCB0byBzdXBwb3J0IHNlc3Npb24gdmFyaWFibGVzLiBUaGUgY2hhbmdlcyBhcmUgcmVs YXRlZAp0byBzeXN0ZW0gY2F0YWxvZy4KClRoaXMgcGF0Y2ggaXMgbm90IHNob3J0LCBidXQgdGhl IGNvZGUgaXMgc2ltcGxlLgotLS0KIGRvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sICAgICAgICAg ICAgICAgICAgICB8IDEyMCArKysrKysrKysKIGRvYy9zcmMvc2dtbC9kZGwuc2dtbCAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAzMSArKysKIGRvYy9zcmMvc2dtbC9ldmVudC10cmlnZ2VyLnNn bWwgICAgICAgICAgICAgICB8ICAyNCArKwogZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbCAgICAgICAg ICAgICAgICAgICAgICAgIHwgIDEzICsKIGRvYy9zcmMvc2dtbC9nbG9zc2FyeS5zZ21sICAgICAg ICAgICAgICAgICAgICB8ICAxNSArKwogZG9jL3NyYy9zZ21sL3JlZi9hbGxmaWxlcy5zZ21sICAg ICAgICAgICAgICAgIHwgICAzICsKIC4uLi9zZ21sL3JlZi9hbHRlcl9kZWZhdWx0X3ByaXZpbGVn ZXMuc2dtbCAgICB8ICAyNiArLQogZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl92YXJpYWJsZS5zZ21s ICAgICAgICAgIHwgMTc4ICsrKysrKysrKysrKwogZG9jL3NyYy9zZ21sL3JlZi9jb21tZW50LnNn bWwgICAgICAgICAgICAgICAgIHwgICAxICsKIGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3NjaGVt YS5zZ21sICAgICAgICAgICB8ICAgNyArLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdmFyaWFi bGUuc2dtbCAgICAgICAgIHwgMTUxICsrKysrKysrKysrCiBkb2Mvc3JjL3NnbWwvcmVmL2Ryb3Bf dmFyaWFibGUuc2dtbCAgICAgICAgICAgfCAxMTcgKysrKysrKysKIGRvYy9zcmMvc2dtbC9yZWYv Z3JhbnQuc2dtbCAgICAgICAgICAgICAgICAgICB8ICAgNiArCiBkb2Mvc3JjL3NnbWwvcmVmL3Jl dm9rZS5zZ21sICAgICAgICAgICAgICAgICAgfCAgIDcgKwogZG9jL3NyYy9zZ21sL3JlZmVyZW5j ZS5zZ21sICAgICAgICAgICAgICAgICAgIHwgICAzICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvTWFr ZWZpbGUgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9jYXRhbG9nL2FjbGNo ay5jICAgICAgICAgICAgICAgICAgfCAgNzcgKysrKysrCiBzcmMvYmFja2VuZC9jYXRhbG9nL2Rl cGVuZGVuY3kuYyAgICAgICAgICAgICAgfCAgIDYgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9tZXNv bi5idWlsZCAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvbmFtZXNw YWNlLmMgICAgICAgICAgICAgICB8IDEzNSArKysrKysrKysrCiBzcmMvYmFja2VuZC9jYXRhbG9n L29iamVjdGFkZHJlc3MuYyAgICAgICAgICAgfCAxMjEgKysrKysrKystCiBzcmMvYmFja2VuZC9j YXRhbG9nL3BnX3NoZGVwZW5kLmMgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvY2F0 YWxvZy9wZ192YXJpYWJsZS5jICAgICAgICAgICAgIHwgMjU1ICsrKysrKysrKysrKysrKysrKwog c3JjL2JhY2tlbmQvY29tbWFuZHMvYWx0ZXIuYyAgICAgICAgICAgICAgICAgIHwgICA5ICsKIHNy Yy9iYWNrZW5kL2NvbW1hbmRzL2Ryb3BjbWRzLmMgICAgICAgICAgICAgICB8ICAgNCArCiBzcmMv YmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMgICAgICAgICAgfCAgIDQgKwogc3JjL2Jh Y2tlbmQvY29tbWFuZHMvc2VjbGFiZWwuYyAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNr ZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAgICAgICAgICB8ICA0MSArKysKIHNyYy9iYWNr ZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAgICAgICAgICAgICB8IDEwNSArKysrKysrLQogc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYyAgICAgICAgICAgIHwgIDEyICsKIHNyYy9i YWNrZW5kL3Rjb3AvdXRpbGl0eS5jICAgICAgICAgICAgICAgICAgICB8ICAxNiArKwogc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L2FjbC5jICAgICAgICAgICAgICAgICAgIHwgICA3ICsKIHNyYy9iYWNr ZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jICAgICAgICAgICB8IDExMyArKysrKysrKwogc3Jj L2Jpbi9wZ19kdW1wL2NvbW1vbi5jICAgICAgICAgICAgICAgICAgICAgIHwgICAzICsKIHNyYy9i aW4vcGdfZHVtcC9kdW1wdXRpbHMuYyAgICAgICAgICAgICAgICAgICB8ICAgNiArCiBzcmMvYmlu L3BnX2R1bXAvcGdfYmFja3VwLmggICAgICAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2Jpbi9w Z19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jICAgICAgICAgIHwgICA5ICsKIHNyYy9iaW4vcGdf ZHVtcC9wZ19kdW1wLmMgICAgICAgICAgICAgICAgICAgICB8IDE5NSArKysrKysrKysrKysrLQog c3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaCAgICAgICAgICAgICAgICAgICAgIHwgIDE5ICsrCiBz cmMvYmluL3BnX2R1bXAvcGdfZHVtcF9zb3J0LmMgICAgICAgICAgICAgICAgfCAgIDYgKwogc3Jj L2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwgICAgICAgICAgICAgIHwgIDY0ICsrKysrCiBz cmMvYmluL3BzcWwvY29tbWFuZC5jICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDMgKwogc3Jj L2Jpbi9wc3FsL2Rlc2NyaWJlLmMgICAgICAgICAgICAgICAgICAgICAgIHwgIDk2ICsrKysrKysK IHNyYy9iaW4vcHNxbC9kZXNjcmliZS5oICAgICAgICAgICAgICAgICAgICAgICB8ICAgMyArCiBz cmMvYmluL3BzcWwvaGVscC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3Jj L2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jICAgICAgICAgICAgICAgICAgIHwgIDQ0ICsrLQogc3Jj L2luY2x1ZGUvY2F0YWxvZy9NYWtlZmlsZSAgICAgICAgICAgICAgICAgIHwgICAzICstCiBzcmMv aW5jbHVkZS9jYXRhbG9nL21lc29uLmJ1aWxkICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2lu Y2x1ZGUvY2F0YWxvZy9uYW1lc3BhY2UuaCAgICAgICAgICAgICAgIHwgICA0ICsKIHNyYy9pbmNs dWRlL2NhdGFsb2cvcGdfZGVmYXVsdF9hY2wuaCAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgICAgICAgfCAgIDMgKwogc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ192YXJpYWJsZS5oICAgICAgICAgICAgIHwgIDgxICsrKysrKwogc3JjL2luY2x1 ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oICAgICAgICAgICAgICAgIHwgIDE2ICsrCiBzcmMvaW5jbHVk ZS9wYXJzZXIva3dsaXN0LmggICAgICAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2luY2x1ZGUv dGNvcC9jbWR0YWdsaXN0LmggICAgICAgICAgICAgICAgIHwgICAzICsKIHNyYy9pbmNsdWRlL3V0 aWxzL2FjbC5oICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS91dGls cy9sc3lzY2FjaGUuaCAgICAgICAgICAgICAgICAgfCAgIDkgKwogc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9kZXBlbmRlbmN5Lm91dCAgICAgIHwgIDE3ICsrCiBzcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL29pZGpvaW5zLm91dCAgICAgICAgfCAgIDQgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9wc3FsLm91dCAgICAgICAgICAgIHwgIDUwICsrKysKIC4uLi9yZWdyZXNzL2V4cGVjdGVk L3Nlc3Npb25fdmFyaWFibGVzLm91dCAgICB8ICA1NyArKysrCiBzcmMvdGVzdC9yZWdyZXNzL3Bh cmFsbGVsX3NjaGVkdWxlICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L2RlcGVuZGVuY3kuc3FsICAgICAgICAgICB8ICAxNCArCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9w c3FsLnNxbCAgICAgICAgICAgICAgICAgfCAgMjEgKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Nl c3Npb25fdmFyaWFibGVzLnNxbCAgICB8ICA2MSArKysrKwogc3JjL3Rvb2xzL3BnaW5kZW50L3R5 cGVkZWZzLmxpc3QgICAgICAgICAgICAgIHwgICA0ICsKIDY2IGZpbGVzIGNoYW5nZWQsIDIzOTAg aW5zZXJ0aW9ucygrKSwgMjcgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZG9jL3Ny Yy9zZ21sL3JlZi9hbHRlcl92YXJpYWJsZS5zZ21sCiBjcmVhdGUgbW9kZSAxMDA2NDQgZG9jL3Ny Yy9zZ21sL3JlZi9jcmVhdGVfdmFyaWFibGUuc2dtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IGRvYy9z cmMvc2dtbC9yZWYvZHJvcF92YXJpYWJsZS5zZ21sCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2Jh Y2tlbmQvY2F0YWxvZy9wZ192YXJpYWJsZS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ192YXJpYWJsZS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9zZXNzaW9uX3ZhcmlhYmxlcy5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmMvdGVzdC9yZWdyZXNzL3NxbC9zZXNzaW9uX3ZhcmlhYmxlcy5zcWwKCmRpZmYgLS1naXQgYS9k b2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCmlu ZGV4IGI2NTRmYWUxYjIuLmRlMTIyZTU0M2YgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jYXRh bG9ncy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCkBAIC0zNjksNiArMzY5 LDExIEBACiAgICAgICA8ZW50cnk+PGxpbmsgbGlua2VuZD0iY2F0YWxvZy1wZy11c2VyLW1hcHBp bmciPjxzdHJ1Y3RuYW1lPnBnX3VzZXJfbWFwcGluZzwvc3RydWN0bmFtZT48L2xpbms+PC9lbnRy eT4KICAgICAgIDxlbnRyeT5tYXBwaW5ncyBvZiB1c2VycyB0byBmb3JlaWduIHNlcnZlcnM8L2Vu dHJ5PgogICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5PjxsaW5rIGxpbmtl bmQ9ImNhdGFsb2ctcGctdmFyaWFibGUiPjxzdHJ1Y3RuYW1lPnBnX3ZhcmlhYmxlPC9zdHJ1Y3Ru YW1lPjwvbGluaz48L2VudHJ5PgorICAgICAgPGVudHJ5PnNlc3Npb24gdmFyaWFibGVzPC9lbnRy eT4KKyAgICAgPC9yb3c+CiAgICAgPC90Ym9keT4KICAgIDwvdGdyb3VwPgogICA8L3RhYmxlPgpA QCAtOTcyNiw0ICs5NzMxLDExOSBAQCBTQ1JBTS1TSEEtMjU2JDxyZXBsYWNlYWJsZT4mbHQ7aXRl cmF0aW9uIGNvdW50Jmd0OzwvcmVwbGFjZWFibGU+OjxyZXBsYWNlYWJsZT4mbAogICA8L3RhYmxl PgogIDwvc2VjdDE+CiAKKyA8c2VjdDEgaWQ9ImNhdGFsb2ctcGctdmFyaWFibGUiPgorICA8dGl0 bGU+PHN0cnVjdG5hbWU+cGdfdmFyaWFibGU8L3N0cnVjdG5hbWU+PC90aXRsZT4KKworICA8aW5k ZXh0ZXJtIHpvbmU9ImNhdGFsb2ctcGctdmFyaWFibGUiPgorICAgPHByaW1hcnk+cGdfdmFyaWFi bGU8L3ByaW1hcnk+CisgIDwvaW5kZXh0ZXJtPgorCisgIDxwYXJhPgorICAgVGhlIGNhdGFsb2cg PHN0cnVjdG5hbWU+cGdfdmFyaWFibGU8L3N0cnVjdG5hbWU+IHN0b3JlcyBpbmZvcm1hdGlvbiBh Ym91dAorICAgc2Vzc2lvbiB2YXJpYWJsZXMuCisgIDwvcGFyYT4KKworICA8dGFibGU+CisgICA8 dGl0bGU+PHN0cnVjdG5hbWU+cGdfdmFyaWFibGU8L3N0cnVjdG5hbWU+IENvbHVtbnM8L3RpdGxl PgorICAgPHRncm91cCBjb2xzPSIxIj4KKyAgICA8dGhlYWQ+CisgICAgIDxyb3c+CisgICAgICA8 ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmlu aXRpb24iPgorICAgICAgIENvbHVtbiBUeXBlCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4K KyAgICAgICBEZXNjcmlwdGlvbgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93Pgor ICAgIDwvdGhlYWQ+CisKKyAgICA8dGJvZHk+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9s ZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgor ICAgICAgIDxzdHJ1Y3RmaWVsZD5vaWQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5vaWQ8L3R5cGU+Cisg ICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBSb3cgaWRlbnRpZmllcgorICAgICAg PC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkg cm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24i PgorICAgICAgIDxzdHJ1Y3RmaWVsZD52YXJ0eXBlPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+b2lkPC90 eXBlPgorICAgICAgIChyZWZlcmVuY2VzIDxsaW5rIGxpbmtlbmQ9ImNhdGFsb2ctcGctdHlwZSI+ PHN0cnVjdG5hbWU+cGdfdHlwZTwvc3RydWN0bmFtZT48L2xpbms+LjxzdHJ1Y3RmaWVsZD5vaWQ8 L3N0cnVjdGZpZWxkPikKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRoZSBP SUQgb2YgdGhlIHZhcmlhYmxlJ3MgZGF0YSB0eXBlCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAg ICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxl X2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZp ZWxkPnZhcm5hbWU8L3N0cnVjdGZpZWxkPiA8dHlwZT5uYW1lPC90eXBlPgorICAgICAgPC9wYXJh PgorICAgICAgPHBhcmE+CisgICAgICAgTmFtZSBvZiB0aGUgc2Vzc2lvbiB2YXJpYWJsZQorICAg ICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50 cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRp b24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD52YXJuYW1lc3BhY2U8L3N0cnVjdGZpZWxkPiA8dHlw ZT5vaWQ8L3R5cGU+CisgICAgICAgKHJlZmVyZW5jZXMgPGxpbmsgbGlua2VuZD0iY2F0YWxvZy1w Zy1uYW1lc3BhY2UiPjxzdHJ1Y3RuYW1lPnBnX25hbWVzcGFjZTwvc3RydWN0bmFtZT48L2xpbms+ LjxzdHJ1Y3RmaWVsZD5vaWQ8L3N0cnVjdGZpZWxkPikKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxw YXJhPgorICAgICAgIFRoZSBPSUQgb2YgdGhlIG5hbWVzcGFjZSB0aGF0IGNvbnRhaW5zIHRoaXMg dmFyaWFibGUKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93 PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNv bHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+dmFyb3duZXI8L3N0cnVjdGZp ZWxkPiA8dHlwZT5vaWQ8L3R5cGU+CisgICAgICAgKHJlZmVyZW5jZXMgPGxpbmsgbGlua2VuZD0i Y2F0YWxvZy1wZy1hdXRoaWQiPjxzdHJ1Y3RuYW1lPnBnX2F1dGhpZDwvc3RydWN0bmFtZT48L2xp bms+LjxzdHJ1Y3RmaWVsZD5vaWQ8L3N0cnVjdGZpZWxkPikKKyAgICAgIDwvcGFyYT4KKyAgICAg IDxwYXJhPgorICAgICAgIE93bmVyIG9mIHRoZSB2YXJpYWJsZQorICAgICAgPC9wYXJhPjwvZW50 cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxv Z190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxz dHJ1Y3RmaWVsZD52YXJ0eXBtb2Q8L3N0cnVjdGZpZWxkPiA8dHlwZT5pbnQ0PC90eXBlPgorICAg ICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgPHN0cnVjdGZpZWxkPnZhcnR5cG1vZDwv c3RydWN0ZmllbGQ+IHJlY29yZHMgdHlwZS1zcGVjaWZpYyBkYXRhCisgICAgICAgc3VwcGxpZWQg YXQgdmFyaWFibGUgY3JlYXRpb24gdGltZSAoZm9yIGV4YW1wbGUsIHRoZSBtYXhpbXVtCisgICAg ICAgbGVuZ3RoIG9mIGEgPHR5cGU+dmFyY2hhcjwvdHlwZT4gY29sdW1uKS4gIEl0IGlzIHBhc3Nl ZCB0bworICAgICAgIHR5cGUtc3BlY2lmaWMgaW5wdXQgZnVuY3Rpb25zIGFuZCBsZW5ndGggY29l cmNpb24gZnVuY3Rpb25zLgorICAgICAgIFRoZSB2YWx1ZSB3aWxsIGdlbmVyYWxseSBiZSAtMSBm b3IgdHlwZXMgdGhhdCBkbyBub3QgbmVlZCA8c3RydWN0ZmllbGQ+dmFydHlwbW9kPC9zdHJ1Y3Rm aWVsZD4uCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4K KyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1 bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnZhcmNvbGxhdGlvbjwvc3RydWN0 ZmllbGQ+IDx0eXBlPm9pZDwvdHlwZT4KKyAgICAgICAocmVmZXJlbmNlcyA8bGluayBsaW5rZW5k PSJjYXRhbG9nLXBnLWNvbGxhdGlvbiI+PHN0cnVjdG5hbWU+cGdfY29sbGF0aW9uPC9zdHJ1Y3Ru YW1lPjwvbGluaz4uPHN0cnVjdGZpZWxkPm9pZDwvc3RydWN0ZmllbGQ+KQorICAgICAgPC9wYXJh PgorICAgICAgPHBhcmE+CisgICAgICAgVGhlIGRlZmluZWQgY29sbGF0aW9uIG9mIHRoZSB2YXJp YWJsZSwgb3IgemVybyBpZiB0aGUgdmFyaWFibGUgaXMKKyAgICAgICBub3Qgb2YgYSBjb2xsYXRh YmxlIGRhdGEgdHlwZS4KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAg ICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJv bGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+dmFyYWNsPC9zdHJ1 Y3RmaWVsZD4gPHR5cGU+YWNsaXRlbVtdPC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBh cmE+CisgICAgICAgQWNjZXNzIHByaXZpbGVnZXM7IHNlZQorICAgICAgIDx4cmVmIGxpbmtlbmQ9 InNxbC1ncmFudCIvPiBhbmQKKyAgICAgICA8eHJlZiBsaW5rZW5kPSJzcWwtcmV2b2tlIi8+Cisg ICAgICAgZm9yIGRldGFpbHMKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKwor ICAgIDwvdGJvZHk+CisgICA8L3Rncm91cD4KKyAgPC90YWJsZT4KKyA8L3NlY3QxPgogPC9jaGFw dGVyPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2RkbC5zZ21sIGIvZG9jL3NyYy9zZ21sL2Rk bC5zZ21sCmluZGV4IDYyNmQzNTUxNGMuLjc1MzFkZTE3ZmQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC9kZGwuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvZGRsLnNnbWwKQEAgLTUyOTgsNiArNTI5 OCwzNyBAQCBFWFBMQUlOIFNFTEVDVCBjb3VudCgqKSBGUk9NIG1lYXN1cmVtZW50IFdIRVJFIGxv Z2RhdGUgJmd0Oz0gREFURSAnMjAwOC0wMS0wMSc7CiAgICA8L3BhcmE+CiAgPC9zZWN0MT4KIAor ICA8c2VjdDEgaWQ9ImRkbC1zZXNzaW9uLXZhcmlhYmxlcyI+CisgICA8dGl0bGU+U2Vzc2lvbiBW YXJpYWJsZXM8L3RpdGxlPgorCisgICA8aW5kZXh0ZXJtIHpvbmU9ImRkbC1zZXNzaW9uLXZhcmlh YmxlcyI+CisgICAgPHByaW1hcnk+U2Vzc2lvbiB2YXJpYWJsZXM8L3ByaW1hcnk+CisgICA8L2lu ZGV4dGVybT4KKworICAgPGluZGV4dGVybT4KKyAgICA8cHJpbWFyeT5zZXNzaW9uIHZhcmlhYmxl PC9wcmltYXJ5PgorICAgPC9pbmRleHRlcm0+CisKKyAgIDxwYXJhPgorICAgIFNlc3Npb24gdmFy aWFibGVzIGFyZSBkYXRhYmFzZSBvYmplY3RzIHRoYXQgY2FuIGhvbGQgYSB2YWx1ZS4KKyAgICBT ZXNzaW9uIHZhcmlhYmxlcywgbGlrZSByZWxhdGlvbnMsIGV4aXN0IHdpdGhpbiBhIHNjaGVtYSBh bmQgdGhlaXIgYWNjZXNzCisgICAgaXMgY29udHJvbGxlZCB2aWEgPGNvbW1hbmQ+R1JBTlQ8L2Nv bW1hbmQ+IGFuZCA8Y29tbWFuZD5SRVZPS0U8L2NvbW1hbmQ+CisgICAgY29tbWFuZHMuICBBIHNl c3Npb24gdmFyaWFibGUgY2FuIGJlIGNyZWF0ZWQgYnkgdGhlIDxjb21tYW5kPkNSRUFURQorICAg IFZBUklBQkxFPC9jb21tYW5kPiBjb21tYW5kLgorICAgPC9wYXJhPgorCisgICA8cGFyYT4KKyAg ICBJbnNpZGUgYSBxdWVyeSBvciBhbiBleHByZXNzaW9uLCBhIHNlc3Npb24gdmFyaWFibGUgY2Fu IGJlCisgICAgPHF1b3RlPnNoYWRvd2VkPC9xdW90ZT4gYnkgYSBjb2x1bW4gd2l0aCB0aGUgc2Ft ZSBuYW1lLiAgU2ltaWxhcmx5LCB0aGUKKyAgICBuYW1lIG9mIGEgZnVuY3Rpb24gb3IgcHJvY2Vk dXJlIGFyZ3VtZW50IG9yIGEgUEwvcGdTUUwgdmFyaWFibGUgKHNlZQorICAgIDx4cmVmIGxpbmtl bmQ9InBscGdzcWwtZGVjbGFyYXRpb25zIi8+KSBjYW4gc2hhZG93IGEgc2Vzc2lvbiB2YXJpYWJs ZQorICAgIGluIHRoZSByb3V0aW5lJ3MgYm9keS4gIFN1Y2ggY29sbGlzaW9ucyBvZiBpZGVudGlm aWVycyBjYW4gYmUgcmVzb2x2ZWQKKyAgICBieSB1c2luZyBxdWFsaWZpZWQgaWRlbnRpZmllcnM6 IFNlc3Npb24gdmFyaWFibGVzIGNhbiBiZSBxdWFsaWZpZWQgd2l0aAorICAgIHRoZSBzY2hlbWEg bmFtZSwgY29sdW1ucyBjYW4gdXNlIHRhYmxlIGFsaWFzZXMsIHJvdXRpbmUgdmFyaWFibGVzIGNh biB1c2UKKyAgICBibG9jayBsYWJlbHMsIGFuZCByb3V0aW5lIGFyZ3VtZW50cyBjYW4gdXNlIHRo ZSByb3V0aW5lIG5hbWUuCisgICA8L3BhcmE+CisgIDwvc2VjdDE+CisKICA8c2VjdDEgaWQ9ImRk bC1vdGhlcnMiPgogICA8dGl0bGU+T3RoZXIgRGF0YWJhc2UgT2JqZWN0czwvdGl0bGU+CiAKZGlm ZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9ldmVudC10cmlnZ2VyLnNnbWwgYi9kb2Mvc3JjL3NnbWwv ZXZlbnQtdHJpZ2dlci5zZ21sCmluZGV4IDhlMDA5Y2NhMDUuLjE1YjJhZjk5ZGMgMTAwNjQ0Ci0t LSBhL2RvYy9zcmMvc2dtbC9ldmVudC10cmlnZ2VyLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2V2 ZW50LXRyaWdnZXIuc2dtbApAQCAtNDI0LDYgKzQyNCwxNCBAQAogICAgICAgICA8ZW50cnkgYWxp Z249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50cnkg YWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAg ICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5BTFRFUiBWQVJJQUJMRTwvbGl0ZXJhbD48 L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJh bD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0 ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwv bGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+ LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+ CisgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0 Ij48bGl0ZXJhbD5BTFRFUiBWSUVXPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBh bGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+CkBAIC03MTIsNiArNzIw LDE0IEBACiAgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFs PjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8 L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFs PkNSRUFURSBWQVJJQUJMRTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249 ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxp Z249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkg YWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50 cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8 ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4K ICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5DUkVBVEUgVklFVzwvbGl0ZXJh bD48L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0 ZXJhbD48L2VudHJ5PgpAQCAtMTAwMCw2ICsxMDE2LDE0IEBACiAgICAgICAgIDxlbnRyeSBhbGln bj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBh bGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAg ICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkRST1AgVkFSSUFCTEU8L2xpdGVyYWw+PC9l bnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+ PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVy YWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xp dGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08 L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5Pgor ICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+ PGxpdGVyYWw+RFJPUCBWSUVXPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGln bj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+CmRpZmYgLS1naXQgYS9kb2Mv c3JjL3NnbWwvZnVuYy5zZ21sIGIvZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbAppbmRleCBiMzlmOTdk YzhkLi5jM2M0ZmJiM2Q5IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvZnVuYy5zZ21sCisrKyBi L2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwKQEAgLTI1NjQ3LDYgKzI1NjQ3LDE5IEBAIFNFTEVDVCBy ZWxuYW1lIEZST00gcGdfY2xhc3MgV0hFUkUgcGdfdGFibGVfaXNfdmlzaWJsZShvaWQpOwogICAg ICAgICBJcyB0eXBlIChvciBkb21haW4pIHZpc2libGUgaW4gc2VhcmNoIHBhdGg/CiAgICAgICAg PC9wYXJhPjwvZW50cnk+CiAgICAgICA8L3Jvdz4KKworICAgICAgPHJvdz4KKyAgICAgICA8ZW50 cnkgcm9sZT0iZnVuY190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iZnVuY19zaWduYXR1cmUiPgor ICAgICAgICA8aW5kZXh0ZXJtPgorICAgICAgICAgPHByaW1hcnk+cGdfdmFyaWFibGVfaXNfdmlz aWJsZTwvcHJpbWFyeT4KKyAgICAgICAgPC9pbmRleHRlcm0+CisgICAgICAgIDxmdW5jdGlvbj5w Z192YXJpYWJsZV9pc192aXNpYmxlPC9mdW5jdGlvbj4gKCA8cGFyYW1ldGVyPnZhcmlhYmxlPC9w YXJhbWV0ZXI+IDx0eXBlPm9pZDwvdHlwZT4gKQorICAgICAgICA8cmV0dXJudmFsdWU+Ym9vbGVh bjwvcmV0dXJudmFsdWU+CisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAgICBJ cyBzZXNzaW9uIHZhcmlhYmxlIHZpc2libGUgaW4gc2VhcmNoIHBhdGg/CisgICAgICAgPC9wYXJh PjwvZW50cnk+CisgICAgICA8L3Jvdz4KICAgICAgPC90Ym9keT4KICAgICA8L3Rncm91cD4KICAg IDwvdGFibGU+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZ2xvc3Nhcnkuc2dtbCBiL2RvYy9z cmMvc2dtbC9nbG9zc2FyeS5zZ21sCmluZGV4IDQwNWZlNmRjOGIuLmQ1ZjRiY2M2ZTAgMTAwNjQ0 Ci0tLSBhL2RvYy9zcmMvc2dtbC9nbG9zc2FyeS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9nbG9z c2FyeS5zZ21sCkBAIC0xNjU0LDYgKzE2NTQsMjEgQEAKICAgIDwvZ2xvc3NkZWY+CiAgIDwvZ2xv c3NlbnRyeT4KIAorICA8Z2xvc3NlbnRyeSBpZD0iZ2xvc3Nhcnktc2Vzc2lvbi12YXJpYWJsZSI+ CisgICA8Z2xvc3N0ZXJtPlNlc3Npb24gdmFyaWFibGU8L2dsb3NzdGVybT4KKyAgIDxnbG9zc2Rl Zj4KKyAgICA8cGFyYT4KKyAgICAgQSBwZXJzaXN0ZW50IGRhdGFiYXNlIG9iamVjdCB0aGF0IGhv bGRzIGEgdmFsdWUgaW4gc2Vzc2lvbiBtZW1vcnkuICBUaGlzCisgICAgIHZhbHVlIGlzIHByaXZh dGUgdG8gZWFjaCBzZXNzaW9uIGFuZCBpcyByZWxlYXNlZCB3aGVuIHRoZSBzZXNzaW9uIGVuZHMu CisgICAgIFJlYWQgb3Igd3JpdGUgYWNjZXNzIHRvIHNlc3Npb24gdmFyaWFibGVzIGlzIGNvbnRy b2xsZWQgYnkgcHJpdmlsZWdlcywKKyAgICAgc2ltaWxhciB0byBvdGhlciBkYXRhYmFzZSBvYmpl Y3RzLgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24s IHNlZSA8eHJlZiBsaW5rZW5kPSJkZGwtc2Vzc2lvbi12YXJpYWJsZXMiLz4uCisgICAgPC9wYXJh PgorICAgPC9nbG9zc2RlZj4KKyAgPC9nbG9zc2VudHJ5PgorCiAgIDxnbG9zc2VudHJ5IGlkPSJn bG9zc2FyeS1zaGFyZWQtbWVtb3J5Ij4KICAgIDxnbG9zc3Rlcm0+U2hhcmVkIG1lbW9yeTwvZ2xv c3N0ZXJtPgogICAgPGdsb3NzZGVmPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9hbGxm aWxlcy5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9hbGxmaWxlcy5zZ21sCmluZGV4IGY1YmU2Mzg4 NjcuLjJmNjdkZTNlMjEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvYWxsZmlsZXMuc2dt bAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsbGZpbGVzLnNnbWwKQEAgLTQ3LDYgKzQ3LDcgQEAg Q29tcGxldGUgbGlzdCBvZiB1c2FibGUgc2dtbCBzb3VyY2UgZmlsZXMgaW4gdGhpcyBkaXJlY3Rv cnkuCiA8IUVOVElUWSBhbHRlclR5cGUgICAgICAgICAgU1lTVEVNICJhbHRlcl90eXBlLnNnbWwi PgogPCFFTlRJVFkgYWx0ZXJVc2VyICAgICAgICAgIFNZU1RFTSAiYWx0ZXJfdXNlci5zZ21sIj4K IDwhRU5USVRZIGFsdGVyVXNlck1hcHBpbmcgICBTWVNURU0gImFsdGVyX3VzZXJfbWFwcGluZy5z Z21sIj4KKzwhRU5USVRZIGFsdGVyVmFyaWFibGUgICAgICBTWVNURU0gImFsdGVyX3ZhcmlhYmxl LnNnbWwiPgogPCFFTlRJVFkgYWx0ZXJWaWV3ICAgICAgICAgIFNZU1RFTSAiYWx0ZXJfdmlldy5z Z21sIj4KIDwhRU5USVRZIGFuYWx5emUgICAgICAgICAgICBTWVNURU0gImFuYWx5emUuc2dtbCI+ CiA8IUVOVElUWSBiZWdpbiAgICAgICAgICAgICAgU1lTVEVNICJiZWdpbi5zZ21sIj4KQEAgLTk5 LDYgKzEwMCw3IEBAIENvbXBsZXRlIGxpc3Qgb2YgdXNhYmxlIHNnbWwgc291cmNlIGZpbGVzIGlu IHRoaXMgZGlyZWN0b3J5LgogPCFFTlRJVFkgY3JlYXRlVHlwZSAgICAgICAgIFNZU1RFTSAiY3Jl YXRlX3R5cGUuc2dtbCI+CiA8IUVOVElUWSBjcmVhdGVVc2VyICAgICAgICAgU1lTVEVNICJjcmVh dGVfdXNlci5zZ21sIj4KIDwhRU5USVRZIGNyZWF0ZVVzZXJNYXBwaW5nICBTWVNURU0gImNyZWF0 ZV91c2VyX21hcHBpbmcuc2dtbCI+Cis8IUVOVElUWSBjcmVhdGVWYXJpYWJsZSAgICAgU1lTVEVN ICJjcmVhdGVfdmFyaWFibGUuc2dtbCI+CiA8IUVOVElUWSBjcmVhdGVWaWV3ICAgICAgICAgU1lT VEVNICJjcmVhdGVfdmlldy5zZ21sIj4KIDwhRU5USVRZIGRlYWxsb2NhdGUgICAgICAgICBTWVNU RU0gImRlYWxsb2NhdGUuc2dtbCI+CiA8IUVOVElUWSBkZWNsYXJlICAgICAgICAgICAgU1lTVEVN ICJkZWNsYXJlLnNnbWwiPgpAQCAtMTQ3LDYgKzE0OSw3IEBAIENvbXBsZXRlIGxpc3Qgb2YgdXNh YmxlIHNnbWwgc291cmNlIGZpbGVzIGluIHRoaXMgZGlyZWN0b3J5LgogPCFFTlRJVFkgZHJvcFR5 cGUgICAgICAgICAgIFNZU1RFTSAiZHJvcF90eXBlLnNnbWwiPgogPCFFTlRJVFkgZHJvcFVzZXIg ICAgICAgICAgIFNZU1RFTSAiZHJvcF91c2VyLnNnbWwiPgogPCFFTlRJVFkgZHJvcFVzZXJNYXBw aW5nICAgIFNZU1RFTSAiZHJvcF91c2VyX21hcHBpbmcuc2dtbCI+Cis8IUVOVElUWSBkcm9wVmFy aWFibGUgICAgICAgU1lTVEVNICJkcm9wX3ZhcmlhYmxlLnNnbWwiPgogPCFFTlRJVFkgZHJvcFZp ZXcgICAgICAgICAgIFNZU1RFTSAiZHJvcF92aWV3LnNnbWwiPgogPCFFTlRJVFkgZW5kICAgICAg ICAgICAgICAgIFNZU1RFTSAiZW5kLnNnbWwiPgogPCFFTlRJVFkgZXhlY3V0ZSAgICAgICAgICAg IFNZU1RFTSAiZXhlY3V0ZS5zZ21sIj4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0 ZXJfZGVmYXVsdF9wcml2aWxlZ2VzLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX2RlZmF1 bHRfcHJpdmlsZWdlcy5zZ21sCmluZGV4IDg5YWFjZWM0ZmEuLjA0MWM3OGQ0MzIgMTAwNjQ0Ci0t LSBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfZGVmYXVsdF9wcml2aWxlZ2VzLnNnbWwKKysrIGIv ZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9kZWZhdWx0X3ByaXZpbGVnZXMuc2dtbApAQCAtNTEsNiAr NTEsMTAgQEAgR1JBTlQgeyB7IFVTQUdFIHwgQ1JFQVRFIH0KICAgICBPTiBTQ0hFTUFTCiAgICAg VE8geyBbIEdST1VQIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJvbGVfbmFtZTwv cmVwbGFjZWFibGU+IHwgUFVCTElDIH0gWywgLi4uXSBbIFdJVEggR1JBTlQgT1BUSU9OIF0KIAor R1JBTlQgeyBTRUxFQ1QgfCBVUERBVEUgfCBBTEwgWyBQUklWSUxFR0VTIF0gfQorICAgIE9OIFZB UklBQkxFUworICAgIFRPIHsgWyBHUk9VUCBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5yb2xlX25hbWU8L3JlcGxhY2VhYmxlPiB8IFBVQkxJQyB9IFssIC4uLl0gWyBXSVRIIEdSQU5U IE9QVElPTiBdCisKIFJFVk9LRSBbIEdSQU5UIE9QVElPTiBGT1IgXQogICAgIHsgeyBTRUxFQ1Qg fCBJTlNFUlQgfCBVUERBVEUgfCBERUxFVEUgfCBUUlVOQ0FURSB8IFJFRkVSRU5DRVMgfCBUUklH R0VSIHwgTUFJTlRBSU4gfQogICAgIFssIC4uLl0gfCBBTEwgWyBQUklWSUxFR0VTIF0gfQpAQCAt ODMsNiArODcsMTIgQEAgUkVWT0tFIFsgR1JBTlQgT1BUSU9OIEZPUiBdCiAgICAgT04gU0NIRU1B UwogICAgIEZST00geyBbIEdST1VQIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJv bGVfbmFtZTwvcmVwbGFjZWFibGU+IHwgUFVCTElDIH0gWywgLi4uXQogICAgIFsgQ0FTQ0FERSB8 IFJFU1RSSUNUIF0KKworUkVWT0tFIFsgR1JBTlQgT1BUSU9OIEZPUiBdCisgICAgeyB7IFNFTEVD VCB8IFVQREFURSB9IFssIC4uLl0gfCBBTEwgWyBQUklWSUxFR0VTIF0gfQorICAgIE9OIFZBUklB QkxFUworICAgIEZST00geyBbIEdST1VQIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnJvbGVfbmFtZTwvcmVwbGFjZWFibGU+IHwgUFVCTElDIH0gWywgLi4uXQorICAgIFsgQ0FTQ0FE RSB8IFJFU1RSSUNUIF0KIDwvc3lub3BzaXM+CiAgPC9yZWZzeW5vcHNpc2Rpdj4KIApAQCAtMTE3 LDE0ICsxMjcsMTQgQEAgUkVWT0tFIFsgR1JBTlQgT1BUSU9OIEZPUiBdCiAgIDxwYXJhPgogICAg Q3VycmVudGx5LAogICAgb25seSB0aGUgcHJpdmlsZWdlcyBmb3Igc2NoZW1hcywgdGFibGVzIChp bmNsdWRpbmcgdmlld3MgYW5kIGZvcmVpZ24KLSAgIHRhYmxlcyksIHNlcXVlbmNlcywgZnVuY3Rp b25zLCBhbmQgdHlwZXMgKGluY2x1ZGluZyBkb21haW5zKSBjYW4gYmUKLSAgIGFsdGVyZWQuICBG b3IgdGhpcyBjb21tYW5kLCBmdW5jdGlvbnMgaW5jbHVkZSBhZ2dyZWdhdGVzIGFuZCBwcm9jZWR1 cmVzLgotICAgVGhlIHdvcmRzIDxsaXRlcmFsPkZVTkNUSU9OUzwvbGl0ZXJhbD4gYW5kIDxsaXRl cmFsPlJPVVRJTkVTPC9saXRlcmFsPiBhcmUKLSAgIGVxdWl2YWxlbnQgaW4gdGhpcyBjb21tYW5k LiAgKDxsaXRlcmFsPlJPVVRJTkVTPC9saXRlcmFsPiBpcyBwcmVmZXJyZWQKLSAgIGdvaW5nIGZv cndhcmQgYXMgdGhlIHN0YW5kYXJkIHRlcm0gZm9yIGZ1bmN0aW9ucyBhbmQgcHJvY2VkdXJlcyB0 YWtlbgotICAgdG9nZXRoZXIuICBJbiBlYXJsaWVyIFBvc3RncmVTUUwgcmVsZWFzZXMsIG9ubHkg dGhlCi0gICB3b3JkIDxsaXRlcmFsPkZVTkNUSU9OUzwvbGl0ZXJhbD4gd2FzIGFsbG93ZWQuICBJ dCBpcyBub3QgcG9zc2libGUgdG8gc2V0Ci0gICBkZWZhdWx0IHByaXZpbGVnZXMgZm9yIGZ1bmN0 aW9ucyBhbmQgcHJvY2VkdXJlcyBzZXBhcmF0ZWx5LikKKyAgIHRhYmxlcyksIHNlcXVlbmNlcywg ZnVuY3Rpb25zLCB0eXBlcyAoaW5jbHVkaW5nIGRvbWFpbnMpLCBhbmQgc2Vzc2lvbgorICAgdmFy aWFibGVzIGNhbiBiZSBhbHRlcmVkLiAgRm9yIHRoaXMgY29tbWFuZCwgZnVuY3Rpb25zIGluY2x1 ZGUgYWdncmVnYXRlcworICAgYW5kIHByb2NlZHVyZXMuICBUaGUgd29yZHMgPGxpdGVyYWw+RlVO Q1RJT05TPC9saXRlcmFsPiBhbmQKKyAgIDxsaXRlcmFsPlJPVVRJTkVTPC9saXRlcmFsPiBhcmUg ZXF1aXZhbGVudCBpbiB0aGlzIGNvbW1hbmQuCisgICAoPGxpdGVyYWw+Uk9VVElORVM8L2xpdGVy YWw+IGlzIHByZWZlcnJlZCBnb2luZyBmb3J3YXJkIGFzIHRoZSBzdGFuZGFyZAorICAgdGVybSBm b3IgZnVuY3Rpb25zIGFuZCBwcm9jZWR1cmVzIHRha2VuIHRvZ2V0aGVyLiAgSW4gZWFybGllciBQ b3N0Z3JlU1FMCisgICByZWxlYXNlcywgb25seSB0aGUgd29yZCA8bGl0ZXJhbD5GVU5DVElPTlM8 L2xpdGVyYWw+IHdhcyBhbGxvd2VkLiAgSXQgaXMgbm90CisgICBwb3NzaWJsZSB0byBzZXQgZGVm YXVsdCBwcml2aWxlZ2VzIGZvciBmdW5jdGlvbnMgYW5kIHByb2NlZHVyZXMgc2VwYXJhdGVseS4p CiAgIDwvcGFyYT4KIAogICA8cGFyYT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0 ZXJfdmFyaWFibGUuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdmFyaWFibGUuc2dtbApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5kODc1NzBlN2Q4Ci0tLSAvZGV2 L251bGwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl92YXJpYWJsZS5zZ21sCkBAIC0wLDAg KzEsMTc4IEBACis8IS0tCitkb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3ZhcmlhYmxlLnNnbWwKK1Bv c3RncmVTUUwgZG9jdW1lbnRhdGlvbgorLS0+CisKKzxyZWZlbnRyeSBpZD0ic3FsLWFsdGVydmFy aWFibGUiPgorIDxpbmRleHRlcm0gem9uZT0ic3FsLWFsdGVydmFyaWFibGUiPgorICA8cHJpbWFy eT5BTFRFUiBWQVJJQUJMRTwvcHJpbWFyeT4KKyA8L2luZGV4dGVybT4KKworIDxpbmRleHRlcm0+ CisgIDxwcmltYXJ5PnNlc3Npb24gdmFyaWFibGU8L3ByaW1hcnk+CisgIDxzZWNvbmRhcnk+YWx0 ZXJpbmc8L3NlY29uZGFyeT4KKyA8L2luZGV4dGVybT4KKworIDxyZWZtZXRhPgorICA8cmVmZW50 cnl0aXRsZT5BTFRFUiBWQVJJQUJMRTwvcmVmZW50cnl0aXRsZT4KKyAgPG1hbnZvbG51bT43PC9t YW52b2xudW0+CisgIDxyZWZtaXNjaW5mbz5TUUwgLSBMYW5ndWFnZSBTdGF0ZW1lbnRzPC9yZWZt aXNjaW5mbz4KKyA8L3JlZm1ldGE+CisKKyA8cmVmbmFtZWRpdj4KKyAgPHJlZm5hbWU+QUxURVIg VkFSSUFCTEU8L3JlZm5hbWU+CisgIDxyZWZwdXJwb3NlPgorICAgY2hhbmdlIHRoZSBkZWZpbml0 aW9uIG9mIGEgc2Vzc2lvbiB2YXJpYWJsZQorICA8L3JlZnB1cnBvc2U+CisgPC9yZWZuYW1lZGl2 PgorCisgPHJlZnN5bm9wc2lzZGl2PgorPHN5bm9wc2lzPgorQUxURVIgVkFSSUFCTEUgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBPV05FUiBUTyB7IDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uZXdfb3duZXI8L3JlcGxhY2VhYmxlPiB8IENV UlJFTlRfUk9MRSB8IENVUlJFTlRfVVNFUiB8IFNFU1NJT05fVVNFUiB9CitBTFRFUiBWQVJJQUJM RSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFJFTkFN RSBUTyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmV3X25hbWU8L3JlcGxhY2VhYmxl PgorQUxURVIgVkFSSUFCTEUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3Jl cGxhY2VhYmxlPiBTRVQgU0NIRU1BIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uZXdf c2NoZW1hPC9yZXBsYWNlYWJsZT4KKzwvc3lub3BzaXM+CisgPC9yZWZzeW5vcHNpc2Rpdj4KKwor IDxyZWZzZWN0MT4KKyAgPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4KKworICA8cGFyYT4KKyAg IFRoZSA8Y29tbWFuZD5BTFRFUiBWQVJJQUJMRTwvY29tbWFuZD4gY29tbWFuZCBjaGFuZ2VzIHRo ZSBkZWZpbml0aW9uIG9mIGFuCisgICBleGlzdGluZyBzZXNzaW9uIHZhcmlhYmxlLiBUaGVyZSBh cmUgc2V2ZXJhbCBzdWJmb3JtczoKKworICA8dmFyaWFibGVsaXN0PgorICAgPHZhcmxpc3RlbnRy eT4KKyAgICA8dGVybT48bGl0ZXJhbD5PV05FUjwvbGl0ZXJhbD48L3Rlcm0+CisgICAgPGxpc3Rp dGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoaXMgZm9ybSBjaGFuZ2VzIHRoZSBvd25lciBvZiB0 aGUgc2Vzc2lvbiB2YXJpYWJsZS4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8 L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48bGl0ZXJhbD5S RU5BTUU8L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAg ICBUaGlzIGZvcm0gY2hhbmdlcyB0aGUgbmFtZSBvZiB0aGUgc2Vzc2lvbiB2YXJpYWJsZS4KKyAg ICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZh cmxpc3RlbnRyeT4KKyAgICA8dGVybT48bGl0ZXJhbD5TRVQgU0NIRU1BPC9saXRlcmFsPjwvdGVy bT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhpcyBmb3JtIG1vdmVzIHRo ZSBzZXNzaW9uIHZhcmlhYmxlIGludG8gYW5vdGhlciBzY2hlbWEuCisgICAgIDwvcGFyYT4KKyAg ICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgPC92YXJpYWJsZWxpc3Q+Cisg IDwvcGFyYT4KKworICA8cGFyYT4KKyAgIE9ubHkgdGhlIG93bmVyIG9yIGEgc3VwZXJ1c2VyIGlz IGFsbG93ZWQgdG8gYWx0ZXIgYSBzZXNzaW9uIHZhcmlhYmxlLgorICAgSW4gb3JkZXIgdG8gbW92 ZSBhIHNlc3Npb24gdmFyaWFibGUgZnJvbSBvbmUgc2NoZW1hIHRvIGFub3RoZXIsIHRoZSB1c2Vy CisgICBtdXN0IGFsc28gaGF2ZSB0aGUgPGxpdGVyYWw+Q1JFQVRFPC9saXRlcmFsPiBwcml2aWxl Z2Ugb24gdGhlIG5ldyBzY2hlbWEgKG9yCisgICBiZSBhIHN1cGVydXNlcikuCisKKyAgIEluIG9y ZGVyIHRvIG1vdmUgdGhlIHNlc3Npb24gdmFyaWFibGUgb3duZXJzaGlwIGZyb20gb25lIHJvbGUg dG8gYW5vdGhlciwKKyAgIHRoZSB1c2VyIG11c3QgYWxzbyBiZSBhIGRpcmVjdCBvciBpbmRpcmVj dCBtZW1iZXIgb2YgdGhlIG5ldworICAgb3duaW5nIHJvbGUsIGFuZCB0aGF0IHJvbGUgbXVzdCBo YXZlIHRoZSA8bGl0ZXJhbD5DUkVBVEU8L2xpdGVyYWw+IHByaXZpbGVnZQorICAgb24gdGhlIHNl c3Npb24gdmFyaWFibGUncyBzY2hlbWEgKG9yIGJlIGEgc3VwZXJ1c2VyKS4gVGhlc2UgcmVzdHJp Y3Rpb25zCisgICBlbmZvcmNlIHRoYXQgYWx0ZXJpbmcgdGhlIG93bmVyIGRvZXNuJ3QgZG8gYW55 dGhpbmcgeW91IGNvdWxkbid0IGRvIGJ5CisgICBkcm9wcGluZyBhbmQgcmVjcmVhdGluZyB0aGUg c2Vzc2lvbiB2YXJpYWJsZS4KKyAgPC9wYXJhPgorIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+ CisgIDx0aXRsZT5QYXJhbWV0ZXJzPC90aXRsZT4KKworICAgPHBhcmE+CisgICAgPHZhcmlhYmxl bGlzdD4KKyAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+ CisgICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBuYW1lIChwb3NzaWJseSBzY2hlbWEtcXVhbGlm aWVkKSBvZiB0aGUgZXhpc3Rpbmcgc2Vzc2lvbiB2YXJpYWJsZQorICAgICAgICB0byBhbHRlci4K KyAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4K KworICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPm5ld19uYW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+ CisgICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBuZXcgbmFtZSBmb3IgdGhlIHNlc3Npb24gdmFy aWFibGUuCisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0 ZW50cnk+CisKKyAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5uZXdfb3duZXI8L3JlcGxhY2VhYmxlPjwvdGVybT4KKyAgICAgIDxs aXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIHVzZXIgbmFtZSBvZiB0aGUgbmV3 IG93bmVyIG9mIHRoZSBzZXNzaW9uIHZhcmlhYmxlLgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwv bGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgIDx2YXJsaXN0ZW50cnk+Cisg ICAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmV3X3NjaGVtYTwvcmVw bGFjZWFibGU+PC90ZXJtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgorICAgICAg ICBUaGUgbmV3IHNjaGVtYSBmb3IgdGhlIHNlc3Npb24gdmFyaWFibGUuCisgICAgICAgPC9wYXJh PgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJs ZWxpc3Q+CisgICA8L3BhcmE+CisgIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRs ZT5FeGFtcGxlczwvdGl0bGU+CisKKyAgPHBhcmE+CisgICBUbyByZW5hbWUgYSBzZXNzaW9uIHZh cmlhYmxlOgorPHByb2dyYW1saXN0aW5nPgorQUxURVIgVkFSSUFCTEUgZm9vIFJFTkFNRSBUTyBi b287Cis8L3Byb2dyYW1saXN0aW5nPgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBUbyBjaGFu Z2UgdGhlIG93bmVyIG9mIHRoZSBzZXNzaW9uIHZhcmlhYmxlIDxsaXRlcmFsPmJvbzwvbGl0ZXJh bD4gdG8KKyAgIDxsaXRlcmFsPmpvZTwvbGl0ZXJhbD46Cis8cHJvZ3JhbWxpc3Rpbmc+CitBTFRF UiBWQVJJQUJMRSBib28gT1dORVIgVE8gam9lOworPC9wcm9ncmFtbGlzdGluZz4KKyAgPC9wYXJh PgorCisgIDxwYXJhPgorICAgVG8gY2hhbmdlIHRoZSBzY2hlbWEgb2YgdGhlIHNlc3Npb24gdmFy aWFibGUgPGxpdGVyYWw+Ym9vPC9saXRlcmFsPiB0bworICAgPGxpdGVyYWw+cHJpdmF0ZTwvbGl0 ZXJhbD46Cis8cHJvZ3JhbWxpc3Rpbmc+CitBTFRFUiBWQVJJQUJMRSBib28gU0VUIFNDSEVNQSBw cml2YXRlOworPC9wcm9ncmFtbGlzdGluZz4KKyAgPC9wYXJhPgorIDwvcmVmc2VjdDE+CisKKyA8 cmVmc2VjdDE+CisgIDx0aXRsZT5Db21wYXRpYmlsaXR5PC90aXRsZT4KKworICA8cGFyYT4KKyAg IFNlc3Npb24gdmFyaWFibGVzIGFuZCB0aGlzIGNvbW1hbmQgaW4gcGFydGljdWxhciBhcmUgYSBQ b3N0Z3JlU1FMIGV4dGVuc2lvbi4KKyAgPC9wYXJhPgorIDwvcmVmc2VjdDE+CisKKyA8cmVmc2Vj dDEgaWQ9InNxbC1hbHRlcnZhcmlhYmxlLXNlZS1hbHNvIj4KKyAgPHRpdGxlPlNlZSBBbHNvPC90 aXRsZT4KKworICA8c2ltcGxlbGlzdCB0eXBlPSJpbmxpbmUiPgorICAgPG1lbWJlcj48eHJlZiBs aW5rZW5kPSJzcWwtY3JlYXRldmFyaWFibGUiLz48L21lbWJlcj4KKyAgIDxtZW1iZXI+PHhyZWYg bGlua2VuZD0ic3FsLWRyb3B2YXJpYWJsZSIvPjwvbWVtYmVyPgorICA8L3NpbXBsZWxpc3Q+Cisg PC9yZWZzZWN0MT4KKzwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2Nv bW1lbnQuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY29tbWVudC5zZ21sCmluZGV4IDViNDNjNTZi MTMuLjIxY2Q4MDgxOGYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY29tbWVudC5zZ21s CisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY29tbWVudC5zZ21sCkBAIC02NSw2ICs2NSw3IEBAIENP TU1FTlQgT04KICAgVFJBTlNGT1JNIEZPUiA8cmVwbGFjZWFibGU+dHlwZV9uYW1lPC9yZXBsYWNl YWJsZT4gTEFOR1VBR0UgPHJlcGxhY2VhYmxlPmxhbmdfbmFtZTwvcmVwbGFjZWFibGU+IHwKICAg VFJJR0dFUiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dHJpZ2dlcl9uYW1lPC9yZXBs YWNlYWJsZT4gT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3Jl cGxhY2VhYmxlPiB8CiAgIFRZUEUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9iamVj dF9uYW1lPC9yZXBsYWNlYWJsZT4gfAorICBWQVJJQUJMRSA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+b2JqZWN0X25hbWU8L3JlcGxhY2VhYmxlPiB8CiAgIFZJRVcgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPm9iamVjdF9uYW1lPC9yZXBsYWNlYWJsZT4KIH0gSVMgeyA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3RyaW5nX2xpdGVyYWw8L3JlcGxhY2VhYmxlPiB8 IE5VTEwgfQogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zY2hlbWEuc2dt bCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3NjaGVtYS5zZ21sCmluZGV4IGVkNjkyOThjY2Mu LmE4MzRjODc2YmMgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3NjaGVtYS5z Z21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3NjaGVtYS5zZ21sCkBAIC0xMDMsOSAr MTAzLDEwIEBAIENSRUFURSBTQ0hFTUEgSUYgTk9UIEVYSVNUUyBBVVRIT1JJWkFUSU9OIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yb2xlX3NwCiAgICAgICAgIHNjaGVtYS4gQ3VycmVu dGx5LCBvbmx5IDxjb21tYW5kPkNSRUFURQogICAgICAgICBUQUJMRTwvY29tbWFuZD4sIDxjb21t YW5kPkNSRUFURSBWSUVXPC9jb21tYW5kPiwgPGNvbW1hbmQ+Q1JFQVRFCiAgICAgICAgIElOREVY PC9jb21tYW5kPiwgPGNvbW1hbmQ+Q1JFQVRFIFNFUVVFTkNFPC9jb21tYW5kPiwgPGNvbW1hbmQ+ Q1JFQVRFCi0gICAgICAgIFRSSUdHRVI8L2NvbW1hbmQ+IGFuZCA8Y29tbWFuZD5HUkFOVDwvY29t bWFuZD4gYXJlIGFjY2VwdGVkIGFzIGNsYXVzZXMKLSAgICAgICAgd2l0aGluIDxjb21tYW5kPkNS RUFURSBTQ0hFTUE8L2NvbW1hbmQ+LiBPdGhlciBraW5kcyBvZiBvYmplY3RzIG1heQotICAgICAg ICBiZSBjcmVhdGVkIGluIHNlcGFyYXRlIGNvbW1hbmRzIGFmdGVyIHRoZSBzY2hlbWEgaXMgY3Jl YXRlZC4KKyAgICAgICAgVFJJR0dFUjwvY29tbWFuZD4sIDxjb21tYW5kPkdSQU5UPC9jb21tYW5k PiBhbmQgPGNvbW1hbmQ+Q1JFQVRFCisgICAgICAgIFZBUklBQkxFPC9jb21tYW5kPiBhcmUgYWNj ZXB0ZWQgYXMgY2xhdXNlcyB3aXRoaW4gPGNvbW1hbmQ+Q1JFQVRFCisgICAgICAgIFNDSEVNQTwv Y29tbWFuZD4uIE90aGVyIGtpbmRzIG9mIG9iamVjdHMgbWF5IGJlIGNyZWF0ZWQgaW4gc2VwYXJh dGUKKyAgICAgICAgY29tbWFuZHMgYWZ0ZXIgdGhlIHNjaGVtYSBpcyBjcmVhdGVkLgogICAgICAg IDwvcGFyYT4KICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5PgpkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdmFyaWFibGUuc2dtbCBiL2RvYy9zcmMvc2dt bC9yZWYvY3JlYXRlX3ZhcmlhYmxlLnNnbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMC4uZWMxNjVhYjk2ZgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYv Y3JlYXRlX3ZhcmlhYmxlLnNnbWwKQEAgLTAsMCArMSwxNTEgQEAKKzwhLS0KK2RvYy9zcmMvc2dt bC9yZWYvY3JlYXRlX3ZhcmlhYmxlLnNnbWwKK1Bvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgorLS0+ CisKKzxyZWZlbnRyeSBpZD0ic3FsLWNyZWF0ZXZhcmlhYmxlIj4KKyA8aW5kZXh0ZXJtIHpvbmU9 InNxbC1jcmVhdGV2YXJpYWJsZSI+CisgIDxwcmltYXJ5PkNSRUFURSBWQVJJQUJMRTwvcHJpbWFy eT4KKyA8L2luZGV4dGVybT4KKworIDxpbmRleHRlcm0+CisgIDxwcmltYXJ5PnNlc3Npb24gdmFy aWFibGU8L3ByaW1hcnk+CisgIDxzZWNvbmRhcnk+ZGVmaW5pbmc8L3NlY29uZGFyeT4KKyA8L2lu ZGV4dGVybT4KKworIDxyZWZtZXRhPgorICA8cmVmZW50cnl0aXRsZT5DUkVBVEUgVkFSSUFCTEU8 L3JlZmVudHJ5dGl0bGU+CisgIDxtYW52b2xudW0+NzwvbWFudm9sbnVtPgorICA8cmVmbWlzY2lu Zm8+U1FMIC0gTGFuZ3VhZ2UgU3RhdGVtZW50czwvcmVmbWlzY2luZm8+CisgPC9yZWZtZXRhPgor CisgPHJlZm5hbWVkaXY+CisgIDxyZWZuYW1lPkNSRUFURSBWQVJJQUJMRTwvcmVmbmFtZT4KKyAg PHJlZnB1cnBvc2U+ZGVmaW5lIGEgc2Vzc2lvbiB2YXJpYWJsZTwvcmVmcHVycG9zZT4KKyA8L3Jl Zm5hbWVkaXY+CisKKyA8cmVmc3lub3BzaXNkaXY+Cis8c3lub3BzaXM+CitDUkVBVEUgVkFSSUFC TEUgWyBJRiBOT1QgRVhJU1RTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8 L3JlcGxhY2VhYmxlPiBbIEFTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmRhdGFf dHlwZTwvcmVwbGFjZWFibGU+IF0gWyBDT0xMQVRFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5jb2xsYXRpb248L3JlcGxhY2VhYmxlPiBdCis8L3N5bm9wc2lzPgorIDwvcmVmc3lub3Bz aXNkaXY+CisgPHJlZnNlY3QxPgorICA8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgorCisgIDxw YXJhPgorICAgVGhlIDxjb21tYW5kPkNSRUFURSBWQVJJQUJMRTwvY29tbWFuZD4gY29tbWFuZCBj cmVhdGVzIGEgc2Vzc2lvbiB2YXJpYWJsZS4KKyAgIFNlc3Npb24gdmFyaWFibGVzLCBsaWtlIHJl bGF0aW9ucywgZXhpc3Qgd2l0aGluIGEgc2NoZW1hIGFuZCB0aGVpciBhY2Nlc3MgaXMKKyAgIGNv bnRyb2xsZWQgdmlhIHRoZSBjb21tYW5kcyA8Y29tbWFuZD5HUkFOVDwvY29tbWFuZD4gYW5kIDxj b21tYW5kPlJFVk9LRTwvY29tbWFuZD4uCisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIFRoZSB2 YWx1ZSBvZiBhIHNlc3Npb24gdmFyaWFibGUgaXMgbG9jYWwgdG8gdGhlIGN1cnJlbnQgc2Vzc2lv bi4gIFJldHJpZXZpbmcKKyAgIGEgc2Vzc2lvbiB2YXJpYWJsZSdzIHZhbHVlIHJldHVybnMgTlVM TCwgdW5sZXNzIGl0cyB2YWx1ZSBpcyBzZXQgdG8KKyAgIHNvbWV0aGluZyBlbHNlIGluIHRoZSBj dXJyZW50IHNlc3Npb24gd2l0aCBhIDxjb21tYW5kPkxFVDwvY29tbWFuZD4gY29tbWFuZC4KKyAg IFRoZSBjb250ZW50IG9mIGEgc2Vzc2lvbiB2YXJpYWJsZSBpcyBub3QgdHJhbnNhY3Rpb25hbC4g VGhpcyBpcyB0aGUgc2FtZSBhcworICAgcmVndWxhciB2YXJpYWJsZXMgaW4gcHJvY2VkdXJhbCBs YW5ndWFnZXMuCisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIFNlc3Npb24gdmFyaWFibGVzIGFy ZSByZXRyaWV2ZWQgYnkgdGhlIDxjb21tYW5kPlNFTEVDVDwvY29tbWFuZD4KKyAgIGNvbW1hbmQu ICBUaGVpciB2YWx1ZSBpcyBzZXQgd2l0aCB0aGUgPGNvbW1hbmQ+TEVUPC9jb21tYW5kPiBjb21t YW5kLgorICA8L3BhcmE+CisKKyAgPG5vdGU+CisgICA8cGFyYT4KKyAgICBTZXNzaW9uIHZhcmlh YmxlcyBjYW4gYmUgPHF1b3RlPnNoYWRvd2VkPC9xdW90ZT4gYnkgb3RoZXIgaWRlbnRpZmllcnMu CisgICAgRm9yIGRldGFpbHMsIHNlZSA8eHJlZiBsaW5rZW5kPSJkZGwtc2Vzc2lvbi12YXJpYWJs ZXMiLz4uCisgICA8L3BhcmE+CisgIDwvbm90ZT4KKyA8L3JlZnNlY3QxPgorCisgPHJlZnNlY3Qx PgorICA8dGl0bGU+UGFyYW1ldGVyczwvdGl0bGU+CisKKyAgPHZhcmlhYmxlbGlzdD4KKworICAg PHZhcmxpc3RlbnRyeSAgaWQ9InNxbC1jcmVhdGV2YXJpYWJsZS1pZi1ub3QtZXhpc3RzIj4KKyAg ICA8dGVybT48bGl0ZXJhbD5JRiBOT1QgRVhJU1RTPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlz dGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgRG8gbm90IHRocm93IGFuIGVycm9yIGlmIHRoZSBu YW1lIGFscmVhZHkgZXhpc3RzLiBBIG5vdGljZSBpcyBpc3N1ZWQgaW4KKyAgICAgIHRoaXMgY2Fz ZS4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKwor ICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWNyZWF0ZXZhcmlhYmxlLW5hbWUiPgorICAgIDx0ZXJt PjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+ CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoZSBuYW1lLCBvcHRpb25hbGx5 IHNjaGVtYS1xdWFsaWZpZWQsIG9mIHRoZSBzZXNzaW9uIHZhcmlhYmxlLgorICAgICA8L3BhcmE+ CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5 IGlkPSJzcWwtY3JlYXRldmFyaWFibGUtZGF0YV90eXBlIj4KKyAgICA8dGVybT48cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+ZGF0YV90eXBlPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAg PGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoZSBuYW1lLCBvcHRpb25hbGx5IHNjaGVt YS1xdWFsaWZpZWQsIG9mIHRoZSBkYXRhIHR5cGUgb2YgdGhlIHNlc3Npb24KKyAgICAgIHZhcmlh YmxlLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5Pgor CisgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtY3JlYXRldmFyaWFibGUtY29sbGF0ZSI+CisgICAg PHRlcm0+PGxpdGVyYWw+Q09MTEFURSA8cmVwbGFjZWFibGU+Y29sbGF0aW9uPC9yZXBsYWNlYWJs ZT48L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBU aGUgPGxpdGVyYWw+Q09MTEFURTwvbGl0ZXJhbD4gY2xhdXNlIGFzc2lnbnMgYSBjb2xsYXRpb24g dG8gdGhlIHNlc3Npb24KKyAgICAgIHZhcmlhYmxlICh3aGljaCBtdXN0IGJlIG9mIGEgY29sbGF0 YWJsZSBkYXRhIHR5cGUpLiAgSWYgbm90IHNwZWNpZmllZCwKKyAgICAgIHRoZSBkYXRhIHR5cGUn cyBkZWZhdWx0IGNvbGxhdGlvbiBpcyB1c2VkLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRl bT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgIDwvdmFyaWFibGVsaXN0PgorIDwvcmVmc2VjdDE+ CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5Ob3RlczwvdGl0bGU+CisKKyAgPHBhcmE+CisgICBV c2UgdGhlIDxjb21tYW5kPkRST1AgVkFSSUFCTEU8L2NvbW1hbmQ+IGNvbW1hbmQgdG8gcmVtb3Zl IGEgc2Vzc2lvbgorICAgdmFyaWFibGUuCisgIDwvcGFyYT4KKyA8L3JlZnNlY3QxPgorCisgPHJl ZnNlY3QxPgorICA8dGl0bGU+RXhhbXBsZXM8L3RpdGxlPgorCisgIDxwYXJhPgorICAgQ3JlYXRl IGFuIGRhdGUgc2Vzc2lvbiB2YXJpYWJsZSA8bGl0ZXJhbD52YXIxPC9saXRlcmFsPjoKKzxwcm9n cmFtbGlzdGluZz4KK0NSRUFURSBWQVJJQUJMRSB2YXIxIEFTIGRhdGU7CitMRVQgdmFyMSA9IGN1 cnJlbnRfZGF0ZTsKK1NFTEVDVCB2YXIxOworPC9wcm9ncmFtbGlzdGluZz4KKyAgPC9wYXJhPgor CisgPC9yZWZzZWN0MT4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPkNvbXBhdGliaWxpdHk8L3Rp dGxlPgorCisgIDxwYXJhPgorICAgVGhlIDxjb21tYW5kPkNSRUFURSBWQVJJQUJMRTwvY29tbWFu ZD4gY29tbWFuZCBpcyBhCisgICA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+ IGV4dGVuc2lvbi4KKyAgPC9wYXJhPgorIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0 aXRsZT5TZWUgQWxzbzwvdGl0bGU+CisKKyAgPHNpbXBsZWxpc3QgdHlwZT0iaW5saW5lIj4KKyAg IDxtZW1iZXI+PHhyZWYgbGlua2VuZD0ic3FsLWFsdGVydmFyaWFibGUiLz48L21lbWJlcj4KKyAg IDxtZW1iZXI+PHhyZWYgbGlua2VuZD0ic3FsLWRyb3B2YXJpYWJsZSIvPjwvbWVtYmVyPgorICA8 L3NpbXBsZWxpc3Q+CisgPC9yZWZzZWN0MT4KKworPC9yZWZlbnRyeT4KZGlmZiAtLWdpdCBhL2Rv Yy9zcmMvc2dtbC9yZWYvZHJvcF92YXJpYWJsZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9kcm9w X3ZhcmlhYmxlLnNnbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNWJk YjM1NjBmMAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvZHJvcF92YXJpYWJs ZS5zZ21sCkBAIC0wLDAgKzEsMTE3IEBACis8IS0tCitkb2Mvc3JjL3NnbWwvcmVmL2Ryb3BfdmFy aWFibGUuc2dtbAorUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCistLT4KKworPHJlZmVudHJ5IGlk PSJzcWwtZHJvcHZhcmlhYmxlIj4KKyA8aW5kZXh0ZXJtIHpvbmU9InNxbC1kcm9wdmFyaWFibGUi PgorICA8cHJpbWFyeT5EUk9QIFZBUklBQkxFPC9wcmltYXJ5PgorIDwvaW5kZXh0ZXJtPgorCisg PGluZGV4dGVybT4KKyAgPHByaW1hcnk+c2Vzc2lvbiB2YXJpYWJsZTwvcHJpbWFyeT4KKyAgPHNl Y29uZGFyeT5yZW1vdmluZzwvc2Vjb25kYXJ5PgorIDwvaW5kZXh0ZXJtPgorCisgPHJlZm1ldGE+ CisgIDxyZWZlbnRyeXRpdGxlPkRST1AgVkFSSUFCTEU8L3JlZmVudHJ5dGl0bGU+CisgIDxtYW52 b2xudW0+NzwvbWFudm9sbnVtPgorICA8cmVmbWlzY2luZm8+U1FMIC0gTGFuZ3VhZ2UgU3RhdGVt ZW50czwvcmVmbWlzY2luZm8+CisgPC9yZWZtZXRhPgorCisgPHJlZm5hbWVkaXY+CisgIDxyZWZu YW1lPkRST1AgVkFSSUFCTEU8L3JlZm5hbWU+CisgIDxyZWZwdXJwb3NlPnJlbW92ZSBhIHNlc3Np b24gdmFyaWFibGU8L3JlZnB1cnBvc2U+CisgPC9yZWZuYW1lZGl2PgorCisgPHJlZnN5bm9wc2lz ZGl2PgorPHN5bm9wc2lzPgorRFJPUCBWQVJJQUJMRSBbIElGIEVYSVNUUyBdIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uXSBbIENBU0NBREUg fCBSRVNUUklDVCBdCis8L3N5bm9wc2lzPgorIDwvcmVmc3lub3BzaXNkaXY+CisKKyA8cmVmc2Vj dDE+CisgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKyAgPHBhcmE+CisgICA8Y29tbWFu ZD5EUk9QIFZBUklBQkxFPC9jb21tYW5kPiByZW1vdmVzIGEgc2Vzc2lvbiB2YXJpYWJsZS4KKyAg IEEgc2Vzc2lvbiB2YXJpYWJsZSBjYW4gb25seSBiZSByZW1vdmVkIGJ5IGl0cyBvd25lciBvciBh IHN1cGVydXNlci4KKyAgPC9wYXJhPgorIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0 aXRsZT5QYXJhbWV0ZXJzPC90aXRsZT4KKworICA8dmFyaWFibGVsaXN0PgorICAgPHZhcmxpc3Rl bnRyeT4KKyAgICA8dGVybT48bGl0ZXJhbD5JRiBFWElTVFM8L2xpdGVyYWw+PC90ZXJtPgorICAg IDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBEbyBub3QgdGhyb3cgYW4gZXJyb3IgaWYg dGhlIHNlc3Npb24gdmFyaWFibGUgZG9lcyBub3QgZXhpc3QuIEEgbm90aWNlIGlzCisgICAgICBp c3N1ZWQgaW4gdGhpcyBjYXNlLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwv dmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgPGxpc3Rp dGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoZSBuYW1lLCBvcHRpb25hbGx5IHNjaGVtYS1xdWFs aWZpZWQsIG9mIGEgc2Vzc2lvbiB2YXJpYWJsZS4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0 ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48 bGl0ZXJhbD5DQVNDQURFPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxw YXJhPgorICAgICAgQXV0b21hdGljYWxseSBkcm9wIG9iamVjdHMgdGhhdCBkZXBlbmQgb24gdGhl IHNlc3Npb24gdmFyaWFibGUgKHN1Y2ggYXMKKyAgICAgIHZpZXdzKSwgYW5kIGluIHR1cm4gYWxs IG9iamVjdHMgdGhhdCBkZXBlbmQgb24gdGhvc2Ugb2JqZWN0cworICAgICAgKHNlZSA8eHJlZiBs aW5rZW5kPSJkZGwtZGVwZW5kIi8+KS4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+Cisg ICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48bGl0ZXJh bD5SRVNUUklDVDwvbGl0ZXJhbD48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4K KyAgICAgIFJlZnVzZSB0byBkcm9wIHRoZSBzZXNzaW9uIHZhcmlhYmxlIGlmIGFueSBvYmplY3Rz IGRlcGVuZCBvbiBpdC4gIFRoaXMgaXMKKyAgICAgIHRoZSBkZWZhdWx0LgorICAgICA8L3BhcmE+ CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorICA8L3ZhcmlhYmxlbGlzdD4K KyA8L3JlZnNlY3QxPgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+RXhhbXBsZXM8L3RpdGxlPgor CisgIDxwYXJhPgorICAgVG8gcmVtb3ZlIHRoZSBzZXNzaW9uIHZhcmlhYmxlIDxsaXRlcmFsPnZh cjE8L2xpdGVyYWw+OgorCis8cHJvZ3JhbWxpc3Rpbmc+CitEUk9QIFZBUklBQkxFIHZhcjE7Cis8 L3Byb2dyYW1saXN0aW5nPjwvcGFyYT4KKyA8L3JlZnNlY3QxPgorCisgPHJlZnNlY3QxPgorICA8 dGl0bGU+Q29tcGF0aWJpbGl0eTwvdGl0bGU+CisKKyAgPHBhcmE+CisgICBUaGUgPGNvbW1hbmQ+ RFJPUCBWQVJJQUJMRTwvY29tbWFuZD4gY29tbWFuZCBpcyBhCisgICA8cHJvZHVjdG5hbWU+UG9z dGdyZVNRTDwvcHJvZHVjdG5hbWU+IGV4dGVuc2lvbi4KKyAgPC9wYXJhPgorIDwvcmVmc2VjdDE+ CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5TZWUgQWxzbzwvdGl0bGU+CisKKyAgPHNpbXBsZWxp c3QgdHlwZT0iaW5saW5lIj4KKyAgIDxtZW1iZXI+PHhyZWYgbGlua2VuZD0ic3FsLWFsdGVydmFy aWFibGUiLz48L21lbWJlcj4KKyAgIDxtZW1iZXI+PHhyZWYgbGlua2VuZD0ic3FsLWNyZWF0ZXZh cmlhYmxlIi8+PC9tZW1iZXI+CisgIDwvc2ltcGxlbGlzdD4KKyA8L3JlZnNlY3QxPgorCis8L3Jl ZmVudHJ5PgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9ncmFudC5zZ21sIGIvZG9jL3Ny Yy9zZ21sL3JlZi9ncmFudC5zZ21sCmluZGV4IDk5OWY2NTdkNWMuLjc4ZmYxMGZjZjUgMTAwNjQ0 Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvZ3JhbnQuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVm L2dyYW50LnNnbWwKQEAgLTEwMSw2ICsxMDEsMTIgQEAgR1JBTlQgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnJvbGVfbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gVE8gPHJlcGxhY2UK ICAgICBbIFdJVEggeyBBRE1JTiB8IElOSEVSSVQgfCBTRVQgfSB7IE9QVElPTiB8IFRSVUUgfCBG QUxTRSB9IF0KICAgICBbIEdSQU5URUQgQlkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnJvbGVfc3BlY2lmaWNhdGlvbjwvcmVwbGFjZWFibGU+IF0KIAorR1JBTlQgeyBTRUxFQ1QgfCBV UERBVEUgfCBBTEwgWyBQUklWSUxFR0VTIF0gfQorICAgIE9OIFZBUklBQkxFIDxyZXBsYWNlYWJs ZT52YXJpYWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uXQorICAgICAgIHwgQUxMIFZBUklB QkxFUyBJTiBTQ0hFTUEgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnNjaGVtYV9uYW1l PC9yZXBsYWNlYWJsZT4gWywgLi4uXSB9CisgICAgVE8gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnJvbGVfc3BlY2lmaWNhdGlvbjwvcmVwbGFjZWFibGU+IFssIC4uLl0gWyBXSVRIIEdS QU5UIE9QVElPTiBdCisgICAgWyBHUkFOVEVEIEJZIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5yb2xlX3NwZWNpZmljYXRpb248L3JlcGxhY2VhYmxlPiBdCisKIDxwaHJhc2U+d2hlcmUg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJvbGVfc3BlY2lmaWNhdGlvbjwvcmVwbGFj ZWFibGU+IGNhbiBiZTo8L3BocmFzZT4KIAogICAgIFsgR1JPVVAgXSA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+cm9sZV9uYW1lPC9yZXBsYWNlYWJsZT4KZGlmZiAtLWdpdCBhL2RvYy9z cmMvc2dtbC9yZWYvcmV2b2tlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3Jldm9rZS5zZ21sCmlu ZGV4IDhkZjQ5MjI4MWEuLjYyNmMwMjMxZDAgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYv cmV2b2tlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9yZXZva2Uuc2dtbApAQCAtMTM3LDYg KzEzNywxMyBAQCBSRVZPS0UgWyB7IEFETUlOIHwgSU5IRVJJVCB8IFNFVCB9IE9QVElPTiBGT1Ig XQogICB8IENVUlJFTlRfUk9MRQogICB8IENVUlJFTlRfVVNFUgogICB8IFNFU1NJT05fVVNFUgor CitSRVZPS0UgWyBHUkFOVCBPUFRJT04gRk9SIF0KKyAgICB7IHsgU0VMRUNUIHwgVVBEQVRFIH0g WywgLi4uXSB8IEFMTCBbIFBSSVZJTEVHRVMgXSB9CisgICAgT04gVkFSSUFCTEUgPHJlcGxhY2Vh YmxlPnZhcmlhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dCisgICAgICAgfCBBTEwgVkFS SUFCTEVTIElOIFNDSEVNQSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c2NoZW1hX25h bWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dIH0KKyAgICBGUk9NIHsgWyBHUk9VUCBdIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yb2xlX25hbWU8L3JlcGxhY2VhYmxlPiB8IFBVQkxJQyB9 IFssIC4uLl0KKyAgICBbIENBU0NBREUgfCBSRVNUUklDVCBdCiA8L3N5bm9wc2lzPgogIDwvcmVm c3lub3BzaXNkaXY+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWZlcmVuY2Uuc2dtbCBi L2RvYy9zcmMvc2dtbC9yZWZlcmVuY2Uuc2dtbAppbmRleCBmZjg1YWNlODNmLi4yNTU3OGYzOTQ2 IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmZXJlbmNlLnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL3JlZmVyZW5jZS5zZ21sCkBAIC03NSw2ICs3NSw3IEBACiAgICAmYWx0ZXJUeXBlOwogICAg JmFsdGVyVXNlcjsKICAgICZhbHRlclVzZXJNYXBwaW5nOworICAgJmFsdGVyVmFyaWFibGU7CiAg ICAmYWx0ZXJWaWV3OwogICAgJmFuYWx5emU7CiAgICAmYmVnaW47CkBAIC0xMjcsNiArMTI4LDcg QEAKICAgICZjcmVhdGVUeXBlOwogICAgJmNyZWF0ZVVzZXI7CiAgICAmY3JlYXRlVXNlck1hcHBp bmc7CisgICAmY3JlYXRlVmFyaWFibGU7CiAgICAmY3JlYXRlVmlldzsKICAgICZkZWFsbG9jYXRl OwogICAgJmRlY2xhcmU7CkBAIC0xNzUsNiArMTc3LDcgQEAKICAgICZkcm9wVHlwZTsKICAgICZk cm9wVXNlcjsKICAgICZkcm9wVXNlck1hcHBpbmc7CisgICAmZHJvcFZhcmlhYmxlOwogICAgJmRy b3BWaWV3OwogICAgJmVuZDsKICAgICZleGVjdXRlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y2F0YWxvZy9NYWtlZmlsZSBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvTWFrZWZpbGUKaW5kZXggMTU4 OWE3NWZkNS4uN2E5MGZjZmM0NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9NYWtl ZmlsZQorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL01ha2VmaWxlCkBAIC00NSw2ICs0NSw3IEBA IE9CSlMgPSBcCiAJcGdfc2hkZXBlbmQubyBcCiAJcGdfc3Vic2NyaXB0aW9uLm8gXAogCXBnX3R5 cGUubyBcCisJcGdfdmFyaWFibGUubyBcCiAJc3RvcmFnZS5vIFwKIAl0b2FzdGluZy5vCiAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvYWNsY2hrLmMgYi9zcmMvYmFja2VuZC9jYXRh bG9nL2FjbGNoay5jCmluZGV4IGE0NGNjZWUzYjYuLjY5NjhiMWU2ZWIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvYWNsY2hrLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9hY2xj aGsuYwpAQCAtNjQsNiArNjQsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfcHJvYy5oIgogI2lu Y2x1ZGUgImNhdGFsb2cvcGdfdGFibGVzcGFjZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlw ZS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdmFyaWFibGUuaCIKICNpbmNsdWRlICJjb21tYW5k cy9kYmNvbW1hbmRzLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZGVmcmVtLmgiCiAjaW5jbHVkZSAi Y29tbWFuZHMvZXZlbnRfdHJpZ2dlci5oIgpAQCAtMjkwLDYgKzI5MSw5IEBAIHJlc3RyaWN0X2Fu ZF9jaGVja19ncmFudChib29sIGlzX2dyYW50LCBBY2xNb2RlIGF2YWlsX2dvcHRpb25zLCBib29s IGFsbF9wcml2cywKIAkJY2FzZSBPQkpFQ1RfUEFSQU1FVEVSX0FDTDoKIAkJCXdob2xlX21hc2sg PSBBQ0xfQUxMX1JJR0hUU19QQVJBTUVURVJfQUNMOwogCQkJYnJlYWs7CisJCWNhc2UgT0JKRUNU X1ZBUklBQkxFOgorCQkJd2hvbGVfbWFzayA9IEFDTF9BTExfUklHSFRTX1ZBUklBQkxFOworCQkJ YnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIG9iamVjdCB0 eXBlOiAlZCIsIG9ianR5cGUpOwogCQkJLyogbm90IHJlYWNoZWQsIGJ1dCBrZWVwIGNvbXBpbGVy IHF1aWV0ICovCkBAIC01MzQsNiArNTM4LDEwIEBAIEV4ZWN1dGVHcmFudFN0bXQoR3JhbnRTdG10 ICpzdG10KQogCQkJYWxsX3ByaXZpbGVnZXMgPSBBQ0xfQUxMX1JJR0hUU19QQVJBTUVURVJfQUNM OwogCQkJZXJyb3Jtc2cgPSBnZXR0ZXh0X25vb3AoImludmFsaWQgcHJpdmlsZWdlIHR5cGUgJXMg Zm9yIHBhcmFtZXRlciIpOwogCQkJYnJlYWs7CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJ YWxsX3ByaXZpbGVnZXMgPSBBQ0xfQUxMX1JJR0hUU19WQVJJQUJMRTsKKwkJCWVycm9ybXNnID0g Z2V0dGV4dF9ub29wKCJpbnZhbGlkIHByaXZpbGVnZSB0eXBlICVzIGZvciBzZXNzaW9uIHZhcmlh YmxlIik7CisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6 ZWQgR3JhbnRTdG10Lm9ianR5cGU6ICVkIiwKIAkJCQkgKGludCkgc3RtdC0+b2JqdHlwZSk7CkBA IC02MzksNiArNjQ3LDkgQEAgRXhlY0dyYW50U3RtdF9vaWRzKEludGVybmFsR3JhbnQgKmlzdG10 KQogCQljYXNlIE9CSkVDVF9QQVJBTUVURVJfQUNMOgogCQkJRXhlY0dyYW50X1BhcmFtZXRlcihp c3RtdCk7CiAJCQlicmVhazsKKwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CisJCQlFeGVjR3JhbnRf Y29tbW9uKGlzdG10LCBWYXJpYWJsZVJlbGF0aW9uSWQsIEFDTF9BTExfUklHSFRTX1ZBUklBQkxF LCBOVUxMKTsKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVucmVjb2du aXplZCBHcmFudFN0bXQub2JqdHlwZTogJWQiLAogCQkJCSAoaW50KSBpc3RtdC0+b2JqdHlwZSk7 CkBAIC04MjksNiArODQwLDE4IEBAIG9iamVjdE5hbWVzVG9PaWRzKE9iamVjdFR5cGUgb2JqdHlw ZSwgTGlzdCAqb2JqbmFtZXMsIGJvb2wgaXNfZ3JhbnQpCiAJCQkJCW9iamVjdHMgPSBsYXBwZW5k X29pZChvYmplY3RzLCBwYXJhbWV0ZXJJZCk7CiAJCQl9CiAJCQlicmVhazsKKwkJY2FzZSBPQkpF Q1RfVkFSSUFCTEU6CisJCQlmb3JlYWNoKGNlbGwsIG9iam5hbWVzKQorCQkJeworCQkJCVJhbmdl VmFyICAgKnZhcnZhciA9IChSYW5nZVZhciAqKSBsZmlyc3QoY2VsbCk7CisJCQkJT2lkCQkJcmVs T2lkOworCisJCQkJcmVsT2lkID0gTG9va3VwVmFyaWFibGUodmFydmFyLT5zY2hlbWFuYW1lLAor CQkJCQkJCQkJCXZhcnZhci0+cmVsbmFtZSwKKwkJCQkJCQkJCQlmYWxzZSk7CisJCQkJb2JqZWN0 cyA9IGxhcHBlbmRfb2lkKG9iamVjdHMsIHJlbE9pZCk7CisJCQl9CisJCQlicmVhazsKIAkJZGVm YXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgR3JhbnRTdG10Lm9ianR5cGU6ICVk IiwKIAkJCQkgKGludCkgb2JqdHlwZSk7CkBAIC05MTgsNiArOTQxLDMyIEBAIG9iamVjdHNJblNj aGVtYVRvT2lkcyhPYmplY3RUeXBlIG9ianR5cGUsIExpc3QgKm5zcG5hbWVzKQogCQkJCQl0YWJs ZV9jbG9zZShyZWwsIEFjY2Vzc1NoYXJlTG9jayk7CiAJCQkJfQogCQkJCWJyZWFrOworCQkJY2Fz ZSBPQkpFQ1RfVkFSSUFCTEU6CisJCQkJeworCQkJCQlTY2FuS2V5RGF0YSBrZXk7CisJCQkJCVJl bGF0aW9uCXJlbDsKKwkJCQkJVGFibGVTY2FuRGVzYyBzY2FuOworCQkJCQlIZWFwVHVwbGUJdHVw bGU7CisKKwkJCQkJU2NhbktleUluaXQoJmtleSwKKwkJCQkJCQkJQW51bV9wZ192YXJpYWJsZV92 YXJuYW1lc3BhY2UsCisJCQkJCQkJCUJURXF1YWxTdHJhdGVneU51bWJlciwgRl9PSURFUSwKKwkJ CQkJCQkJT2JqZWN0SWRHZXREYXR1bShuYW1lc3BhY2VJZCkpOworCisJCQkJCXJlbCA9IHRhYmxl X29wZW4oVmFyaWFibGVSZWxhdGlvbklkLCBBY2Nlc3NTaGFyZUxvY2spOworCQkJCQlzY2FuID0g dGFibGVfYmVnaW5zY2FuX2NhdGFsb2cocmVsLCAxLCAma2V5KTsKKworCQkJCQl3aGlsZSAoKHR1 cGxlID0gaGVhcF9nZXRuZXh0KHNjYW4sIEZvcndhcmRTY2FuRGlyZWN0aW9uKSkgIT0gTlVMTCkK KwkJCQkJeworCQkJCQkJT2lkCQkJb2lkID0gKChGb3JtX3BnX3Byb2MpIEdFVFNUUlVDVCh0dXBs ZSkpLT5vaWQ7CisKKwkJCQkJCW9iamVjdHMgPSBsYXBwZW5kX29pZChvYmplY3RzLCBvaWQpOwor CQkJCQl9CisKKwkJCQkJdGFibGVfZW5kc2NhbihzY2FuKTsKKwkJCQkJdGFibGVfY2xvc2UocmVs LCBBY2Nlc3NTaGFyZUxvY2spOworCQkJCX0KKwkJCQlicmVhazsKIAkJCWRlZmF1bHQ6CiAJCQkJ Lyogc2hvdWxkIG5vdCBoYXBwZW4gKi8KIAkJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIEdy YW50U3RtdC5vYmp0eXBlOiAlZCIsCkBAIC0xMDc3LDYgKzExMjYsMTAgQEAgRXhlY0FsdGVyRGVm YXVsdFByaXZpbGVnZXNTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJEZWZhdWx0UHJpdmls ZWdlc1N0bXQgKnMKIAkJCWFsbF9wcml2aWxlZ2VzID0gQUNMX0FMTF9SSUdIVFNfU0NIRU1BOwog CQkJZXJyb3Jtc2cgPSBnZXR0ZXh0X25vb3AoImludmFsaWQgcHJpdmlsZWdlIHR5cGUgJXMgZm9y IHNjaGVtYSIpOwogCQkJYnJlYWs7CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJYWxsX3By aXZpbGVnZXMgPSBBQ0xfQUxMX1JJR0hUU19WQVJJQUJMRTsKKwkJCWVycm9ybXNnID0gZ2V0dGV4 dF9ub29wKCJpbnZhbGlkIHByaXZpbGVnZSB0eXBlICVzIGZvciBzZXNzaW9uIHZhcmlhYmxlIik7 CisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgR3Jh bnRTdG10Lm9ianR5cGU6ICVkIiwKIAkJCQkgKGludCkgYWN0aW9uLT5vYmp0eXBlKTsKQEAgLTEy NjgsNiArMTMyMSwxMiBAQCBTZXREZWZhdWx0QUNMKEludGVybmFsRGVmYXVsdEFDTCAqaWFjbHMp CiAJCQkJdGhpc19wcml2aWxlZ2VzID0gQUNMX0FMTF9SSUdIVFNfU0NIRU1BOwogCQkJYnJlYWs7 CiAKKwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CisJCQlvYmp0eXBlID0gREVGQUNMT0JKX1ZBUklB QkxFOworCQkJaWYgKGlhY2xzLT5hbGxfcHJpdnMgJiYgdGhpc19wcml2aWxlZ2VzID09IEFDTF9O T19SSUdIVFMpCisJCQkJdGhpc19wcml2aWxlZ2VzID0gQUNMX0FMTF9SSUdIVFNfVkFSSUFCTEU7 CisJCQlicmVhazsKKwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBv YmplY3QgdHlwZTogJWQiLAogCQkJCSAoaW50KSBpYWNscy0+b2JqdHlwZSk7CkBAIC0xNTExLDYg KzE1NzAsOSBAQCBSZW1vdmVSb2xlRnJvbU9iamVjdEFDTChPaWQgcm9sZWlkLCBPaWQgY2xhc3Np ZCwgT2lkIG9iamlkKQogCQkJY2FzZSBERUZBQ0xPQkpfTkFNRVNQQUNFOgogCQkJCWlhY2xzLm9i anR5cGUgPSBPQkpFQ1RfU0NIRU1BOwogCQkJCWJyZWFrOworCQkJY2FzZSBERUZBQ0xPQkpfVkFS SUFCTEU6CisJCQkJaWFjbHMub2JqdHlwZSA9IE9CSkVDVF9WQVJJQUJMRTsKKwkJCQlicmVhazsK IAkJCWRlZmF1bHQ6CiAJCQkJLyogU2hvdWxkbid0IGdldCBoZXJlICovCiAJCQkJZWxvZyhFUlJP UiwgInVuZXhwZWN0ZWQgZGVmYXVsdCBBQ0wgdHlwZTogJWQiLApAQCAtMTU3MSw2ICsxNjMzLDkg QEAgUmVtb3ZlUm9sZUZyb21PYmplY3RBQ0woT2lkIHJvbGVpZCwgT2lkIGNsYXNzaWQsIE9pZCBv YmppZCkKIAkJCWNhc2UgUGFyYW1ldGVyQWNsUmVsYXRpb25JZDoKIAkJCQlpc3RtdC5vYmp0eXBl ID0gT0JKRUNUX1BBUkFNRVRFUl9BQ0w7CiAJCQkJYnJlYWs7CisJCQljYXNlIFZhcmlhYmxlUmVs YXRpb25JZDoKKwkJCQlpc3RtdC5vYmp0eXBlID0gT0JKRUNUX1ZBUklBQkxFOworCQkJCWJyZWFr OwogCQkJZGVmYXVsdDoKIAkJCQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBvYmplY3QgY2xhc3Mg JXUiLCBjbGFzc2lkKTsKIAkJCQlicmVhazsKQEAgLTI4MTAsNiArMjg3NSw5IEBAIGFjbGNoZWNr X2Vycm9yKEFjbFJlc3VsdCBhY2xlcnIsIE9iamVjdFR5cGUgb2JqdHlwZSwKIAkJCQkJY2FzZSBP QkpFQ1RfVFlQRToKIAkJCQkJCW1zZyA9IGdldHRleHRfbm9vcCgicGVybWlzc2lvbiBkZW5pZWQg Zm9yIHR5cGUgJXMiKTsKIAkJCQkJCWJyZWFrOworCQkJCQljYXNlIE9CSkVDVF9WQVJJQUJMRToK KwkJCQkJCW1zZyA9IGdldHRleHRfbm9vcCgicGVybWlzc2lvbiBkZW5pZWQgZm9yIHNlc3Npb24g dmFyaWFibGUgJXMiKTsKKwkJCQkJCWJyZWFrOwogCQkJCQljYXNlIE9CSkVDVF9WSUVXOgogCQkJ CQkJbXNnID0gZ2V0dGV4dF9ub29wKCJwZXJtaXNzaW9uIGRlbmllZCBmb3IgdmlldyAlcyIpOwog CQkJCQkJYnJlYWs7CkBAIC0yOTIxLDYgKzI5ODksOSBAQCBhY2xjaGVja19lcnJvcihBY2xSZXN1 bHQgYWNsZXJyLCBPYmplY3RUeXBlIG9ianR5cGUsCiAJCQkJCWNhc2UgT0JKRUNUX1RZUEU6CiAJ CQkJCQltc2cgPSBnZXR0ZXh0X25vb3AoIm11c3QgYmUgb3duZXIgb2YgdHlwZSAlcyIpOwogCQkJ CQkJYnJlYWs7CisJCQkJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJCQkJbXNnID0gZ2V0dGV4 dF9ub29wKCJtdXN0IGJlIG93bmVyIG9mIHNlc3Npb24gdmFyaWFibGUgJXMiKTsKKwkJCQkJCWJy ZWFrOwogCQkJCQljYXNlIE9CSkVDVF9WSUVXOgogCQkJCQkJbXNnID0gZ2V0dGV4dF9ub29wKCJt dXN0IGJlIG93bmVyIG9mIHZpZXcgJXMiKTsKIAkJCQkJCWJyZWFrOwpAQCAtMzA2OSw2ICszMTQw LDggQEAgcGdfYWNsbWFzayhPYmplY3RUeXBlIG9ianR5cGUsIE9pZCBvYmplY3Rfb2lkLCBBdHRy TnVtYmVyIGF0dG51bSwgT2lkIHJvbGVpZCwKIAkJCXJldHVybiBBQ0xfTk9fUklHSFRTOwogCQlj YXNlIE9CSkVDVF9UWVBFOgogCQkJcmV0dXJuIG9iamVjdF9hY2xtYXNrKFR5cGVSZWxhdGlvbklk LCBvYmplY3Rfb2lkLCByb2xlaWQsIG1hc2ssIGhvdyk7CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxF OgorCQkJcmV0dXJuIG9iamVjdF9hY2xtYXNrKFZhcmlhYmxlUmVsYXRpb25JZCwgb2JqZWN0X29p ZCwgcm9sZWlkLCBtYXNrLCBob3cpOwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVucmVj b2duaXplZCBvYmplY3QgdHlwZTogJWQiLAogCQkJCSAoaW50KSBvYmp0eXBlKTsKQEAgLTQzMzYs NiArNDQwOSwxMCBAQCBnZXRfdXNlcl9kZWZhdWx0X2FjbChPYmplY3RUeXBlIG9ianR5cGUsIE9p ZCBvd25lcklkLCBPaWQgbnNwX29pZCkKIAkJCWRlZmFjbG9ianR5cGUgPSBERUZBQ0xPQkpfTkFN RVNQQUNFOwogCQkJYnJlYWs7CiAKKwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CisJCQlkZWZhY2xv Ymp0eXBlID0gREVGQUNMT0JKX1ZBUklBQkxFOworCQkJYnJlYWs7CisKIAkJZGVmYXVsdDoKIAkJ CXJldHVybiBOVUxMOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5k ZW5jeS5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMKaW5kZXggMDQ4OWNiYWJj Yi4uYzlkNjg2NjY1ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5 LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMKQEAgLTY1LDEyICs2NSwx NCBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHNfdGVtcGxhdGUuaCIKICNpbmNsdWRlICJjYXRh bG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3VzZXJfbWFwcGluZy5oIgorI2lu Y2x1ZGUgImNhdGFsb2cvcGdfdmFyaWFibGUuaCIKICNpbmNsdWRlICJjb21tYW5kcy9jb21tZW50 LmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZGVmcmVtLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZXZl bnRfdHJpZ2dlci5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2V4dGVuc2lvbi5oIgogI2luY2x1ZGUg ImNvbW1hbmRzL3BvbGljeS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5o IgorI2luY2x1ZGUgImNvbW1hbmRzL3NjaGVtYWNtZHMuaCIKICNpbmNsdWRlICJjb21tYW5kcy9z ZWNsYWJlbC5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3NlcXVlbmNlLmgiCiAjaW5jbHVkZSAiY29t bWFuZHMvdHJpZ2dlci5oIgpAQCAtMTQ0NCw2ICsxNDQ2LDEwIEBAIGRvRGVsZXRpb24oY29uc3Qg T2JqZWN0QWRkcmVzcyAqb2JqZWN0LCBpbnQgZmxhZ3MpCiAJCQlSZW1vdmVQdWJsaWNhdGlvbkJ5 SWQob2JqZWN0LT5vYmplY3RJZCk7CiAJCQlicmVhazsKIAorCQljYXNlIFZhcmlhYmxlUmVsYXRp b25JZDoKKwkJCURyb3BWYXJpYWJsZUJ5SWQob2JqZWN0LT5vYmplY3RJZCk7CisJCQlicmVhazsK KwogCQljYXNlIENhc3RSZWxhdGlvbklkOgogCQljYXNlIENvbGxhdGlvblJlbGF0aW9uSWQ6CiAJ CWNhc2UgQ29udmVyc2lvblJlbGF0aW9uSWQ6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRh bG9nL21lc29uLmJ1aWxkIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9tZXNvbi5idWlsZAppbmRleCAy ZjNkZWQ4YTBlLi5iZmRiNGRhMzMwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL21l c29uLmJ1aWxkCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvbWVzb24uYnVpbGQKQEAgLTMyLDYg KzMyLDcgQEAgYmFja2VuZF9zb3VyY2VzICs9IGZpbGVzKAogICAncGdfc2hkZXBlbmQuYycsCiAg ICdwZ19zdWJzY3JpcHRpb24uYycsCiAgICdwZ190eXBlLmMnLAorICAncGdfdmFyaWFibGUuYycs CiAgICdzdG9yYWdlLmMnLAogICAndG9hc3RpbmcuYycsCiApCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9jYXRhbG9nL25hbWVzcGFjZS5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9uYW1lc3BhY2Uu YwppbmRleCA0M2I3MDc2OTlkLi44NzUyZTE2NDZlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j YXRhbG9nL25hbWVzcGFjZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvbmFtZXNwYWNlLmMK QEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX3RzX3BhcnNlci5oIgogI2lu Y2x1ZGUgImNhdGFsb2cvcGdfdHNfdGVtcGxhdGUuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5 cGUuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAiY29tbWFu ZHMvZGJjb21tYW5kcy5oIgogI2luY2x1ZGUgImNvbW1vbi9oYXNoZm5fdW5zdGFibGUuaCIKICNp bmNsdWRlICJmdW5jYXBpLmgiCkBAIC05NzEsNiArOTcyLDY5IEBAIFJlbGF0aW9uSXNWaXNpYmxl RXh0KE9pZCByZWxpZCwgYm9vbCAqaXNfbWlzc2luZykKIAlyZXR1cm4gdmlzaWJsZTsKIH0KIAor LyoKKyAqIFZhcmlhYmxlSXNWaXNpYmxlCisgKgkJRGV0ZXJtaW5lIHdoZXRoZXIgYSB2YXJpYWJs ZSAoaWRlbnRpZmllZCBieSBPSUQpIGlzIHZpc2libGUgaW4gdGhlCisgKgkJY3VycmVudCBzZWFy Y2ggcGF0aC4gVmlzaWJsZSBtZWFucyAid291bGQgYmUgZm91bmQgYnkgc2VhcmNoaW5nCisgKgkJ Zm9yIHRoZSB1bnF1YWxpZmllZCB2YXJpYWJsZSBuYW1lIi4KKyAqLworYm9vbAorVmFyaWFibGVJ c1Zpc2libGUoT2lkIHZhcmlkKQoreworCUhlYXBUdXBsZQl2YXJ0dXA7CisJRm9ybV9wZ192YXJp YWJsZSB2YXJmb3JtOworCU9pZAkJCXZhcm5hbWVzcGFjZTsKKwlib29sCQl2aXNpYmxlOworCisJ dmFydHVwID0gU2VhcmNoU3lzQ2FjaGUxKFZBUklBQkxFT0lELCBPYmplY3RJZEdldERhdHVtKHZh cmlkKSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHZhcnR1cCkpCisJCWVsb2coRVJST1IsICJj YWNoZSBsb29rdXAgZmFpbGVkIGZvciBzZXNzaW9uIHZhcmlhYmxlICV1IiwgdmFyaWQpOworCXZh cmZvcm0gPSAoRm9ybV9wZ192YXJpYWJsZSkgR0VUU1RSVUNUKHZhcnR1cCk7CisKKwlyZWNvbXB1 dGVOYW1lc3BhY2VQYXRoKCk7CisKKwkvKgorCSAqIFF1aWNrIGNoZWNrOiBpZiBpdCBhaW4ndCBp biB0aGUgcGF0aCBhdCBhbGwsIGl0IGFpbid0IHZpc2libGUuIEl0ZW1zIGluCisJICogdGhlIHN5 c3RlbSBuYW1lc3BhY2UgYXJlIHN1cmVseSBpbiB0aGUgcGF0aCBhbmQgc28gd2UgbmVlZG4ndCBl dmVuIGRvCisJICogbGlzdF9tZW1iZXJfb2lkKCkgZm9yIHRoZW0uCisJICovCisJdmFybmFtZXNw YWNlID0gdmFyZm9ybS0+dmFybmFtZXNwYWNlOworCWlmICh2YXJuYW1lc3BhY2UgIT0gUEdfQ0FU QUxPR19OQU1FU1BBQ0UgJiYKKwkJIWxpc3RfbWVtYmVyX29pZChhY3RpdmVTZWFyY2hQYXRoLCB2 YXJuYW1lc3BhY2UpKQorCQl2aXNpYmxlID0gZmFsc2U7CisJZWxzZQorCXsKKwkJLyoKKwkJICog SWYgaXQgaXMgaW4gdGhlIHBhdGgsIGl0IG1pZ2h0IHN0aWxsIG5vdCBiZSB2aXNpYmxlOyBpdCBj b3VsZCBiZQorCQkgKiBoaWRkZW4gYnkgYW5vdGhlciB2YXJpYWJsZSBvZiB0aGUgc2FtZSBuYW1l IGVhcmxpZXIgaW4gdGhlIHBhdGguIFNvCisJCSAqIHdlIG11c3QgZG8gYSBzbG93IGNoZWNrIGZv ciBjb25mbGljdGluZyByZWxhdGlvbnMuCisJCSAqLworCQljaGFyCSAgICp2YXJuYW1lID0gTmFt ZVN0cih2YXJmb3JtLT52YXJuYW1lKTsKKwkJTGlzdENlbGwgICAqbDsKKworCQl2aXNpYmxlID0g ZmFsc2U7CisJCWZvcmVhY2gobCwgYWN0aXZlU2VhcmNoUGF0aCkKKwkJeworCQkJT2lkCQkJbmFt ZXNwYWNlSWQgPSBsZmlyc3Rfb2lkKGwpOworCisJCQlpZiAobmFtZXNwYWNlSWQgPT0gdmFybmFt ZXNwYWNlKQorCQkJeworCQkJCS8qIEZvdW5kIGl0IGZpcnN0IGluIHBhdGggKi8KKwkJCQl2aXNp YmxlID0gdHJ1ZTsKKwkJCQlicmVhazsKKwkJCX0KKwkJCWlmIChPaWRJc1ZhbGlkKGdldF92YXJu YW1lX3ZhcmlkKHZhcm5hbWUsIG5hbWVzcGFjZUlkKSkpCisJCQl7CisJCQkJLyogRm91bmQgc29t ZXRoaW5nIGVsc2UgZmlyc3QgaW4gcGF0aCAqLworCQkJCWJyZWFrOworCQkJfQorCQl9CisJfQor CisJUmVsZWFzZVN5c0NhY2hlKHZhcnR1cCk7CisKKwlyZXR1cm4gdmlzaWJsZTsKK30KIAogLyoK ICAqIFR5cGVuYW1lR2V0VHlwaWQKQEAgLTMyNzQsNiArMzMzOCw2NiBAQCBUU0NvbmZpZ0lzVmlz aWJsZUV4dChPaWQgY2ZnaWQsIGJvb2wgKmlzX21pc3NpbmcpCiAJcmV0dXJuIHZpc2libGU7CiB9 CiAKKy8qCisgKiBSZXR1cm5zIG9pZCBvZiBzZXNzaW9uIHZhcmlhYmxlIHNwZWNpZmllZCBieSBw b3NzaWJseSBxdWFsaWZpZWQgaWRlbnRpZmllci4KKyAqCisgKiBJZiBub3QgZm91bmQsIHJldHVy bnMgSW52YWxpZE9pZCBpZiBtaXNzaW5nX29rLCBlbHNlIHRocm93cyBlcnJvci4KKyAqLworT2lk CitMb29rdXBWYXJpYWJsZShjb25zdCBjaGFyICpuc3BuYW1lLAorCQkJICAgY29uc3QgY2hhciAq dmFybmFtZSwKKwkJCSAgIGJvb2wgbWlzc2luZ19vaykKK3sKKwlPaWQJCQluYW1lc3BhY2VJZDsK KwlPaWQJCQl2YXJvaWQgPSBJbnZhbGlkT2lkOworCUxpc3RDZWxsICAgKmw7CisKKwlpZiAobnNw bmFtZSkKKwl7CisJCW5hbWVzcGFjZUlkID0gTG9va3VwRXhwbGljaXROYW1lc3BhY2UobnNwbmFt ZSwgbWlzc2luZ19vayk7CisKKwkJLyogaWYgbnNwbmFtZSBpcyBhIGtub3duIG5hbWVzcGFjZSwg dGhlIHZhcmlhYmxlIG11c3QgYmUgdGhlcmUgKi8KKwkJaWYgKE9pZElzVmFsaWQobmFtZXNwYWNl SWQpKQorCQl7CisJCQl2YXJvaWQgPSBHZXRTeXNDYWNoZU9pZDIoVkFSSUFCTEVOQU1FTlNQLCBB bnVtX3BnX3ZhcmlhYmxlX29pZCwKKwkJCQkJCQkJCSBQb2ludGVyR2V0RGF0dW0odmFybmFtZSks CisJCQkJCQkJCQkgT2JqZWN0SWRHZXREYXR1bShuYW1lc3BhY2VJZCkpOworCQl9CisJfQorCWVs c2UKKwl7CisJCS8qIGl0ZXJhdGUgb3ZlciB0aGUgc2NoZW1hcyBvbiB0aGUgc2VhcmNoX3BhdGgg Ki8KKwkJcmVjb21wdXRlTmFtZXNwYWNlUGF0aCgpOworCisJCWZvcmVhY2gobCwgYWN0aXZlU2Vh cmNoUGF0aCkKKwkJeworCQkJbmFtZXNwYWNlSWQgPSBsZmlyc3Rfb2lkKGwpOworCisJCQl2YXJv aWQgPSBHZXRTeXNDYWNoZU9pZDIoVkFSSUFCTEVOQU1FTlNQLCBBbnVtX3BnX3ZhcmlhYmxlX29p ZCwKKwkJCQkJCQkJCSBQb2ludGVyR2V0RGF0dW0odmFybmFtZSksCisJCQkJCQkJCQkgT2JqZWN0 SWRHZXREYXR1bShuYW1lc3BhY2VJZCkpOworCisJCQlpZiAoT2lkSXNWYWxpZCh2YXJvaWQpKQor CQkJCWJyZWFrOworCQl9CisJfQorCisJaWYgKCFPaWRJc1ZhbGlkKHZhcm9pZCkgJiYgIW1pc3Np bmdfb2spCisJeworCQlpZiAobnNwbmFtZSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJj b2RlKEVSUkNPREVfVU5ERUZJTkVEX09CSkVDVCksCisJCQkJCSBlcnJtc2coInNlc3Npb24gdmFy aWFibGUgXCIlcy4lc1wiIGRvZXMgbm90IGV4aXN0IiwKKwkJCQkJCQluc3BuYW1lLCB2YXJuYW1l KSkpOworCQllbHNlCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX1VO REVGSU5FRF9PQkpFQ1QpLAorCQkJCQkgZXJybXNnKCJzZXNzaW9uIHZhcmlhYmxlIFwiJXNcIiBk b2VzIG5vdCBleGlzdCIsCisJCQkJCQkJdmFybmFtZSkpKTsKKwl9CisKKwlyZXR1cm4gdmFyb2lk OworfQogCiAvKgogICogRGVjb25zdHJ1Y3RRdWFsaWZpZWROYW1lCkBAIC01MDc1LDMgKzUxOTks MTQgQEAgcGdfaXNfb3RoZXJfdGVtcF9zY2hlbWEoUEdfRlVOQ1RJT05fQVJHUykKIAogCVBHX1JF VFVSTl9CT09MKGlzT3RoZXJUZW1wTmFtZXNwYWNlKG9pZCkpOwogfQorCitEYXR1bQorcGdfdmFy aWFibGVfaXNfdmlzaWJsZShQR19GVU5DVElPTl9BUkdTKQoreworCU9pZAkJCW9pZCA9IFBHX0dF VEFSR19PSUQoMCk7CisKKwlpZiAoIVNlYXJjaFN5c0NhY2hlRXhpc3RzMShWQVJJQUJMRU9JRCwg T2JqZWN0SWRHZXREYXR1bShvaWQpKSkKKwkJUEdfUkVUVVJOX05VTEwoKTsKKworCVBHX1JFVFVS Tl9CT09MKFZhcmlhYmxlSXNWaXNpYmxlKG9pZCkpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY2F0YWxvZy9vYmplY3RhZGRyZXNzLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL29iamVjdGFk ZHJlc3MuYwppbmRleCA4NWE3YjdlNjQxLi5lZTcwZWVlZWQ0IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jYXRhbG9nL29iamVjdGFkZHJlc3MuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL29i amVjdGFkZHJlc3MuYwpAQCAtNjIsNiArNjIsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHNf dGVtcGxhdGUuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJjYXRh bG9nL3BnX3VzZXJfbWFwcGluZy5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdmFyaWFibGUuaCIK ICNpbmNsdWRlICJjb21tYW5kcy9kYmNvbW1hbmRzLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZGVm cmVtLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5oIgpAQCAtNjM2LDYgKzYz NywyMCBAQCBzdGF0aWMgY29uc3QgT2JqZWN0UHJvcGVydHlUeXBlIE9iamVjdFByb3BlcnR5W10g PQogCQlPQkpFQ1RfVVNFUl9NQVBQSU5HLAogCQlmYWxzZQogCX0sCisJeworCQkic2Vzc2lvbiB2 YXJpYWJsZSIsCisJCVZhcmlhYmxlUmVsYXRpb25JZCwKKwkJVmFyaWFibGVPaWRJbmRleElkLAor CQlWQVJJQUJMRU9JRCwKKwkJVkFSSUFCTEVOQU1FTlNQLAorCQlBbnVtX3BnX3ZhcmlhYmxlX29p ZCwKKwkJQW51bV9wZ192YXJpYWJsZV92YXJuYW1lLAorCQlBbnVtX3BnX3ZhcmlhYmxlX3Zhcm5h bWVzcGFjZSwKKwkJQW51bV9wZ192YXJpYWJsZV92YXJvd25lciwKKwkJQW51bV9wZ192YXJpYWJs ZV92YXJhY2wsCisJCU9CSkVDVF9WQVJJQUJMRSwKKwkJdHJ1ZQorCX0KIH07CiAKIC8qCkBAIC04 MzEsNiArODQ2LDkgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvYmplY3RfdHlwZV9tYXAKIAl9LAog CXsKIAkJInN0YXRpc3RpY3Mgb2JqZWN0IiwgT0JKRUNUX1NUQVRJU1RJQ19FWFQKKwl9LAorCXsK KwkJInNlc3Npb24gdmFyaWFibGUiLCBPQkpFQ1RfVkFSSUFCTEUKIAl9CiB9OwogCkBAIC04NTYs NiArODc0LDcgQEAgc3RhdGljIE9iamVjdEFkZHJlc3MgZ2V0X29iamVjdF9hZGRyZXNzX2F0dHJk ZWYoT2JqZWN0VHlwZSBvYmp0eXBlLAogCQkJCQkJCQkJCQkJYm9vbCBtaXNzaW5nX29rKTsKIHN0 YXRpYyBPYmplY3RBZGRyZXNzIGdldF9vYmplY3RfYWRkcmVzc190eXBlKE9iamVjdFR5cGUgb2Jq dHlwZSwKIAkJCQkJCQkJCQkJIFR5cGVOYW1lICp0eXBlbmFtZSwgYm9vbCBtaXNzaW5nX29rKTsK K3N0YXRpYyBPYmplY3RBZGRyZXNzIGdldF9vYmplY3RfYWRkcmVzc192YXJpYWJsZShMaXN0ICpv YmplY3QsIGJvb2wgbWlzc2luZ19vayk7CiBzdGF0aWMgT2JqZWN0QWRkcmVzcyBnZXRfb2JqZWN0 X2FkZHJlc3Nfb3BjZihPYmplY3RUeXBlIG9ianR5cGUsIExpc3QgKm9iamVjdCwKIAkJCQkJCQkJ CQkJIGJvb2wgbWlzc2luZ19vayk7CiBzdGF0aWMgT2JqZWN0QWRkcmVzcyBnZXRfb2JqZWN0X2Fk ZHJlc3Nfb3BmX21lbWJlcihPYmplY3RUeXBlIG9ianR5cGUsCkBAIC0xMTI2LDYgKzExNDUsOSBA QCBnZXRfb2JqZWN0X2FkZHJlc3MoT2JqZWN0VHlwZSBvYmp0eXBlLCBOb2RlICpvYmplY3QsCiAJ CQkJCQkJCQkJCQkJCQkgbWlzc2luZ19vayk7CiAJCQkJYWRkcmVzcy5vYmplY3RTdWJJZCA9IDA7 CiAJCQkJYnJlYWs7CisJCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCQlhZGRyZXNzID0gZ2V0 X29iamVjdF9hZGRyZXNzX3ZhcmlhYmxlKGNhc3ROb2RlKExpc3QsIG9iamVjdCksIG1pc3Npbmdf b2spOworCQkJCWJyZWFrOwogCQkJCS8qIG5vIGRlZmF1bHQsIHRvIGxldCBjb21waWxlciB3YXJu IGFib3V0IG1pc3NpbmcgY2FzZSAqLwogCQl9CiAKQEAgLTIwMDAsMTYgKzIwMjIsMjAgQEAgZ2V0 X29iamVjdF9hZGRyZXNzX2RlZmFjbChMaXN0ICpvYmplY3QsIGJvb2wgbWlzc2luZ19vaykKIAkJ Y2FzZSBERUZBQ0xPQkpfTkFNRVNQQUNFOgogCQkJb2JqdHlwZV9zdHIgPSAic2NoZW1hcyI7CiAJ CQlicmVhazsKKwkJY2FzZSBERUZBQ0xPQkpfVkFSSUFCTEU6CisJCQlvYmp0eXBlX3N0ciA9ICJ2 YXJpYWJsZXMiOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllcmVwb3J0KEVSUk9SLAogCQkJ CQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKIAkJCQkJIGVycm1z ZygidW5yZWNvZ25pemVkIGRlZmF1bHQgQUNMIG9iamVjdCB0eXBlIFwiJWNcIiIsIG9ianR5cGUp LAotCQkJCQkgZXJyaGludCgiVmFsaWQgb2JqZWN0IHR5cGVzIGFyZSBcIiVjXCIsIFwiJWNcIiwg XCIlY1wiLCBcIiVjXCIsIFwiJWNcIi4iLAorCQkJCQkgZXJyaGludCgiVmFsaWQgb2JqZWN0IHR5 cGVzIGFyZSBcIiVjXCIsIFwiJWNcIiwgXCIlY1wiLCBcIiVjXCIsIFwiJWNcIiwgXCIlY1wiLiIs CiAJCQkJCQkJIERFRkFDTE9CSl9SRUxBVElPTiwKIAkJCQkJCQkgREVGQUNMT0JKX1NFUVVFTkNF LAogCQkJCQkJCSBERUZBQ0xPQkpfRlVOQ1RJT04sCiAJCQkJCQkJIERFRkFDTE9CSl9UWVBFLAot CQkJCQkJCSBERUZBQ0xPQkpfTkFNRVNQQUNFKSkpOworCQkJCQkJCSBERUZBQ0xPQkpfTkFNRVNQ QUNFLAorCQkJCQkJCSBERUZBQ0xPQkpfVkFSSUFCTEUpKSk7CiAJfQogCiAJLyoKQEAgLTIwOTMs NiArMjExOSwyNCBAQCB0ZXh0YXJyYXlfdG9fc3RydmFsdWVsaXN0KEFycmF5VHlwZSAqYXJyKQog CXJldHVybiBsaXN0OwogfQogCisvKgorICogRmluZCB0aGUgT2JqZWN0QWRkcmVzcyBmb3IgYSBz ZXNzaW9uIHZhcmlhYmxlCisgKi8KK3N0YXRpYyBPYmplY3RBZGRyZXNzCitnZXRfb2JqZWN0X2Fk ZHJlc3NfdmFyaWFibGUoTGlzdCAqb2JqZWN0LCBib29sIG1pc3Npbmdfb2spCit7CisJT2JqZWN0 QWRkcmVzcyBhZGRyZXNzOworCWNoYXIJICAgKm5zcG5hbWUgPSBOVUxMOworCWNoYXIJICAgKnZh cm5hbWUgPSBOVUxMOworCisJT2JqZWN0QWRkcmVzc1NldChhZGRyZXNzLCBWYXJpYWJsZVJlbGF0 aW9uSWQsIEludmFsaWRPaWQpOworCisJRGVjb25zdHJ1Y3RRdWFsaWZpZWROYW1lKG9iamVjdCwg Jm5zcG5hbWUsICZ2YXJuYW1lKTsKKwlhZGRyZXNzLm9iamVjdElkID0gTG9va3VwVmFyaWFibGUo bnNwbmFtZSwgdmFybmFtZSwgbWlzc2luZ19vayk7CisKKwlyZXR1cm4gYWRkcmVzczsKK30KKwog LyoKICAqIFNRTC1jYWxsYWJsZSB2ZXJzaW9uIG9mIGdldF9vYmplY3RfYWRkcmVzcwogICovCkBA IC0yMjg3LDYgKzIzMzEsNyBAQCBwZ19nZXRfb2JqZWN0X2FkZHJlc3MoUEdfRlVOQ1RJT05fQVJH UykKIAkJY2FzZSBPQkpFQ1RfVEFCQ09OU1RSQUlOVDoKIAkJY2FzZSBPQkpFQ1RfT1BDTEFTUzoK IAkJY2FzZSBPQkpFQ1RfT1BGQU1JTFk6CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgogCQkJb2Jq bm9kZSA9IChOb2RlICopIG5hbWU7CiAJCQlicmVhazsKIAkJY2FzZSBPQkpFQ1RfQUNDRVNTX01F VEhPRDoKQEAgLTI0NTgsNiArMjUwMyw3IEBAIGNoZWNrX29iamVjdF9vd25lcnNoaXAoT2lkIHJv bGVpZCwgT2JqZWN0VHlwZSBvYmp0eXBlLCBPYmplY3RBZGRyZXNzIGFkZHJlc3MsCiAJCWNhc2Ug T0JKRUNUX1NUQVRJU1RJQ19FWFQ6CiAJCWNhc2UgT0JKRUNUX1RTRElDVElPTkFSWToKIAkJY2Fz ZSBPQkpFQ1RfVFNDT05GSUdVUkFUSU9OOgorCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKIAkJCWlm ICghb2JqZWN0X293bmVyY2hlY2soYWRkcmVzcy5jbGFzc0lkLCBhZGRyZXNzLm9iamVjdElkLCBy b2xlaWQpKQogCQkJCWFjbGNoZWNrX2Vycm9yKEFDTENIRUNLX05PVF9PV05FUiwgb2JqdHlwZSwK IAkJCQkJCQkgICBOYW1lTGlzdFRvU3RyaW5nKGNhc3ROb2RlKExpc3QsIG9iamVjdCkpKTsKQEAg LTM0NDYsNiArMzQ5MiwzMiBAQCBnZXRPYmplY3REZXNjcmlwdGlvbihjb25zdCBPYmplY3RBZGRy ZXNzICpvYmplY3QsIGJvb2wgbWlzc2luZ19vaykKIAkJCQlicmVhazsKIAkJCX0KIAorCQljYXNl IFZhcmlhYmxlUmVsYXRpb25JZDoKKwkJCXsKKwkJCQljaGFyCSAgICpuc3BuYW1lOworCQkJCUhl YXBUdXBsZQl0dXA7CisJCQkJRm9ybV9wZ192YXJpYWJsZSB2YXJmb3JtOworCisJCQkJdHVwID0g U2VhcmNoU3lzQ2FjaGUxKFZBUklBQkxFT0lELCBPYmplY3RJZEdldERhdHVtKG9iamVjdC0+b2Jq ZWN0SWQpKTsKKwkJCQlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwKSkKKwkJCQkJZWxvZyhFUlJP UiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHNlc3Npb24gdmFyaWFibGUgJXUiLAorCQkJCQkJ IG9iamVjdC0+b2JqZWN0SWQpOworCisJCQkJdmFyZm9ybSA9IChGb3JtX3BnX3ZhcmlhYmxlKSBH RVRTVFJVQ1QodHVwKTsKKworCQkJCWlmIChWYXJpYWJsZUlzVmlzaWJsZShvYmplY3QtPm9iamVj dElkKSkKKwkJCQkJbnNwbmFtZSA9IE5VTEw7CisJCQkJZWxzZQorCQkJCQluc3BuYW1lID0gZ2V0 X25hbWVzcGFjZV9uYW1lKHZhcmZvcm0tPnZhcm5hbWVzcGFjZSk7CisKKwkJCQlhcHBlbmRTdHJp bmdJbmZvKCZidWZmZXIsIF8oInNlc3Npb24gdmFyaWFibGUgJXMiKSwKKwkJCQkJCQkJIHF1b3Rl X3F1YWxpZmllZF9pZGVudGlmaWVyKG5zcG5hbWUsCisJCQkJCQkJCQkJCQkJCQlOYW1lU3RyKHZh cmZvcm0tPnZhcm5hbWUpKSk7CisKKwkJCQlSZWxlYXNlU3lzQ2FjaGUodHVwKTsKKwkJCQlicmVh azsKKwkJCX0KKwogCQljYXNlIFRTUGFyc2VyUmVsYXRpb25JZDoKIAkJCXsKIAkJCQlIZWFwVHVw bGUJdHVwOwpAQCAtMzc5OCw2ICszODcwLDE2IEBAIGdldE9iamVjdERlc2NyaXB0aW9uKGNvbnN0 IE9iamVjdEFkZHJlc3MgKm9iamVjdCwgYm9vbCBtaXNzaW5nX29rKQogCQkJCQkJCQkJCSBfKCJk ZWZhdWx0IHByaXZpbGVnZXMgb24gbmV3IHNjaGVtYXMgYmVsb25naW5nIHRvIHJvbGUgJXMiKSwK IAkJCQkJCQkJCQkgcm9sZW5hbWUpOwogCQkJCQkJYnJlYWs7CisJCQkJCWNhc2UgREVGQUNMT0JK X1ZBUklBQkxFOgorCQkJCQkJaWYgKG5zcG5hbWUpCisJCQkJCQkJYXBwZW5kU3RyaW5nSW5mbygm YnVmZmVyLAorCQkJCQkJCQkJCQkgXygiZGVmYXVsdCBwcml2aWxlZ2VzIG9uIG5ldyBzZXNzaW9u IHZhcmlhYmxlcyBiZWxvbmdpbmcgdG8gcm9sZSAlcyBpbiBzY2hlbWEgJXMiKSwKKwkJCQkJCQkJ CQkJIHJvbGVuYW1lLCBuc3BuYW1lKTsKKwkJCQkJCWVsc2UKKwkJCQkJCQlhcHBlbmRTdHJpbmdJ bmZvKCZidWZmZXIsCisJCQkJCQkJCQkJCSBfKCJkZWZhdWx0IHByaXZpbGVnZXMgb24gbmV3IHNl c3Npb24gdmFyaWFibGVzIGJlbG9uZ2luZyB0byByb2xlICVzIiksCisJCQkJCQkJCQkJCSByb2xl bmFtZSk7CisJCQkJCQlicmVhazsKIAkJCQkJZGVmYXVsdDoKIAkJCQkJCS8qIHNob3VsZG4ndCBn ZXQgaGVyZSAqLwogCQkJCQkJaWYgKG5zcG5hbWUpCkBAIC00NjE0LDYgKzQ2OTYsMTAgQEAgZ2V0 T2JqZWN0VHlwZURlc2NyaXB0aW9uKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwgYm9vbCBt aXNzaW5nX29rKQogCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmYnVmZmVyLCAidHJhbnNmb3Jt Iik7CiAJCQlicmVhazsKIAorCQljYXNlIFZhcmlhYmxlUmVsYXRpb25JZDoKKwkJCWFwcGVuZFN0 cmluZ0luZm9TdHJpbmcoJmJ1ZmZlciwgInNlc3Npb24gdmFyaWFibGUiKTsKKwkJCWJyZWFrOwor CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5zdXBwb3J0ZWQgb2JqZWN0IGNsYXNzOiAl dSIsIG9iamVjdC0+Y2xhc3NJZCk7CiAJfQpAQCAtNTcyMCw2ICs1ODA2LDEwIEBAIGdldE9iamVj dElkZW50aXR5UGFydHMoY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0LAogCQkJCQkJYXBwZW5k U3RyaW5nSW5mb1N0cmluZygmYnVmZmVyLAogCQkJCQkJCQkJCQkgICAiIG9uIHNjaGVtYXMiKTsK IAkJCQkJCWJyZWFrOworCQkJCQljYXNlIERFRkFDTE9CSl9WQVJJQUJMRToKKwkJCQkJCWFwcGVu ZFN0cmluZ0luZm9TdHJpbmcoJmJ1ZmZlciwKKwkJCQkJCQkJCQkJICAgIiBvbiBzZXNzaW9uIHZh cmlhYmxlcyIpOworCQkJCQkJYnJlYWs7CiAJCQkJfQogCiAJCQkJaWYgKG9iam5hbWUpCkBAIC01 OTYwLDYgKzYwNTAsMzMgQEAgZ2V0T2JqZWN0SWRlbnRpdHlQYXJ0cyhjb25zdCBPYmplY3RBZGRy ZXNzICpvYmplY3QsCiAJCQl9CiAJCQlicmVhazsKIAorCQljYXNlIFZhcmlhYmxlUmVsYXRpb25J ZDoKKwkJCXsKKwkJCQljaGFyCSAgICpzY2hlbWE7CisJCQkJY2hhcgkgICAqdmFybmFtZTsKKwkJ CQlIZWFwVHVwbGUJdHVwOworCQkJCUZvcm1fcGdfdmFyaWFibGUgdmFyZm9ybTsKKworCQkJCXR1 cCA9IFNlYXJjaFN5c0NhY2hlMShWQVJJQUJMRU9JRCwgT2JqZWN0SWRHZXREYXR1bShvYmplY3Qt Pm9iamVjdElkKSk7CisJCQkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cCkpCisJCQkJCWVsb2co RVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBzZXNzaW9uIHZhcmlhYmxlICV1IiwKKwkJ CQkJCSBvYmplY3QtPm9iamVjdElkKTsKKworCQkJCXZhcmZvcm0gPSAoRm9ybV9wZ192YXJpYWJs ZSkgR0VUU1RSVUNUKHR1cCk7CisKKwkJCQlzY2hlbWEgPSBnZXRfbmFtZXNwYWNlX25hbWVfb3Jf dGVtcCh2YXJmb3JtLT52YXJuYW1lc3BhY2UpOworCQkJCXZhcm5hbWUgPSBOYW1lU3RyKHZhcmZv cm0tPnZhcm5hbWUpOworCisJCQkJYXBwZW5kU3RyaW5nSW5mbygmYnVmZmVyLCAiJXMiLAorCQkJ CQkJCQkgcXVvdGVfcXVhbGlmaWVkX2lkZW50aWZpZXIoc2NoZW1hLCB2YXJuYW1lKSk7CisKKwkJ CQlpZiAob2JqbmFtZSkKKwkJCQkJKm9iam5hbWUgPSBsaXN0X21ha2UyKHNjaGVtYSwgdmFybmFt ZSk7CisKKwkJCQlSZWxlYXNlU3lzQ2FjaGUodHVwKTsKKwkJCQlicmVhazsKKwkJCX0KKwogCQlk ZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVuc3VwcG9ydGVkIG9iamVjdCBjbGFzczogJXUiLCBv YmplY3QtPmNsYXNzSWQpOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdf c2hkZXBlbmQuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc2hkZXBlbmQuYwppbmRleCA3NTNh ZmI4ODQ1Li4xZWEzZDZkYjA1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3No ZGVwZW5kLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zaGRlcGVuZC5jCkBAIC00Niw2 ICs0Niw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190c19kaWN0LmgiCiAjaW5jbHVkZSAiY2F0 YWxvZy9wZ190eXBlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ191c2VyX21hcHBpbmcuaCIKKyNp bmNsdWRlICJjYXRhbG9nL3BnX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvYWx0ZXIu aCIKICNpbmNsdWRlICJjb21tYW5kcy9kYmNvbW1hbmRzLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMv ZGVmcmVtLmgiCkBAIC0xNzE0LDYgKzE3MTUsNyBAQCBzaGRlcFJlYXNzaWduT3duZWRfT3duZXIo Rm9ybV9wZ19zaGRlcGVuZCBzZGVwRm9ybSwgT2lkIG5ld3JvbGUpCiAJCWNhc2UgRGF0YWJhc2VS ZWxhdGlvbklkOgogCQljYXNlIFRTQ29uZmlnUmVsYXRpb25JZDoKIAkJY2FzZSBUU0RpY3Rpb25h cnlSZWxhdGlvbklkOgorCQljYXNlIFZhcmlhYmxlUmVsYXRpb25JZDoKIAkJCUFsdGVyT2JqZWN0 T3duZXJfaW50ZXJuYWwoc2RlcEZvcm0tPmNsYXNzaWQsCiAJCQkJCQkJCQkgIHNkZXBGb3JtLT5v YmppZCwKIAkJCQkJCQkJCSAgbmV3cm9sZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRh bG9nL3BnX3ZhcmlhYmxlLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3ZhcmlhYmxlLmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZjY1MTIxNDQwYQotLS0gL2Rldi9u dWxsCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfdmFyaWFibGUuYwpAQCAtMCwwICsxLDI1 NSBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogcGdfdmFyaWFibGUuYworICoJCXNlc3Np b24gdmFyaWFibGVzCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjQsIFBv c3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQg KGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICoKKyAq IElERU5USUZJQ0FUSU9OCisgKgkJc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ192YXJpYWJsZS5jCisg KgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworI2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNp bmNsdWRlICJhY2Nlc3MvaGVhcGFtLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9kZXBlbmRlbmN5Lmgi CisjaW5jbHVkZSAiY2F0YWxvZy9pbmRleGluZy5oIgorI2luY2x1ZGUgImNhdGFsb2cvbmFtZXNw YWNlLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9vYmplY3RhY2Nlc3MuaCIKKyNpbmNsdWRlICJjYXRh bG9nL3BnX2NvbGxhdGlvbi5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfbmFtZXNwYWNlLmgiCisj aW5jbHVkZSAiY2F0YWxvZy9wZ192YXJpYWJsZS5oIgorI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgor I2luY2x1ZGUgInBhcnNlci9wYXJzZV90eXBlLmgiCisjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMu aCIKKyNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy9zeXNjYWNo ZS5oIgorCitzdGF0aWMgT2JqZWN0QWRkcmVzcyBjcmVhdGVfdmFyaWFibGUoY29uc3QgY2hhciAq dmFyTmFtZSwKKwkJCQkJCQkJCSBPaWQgdmFyTmFtZXNwYWNlLAorCQkJCQkJCQkJIE9pZCB2YXJU eXBlLAorCQkJCQkJCQkJIGludDMyIHZhclR5cG1vZCwKKwkJCQkJCQkJCSBPaWQgdmFyT3duZXIs CisJCQkJCQkJCQkgT2lkIHZhckNvbGxhdGlvbiwKKwkJCQkJCQkJCSBib29sIGlmX25vdF9leGlz dHMpOworCisKKy8qCisgKiBDcmVhdGVzIGVudHJ5IGluIHBnX3ZhcmlhYmxlIHRhYmxlCisgKi8K K3N0YXRpYyBPYmplY3RBZGRyZXNzCitjcmVhdGVfdmFyaWFibGUoY29uc3QgY2hhciAqdmFyTmFt ZSwKKwkJCQlPaWQgdmFyTmFtZXNwYWNlLAorCQkJCU9pZCB2YXJUeXBlLAorCQkJCWludDMyIHZh clR5cG1vZCwKKwkJCQlPaWQgdmFyT3duZXIsCisJCQkJT2lkIHZhckNvbGxhdGlvbiwKKwkJCQli b29sIGlmX25vdF9leGlzdHMpCit7CisJQWNsCQkgICAqdmFyYWNsOworCU5hbWVEYXRhCXZhcm5h bWU7CisJYm9vbAkJbnVsbHNbTmF0dHNfcGdfdmFyaWFibGVdOworCURhdHVtCQl2YWx1ZXNbTmF0 dHNfcGdfdmFyaWFibGVdOworCVJlbGF0aW9uCXJlbDsKKwlIZWFwVHVwbGUJdHVwOworCVR1cGxl RGVzYwl0dXBkZXNjOworCU9iamVjdEFkZHJlc3MgbXlzZWxmLAorCQkJCXJlZmVyZW5jZWQ7CisJ T2JqZWN0QWRkcmVzc2VzICphZGRyczsKKwlPaWQJCQl2YXJpZDsKKworCUFzc2VydCh2YXJOYW1l KTsKKwlBc3NlcnQoT2lkSXNWYWxpZCh2YXJOYW1lc3BhY2UpKTsKKwlBc3NlcnQoT2lkSXNWYWxp ZCh2YXJUeXBlKSk7CisJQXNzZXJ0KE9pZElzVmFsaWQodmFyT3duZXIpKTsKKworCXJlbCA9IHRh YmxlX29wZW4oVmFyaWFibGVSZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKKworCS8qCisJ ICogQ2hlY2sgZm9yIGR1cGxpY2F0ZXMuIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IHJlYWxseSBw cmV2ZW50CisJICogZHVwbGljYXRlcywgaXQncyBoZXJlIGp1c3QgdG8gcHJvdmlkZSBuaWNlciBl cnJvciBtZXNzYWdlIGluIGNvbW1vbgorCSAqIGNhc2UuIFRoZSByZWFsIHByb3RlY3Rpb24gaXMg dGhlIHVuaXF1ZSBrZXkgb24gdGhlIGNhdGFsb2cuCisJICovCisJaWYgKFNlYXJjaFN5c0NhY2hl RXhpc3RzMihWQVJJQUJMRU5BTUVOU1AsCisJCQkJCQkJICBQb2ludGVyR2V0RGF0dW0odmFyTmFt ZSksCisJCQkJCQkJICBPYmplY3RJZEdldERhdHVtKHZhck5hbWVzcGFjZSkpKQorCXsKKwkJaWYg KGlmX25vdF9leGlzdHMpCisJCQllcmVwb3J0KE5PVElDRSwKKwkJCQkJKGVycmNvZGUoRVJSQ09E RV9EVVBMSUNBVEVfT0JKRUNUKSwKKwkJCQkJIGVycm1zZygic2Vzc2lvbiB2YXJpYWJsZSBcIiVz XCIgYWxyZWFkeSBleGlzdHMsIHNraXBwaW5nIiwKKwkJCQkJCQl2YXJOYW1lKSkpOworCQllbHNl CisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9PQkpF Q1QpLAorCQkJCQkgZXJybXNnKCJzZXNzaW9uIHZhcmlhYmxlIFwiJXNcIiBhbHJlYWR5IGV4aXN0 cyIsCisJCQkJCQkJdmFyTmFtZSkpKTsKKworCQl0YWJsZV9jbG9zZShyZWwsIFJvd0V4Y2x1c2l2 ZUxvY2spOworCisJCXJldHVybiBJbnZhbGlkT2JqZWN0QWRkcmVzczsKKwl9CisKKwltZW1zZXQo dmFsdWVzLCAwLCBzaXplb2YodmFsdWVzKSk7CisJbWVtc2V0KG51bGxzLCBmYWxzZSwgc2l6ZW9m KG51bGxzKSk7CisKKwluYW1lc3RyY3B5KCZ2YXJuYW1lLCB2YXJOYW1lKTsKKworCXZhcmlkID0g R2V0TmV3T2lkV2l0aEluZGV4KHJlbCwgVmFyaWFibGVPaWRJbmRleElkLCBBbnVtX3BnX3Zhcmlh YmxlX29pZCk7CisKKwl2YWx1ZXNbQW51bV9wZ192YXJpYWJsZV9vaWQgLSAxXSA9IE9iamVjdElk R2V0RGF0dW0odmFyaWQpOworCXZhbHVlc1tBbnVtX3BnX3ZhcmlhYmxlX3Zhcm5hbWUgLSAxXSA9 IE5hbWVHZXREYXR1bSgmdmFybmFtZSk7CisJdmFsdWVzW0FudW1fcGdfdmFyaWFibGVfdmFybmFt ZXNwYWNlIC0gMV0gPSBPYmplY3RJZEdldERhdHVtKHZhck5hbWVzcGFjZSk7CisJdmFsdWVzW0Fu dW1fcGdfdmFyaWFibGVfdmFydHlwZSAtIDFdID0gT2JqZWN0SWRHZXREYXR1bSh2YXJUeXBlKTsK Kwl2YWx1ZXNbQW51bV9wZ192YXJpYWJsZV92YXJ0eXBtb2QgLSAxXSA9IEludDMyR2V0RGF0dW0o dmFyVHlwbW9kKTsKKwl2YWx1ZXNbQW51bV9wZ192YXJpYWJsZV92YXJvd25lciAtIDFdID0gT2Jq ZWN0SWRHZXREYXR1bSh2YXJPd25lcik7CisJdmFsdWVzW0FudW1fcGdfdmFyaWFibGVfdmFyY29s bGF0aW9uIC0gMV0gPSBPYmplY3RJZEdldERhdHVtKHZhckNvbGxhdGlvbik7CisKKwl2YXJhY2wg PSBnZXRfdXNlcl9kZWZhdWx0X2FjbChPQkpFQ1RfVkFSSUFCTEUsIHZhck93bmVyLAorCQkJCQkJ CQkgIHZhck5hbWVzcGFjZSk7CisJaWYgKHZhcmFjbCAhPSBOVUxMKQorCQl2YWx1ZXNbQW51bV9w Z192YXJpYWJsZV92YXJhY2wgLSAxXSA9IFBvaW50ZXJHZXREYXR1bSh2YXJhY2wpOworCWVsc2UK KwkJbnVsbHNbQW51bV9wZ192YXJpYWJsZV92YXJhY2wgLSAxXSA9IHRydWU7CisKKwl0dXBkZXNj ID0gUmVsYXRpb25HZXREZXNjcihyZWwpOworCisJdHVwID0gaGVhcF9mb3JtX3R1cGxlKHR1cGRl c2MsIHZhbHVlcywgbnVsbHMpOworCUNhdGFsb2dUdXBsZUluc2VydChyZWwsIHR1cCk7CisJQXNz ZXJ0KE9pZElzVmFsaWQodmFyaWQpKTsKKworCWFkZHJzID0gbmV3X29iamVjdF9hZGRyZXNzZXMo KTsKKworCU9iamVjdEFkZHJlc3NTZXQobXlzZWxmLCBWYXJpYWJsZVJlbGF0aW9uSWQsIHZhcmlk KTsKKworCS8qIGRlcGVuZGVuY3kgb24gbmFtZXNwYWNlICovCisJT2JqZWN0QWRkcmVzc1NldChy ZWZlcmVuY2VkLCBOYW1lc3BhY2VSZWxhdGlvbklkLCB2YXJOYW1lc3BhY2UpOworCWFkZF9leGFj dF9vYmplY3RfYWRkcmVzcygmcmVmZXJlbmNlZCwgYWRkcnMpOworCisJLyogZGVwZW5kZW5jeSBv biB1c2VkIHR5cGUgKi8KKwlPYmplY3RBZGRyZXNzU2V0KHJlZmVyZW5jZWQsIFR5cGVSZWxhdGlv bklkLCB2YXJUeXBlKTsKKwlhZGRfZXhhY3Rfb2JqZWN0X2FkZHJlc3MoJnJlZmVyZW5jZWQsIGFk ZHJzKTsKKworCS8qIGRlcGVuZGVuY3kgb24gY29sbGF0aW9uICovCisJaWYgKE9pZElzVmFsaWQo dmFyQ29sbGF0aW9uKSAmJgorCQl2YXJDb2xsYXRpb24gIT0gREVGQVVMVF9DT0xMQVRJT05fT0lE KQorCXsKKwkJT2JqZWN0QWRkcmVzc1NldChyZWZlcmVuY2VkLCBDb2xsYXRpb25SZWxhdGlvbklk LCB2YXJDb2xsYXRpb24pOworCQlhZGRfZXhhY3Rfb2JqZWN0X2FkZHJlc3MoJnJlZmVyZW5jZWQs IGFkZHJzKTsKKwl9CisKKwlyZWNvcmRfb2JqZWN0X2FkZHJlc3NfZGVwZW5kZW5jaWVzKCZteXNl bGYsIGFkZHJzLCBERVBFTkRFTkNZX05PUk1BTCk7CisJZnJlZV9vYmplY3RfYWRkcmVzc2VzKGFk ZHJzKTsKKworCS8qIGRlcGVuZGVuY3kgb24gb3duZXIgKi8KKwlyZWNvcmREZXBlbmRlbmN5T25P d25lcihWYXJpYWJsZVJlbGF0aW9uSWQsIHZhcmlkLCB2YXJPd25lcik7CisKKwkvKiBkZXBlbmRl bmNpZXMgb24gcm9sZXMgbWVudGlvbmVkIGluIGRlZmF1bHQgQUNMICovCisJcmVjb3JkRGVwZW5k ZW5jeU9uTmV3QWNsKFZhcmlhYmxlUmVsYXRpb25JZCwgdmFyaWQsIDAsIHZhck93bmVyLCB2YXJh Y2wpOworCisJLyogZGVwZW5kZW5jeSBvbiBleHRlbnNpb24gKi8KKwlyZWNvcmREZXBlbmRlbmN5 T25DdXJyZW50RXh0ZW5zaW9uKCZteXNlbGYsIGZhbHNlKTsKKworCWhlYXBfZnJlZXR1cGxlKHR1 cCk7CisKKwkvKiBQb3N0IGNyZWF0aW9uIGhvb2sgZm9yIG5ldyBmdW5jdGlvbiAqLworCUludm9r ZU9iamVjdFBvc3RDcmVhdGVIb29rKFZhcmlhYmxlUmVsYXRpb25JZCwgdmFyaWQsIDApOworCisJ dGFibGVfY2xvc2UocmVsLCBSb3dFeGNsdXNpdmVMb2NrKTsKKworCXJldHVybiBteXNlbGY7Cit9 CisKKy8qCisgKiBDcmVhdGVzIGEgbmV3IHZhcmlhYmxlCisgKgorICogVXNlZCBieSBDUkVBVEUg VkFSSUFCTEUgY29tbWFuZAorICovCitPYmplY3RBZGRyZXNzCitDcmVhdGVWYXJpYWJsZShQYXJz ZVN0YXRlICpwc3RhdGUsIENyZWF0ZVNlc3Npb25WYXJTdG10ICpzdG10KQoreworCU9pZAkJCW5h bWVzcGFjZWlkOworCUFjbFJlc3VsdAlhY2xyZXN1bHQ7CisJT2lkCQkJdHlwaWQ7CisJaW50MzIJ CXR5cG1vZDsKKwlPaWQJCQl2YXJvd25lciA9IEdldFVzZXJJZCgpOworCU9pZAkJCWNvbGxhdGlv bjsKKwlPaWQJCQl0eXBjb2xsYXRpb247CisJT2JqZWN0QWRkcmVzcyB2YXJpYWJsZTsKKworCW5h bWVzcGFjZWlkID0KKwkJUmFuZ2VWYXJHZXRBbmRDaGVja0NyZWF0aW9uTmFtZXNwYWNlKHN0bXQt PnZhcmlhYmxlLCBOb0xvY2ssIE5VTEwpOworCisJdHlwZW5hbWVUeXBlSWRBbmRNb2QocHN0YXRl LCBzdG10LT50eXBlTmFtZSwgJnR5cGlkLCAmdHlwbW9kKTsKKworCS8qIERpc2FsbG93IHBzZXVk b3R5cGVzICovCisJaWYgKGdldF90eXB0eXBlKHR5cGlkKSA9PSBUWVBUWVBFX1BTRVVETykKKwkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwK KwkJCQkgZXJybXNnKCJzZXNzaW9uIHZhcmlhYmxlIGNhbm5vdCBiZSBwc2V1ZG8tdHlwZSAlcyIs CisJCQkJCQlmb3JtYXRfdHlwZV9iZSh0eXBpZCkpKSk7CisKKwlhY2xyZXN1bHQgPSBvYmplY3Rf YWNsY2hlY2soVHlwZVJlbGF0aW9uSWQsIHR5cGlkLCBHZXRVc2VySWQoKSwgQUNMX1VTQUdFKTsK KwlpZiAoYWNscmVzdWx0ICE9IEFDTENIRUNLX09LKQorCQlhY2xjaGVja19lcnJvcl90eXBlKGFj bHJlc3VsdCwgdHlwaWQpOworCisJdHlwY29sbGF0aW9uID0gZ2V0X3R5cGNvbGxhdGlvbih0eXBp ZCk7CisKKwlpZiAoc3RtdC0+Y29sbENsYXVzZSkKKwkJY29sbGF0aW9uID0gTG9va3VwQ29sbGF0 aW9uKHBzdGF0ZSwKKwkJCQkJCQkJCXN0bXQtPmNvbGxDbGF1c2UtPmNvbGxuYW1lLAorCQkJCQkJ CQkJc3RtdC0+Y29sbENsYXVzZS0+bG9jYXRpb24pOworCWVsc2UKKwkJY29sbGF0aW9uID0gdHlw Y29sbGF0aW9uOzsKKworCS8qIENvbXBsYWluIGlmIENPTExBVEUgaXMgYXBwbGllZCB0byBhbiB1 bmNvbGxhdGFibGUgdHlwZSAqLworCWlmIChPaWRJc1ZhbGlkKGNvbGxhdGlvbikgJiYgIU9pZElz VmFsaWQodHlwY29sbGF0aW9uKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJD T0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJCQkgZXJybXNnKCJjb2xsYXRpb25zIGFyZSBub3Qg c3VwcG9ydGVkIGJ5IHR5cGUgJXMiLAorCQkJCQkJZm9ybWF0X3R5cGVfYmUodHlwaWQpKSwKKwkJ CQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgc3RtdC0+Y29sbENsYXVzZS0+bG9jYXRpb24p KSk7CisKKwl2YXJpYWJsZSA9IGNyZWF0ZV92YXJpYWJsZShzdG10LT52YXJpYWJsZS0+cmVsbmFt ZSwKKwkJCQkJCQkgICBuYW1lc3BhY2VpZCwKKwkJCQkJCQkgICB0eXBpZCwKKwkJCQkJCQkgICB0 eXBtb2QsCisJCQkJCQkJICAgdmFyb3duZXIsCisJCQkJCQkJICAgY29sbGF0aW9uLAorCQkJCQkJ CSAgIHN0bXQtPmlmX25vdF9leGlzdHMpOworCisJZWxvZyhERUJVRzEsICJyZWNvcmQgZm9yIHNl c3Npb24gdmFyaWFibGUgXCIlc1wiIChvaWQ6JWQpIHdhcyBjcmVhdGVkIGluIHBnX3ZhcmlhYmxl IiwKKwkJIHN0bXQtPnZhcmlhYmxlLT5yZWxuYW1lLCB2YXJpYWJsZS5vYmplY3RJZCk7CisKKwkv KiBXZSB3YW50IFNlc3Npb25WYXJpYWJsZUNyZWF0ZVBvc3Rwcm9jZXNzIHRvIHNlZSB0aGUgY2F0 YWxvZyBjaGFuZ2VzLiAqLworCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7CisKKwlyZXR1cm4g dmFyaWFibGU7Cit9CisKKy8qCisgKiBEcm9wIHZhcmlhYmxlIGJ5IE9JRCwgYW5kIHJlZ2lzdGVy IHRoZSBuZWVkZWQgc2Vzc2lvbiB2YXJpYWJsZQorICogY2xlYW51cC4KKyAqLwordm9pZAorRHJv cFZhcmlhYmxlQnlJZChPaWQgdmFyaWQpCit7CisJUmVsYXRpb24JcmVsOworCUhlYXBUdXBsZQl0 dXA7CisKKwlyZWwgPSB0YWJsZV9vcGVuKFZhcmlhYmxlUmVsYXRpb25JZCwgUm93RXhjbHVzaXZl TG9jayk7CisKKwl0dXAgPSBTZWFyY2hTeXNDYWNoZTEoVkFSSUFCTEVPSUQsIE9iamVjdElkR2V0 RGF0dW0odmFyaWQpKTsKKworCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0dXApKQorCQllbG9nKEVS Uk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgdmFyaWFibGUgJXUiLCB2YXJpZCk7CisKKwlD YXRhbG9nVHVwbGVEZWxldGUocmVsLCAmdHVwLT50X3NlbGYpOworCisJUmVsZWFzZVN5c0NhY2hl KHR1cCk7CisKKwl0YWJsZV9jbG9zZShyZWwsIFJvd0V4Y2x1c2l2ZUxvY2spOworfQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYWx0ZXIuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2FsdGVyLmMKaW5kZXggNGY5OWViYjQ0Ny4uNjNmYTk5ZmFkMyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvYWx0ZXIuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hbHRlci5j CkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190c19kaWN0LmgiCiAjaW5j bHVkZSAiY2F0YWxvZy9wZ190c19wYXJzZXIuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3RzX3Rl bXBsYXRlLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ192YXJpYWJsZS5oIgogI2luY2x1ZGUgImNv bW1hbmRzL2FsdGVyLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvY29sbGF0aW9uY21kcy5oIgogI2lu Y2x1ZGUgImNvbW1hbmRzL2RiY29tbWFuZHMuaCIKQEAgLTEzOSw2ICsxNDAsMTAgQEAgcmVwb3J0 X25hbWVzcGFjZV9jb25mbGljdChPaWQgY2xhc3NJZCwgY29uc3QgY2hhciAqbmFtZSwgT2lkIG5z cE9pZCkKIAkJCUFzc2VydChPaWRJc1ZhbGlkKG5zcE9pZCkpOwogCQkJbXNnZm10ID0gZ2V0dGV4 dF9ub29wKCJ0ZXh0IHNlYXJjaCBjb25maWd1cmF0aW9uIFwiJXNcIiBhbHJlYWR5IGV4aXN0cyBp biBzY2hlbWEgXCIlc1wiIik7CiAJCQlicmVhazsKKwkJY2FzZSBWYXJpYWJsZVJlbGF0aW9uSWQ6 CisJCQlBc3NlcnQoT2lkSXNWYWxpZChuc3BPaWQpKTsKKwkJCW1zZ2ZtdCA9IGdldHRleHRfbm9v cCgic2Vzc2lvbiB2YXJpYWJsZSBcIiVzXCIgYWxyZWFkeSBleGlzdHMgaW4gc2NoZW1hIFwiJXNc IiIpOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5zdXBwb3J0ZWQg b2JqZWN0IGNsYXNzOiAldSIsIGNsYXNzSWQpOwogCQkJYnJlYWs7CkBAIC00MTgsNiArNDIzLDcg QEAgRXhlY1JlbmFtZVN0bXQoUmVuYW1lU3RtdCAqc3RtdCkKIAkJY2FzZSBPQkpFQ1RfVFNURU1Q TEFURToKIAkJY2FzZSBPQkpFQ1RfUFVCTElDQVRJT046CiAJCWNhc2UgT0JKRUNUX1NVQlNDUklQ VElPTjoKKwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CiAJCQl7CiAJCQkJT2JqZWN0QWRkcmVzcyBh ZGRyZXNzOwogCQkJCVJlbGF0aW9uCWNhdGFsb2c7CkBAIC01NjEsNiArNTY3LDcgQEAgRXhlY0Fs dGVyT2JqZWN0U2NoZW1hU3RtdChBbHRlck9iamVjdFNjaGVtYVN0bXQgKnN0bXQsCiAJCWNhc2Ug T0JKRUNUX1RTRElDVElPTkFSWToKIAkJY2FzZSBPQkpFQ1RfVFNQQVJTRVI6CiAJCWNhc2UgT0JK RUNUX1RTVEVNUExBVEU6CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgogCQkJewogCQkJCVJlbGF0 aW9uCWNhdGFsb2c7CiAJCQkJUmVsYXRpb24JcmVsYXRpb247CkBAIC02NDUsNiArNjUyLDcgQEAg QWx0ZXJPYmplY3ROYW1lc3BhY2Vfb2lkKE9pZCBjbGFzc0lkLCBPaWQgb2JqaWQsIE9pZCBuc3BP aWQsCiAJCWNhc2UgVFNEaWN0aW9uYXJ5UmVsYXRpb25JZDoKIAkJY2FzZSBUU1RlbXBsYXRlUmVs YXRpb25JZDoKIAkJY2FzZSBUU0NvbmZpZ1JlbGF0aW9uSWQ6CisJCWNhc2UgVmFyaWFibGVSZWxh dGlvbklkOgogCQkJewogCQkJCVJlbGF0aW9uCWNhdGFsb2c7CiAKQEAgLTg3NSw2ICs4ODMsNyBA QCBFeGVjQWx0ZXJPd25lclN0bXQoQWx0ZXJPd25lclN0bXQgKnN0bXQpCiAJCWNhc2UgT0JKRUNU X1RBQkxFU1BBQ0U6CiAJCWNhc2UgT0JKRUNUX1RTRElDVElPTkFSWToKIAkJY2FzZSBPQkpFQ1Rf VFNDT05GSUdVUkFUSU9OOgorCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKIAkJCXsKIAkJCQlSZWxh dGlvbglyZWxhdGlvbjsKIAkJCQlPYmplY3RBZGRyZXNzIGFkZHJlc3M7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jb21tYW5kcy9kcm9wY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZHJv cGNtZHMuYwppbmRleCA4NWVlYzdlMzk0Li4zY2NlMTdlOTJhIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9kcm9wY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Ryb3Bj bWRzLmMKQEAgLTQ3Niw2ICs0NzYsMTAgQEAgZG9lc19ub3RfZXhpc3Rfc2tpcHBpbmcoT2JqZWN0 VHlwZSBvYmp0eXBlLCBOb2RlICpvYmplY3QpCiAJCQltc2cgPSBnZXR0ZXh0X25vb3AoInB1Ymxp Y2F0aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCwgc2tpcHBpbmciKTsKIAkJCW5hbWUgPSBzdHJW YWwob2JqZWN0KTsKIAkJCWJyZWFrOworCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCW1zZyA9 IGdldHRleHRfbm9vcCgic2Vzc2lvbiB2YXJpYWJsZSBcIiVzXCIgZG9lcyBub3QgZXhpc3QsIHNr aXBwaW5nIik7CisJCQluYW1lID0gTmFtZUxpc3RUb1N0cmluZyhjYXN0Tm9kZShMaXN0LCBvYmpl Y3QpKTsKKwkJCWJyZWFrOwogCiAJCWNhc2UgT0JKRUNUX0NPTFVNTjoKIAkJY2FzZSBPQkpFQ1Rf REFUQUJBU0U6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2Vy LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMKaW5kZXggN2E1ZWQ2Yjk4 NS4uNmQ0MWFhN2VjMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJp Z2dlci5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuYwpAQCAtMjE1 Niw2ICsyMTU2LDggQEAgc3RyaW5naWZ5X2dyYW50X29ianR5cGUoT2JqZWN0VHlwZSBvYmp0eXBl KQogCQkJcmV0dXJuICJUQUJMRVNQQUNFIjsKIAkJY2FzZSBPQkpFQ1RfVFlQRToKIAkJCXJldHVy biAiVFlQRSI7CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJcmV0dXJuICJWQVJJQUJMRSI7 CiAJCQkvKiB0aGVzZSBjdXJyZW50bHkgYXJlbid0IHVzZWQgKi8KIAkJY2FzZSBPQkpFQ1RfQUND RVNTX01FVEhPRDoKIAkJY2FzZSBPQkpFQ1RfQUdHUkVHQVRFOgpAQCAtMjIzOSw2ICsyMjQxLDgg QEAgc3RyaW5naWZ5X2FkZWZwcml2c19vYmp0eXBlKE9iamVjdFR5cGUgb2JqdHlwZSkKIAkJCXJl dHVybiAiVEFCTEVTUEFDRVMiOwogCQljYXNlIE9CSkVDVF9UWVBFOgogCQkJcmV0dXJuICJUWVBF UyI7CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJcmV0dXJuICJWQVJJQUJMRVMiOwogCQkJ LyogdGhlc2UgY3VycmVudGx5IGFyZW4ndCB1c2VkICovCiAJCWNhc2UgT0JKRUNUX0FDQ0VTU19N RVRIT0Q6CiAJCWNhc2UgT0JKRUNUX0FHR1JFR0FURToKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3NlY2xhYmVsLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zZWNsYWJlbC5jCmlu ZGV4IDU2MDcyNzNiZjkuLmMwMjZhYjVkY2IgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3NlY2xhYmVsLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VjbGFiZWwuYwpAQCAt OTIsNiArOTIsNyBAQCBTZWNMYWJlbFN1cHBvcnRzT2JqZWN0VHlwZShPYmplY3RUeXBlIG9ianR5 cGUpCiAJCWNhc2UgT0JKRUNUX1RTUEFSU0VSOgogCQljYXNlIE9CSkVDVF9UU1RFTVBMQVRFOgog CQljYXNlIE9CSkVDVF9VU0VSX01BUFBJTkc6CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgogCQkJ cmV0dXJuIGZhbHNlOwogCiAJCQkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv dGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCAwYjJh NTI0NjNmLi5mMzU2NGU2MDE3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJs ZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtNTEsNiAr NTEsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfdGFibGVzcGFjZS5oIgogI2luY2x1ZGUgImNh dGFsb2cvcGdfdHJpZ2dlci5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgorI2luY2x1 ZGUgImNhdGFsb2cvcGdfdmFyaWFibGUuaCIKICNpbmNsdWRlICJjYXRhbG9nL3N0b3JhZ2UuaCIK ICNpbmNsdWRlICJjYXRhbG9nL3N0b3JhZ2VfeGxvZy5oIgogI2luY2x1ZGUgImNhdGFsb2cvdG9h c3RpbmcuaCIKQEAgLTY3MjMsNiArNjcyNCw3IEBAIEFUVHlwZWRUYWJsZVJlY3Vyc2lvbihMaXN0 ICoqd3F1ZXVlLCBSZWxhdGlvbiByZWwsIEFsdGVyVGFibGVDbWQgKmNtZCwKICAqIChwb3NzaWJs eSBuZXN0ZWQgc2V2ZXJhbCBsZXZlbHMgZGVlcCBpbiBjb21wb3NpdGUgdHlwZXMsIGFycmF5cywg ZXRjISkuCiAgKiBFdmVudHVhbGx5LCB3ZSdkIGxpa2UgdG8gcHJvcGFnYXRlIHRoZSBjaGVjayBv ciByZXdyaXRlIG9wZXJhdGlvbgogICogaW50byBzdWNoIHRhYmxlcywgYnV0IGZvciBub3csIGp1 c3QgZXJyb3Igb3V0IGlmIHdlIGZpbmQgYW55LgorICogQWxzbywgY2hlY2sgaWYgInR5cGVPaWQi IGlzIHVzZWQgYXMgdHlwZSBvZiBzb21lIHNlc3Npb24gdmFyaWFibGUuCiAgKgogICogQ2FsbGVy IHNob3VsZCBwcm92aWRlIGVpdGhlciB0aGUgYXNzb2NpYXRlZCByZWxhdGlvbiBvZiBhIHJvd3R5 cGUsCiAgKiBvciBhIHR5cGUgbmFtZSAobm90IGJvdGgpIGZvciB1c2UgaW4gdGhlIGVycm9yIG1l c3NhZ2UsIGlmIGFueS4KQEAgLTY3ODYsNiArNjc4OCw0NSBAQCBmaW5kX2NvbXBvc2l0ZV90eXBl X2RlcGVuZGVuY2llcyhPaWQgdHlwZU9pZCwgUmVsYXRpb24gb3JpZ1JlbGF0aW9uLAogCQkJY29u dGludWU7CiAJCX0KIAorCQkvKiBjaGVjayBpZiB0aGUgdHlwZSBpcyB1c2VkIGFzIHR5cGUgb2Yg c29tZSBzZXNzaW9uIHZhcmlhYmxlICovCisJCWlmIChwZ19kZXBlbmQtPmNsYXNzaWQgPT0gVmFy aWFibGVSZWxhdGlvbklkKQorCQl7CisJCQlPaWQJCQl2YXJpZCA9IHBnX2RlcGVuZC0+b2JqaWQ7 CisKKwkJCWlmIChvcmlnVHlwZU5hbWUpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJj b2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJCSBlcnJtc2coImNhbm5v dCBhbHRlciB0eXBlIFwiJXNcIiBiZWNhdXNlIHNlc3Npb24gdmFyaWFibGUgXCIlcy4lc1wiIHVz ZXMgaXQiLAorCQkJCQkJCQlvcmlnVHlwZU5hbWUsCisJCQkJCQkJCWdldF9uYW1lc3BhY2VfbmFt ZShnZXRfc2Vzc2lvbl92YXJpYWJsZV9uYW1lc3BhY2UodmFyaWQpKSwKKwkJCQkJCQkJZ2V0X3Nl c3Npb25fdmFyaWFibGVfbmFtZSh2YXJpZCkpKSk7CisJCQllbHNlIGlmIChvcmlnUmVsYXRpb24t PnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX0NPTVBPU0lURV9UWVBFKQorCQkJCWVyZXBvcnQo RVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJ CQkJCQkgZXJybXNnKCJjYW5ub3QgYWx0ZXIgdHlwZSBcIiVzXCIgYmVjYXVzZSBzZXNzaW9uIHZh cmlhYmxlIFwiJXMuJXNcIiB1c2VzIGl0IiwKKwkJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5h bWUob3JpZ1JlbGF0aW9uKSwKKwkJCQkJCQkJZ2V0X25hbWVzcGFjZV9uYW1lKGdldF9zZXNzaW9u X3ZhcmlhYmxlX25hbWVzcGFjZSh2YXJpZCkpLAorCQkJCQkJCQlnZXRfc2Vzc2lvbl92YXJpYWJs ZV9uYW1lKHZhcmlkKSkpKTsKKwkJCWVsc2UgaWYgKG9yaWdSZWxhdGlvbi0+cmRfcmVsLT5yZWxr aW5kID09IFJFTEtJTkRfRk9SRUlHTl9UQUJMRSkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJ KGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkJIGVycm1zZygi Y2Fubm90IGFsdGVyIGZvcmVpZ24gdGFibGUgXCIlc1wiIGJlY2F1c2Ugc2Vzc2lvbiB2YXJpYWJs ZSBcIiVzLiVzXCIgdXNlcyBpdCIsCisJCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKG9y aWdSZWxhdGlvbiksCisJCQkJCQkJCWdldF9uYW1lc3BhY2VfbmFtZShnZXRfc2Vzc2lvbl92YXJp YWJsZV9uYW1lc3BhY2UodmFyaWQpKSwKKwkJCQkJCQkJZ2V0X3Nlc3Npb25fdmFyaWFibGVfbmFt ZSh2YXJpZCkpKSk7CisJCQllbHNlIGlmIChvcmlnUmVsYXRpb24tPnJkX3JlbC0+cmVsa2luZCA9 PSBSRUxLSU5EX1JFTEFUSU9OIHx8CisJCQkJCSBvcmlnUmVsYXRpb24tPnJkX3JlbC0+cmVsa2lu ZCA9PSBSRUxLSU5EX01BVFZJRVcgfHwKKwkJCQkJIG9yaWdSZWxhdGlvbi0+cmRfcmVsLT5yZWxr aW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJ CQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJCSBlcnJt c2coImNhbm5vdCBhbHRlciB0YWJsZSBcIiVzXCIgYmVjYXVzZSBzZXNzaW9uIHZhcmlhYmxlIFwi JXMuJXNcIiB1c2VzIGl0IiwKKwkJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUob3JpZ1Jl bGF0aW9uKSwKKwkJCQkJCQkJZ2V0X25hbWVzcGFjZV9uYW1lKGdldF9zZXNzaW9uX3ZhcmlhYmxl X25hbWVzcGFjZSh2YXJpZCkpLAorCQkJCQkJCQlnZXRfc2Vzc2lvbl92YXJpYWJsZV9uYW1lKHZh cmlkKSkpKTsKKworCQkJY29udGludWU7CisJCX0KKwogCQkvKiBFbHNlLCBpZ25vcmUgZGVwZW5k ZWVzIHRoYXQgYXJlbid0IHJlbGF0aW9ucyAqLwogCQlpZiAocGdfZGVwZW5kLT5jbGFzc2lkICE9 IFJlbGF0aW9uUmVsYXRpb25JZCkKIAkJCWNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggYTA0M2Zk NGM2Ni4uM2YyYzU5MGNlMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQor KysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC01Myw2ICs1Myw3IEBACiAjaW5jbHVk ZSAiY2F0YWxvZy9uYW1lc3BhY2UuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2FtLmgiCiAjaW5j bHVkZSAiY2F0YWxvZy9wZ190cmlnZ2VyLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ192YXJpYWJs ZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2RlZnJlbS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3Ry aWdnZXIuaCIKICNpbmNsdWRlICJncmFtcGFyc2UuaCIKQEAgLTI5NSw4ICsyOTYsOCBAQCBzdGF0 aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxp YXNlcywgTm9kZSAqcXVlcnkpOwogCQlDb25zdHJhaW50c1NldFN0bXQgQ29weVN0bXQgQ3JlYXRl QXNTdG10IENyZWF0ZUNhc3RTdG10CiAJCUNyZWF0ZURvbWFpblN0bXQgQ3JlYXRlRXh0ZW5zaW9u U3RtdCBDcmVhdGVHcm91cFN0bXQgQ3JlYXRlT3BDbGFzc1N0bXQKIAkJQ3JlYXRlT3BGYW1pbHlT dG10IEFsdGVyT3BGYW1pbHlTdG10IENyZWF0ZVBMYW5nU3RtdAotCQlDcmVhdGVTY2hlbWFTdG10 IENyZWF0ZVNlcVN0bXQgQ3JlYXRlU3RtdCBDcmVhdGVTdGF0c1N0bXQgQ3JlYXRlVGFibGVTcGFj ZVN0bXQKLQkJQ3JlYXRlRmR3U3RtdCBDcmVhdGVGb3JlaWduU2VydmVyU3RtdCBDcmVhdGVGb3Jl aWduVGFibGVTdG10CisJCUNyZWF0ZVNjaGVtYVN0bXQgQ3JlYXRlU2VxU3RtdCBDcmVhdGVTZXNz aW9uVmFyU3RtdCBDcmVhdGVTdG10IENyZWF0ZVN0YXRzU3RtdAorCQlDcmVhdGVUYWJsZVNwYWNl U3RtdCBDcmVhdGVGZHdTdG10IENyZWF0ZUZvcmVpZ25TZXJ2ZXJTdG10IENyZWF0ZUZvcmVpZ25U YWJsZVN0bXQKIAkJQ3JlYXRlQXNzZXJ0aW9uU3RtdCBDcmVhdGVUcmFuc2Zvcm1TdG10IENyZWF0 ZVRyaWdTdG10IENyZWF0ZUV2ZW50VHJpZ1N0bXQKIAkJQ3JlYXRlVXNlclN0bXQgQ3JlYXRlVXNl ck1hcHBpbmdTdG10IENyZWF0ZVJvbGVTdG10IENyZWF0ZVBvbGljeVN0bXQKIAkJQ3JlYXRlZGJT dG10IERlY2xhcmVDdXJzb3JTdG10IERlZmluZVN0bXQgRGVsZXRlU3RtdCBEaXNjYXJkU3RtdCBE b1N0bXQKQEAgLTc5MCw4ICs3OTEsOCBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdT ZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCVVFU0NB UEUgVU5CT1VOREVEIFVOQ09ORElUSU9OQUwgVU5DT01NSVRURUQgVU5FTkNSWVBURUQgVU5JT04g VU5JUVVFIFVOS05PV04KIAlVTkxJU1RFTiBVTkxPR0dFRCBVTlRJTCBVUERBVEUgVVNFUiBVU0lO RwogCi0JVkFDVVVNIFZBTElEIFZBTElEQVRFIFZBTElEQVRPUiBWQUxVRV9QIFZBTFVFUyBWQVJD SEFSIFZBUklBRElDIFZBUllJTkcKLQlWRVJCT1NFIFZFUlNJT05fUCBWSUVXIFZJRVdTIFZPTEFU SUxFCisJVkFDVVVNIFZBTElEIFZBTElEQVRFIFZBTElEQVRPUiBWQUxVRV9QIFZBTFVFUyBWQVJD SEFSIFZBUklBQkxFIFZBUklBQkxFUworCVZBUklBRElDIFZBUllJTkcgVkVSQk9TRSBWRVJTSU9O X1AgVklFVyBWSUVXUyBWT0xBVElMRQogCiAJV0hFTiBXSEVSRSBXSElURVNQQUNFX1AgV0lORE9X IFdJVEggV0lUSElOIFdJVEhPVVQgV09SSyBXUkFQUEVSIFdSSVRFCiAKQEAgLTEwNjEsNiArMTA2 Miw3IEBAIHN0bXQ6CiAJCQl8IENyZWF0ZVBvbGljeVN0bXQKIAkJCXwgQ3JlYXRlUExhbmdTdG10 CiAJCQl8IENyZWF0ZVNjaGVtYVN0bXQKKwkJCXwgQ3JlYXRlU2Vzc2lvblZhclN0bXQKIAkJCXwg Q3JlYXRlU2VxU3RtdAogCQkJfCBDcmVhdGVTdG10CiAJCQl8IENyZWF0ZVN1YnNjcmlwdGlvblN0 bXQKQEAgLTE2MDUsNiArMTYwNyw3IEBAIHNjaGVtYV9zdG10OgogCQkJfCBDcmVhdGVUcmlnU3Rt dAogCQkJfCBHcmFudFN0bXQKIAkJCXwgVmlld1N0bXQKKwkJCXwgQ3JlYXRlU2Vzc2lvblZhclN0 bXQKIAkJOwogCiAKQEAgLTUyMDIsNiArNTIwNSwzNCBAQCBjcmVhdGVfZXh0ZW5zaW9uX29wdF9p dGVtOgogCQkJCX0KIAkJOwogCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKgkJUVVFUlkg OgorICoJCQkJQ1JFQVRFIFZBUklBQkxFIHZhcm5hbWUgW0FTXSB0eXBlCisgKgorICoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLworCitDcmVhdGVTZXNzaW9uVmFyU3RtdDoKKwkJCUNSRUFURSBWQVJJQUJM RSBxdWFsaWZpZWRfbmFtZSBvcHRfYXMgVHlwZW5hbWUgb3B0X2NvbGxhdGVfY2xhdXNlCisJCQkJ eworCQkJCQlDcmVhdGVTZXNzaW9uVmFyU3RtdCAqbiA9IG1ha2VOb2RlKENyZWF0ZVNlc3Npb25W YXJTdG10KTsKKwkJCQkJbi0+dmFyaWFibGUgPSAkMzsKKwkJCQkJbi0+dHlwZU5hbWUgPSAkNTsK KwkJCQkJbi0+Y29sbENsYXVzZSA9IChDb2xsYXRlQ2xhdXNlICopICQ2OworCQkJCQluLT5pZl9u b3RfZXhpc3RzID0gZmFsc2U7CisJCQkJCSQkID0gKE5vZGUgKikgbjsKKwkJCQl9CisJCQl8IENS RUFURSBWQVJJQUJMRSBJRl9QIE5PVCBFWElTVFMgcXVhbGlmaWVkX25hbWUgb3B0X2FzIFR5cGVu YW1lIG9wdF9jb2xsYXRlX2NsYXVzZQorCQkJCXsKKwkJCQkJQ3JlYXRlU2Vzc2lvblZhclN0bXQg Km4gPSBtYWtlTm9kZShDcmVhdGVTZXNzaW9uVmFyU3RtdCk7CisJCQkJCW4tPnZhcmlhYmxlID0g JDY7CisJCQkJCW4tPnR5cGVOYW1lID0gJDg7CisJCQkJCW4tPmNvbGxDbGF1c2UgPSAoQ29sbGF0 ZUNsYXVzZSAqKSAkOTsKKwkJCQkJbi0+aWZfbm90X2V4aXN0cyA9IHRydWU7CisJCQkJCSQkID0g KE5vZGUgKikgbjsKKwkJCQl9CisJCTsKKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgogICog QUxURVIgRVhURU5TSU9OIG5hbWUgVVBEQVRFIFsgVE8gdmVyc2lvbiBdCkBAIC03MDA2LDYgKzcw MzcsNyBAQCBvYmplY3RfdHlwZV9hbnlfbmFtZToKIAkJCXwgVEVYVF9QIFNFQVJDSCBESUNUSU9O QVJZCQkJCXsgJCQgPSBPQkpFQ1RfVFNESUNUSU9OQVJZOyB9CiAJCQl8IFRFWFRfUCBTRUFSQ0gg VEVNUExBVEUJCQkJeyAkJCA9IE9CSkVDVF9UU1RFTVBMQVRFOyB9CiAJCQl8IFRFWFRfUCBTRUFS Q0ggQ09ORklHVVJBVElPTgkJCXsgJCQgPSBPQkpFQ1RfVFNDT05GSUdVUkFUSU9OOyB9CisJCQl8 IFZBUklBQkxFCQkJCQkJCQl7ICQkID0gT0JKRUNUX1ZBUklBQkxFOyB9CiAJCTsKIAogLyoKQEAg LTc4ODIsNiArNzkxNCwxNCBAQCBwcml2aWxlZ2VfdGFyZ2V0OgogCQkJCQluLT5vYmpzID0gJDI7 CiAJCQkJCSQkID0gbjsKIAkJCQl9CisJCQl8IFZBUklBQkxFIHF1YWxpZmllZF9uYW1lX2xpc3QK KwkJCQl7CisJCQkJCVByaXZUYXJnZXQgKm4gPSAoUHJpdlRhcmdldCAqKSBwYWxsb2Moc2l6ZW9m KFByaXZUYXJnZXQpKTsKKwkJCQkJbi0+dGFyZ3R5cGUgPSBBQ0xfVEFSR0VUX09CSkVDVDsKKwkJ CQkJbi0+b2JqdHlwZSA9IE9CSkVDVF9WQVJJQUJMRTsKKwkJCQkJbi0+b2JqcyA9ICQyOworCQkJ CQkkJCA9IG47CisJCQkJfQogCQkJfCBBTEwgVEFCTEVTIElOX1AgU0NIRU1BIG5hbWVfbGlzdAog CQkJCXsKIAkJCQkJUHJpdlRhcmdldCAqbiA9IChQcml2VGFyZ2V0ICopIHBhbGxvYyhzaXplb2Yo UHJpdlRhcmdldCkpOwpAQCAtNzkyNyw2ICs3OTY3LDE0IEBAIHByaXZpbGVnZV90YXJnZXQ6CiAJ CQkJCW4tPm9ianMgPSAkNTsKIAkJCQkJJCQgPSBuOwogCQkJCX0KKwkJCXwgQUxMIFZBUklBQkxF UyBJTl9QIFNDSEVNQSBuYW1lX2xpc3QKKwkJCQl7CisJCQkJCVByaXZUYXJnZXQgKm4gPSAoUHJp dlRhcmdldCAqKSBwYWxsb2Moc2l6ZW9mKFByaXZUYXJnZXQpKTsKKwkJCQkJbi0+dGFyZ3R5cGUg PSBBQ0xfVEFSR0VUX0FMTF9JTl9TQ0hFTUE7CisJCQkJCW4tPm9ianR5cGUgPSBPQkpFQ1RfVkFS SUFCTEU7CisJCQkJCW4tPm9ianMgPSAkNTsKKwkJCQkJJCQgPSBuOworCQkJCX0KIAkJOwogCiAK QEAgLTgxMjQsNiArODE3Miw3IEBAIGRlZmFjbF9wcml2aWxlZ2VfdGFyZ2V0OgogCQkJfCBTRVFV RU5DRVMJCXsgJCQgPSBPQkpFQ1RfU0VRVUVOQ0U7IH0KIAkJCXwgVFlQRVNfUAkJeyAkJCA9IE9C SkVDVF9UWVBFOyB9CiAJCQl8IFNDSEVNQVMJCXsgJCQgPSBPQkpFQ1RfU0NIRU1BOyB9CisJCQl8 IFZBUklBQkxFUwkJeyAkJCA9IE9CSkVDVF9WQVJJQUJMRTsgfQogCQk7CiAKIApAQCAtOTkwNiw2 ICs5OTU1LDI0IEBAIFJlbmFtZVN0bXQ6IEFMVEVSIEFHR1JFR0FURSBhZ2dyZWdhdGVfd2l0aF9h cmd0eXBlcyBSRU5BTUUgVE8gbmFtZQogCQkJCQluLT5taXNzaW5nX29rID0gZmFsc2U7CiAJCQkJ CSQkID0gKE5vZGUgKikgbjsKIAkJCQl9CisJCQl8IEFMVEVSIFZBUklBQkxFIGFueV9uYW1lIFJF TkFNRSBUTyBuYW1lCisJCQkJeworCQkJCQlSZW5hbWVTdG10ICpuID0gbWFrZU5vZGUoUmVuYW1l U3RtdCk7CisJCQkJCW4tPnJlbmFtZVR5cGUgPSBPQkpFQ1RfVkFSSUFCTEU7CisJCQkJCW4tPm9i amVjdCA9IChOb2RlICopICQzOworCQkJCQluLT5uZXduYW1lID0gJDY7CisJCQkJCW4tPm1pc3Np bmdfb2sgPSBmYWxzZTsKKwkJCQkJJCQgPSAoTm9kZSAqKW47CisJCQkJfQorCQkJfCBBTFRFUiBW QVJJQUJMRSBJRl9QIEVYSVNUUyBhbnlfbmFtZSBSRU5BTUUgVE8gbmFtZQorCQkJCXsKKwkJCQkJ UmVuYW1lU3RtdCAqbiA9IG1ha2VOb2RlKFJlbmFtZVN0bXQpOworCQkJCQluLT5yZW5hbWVUeXBl ID0gT0JKRUNUX1ZBUklBQkxFOworCQkJCQluLT5vYmplY3QgPSAoTm9kZSAqKSAkNTsKKwkJCQkJ bi0+bmV3bmFtZSA9ICQ4OworCQkJCQluLT5taXNzaW5nX29rID0gdHJ1ZTsKKwkJCQkJJCQgPSAo Tm9kZSAqKW47CisJCQkJfQogCQk7CiAKIG9wdF9jb2x1bW46IENPTFVNTgpAQCAtMTAyNjcsNiAr MTAzMzQsMjQgQEAgQWx0ZXJPYmplY3RTY2hlbWFTdG10OgogCQkJCQluLT5taXNzaW5nX29rID0g ZmFsc2U7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9CisJCQl8IEFMVEVSIFZBUklBQkxF IGFueV9uYW1lIFNFVCBTQ0hFTUEgbmFtZQorCQkJCXsKKwkJCQkJQWx0ZXJPYmplY3RTY2hlbWFT dG10ICpuID0gbWFrZU5vZGUoQWx0ZXJPYmplY3RTY2hlbWFTdG10KTsKKwkJCQkJbi0+b2JqZWN0 VHlwZSA9IE9CSkVDVF9WQVJJQUJMRTsKKwkJCQkJbi0+b2JqZWN0ID0gKE5vZGUgKikgJDM7CisJ CQkJCW4tPm5ld3NjaGVtYSA9ICQ2OworCQkJCQluLT5taXNzaW5nX29rID0gZmFsc2U7CisJCQkJ CSQkID0gKE5vZGUgKiluOworCQkJCX0KKwkJCXwgQUxURVIgVkFSSUFCTEUgSUZfUCBFWElTVFMg YW55X25hbWUgU0VUIFNDSEVNQSBuYW1lCisJCQkJeworCQkJCQlBbHRlck9iamVjdFNjaGVtYVN0 bXQgKm4gPSBtYWtlTm9kZShBbHRlck9iamVjdFNjaGVtYVN0bXQpOworCQkJCQluLT5vYmplY3RU eXBlID0gT0JKRUNUX1ZBUklBQkxFOworCQkJCQluLT5vYmplY3QgPSAoTm9kZSAqKSAkNTsKKwkJ CQkJbi0+bmV3c2NoZW1hID0gJDg7CisJCQkJCW4tPm1pc3Npbmdfb2sgPSB0cnVlOworCQkJCQkk JCA9IChOb2RlICopbjsKKwkJCQl9CiAJCTsKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCkBAIC0x MDU0OCw2ICsxMDYzMywxNCBAQCBBbHRlck93bmVyU3RtdDogQUxURVIgQUdHUkVHQVRFIGFnZ3Jl Z2F0ZV93aXRoX2FyZ3R5cGVzIE9XTkVSIFRPIFJvbGVTcGVjCiAJCQkJCW4tPm5ld293bmVyID0g JDY7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9CisJCQl8IEFMVEVSIFZBUklBQkxFIGFu eV9uYW1lIE9XTkVSIFRPIFJvbGVTcGVjCisJCQkJeworCQkJCQlBbHRlck93bmVyU3RtdCAqbiA9 IG1ha2VOb2RlKEFsdGVyT3duZXJTdG10KTsKKwkJCQkJbi0+b2JqZWN0VHlwZSA9IE9CSkVDVF9W QVJJQUJMRTsKKwkJCQkJbi0+b2JqZWN0ID0gKE5vZGUgKikgJDM7CisJCQkJCW4tPm5ld293bmVy ID0gJDY7CisJCQkJCSQkID0gKE5vZGUgKiluOworCQkJCX0KIAkJOwogCiAKQEAgLTE3ODc4LDYg KzE3OTcxLDggQEAgdW5yZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBWQUxJREFURQogCQkJfCBWQUxJ REFUT1IKIAkJCXwgVkFMVUVfUAorCQkJfCBWQVJJQUJMRQorCQkJfCBWQVJJQUJMRVMKIAkJCXwg VkFSWUlORwogCQkJfCBWRVJTSU9OX1AKIAkJCXwgVklFVwpAQCAtMTg1MzMsNiArMTg2MjgsOCBA QCBiYXJlX2xhYmVsX2tleXdvcmQ6CiAJCQl8IFZBTFVFX1AKIAkJCXwgVkFMVUVTCiAJCQl8IFZB UkNIQVIKKwkJCXwgVkFSSUFCTEUKKwkJCXwgVkFSSUFCTEVTCiAJCQl8IFZBUklBRElDCiAJCQl8 IFZFUkJPU0UKIAkJCXwgVkVSU0lPTl9QCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIv cGFyc2VfdXRpbGNtZC5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYwppbmRl eCBkNWMyYjJmZjBiLi4yZmJhOTBjOTVhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIv cGFyc2VfdXRpbGNtZC5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMK QEAgLTEwNyw2ICsxMDcsNyBAQCB0eXBlZGVmIHN0cnVjdAogCUxpc3QJICAgKmluZGV4ZXM7CQkv KiBDUkVBVEUgSU5ERVggaXRlbXMgKi8KIAlMaXN0CSAgICp0cmlnZ2VyczsJCS8qIENSRUFURSBU UklHR0VSIGl0ZW1zICovCiAJTGlzdAkgICAqZ3JhbnRzOwkJCS8qIEdSQU5UIGl0ZW1zICovCisJ TGlzdAkgICAqdmFyaWFibGVzOwkJLyogQ1JFQVRFIFZBUklBQkxFIGl0ZW1zICovCiB9IENyZWF0 ZVNjaGVtYVN0bXRDb250ZXh0OwogCiAKQEAgLTM5NjYsNiArMzk2Nyw3IEBAIHRyYW5zZm9ybUNy ZWF0ZVNjaGVtYVN0bXRFbGVtZW50cyhMaXN0ICpzY2hlbWFFbHRzLCBjb25zdCBjaGFyICpzY2hl bWFOYW1lKQogCWN4dC5pbmRleGVzID0gTklMOwogCWN4dC50cmlnZ2VycyA9IE5JTDsKIAljeHQu Z3JhbnRzID0gTklMOworCWN4dC52YXJpYWJsZXMgPSBOSUw7CiAKIAkvKgogCSAqIFJ1biB0aHJv dWdoIGVhY2ggc2NoZW1hIGVsZW1lbnQgaW4gdGhlIHNjaGVtYSBlbGVtZW50IGxpc3QuIFNlcGFy YXRlCkBAIC00MDM0LDYgKzQwMzYsMTUgQEAgdHJhbnNmb3JtQ3JlYXRlU2NoZW1hU3RtdEVsZW1l bnRzKExpc3QgKnNjaGVtYUVsdHMsIGNvbnN0IGNoYXIgKnNjaGVtYU5hbWUpCiAJCQkJY3h0Lmdy YW50cyA9IGxhcHBlbmQoY3h0LmdyYW50cywgZWxlbWVudCk7CiAJCQkJYnJlYWs7CiAKKwkJCWNh c2UgVF9DcmVhdGVTZXNzaW9uVmFyU3RtdDoKKwkJCQl7CisJCQkJCUNyZWF0ZVNlc3Npb25WYXJT dG10ICplbHAgPSAoQ3JlYXRlU2Vzc2lvblZhclN0bXQgKikgZWxlbWVudDsKKworCQkJCQlzZXRT Y2hlbWFOYW1lKGN4dC5zY2hlbWFuYW1lLCAmZWxwLT52YXJpYWJsZS0+c2NoZW1hbmFtZSk7CisJ CQkJCWN4dC52YXJpYWJsZXMgPSBsYXBwZW5kKGN4dC52YXJpYWJsZXMsIGVsZW1lbnQpOworCQkJ CX0KKwkJCQlicmVhazsKKwogCQkJZGVmYXVsdDoKIAkJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25p emVkIG5vZGUgdHlwZTogJWQiLAogCQkJCQkgKGludCkgbm9kZVRhZyhlbGVtZW50KSk7CkBAIC00 MDQ3LDYgKzQwNTgsNyBAQCB0cmFuc2Zvcm1DcmVhdGVTY2hlbWFTdG10RWxlbWVudHMoTGlzdCAq c2NoZW1hRWx0cywgY29uc3QgY2hhciAqc2NoZW1hTmFtZSkKIAlyZXN1bHQgPSBsaXN0X2NvbmNh dChyZXN1bHQsIGN4dC5pbmRleGVzKTsKIAlyZXN1bHQgPSBsaXN0X2NvbmNhdChyZXN1bHQsIGN4 dC50cmlnZ2Vycyk7CiAJcmVzdWx0ID0gbGlzdF9jb25jYXQocmVzdWx0LCBjeHQuZ3JhbnRzKTsK KwlyZXN1bHQgPSBsaXN0X2NvbmNhdChyZXN1bHQsIGN4dC52YXJpYWJsZXMpOwogCiAJcmV0dXJu IHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jIGIvc3Jj L2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKaW5kZXggZmE2NmI4MDE3ZS4uY2U4ZGI3Y2RhNCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKKysrIGIvc3JjL2JhY2tlbmQvdGNv cC91dGlsaXR5LmMKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL25hbWVzcGFj ZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfYXV0aGlkLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9w Z19pbmhlcml0cy5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdmFyaWFibGUuaCIKICNpbmNsdWRl ICJjYXRhbG9nL3RvYXN0aW5nLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvYWx0ZXIuaCIKICNpbmNs dWRlICJjb21tYW5kcy9hc3luYy5oIgpAQCAtMTgyLDYgKzE4Myw3IEBAIENsYXNzaWZ5VXRpbGl0 eUNvbW1hbmRBc1JlYWRPbmx5KE5vZGUgKnBhcnNldHJlZSkKIAkJY2FzZSBUX0NyZWF0ZVJhbmdl U3RtdDoKIAkJY2FzZSBUX0NyZWF0ZVJvbGVTdG10OgogCQljYXNlIFRfQ3JlYXRlU2NoZW1hU3Rt dDoKKwkJY2FzZSBUX0NyZWF0ZVNlc3Npb25WYXJTdG10OgogCQljYXNlIFRfQ3JlYXRlU2VxU3Rt dDoKIAkJY2FzZSBUX0NyZWF0ZVN0YXRzU3RtdDoKIAkJY2FzZSBUX0NyZWF0ZVN0bXQ6CkBAIC0x Mzg2LDYgKzEzODgsMTAgQEAgUHJvY2Vzc1V0aWxpdHlTbG93KFBhcnNlU3RhdGUgKnBzdGF0ZSwK IAkJCQl9CiAJCQkJYnJlYWs7CiAKKwkJCWNhc2UgVF9DcmVhdGVTZXNzaW9uVmFyU3RtdDoKKwkJ CQlhZGRyZXNzID0gQ3JlYXRlVmFyaWFibGUocHN0YXRlLCAoQ3JlYXRlU2Vzc2lvblZhclN0bXQg KikgcGFyc2V0cmVlKTsKKwkJCQlicmVhazsKKwogCQkJCS8qCiAJCQkJICogKioqKioqKioqKioq KiBvYmplY3QgY3JlYXRpb24gLyBkZXN0cnVjdGlvbiAqKioqKioqKioqKioqKgogCQkJCSAqLwpA QCAtMjMzOCw2ICsyMzQ0LDkgQEAgQWx0ZXJPYmplY3RUeXBlQ29tbWFuZFRhZyhPYmplY3RUeXBl IG9ianR5cGUpCiAJCWNhc2UgT0JKRUNUX1NUQVRJU1RJQ19FWFQ6CiAJCQl0YWcgPSBDTURUQUdf QUxURVJfU1RBVElTVElDUzsKIAkJCWJyZWFrOworCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJ CXRhZyA9IENNRFRBR19BTFRFUl9WQVJJQUJMRTsKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJ dGFnID0gQ01EVEFHX1VOS05PV047CiAJCQlicmVhazsKQEAgLTI2NDYsNiArMjY1NSw5IEBAIENy ZWF0ZUNvbW1hbmRUYWcoTm9kZSAqcGFyc2V0cmVlKQogCQkJCWNhc2UgT0JKRUNUX1NUQVRJU1RJ Q19FWFQ6CiAJCQkJCXRhZyA9IENNRFRBR19EUk9QX1NUQVRJU1RJQ1M7CiAJCQkJCWJyZWFrOwor CQkJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJCQl0YWcgPSBDTURUQUdfRFJPUF9WQVJJQUJM RTsKKwkJCQkJYnJlYWs7CiAJCQkJZGVmYXVsdDoKIAkJCQkJdGFnID0gQ01EVEFHX1VOS05PV047 CiAJCQl9CkBAIC0zMjIyLDYgKzMyMzQsMTAgQEAgQ3JlYXRlQ29tbWFuZFRhZyhOb2RlICpwYXJz ZXRyZWUpCiAJCQl9CiAJCQlicmVhazsKIAorCQljYXNlIFRfQ3JlYXRlU2Vzc2lvblZhclN0bXQ6 CisJCQl0YWcgPSBDTURUQUdfQ1JFQVRFX1ZBUklBQkxFOworCQkJYnJlYWs7CisKIAkJZGVmYXVs dDoKIAkJCWVsb2coV0FSTklORywgInVucmVjb2duaXplZCBub2RlIHR5cGU6ICVkIiwKIAkJCQkg KGludCkgbm9kZVRhZyhwYXJzZXRyZWUpKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9hY2wuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hY2wuYwppbmRleCBkN2IzOTE0MGIz Li41ZjgwYWY0ZjVlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvYWNsLmMKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FjbC5jCkBAIC04NTAsNiArODUwLDEwIEBAIGFjbGRl ZmF1bHQoT2JqZWN0VHlwZSBvYmp0eXBlLCBPaWQgb3duZXJJZCkKIAkJCXdvcmxkX2RlZmF1bHQg PSBBQ0xfTk9fUklHSFRTOwogCQkJb3duZXJfZGVmYXVsdCA9IEFDTF9BTExfUklHSFRTX1BBUkFN RVRFUl9BQ0w7CiAJCQlicmVhazsKKwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CisJCQl3b3JsZF9k ZWZhdWx0ID0gQUNMX05PX1JJR0hUUzsKKwkJCW93bmVyX2RlZmF1bHQgPSBBQ0xfQUxMX1JJR0hU U19WQVJJQUJMRTsKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVucmVj b2duaXplZCBvYmplY3QgdHlwZTogJWQiLCAoaW50KSBvYmp0eXBlKTsKIAkJCXdvcmxkX2RlZmF1 bHQgPSBBQ0xfTk9fUklHSFRTOwkvKiBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCkBAIC05NDcsNiAr OTUxLDkgQEAgYWNsZGVmYXVsdF9zcWwoUEdfRlVOQ1RJT05fQVJHUykKIAkJY2FzZSAnVCc6CiAJ CQlvYmp0eXBlID0gT0JKRUNUX1RZUEU7CiAJCQlicmVhazsKKwkJY2FzZSAnVic6CisJCQlvYmp0 eXBlID0gT0JKRUNUX1ZBUklBQkxFOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVS Uk9SLCAidW5yZWNvZ25pemVkIG9iamVjdCB0eXBlIGFiYnJldmlhdGlvbjogJWMiLCBvYmp0eXBl Yyk7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMg Yi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYwppbmRleCA0OGEyODBkMDg5Li4y ZWVkOTQ4OWY5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUu YworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYwpAQCAtMzgsNiArMzgs NyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiY2F0 YWxvZy9wZ190cmFuc2Zvcm0uaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKKyNpbmNs dWRlICJjYXRhbG9nL3BnX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5j bHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgiCiAjaW5jbHVkZSAidXRpbHMvYXJyYXkuaCIKQEAgLTM3 MTQsMyArMzcxNSwxMTUgQEAgZ2V0X3N1YnNjcmlwdGlvbl9uYW1lKE9pZCBzdWJpZCwgYm9vbCBt aXNzaW5nX29rKQogCiAJcmV0dXJuIHN1Ym5hbWU7CiB9CisKKy8qCQkJCS0tLS0tLS0tLS0gUEdf VkFSSUFCTEUgQ0FDSEUgLS0tLS0tLS0tLQkJCQkgKi8KKworLyoKKyAqIGdldF92YXJuYW1lX3Zh cmlkCisgKgkJR2l2ZW4gbmFtZSBhbmQgbmFtZXNwYWNlIG9mIHZhcmlhYmxlLCBsb29rIHVwIHRo ZSBPSUQuCisgKi8KK09pZAorZ2V0X3Zhcm5hbWVfdmFyaWQoY29uc3QgY2hhciAqdmFybmFtZSwg T2lkIHZhcm5hbWVzcGFjZSkKK3sKKwlyZXR1cm4gR2V0U3lzQ2FjaGVPaWQyKFZBUklBQkxFTkFN RU5TUCwgQW51bV9wZ192YXJpYWJsZV9vaWQsCisJCQkJCQkgICBQb2ludGVyR2V0RGF0dW0odmFy bmFtZSksCisJCQkJCQkgICBPYmplY3RJZEdldERhdHVtKHZhcm5hbWVzcGFjZSkpOworfQorCisv KgorICogZ2V0X3Nlc3Npb25fdmFyaWFibGVfbmFtZQorICoJCVJldHVybnMgYSBwYWxsb2MnZCBj b3B5IG9mIHRoZSBuYW1lIG9mIGEgZ2l2ZW4gc2Vzc2lvbiB2YXJpYWJsZS4KKyAqLworY2hhciAq CitnZXRfc2Vzc2lvbl92YXJpYWJsZV9uYW1lKE9pZCB2YXJpZCkKK3sKKwlIZWFwVHVwbGUJdHVw OworCUZvcm1fcGdfdmFyaWFibGUgdmFyZm9ybTsKKwljaGFyCSAgICp2YXJuYW1lOworCisJdHVw ID0gU2VhcmNoU3lzQ2FjaGUxKFZBUklBQkxFT0lELCBPYmplY3RJZEdldERhdHVtKHZhcmlkKSk7 CisKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxv b2t1cCBmYWlsZWQgZm9yIHNlc3Npb24gdmFyaWFibGUgJXUiLCB2YXJpZCk7CisKKwl2YXJmb3Jt ID0gKEZvcm1fcGdfdmFyaWFibGUpIEdFVFNUUlVDVCh0dXApOworCisJdmFybmFtZSA9IHBzdHJk dXAoTmFtZVN0cih2YXJmb3JtLT52YXJuYW1lKSk7CisKKwlSZWxlYXNlU3lzQ2FjaGUodHVwKTsK KworCXJldHVybiB2YXJuYW1lOworfQorCisvKgorICogZ2V0X3Nlc3Npb25fdmFyaWFibGVfbmFt ZXNwYWNlCisgKgkJUmV0dXJucyB0aGUgcGdfbmFtZXNwYWNlIE9JRCBhc3NvY2lhdGVkIHdpdGgg YSBnaXZlbiBzZXNzaW9uIHZhcmlhYmxlLgorICovCitPaWQKK2dldF9zZXNzaW9uX3ZhcmlhYmxl X25hbWVzcGFjZShPaWQgdmFyaWQpCit7CisJSGVhcFR1cGxlCXR1cDsKKwlGb3JtX3BnX3Zhcmlh YmxlIHZhcmZvcm07CisJT2lkCQkJdmFybmFtZXNwYWNlOworCisJdHVwID0gU2VhcmNoU3lzQ2Fj aGUxKFZBUklBQkxFT0lELCBPYmplY3RJZEdldERhdHVtKHZhcmlkKSk7CisKKwlpZiAoIUhlYXBU dXBsZUlzVmFsaWQodHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9y IHZhcmlhYmxlICV1IiwgdmFyaWQpOworCisJdmFyZm9ybSA9IChGb3JtX3BnX3ZhcmlhYmxlKSBH RVRTVFJVQ1QodHVwKTsKKworCXZhcm5hbWVzcGFjZSA9IHZhcmZvcm0tPnZhcm5hbWVzcGFjZTsK KworCVJlbGVhc2VTeXNDYWNoZSh0dXApOworCisJcmV0dXJuIHZhcm5hbWVzcGFjZTsKK30KKwor LyoKKyAqIFJldHVybnMgdGhlIHR5cGUgb2YgdGhlIGdpdmVuIHNlc3Npb24gdmFyaWFibGUuCisg Ki8KK09pZAorZ2V0X3Nlc3Npb25fdmFyaWFibGVfdHlwZShPaWQgdmFyaWQpCit7CisJSGVhcFR1 cGxlCXR1cDsKKwlGb3JtX3BnX3ZhcmlhYmxlIHZhcmZvcm07CisJT2lkCQkJdmFydHlwZTsKKwor CXR1cCA9IFNlYXJjaFN5c0NhY2hlMShWQVJJQUJMRU9JRCwgT2JqZWN0SWRHZXREYXR1bSh2YXJp ZCkpOworCisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cCkpCisJCWVsb2coRVJST1IsICJjYWNo ZSBsb29rdXAgZmFpbGVkIGZvciBzZXNzaW9uIHZhcmlhYmxlICV1IiwgdmFyaWQpOworCisJdmFy Zm9ybSA9IChGb3JtX3BnX3ZhcmlhYmxlKSBHRVRTVFJVQ1QodHVwKTsKKworCXZhcnR5cGUgPSB2 YXJmb3JtLT52YXJ0eXBlOworCisJUmVsZWFzZVN5c0NhY2hlKHR1cCk7CisKKwlyZXR1cm4gdmFy dHlwZTsKK30KKworLyoKKyAqIFJldHVybnMgdGhlIHR5cGUsIHR5cG1vZCBhbmQgY29sbGlkIG9m IHRoZSBnaXZlbiBzZXNzaW9uIHZhcmlhYmxlLgorICovCit2b2lkCitnZXRfc2Vzc2lvbl92YXJp YWJsZV90eXBlX3R5cG1vZF9jb2xsaWQoT2lkIHZhcmlkLCBPaWQgKnR5cGlkLCBpbnQzMiAqdHlw bW9kLAorCQkJCQkJCQkJCU9pZCAqY29sbGlkKQoreworCUhlYXBUdXBsZQl0dXA7CisJRm9ybV9w Z192YXJpYWJsZSB2YXJmb3JtOworCisJdHVwID0gU2VhcmNoU3lzQ2FjaGUxKFZBUklBQkxFT0lE LCBPYmplY3RJZEdldERhdHVtKHZhcmlkKSk7CisKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVw KSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHNlc3Npb24gdmFyaWFi bGUgJXUiLCB2YXJpZCk7CisKKwl2YXJmb3JtID0gKEZvcm1fcGdfdmFyaWFibGUpIEdFVFNUUlVD VCh0dXApOworCisJKnR5cGlkID0gdmFyZm9ybS0+dmFydHlwZTsKKwkqdHlwbW9kID0gdmFyZm9y bS0+dmFydHlwbW9kOworCSpjb2xsaWQgPSB2YXJmb3JtLT52YXJjb2xsYXRpb247CisKKwlSZWxl YXNlU3lzQ2FjaGUodHVwKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9jb21tb24u YyBiL3NyYy9iaW4vcGdfZHVtcC9jb21tb24uYwppbmRleCBjMzIzYjViZDNkLi40MDc5YWQ2MDNh IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvY29tbW9uLmMKKysrIGIvc3JjL2Jpbi9wZ19k dW1wL2NvbW1vbi5jCkBAIC0yNDcsNiArMjQ3LDkgQEAgZ2V0U2NoZW1hRGF0YShBcmNoaXZlICpm b3V0LCBpbnQgKm51bVRhYmxlc1B0cikKIAlwZ19sb2dfaW5mbygicmVhZGluZyBzdWJzY3JpcHRp b24gbWVtYmVyc2hpcCBvZiB0YWJsZXMiKTsKIAlnZXRTdWJzY3JpcHRpb25UYWJsZXMoZm91dCk7 CiAKKwlwZ19sb2dfaW5mbygicmVhZGluZyB2YXJpYWJsZXMiKTsKKwlnZXRWYXJpYWJsZXMoZm91 dCk7CisKIAlmcmVlKGluaGluZm8pOwkJCQkvKiBub3QgbmVlZGVkIGFueSBsb25nZXIgKi8KIAog CSpudW1UYWJsZXNQdHIgPSBudW1UYWJsZXM7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAv ZHVtcHV0aWxzLmMgYi9zcmMvYmluL3BnX2R1bXAvZHVtcHV0aWxzLmMKaW5kZXggNTY0OTg1OWFh MS4uNTBkZTVkMGVhMiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL2R1bXB1dGlscy5jCisr KyBiL3NyYy9iaW4vcGdfZHVtcC9kdW1wdXRpbHMuYwpAQCAtNTExLDYgKzUxMSwxMiBAQCBkbyB7 IFwKIAkJQ09OVkVSVF9QUklWKCdyJywgIlNFTEVDVCIpOwogCQlDT05WRVJUX1BSSVYoJ3cnLCAi VVBEQVRFIik7CiAJfQorCWVsc2UgaWYgKHN0cmNtcCh0eXBlLCAiVkFSSUFCTEUiKSA9PSAwIHx8 CisJCQkgc3RyY21wKHR5cGUsICJWQVJJQUJMRVMiKSA9PSAwKQorCXsKKwkJQ09OVkVSVF9QUklW KCdyJywgIlNFTEVDVCIpOworCQlDT05WRVJUX1BSSVYoJ3cnLCAiVVBEQVRFIik7CisJfQogCWVs c2UKIAkJYWJvcnQoKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cC5o IGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cC5oCmluZGV4IGZiZjVmMWM1MTUuLmU4MWNmZGUy NzQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXAuaAorKysgYi9zcmMvYmlu L3BnX2R1bXAvcGdfYmFja3VwLmgKQEAgLTEzMywxMiArMTMzLDE0IEBAIHR5cGVkZWYgc3RydWN0 IF9yZXN0b3JlT3B0aW9ucwogCWludAkJCXNlbEZ1bmN0aW9uOwogCWludAkJCXNlbFRyaWdnZXI7 CiAJaW50CQkJc2VsVGFibGU7CisJaW50CQkJc2VsVmFyaWFibGU7CiAJU2ltcGxlU3RyaW5nTGlz dCBpbmRleE5hbWVzOwogCVNpbXBsZVN0cmluZ0xpc3QgZnVuY3Rpb25OYW1lczsKIAlTaW1wbGVT dHJpbmdMaXN0IHNjaGVtYU5hbWVzOwogCVNpbXBsZVN0cmluZ0xpc3Qgc2NoZW1hRXhjbHVkZU5h bWVzOwogCVNpbXBsZVN0cmluZ0xpc3QgdHJpZ2dlck5hbWVzOwogCVNpbXBsZVN0cmluZ0xpc3Qg dGFibGVOYW1lczsKKwlTaW1wbGVTdHJpbmdMaXN0IHZhcmlhYmxlTmFtZXM7CiAKIAlpbnQJCQl1 c2VEQjsKIAlDb25uUGFyYW1zCWNwYXJhbXM7CQkvKiBwYXJhbWV0ZXJzIHRvIHVzZSBpZiB1c2VE QiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jIGIv c3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jCmluZGV4IDhjMjBjMjYzYzQuLjZm MDEyYTFiNTUgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIu YworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmMKQEAgLTMwOTgsNiAr MzA5OCwxNCBAQCBfdG9jRW50cnlSZXF1aXJlZChUb2NFbnRyeSAqdGUsIHRlU2VjdGlvbiBjdXJT ZWN0aW9uLCBBcmNoaXZlSGFuZGxlICpBSCkKIAkJCQkJIXNpbXBsZV9zdHJpbmdfbGlzdF9tZW1i ZXIoJnJvcHQtPnRyaWdnZXJOYW1lcywgdGUtPnRhZykpCiAJCQkJCXJldHVybiAwOwogCQkJfQor CQkJZWxzZSBpZiAoc3RyY21wKHRlLT5kZXNjLCAiVkFSSUFCTEUiKSA9PSAwKQorCQkJeworCQkJ CWlmICghcm9wdC0+c2VsVmFyaWFibGUpCisJCQkJCXJldHVybiAwOworCQkJCWlmIChyb3B0LT52 YXJpYWJsZU5hbWVzLmhlYWQgIT0gTlVMTCAmJgorCQkJCQkhc2ltcGxlX3N0cmluZ19saXN0X21l bWJlcigmcm9wdC0+dmFyaWFibGVOYW1lcywgdGUtPnRhZykpCisJCQkJCXJldHVybiAwOworCQkJ fQogCQkJZWxzZQogCQkJCXJldHVybiAwOwogCQl9CkBAIC0zNjQ3LDYgKzM2NTUsNyBAQCBfZ2V0 T2JqZWN0RGVzY3JpcHRpb24oUFFFeHBCdWZmZXIgYnVmLCBjb25zdCBUb2NFbnRyeSAqdGUpCiAJ CXN0cmNtcCh0eXBlLCAiVEVYVCBTRUFSQ0ggRElDVElPTkFSWSIpID09IDAgfHwKIAkJc3RyY21w KHR5cGUsICJURVhUIFNFQVJDSCBDT05GSUdVUkFUSU9OIikgPT0gMCB8fAogCQlzdHJjbXAodHlw ZSwgIlRZUEUiKSA9PSAwIHx8CisJCXN0cmNtcCh0eXBlLCAiVkFSSUFCTEUiKSA9PSAwIHx8CiAJ CXN0cmNtcCh0eXBlLCAiVklFVyIpID09IDAgfHwKIAkvKiBub24tc2NoZW1hLXNwZWNpZmllZCBv YmplY3RzICovCiAJCXN0cmNtcCh0eXBlLCAiREFUQUJBU0UiKSA9PSAwIHx8CmRpZmYgLS1naXQg YS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwpp bmRleCAyYjAyMTQ4NTU5Li5kOGM3NGY0ZTJlIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAv cGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKQEAgLTMyNCw2ICszMjQs NyBAQCBzdGF0aWMgdm9pZCBkdW1wUHVibGljYXRpb24oQXJjaGl2ZSAqZm91dCwgY29uc3QgUHVi bGljYXRpb25JbmZvICpwdWJpbmZvKTsKIHN0YXRpYyB2b2lkIGR1bXBQdWJsaWNhdGlvblRhYmxl KEFyY2hpdmUgKmZvdXQsIGNvbnN0IFB1YmxpY2F0aW9uUmVsSW5mbyAqcHVicmluZm8pOwogc3Rh dGljIHZvaWQgZHVtcFN1YnNjcmlwdGlvbihBcmNoaXZlICpmb3V0LCBjb25zdCBTdWJzY3JpcHRp b25JbmZvICpzdWJpbmZvKTsKIHN0YXRpYyB2b2lkIGR1bXBTdWJzY3JpcHRpb25UYWJsZShBcmNo aXZlICpmb3V0LCBjb25zdCBTdWJSZWxJbmZvICpzdWJyaW5mbyk7CitzdGF0aWMgdm9pZCBkdW1w VmFyaWFibGUoQXJjaGl2ZSAqZm91dCwgY29uc3QgVmFyaWFibGVJbmZvICp2YXJpbmZvKTsKIHN0 YXRpYyB2b2lkIGR1bXBEYXRhYmFzZShBcmNoaXZlICpmb3V0KTsKIHN0YXRpYyB2b2lkIGR1bXBE YXRhYmFzZUNvbmZpZyhBcmNoaXZlICpBSCwgUFFFeHBCdWZmZXIgb3V0YnVmLAogCQkJCQkJCSAg IGNvbnN0IGNoYXIgKmRibmFtZSwgT2lkIGRib2lkKTsKQEAgLTUzMTMsNiArNTMxNCwxOTAgQEAg Z2V0X25leHRfcG9zc2libGVfZnJlZV9wZ190eXBlX29pZChBcmNoaXZlICpmb3V0LCBQUUV4cEJ1 ZmZlciB1cGdyYWRlX3F1ZXJ5KQogCXJldHVybiBuZXh0X3Bvc3NpYmxlX2ZyZWVfb2lkOwogfQog CisvKgorICogZ2V0VmFyaWFibGVzCisgKgkgIGdldCBpbmZvcm1hdGlvbiBhYm91dCB2YXJpYWJs ZXMKKyAqLwordm9pZAorZ2V0VmFyaWFibGVzKEFyY2hpdmUgKmZvdXQpCit7CisJUFFFeHBCdWZm ZXIgcXVlcnk7CisJUEdyZXN1bHQgICAqcmVzOworCVZhcmlhYmxlSW5mbyAqdmFyaW5mbzsKKwlp bnQJCQlpX3RhYmxlb2lkOworCWludAkJCWlfb2lkOworCWludAkJCWlfdmFybmFtZTsKKwlpbnQJ CQlpX3Zhcm5hbWVzcGFjZTsKKwlpbnQJCQlpX3ZhcnR5cGU7CisJaW50CQkJaV92YXJ0eXBuYW1l OworCWludAkJCWlfdmFyb3duZXI7CisJaW50CQkJaV92YXJjb2xsYXRpb247CisJaW50CQkJaV92 YXJhY2w7CisJaW50CQkJaV9hY2xkZWZhdWx0OworCWludAkJCWksCisJCQkJbnR1cHM7CisKKwlp ZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA8IDE4MDAwMCkKKwkJcmV0dXJuOworCisJcXVlcnkgPSBj cmVhdGVQUUV4cEJ1ZmZlcigpOworCisJcmVzZXRQUUV4cEJ1ZmZlcihxdWVyeSk7CisKKwkvKiBH ZXQgdGhlIHZhcmlhYmxlcyBpbiBjdXJyZW50IGRhdGFiYXNlLiAqLworCWFwcGVuZFBRRXhwQnVm ZmVyKHF1ZXJ5LAorCQkJCQkgICJTRUxFQ1Qgdi50YWJsZW9pZCwgdi5vaWQsIHYudmFybmFtZSxc biIKKwkJCQkJICAiICAgICAgIHYudmFybmFtZXNwYWNlLCB2LnZhcnR5cGUsXG4iCisJCQkJCSAg IiAgICAgICBwZ19jYXRhbG9nLmZvcm1hdF90eXBlKHYudmFydHlwZSwgdi52YXJ0eXBtb2QpIGFz IHZhcnR5cG5hbWUsXG4iCisJCQkJCSAgIiAgICAgICBDQVNFIFdIRU4gdi52YXJjb2xsYXRpb24g PD4gdC50eXBjb2xsYXRpb24gIgorCQkJCQkgICIgICAgICAgICAgICBUSEVOIHYudmFyY29sbGF0 aW9uXG4iCisJCQkJCSAgIiAgICAgICAgICAgIEVMU0UgMFxuIgorCQkJCQkgICIgICAgICAgRU5E IEFTIHZhcmNvbGxhdGlvbixcbiIKKwkJCQkJICAiICAgICAgIHYudmFyb3duZXIsIHYudmFyYWNs LFxuIgorCQkJCQkgICIgICAgICAgYWNsZGVmYXVsdCgnVicsIHYudmFyb3duZXIpIEFTIGFjbGRl ZmF1bHRcbiIKKwkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX3ZhcmlhYmxlIHZcbiIKKwkJCQkJ ICAiSk9JTiBwZ19jYXRhbG9nLnBnX3R5cGUgdCAiCisJCQkJCSAgIk9OICh2LnZhcnR5cGUgPSB0 Lm9pZCkiKTsKKworCXJlcyA9IEV4ZWN1dGVTcWxRdWVyeShmb3V0LCBxdWVyeS0+ZGF0YSwgUEdS RVNfVFVQTEVTX09LKTsKKworCW50dXBzID0gUFFudHVwbGVzKHJlcyk7CisKKwlpX3RhYmxlb2lk ID0gUFFmbnVtYmVyKHJlcywgInRhYmxlb2lkIik7CisJaV9vaWQgPSBQUWZudW1iZXIocmVzLCAi b2lkIik7CisJaV92YXJuYW1lID0gUFFmbnVtYmVyKHJlcywgInZhcm5hbWUiKTsKKwlpX3Zhcm5h bWVzcGFjZSA9IFBRZm51bWJlcihyZXMsICJ2YXJuYW1lc3BhY2UiKTsKKwlpX3ZhcnR5cGUgPSBQ UWZudW1iZXIocmVzLCAidmFydHlwZSIpOworCWlfdmFydHlwbmFtZSA9IFBRZm51bWJlcihyZXMs ICJ2YXJ0eXBuYW1lIik7CisJaV92YXJjb2xsYXRpb24gPSBQUWZudW1iZXIocmVzLCAidmFyY29s bGF0aW9uIik7CisKKwlpX3Zhcm93bmVyID0gUFFmbnVtYmVyKHJlcywgInZhcm93bmVyIik7CisJ aV92YXJhY2wgPSBQUWZudW1iZXIocmVzLCAidmFyYWNsIik7CisJaV9hY2xkZWZhdWx0ID0gUFFm bnVtYmVyKHJlcywgImFjbGRlZmF1bHQiKTsKKworCXZhcmluZm8gPSBwZ19tYWxsb2MobnR1cHMg KiBzaXplb2YoVmFyaWFibGVJbmZvKSk7CisKKwlmb3IgKGkgPSAwOyBpIDwgbnR1cHM7IGkrKykK Kwl7CisJCVR5cGVJbmZvICAgKnZ0eXBlOworCisJCXZhcmluZm9baV0uZG9iai5vYmpUeXBlID0g RE9fVkFSSUFCTEU7CisJCXZhcmluZm9baV0uZG9iai5jYXRJZC50YWJsZW9pZCA9CisJCQlhdG9v aWQoUFFnZXR2YWx1ZShyZXMsIGksIGlfdGFibGVvaWQpKTsKKwkJdmFyaW5mb1tpXS5kb2JqLmNh dElkLm9pZCA9IGF0b29pZChQUWdldHZhbHVlKHJlcywgaSwgaV9vaWQpKTsKKwkJQXNzaWduRHVt cElkKCZ2YXJpbmZvW2ldLmRvYmopOworCQl2YXJpbmZvW2ldLmRvYmoubmFtZSA9IHBnX3N0cmR1 cChQUWdldHZhbHVlKHJlcywgaSwgaV92YXJuYW1lKSk7CisJCXZhcmluZm9baV0uZG9iai5uYW1l c3BhY2UgPQorCQkJZmluZE5hbWVzcGFjZShhdG9vaWQoUFFnZXR2YWx1ZShyZXMsIGksIGlfdmFy bmFtZXNwYWNlKSkpOworCisJCXZhcmluZm9baV0udmFydHlwZSA9IGF0b29pZChQUWdldHZhbHVl KHJlcywgaSwgaV92YXJ0eXBlKSk7CisJCXZhcmluZm9baV0udmFydHlwbmFtZSA9IHBnX3N0cmR1 cChQUWdldHZhbHVlKHJlcywgaSwgaV92YXJ0eXBuYW1lKSk7CisJCXZhcmluZm9baV0udmFyY29s bGF0aW9uID0gYXRvb2lkKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3ZhcmNvbGxhdGlvbikpOworCisJ CXZhcmluZm9baV0uZGFjbC5hY2wgPSBwZ19zdHJkdXAoUFFnZXR2YWx1ZShyZXMsIGksIGlfdmFy YWNsKSk7CisJCXZhcmluZm9baV0uZGFjbC5hY2xkZWZhdWx0ID0gcGdfc3RyZHVwKFBRZ2V0dmFs dWUocmVzLCBpLCBpX2FjbGRlZmF1bHQpKTsKKwkJdmFyaW5mb1tpXS5kYWNsLnByaXZ0eXBlID0g MDsKKwkJdmFyaW5mb1tpXS5kYWNsLmluaXRwcml2cyA9IE5VTEw7CisJCXZhcmluZm9baV0ucm9s bmFtZSA9IGdldFJvbGVOYW1lKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3Zhcm93bmVyKSk7CisKKwkJ LyogRG8gbm90IHRyeSB0byBkdW1wIEFDTCBpZiBubyBBQ0wgZXhpc3RzLiAqLworCQlpZiAoIVBR Z2V0aXNudWxsKHJlcywgaSwgaV92YXJhY2wpKQorCQkJdmFyaW5mb1tpXS5kb2JqLmNvbXBvbmVu dHMgfD0gRFVNUF9DT01QT05FTlRfQUNMOworCisJCWlmIChzdHJsZW4odmFyaW5mb1tpXS5yb2xu YW1lKSA9PSAwKQorCQkJcGdfbG9nX3dhcm5pbmcoIm93bmVyIG9mIHZhcmlhYmxlIFwiJXNcIiBh cHBlYXJzIHRvIGJlIGludmFsaWQiLAorCQkJCQkJICAgdmFyaW5mb1tpXS5kb2JqLm5hbWUpOwor CisJCS8qIERlY2lkZSB3aGV0aGVyIHdlIHdhbnQgdG8gZHVtcCBpdCAqLworCQlzZWxlY3REdW1w YWJsZU9iamVjdCgmKHZhcmluZm9baV0uZG9iaiksIGZvdXQpOworCisJCXZ0eXBlID0gZmluZFR5 cGVCeU9pZCh2YXJpbmZvW2ldLnZhcnR5cGUpOworCQlhZGRPYmplY3REZXBlbmRlbmN5KCZ2YXJp bmZvW2ldLmRvYmosIHZ0eXBlLT5kb2JqLmR1bXBJZCk7CisJfQorCVBRY2xlYXIocmVzKTsKKwor CWRlc3Ryb3lQUUV4cEJ1ZmZlcihxdWVyeSk7Cit9CisKKy8qCisgKiBkdW1wVmFyaWFibGUKKyAq CSAgZHVtcCB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZ2l2ZW4gc2Vzc2lvbiB2YXJpYWJsZQorICov CitzdGF0aWMgdm9pZAorZHVtcFZhcmlhYmxlKEFyY2hpdmUgKmZvdXQsIGNvbnN0IFZhcmlhYmxl SW5mbyAqdmFyaW5mbykKK3sKKwlEdW1wT3B0aW9ucyAqZG9wdCA9IGZvdXQtPmRvcHQ7CisKKwlQ UUV4cEJ1ZmZlciBkZWxxOworCVBRRXhwQnVmZmVyIHF1ZXJ5OworCWNoYXIJICAgKnF1YWx2YXJu YW1lOworCWNvbnN0IGNoYXIgKnZhcnR5cG5hbWU7CisJT2lkCQkJdmFyY29sbGF0aW9uOworCisJ LyogU2tpcCBpZiBub3QgdG8gYmUgZHVtcGVkICovCisJaWYgKCF2YXJpbmZvLT5kb2JqLmR1bXAg fHwgZG9wdC0+ZGF0YU9ubHkpCisJCXJldHVybjsKKworCWRlbHEgPSBjcmVhdGVQUUV4cEJ1ZmZl cigpOworCXF1ZXJ5ID0gY3JlYXRlUFFFeHBCdWZmZXIoKTsKKworCXF1YWx2YXJuYW1lID0gcGdf c3RyZHVwKGZtdFF1YWxpZmllZER1bXBhYmxlKHZhcmluZm8pKTsKKwl2YXJ0eXBuYW1lID0gdmFy aW5mby0+dmFydHlwbmFtZTsKKwl2YXJjb2xsYXRpb24gPSB2YXJpbmZvLT52YXJjb2xsYXRpb247 CisKKwlhcHBlbmRQUUV4cEJ1ZmZlcihkZWxxLCAiRFJPUCBWQVJJQUJMRSAlcztcbiIsCisJCQkJ CSAgcXVhbHZhcm5hbWUpOworCisJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksICJDUkVBVEUgVkFS SUFCTEUgJXMgQVMgJXMiLAorCQkJCQkgIHF1YWx2YXJuYW1lLCB2YXJ0eXBuYW1lKTsKKworCWlm IChPaWRJc1ZhbGlkKHZhcmNvbGxhdGlvbikpCisJeworCQlDb2xsSW5mbyAgICpjb2xsOworCisJ CWNvbGwgPSBmaW5kQ29sbGF0aW9uQnlPaWQodmFyY29sbGF0aW9uKTsKKwkJaWYgKGNvbGwpCisJ CQlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwgIiBDT0xMQVRFICVzIiwKKwkJCQkJCQkgIGZtdFF1 YWxpZmllZER1bXBhYmxlKGNvbGwpKTsKKwl9CisKKwlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwg IjtcbiIpOworCisJaWYgKHZhcmluZm8tPmRvYmouZHVtcCAmIERVTVBfQ09NUE9ORU5UX0RFRklO SVRJT04pCisJCUFyY2hpdmVFbnRyeShmb3V0LCB2YXJpbmZvLT5kb2JqLmNhdElkLCB2YXJpbmZv LT5kb2JqLmR1bXBJZCwKKwkJCQkJIEFSQ0hJVkVfT1BUUygudGFnID0gdmFyaW5mby0+ZG9iai5u YW1lLAorCQkJCQkJCQkgIC5uYW1lc3BhY2UgPSB2YXJpbmZvLT5kb2JqLm5hbWVzcGFjZS0+ZG9i ai5uYW1lLAorCQkJCQkJCQkgIC5vd25lciA9IHZhcmluZm8tPnJvbG5hbWUsCisJCQkJCQkJCSAg LmRlc2NyaXB0aW9uID0gIlZBUklBQkxFIiwKKwkJCQkJCQkJICAuc2VjdGlvbiA9IFNFQ1RJT05f UFJFX0RBVEEsCisJCQkJCQkJCSAgLmNyZWF0ZVN0bXQgPSBxdWVyeS0+ZGF0YSwKKwkJCQkJCQkJ ICAuZHJvcFN0bXQgPSBkZWxxLT5kYXRhKSk7CisKKwkvKiBEdW1wIGNvbW1lbnQgaWYgYW55ICov CisJaWYgKHZhcmluZm8tPmRvYmouZHVtcCAmIERVTVBfQ09NUE9ORU5UX0NPTU1FTlQpCisJCWR1 bXBDb21tZW50KGZvdXQsICJWQVJJQUJMRSIsIHF1YWx2YXJuYW1lLAorCQkJCQlOVUxMLCB2YXJp bmZvLT5yb2xuYW1lLAorCQkJCQl2YXJpbmZvLT5kb2JqLmNhdElkLCAwLCB2YXJpbmZvLT5kb2Jq LmR1bXBJZCk7CisKKwkvKiBEdW1wIEFDTCBpZiBhbnkgKi8KKwlpZiAodmFyaW5mby0+ZG9iai5k dW1wICYgRFVNUF9DT01QT05FTlRfQUNMKQorCXsKKwkJY2hhcgkgICAqcXZhcm5hbWUgPSBwZ19z dHJkdXAoZm10SWQodmFyaW5mby0+ZG9iai5uYW1lKSk7CisKKwkJZHVtcEFDTChmb3V0LCB2YXJp bmZvLT5kb2JqLmR1bXBJZCwgSW52YWxpZER1bXBJZCwgIlZBUklBQkxFIiwKKwkJCQlxdmFybmFt ZSwgTlVMTCwKKwkJCQl2YXJpbmZvLT5kb2JqLm5hbWVzcGFjZS0+ZG9iai5uYW1lLCBOVUxMLCB2 YXJpbmZvLT5yb2xuYW1lLAorCQkJCSZ2YXJpbmZvLT5kYWNsKTsKKworCQlmcmVlKHF2YXJuYW1l KTsKKwl9CisKKwlkZXN0cm95UFFFeHBCdWZmZXIoZGVscSk7CisJZGVzdHJveVBRRXhwQnVmZmVy KHF1ZXJ5KTsKKworCWZyZWUocXVhbHZhcm5hbWUpOworfQorCiBzdGF0aWMgdm9pZAogYmluYXJ5 X3VwZ3JhZGVfc2V0X3R5cGVfb2lkc19ieV90eXBlX29pZChBcmNoaXZlICpmb3V0LAogCQkJCQkJ CQkJCSBQUUV4cEJ1ZmZlciB1cGdyYWRlX2J1ZmZlciwKQEAgLTk4NzUsNyArMTAwNjAsOCBAQCBn ZXRBZGRpdGlvbmFsQUNMcyhBcmNoaXZlICpmb3V0KQogCQkJCQlkb2JqLT5vYmpUeXBlID09IERP X1RBQkxFIHx8CiAJCQkJCWRvYmotPm9ialR5cGUgPT0gRE9fUFJPQ0xBTkcgfHwKIAkJCQkJZG9i ai0+b2JqVHlwZSA9PSBET19GRFcgfHwKLQkJCQkJZG9iai0+b2JqVHlwZSA9PSBET19GT1JFSUdO X1NFUlZFUikKKwkJCQkJZG9iai0+b2JqVHlwZSA9PSBET19GT1JFSUdOX1NFUlZFUiB8fAorCQkJ CQlkb2JqLT5vYmpUeXBlID09IERPX1ZBUklBQkxFKQogCQkJCXsKIAkJCQkJRHVtcGFibGVPYmpl Y3RXaXRoQWNsICpkYW9iaiA9IChEdW1wYWJsZU9iamVjdFdpdGhBY2wgKikgZG9iajsKIApAQCAt MTA0NzQsNiArMTA2NjAsOSBAQCBkdW1wRHVtcGFibGVPYmplY3QoQXJjaGl2ZSAqZm91dCwgRHVt cGFibGVPYmplY3QgKmRvYmopCiAJCWNhc2UgRE9fU1VCU0NSSVBUSU9OX1JFTDoKIAkJCWR1bXBT dWJzY3JpcHRpb25UYWJsZShmb3V0LCAoY29uc3QgU3ViUmVsSW5mbyAqKSBkb2JqKTsKIAkJCWJy ZWFrOworCQljYXNlIERPX1ZBUklBQkxFOgorCQkJZHVtcFZhcmlhYmxlKGZvdXQsIChWYXJpYWJs ZUluZm8gKikgZG9iaik7CisJCQlicmVhazsKIAkJY2FzZSBET19QUkVfREFUQV9CT1VOREFSWToK IAkJY2FzZSBET19QT1NUX0RBVEFfQk9VTkRBUlk6CiAJCQkvKiBuZXZlciBkdW1wZWQsIG5vdGhp bmcgdG8gZG8gKi8KQEAgLTE0OTIzLDYgKzE1MTEyLDkgQEAgZHVtcERlZmF1bHRBQ0woQXJjaGl2 ZSAqZm91dCwgY29uc3QgRGVmYXVsdEFDTEluZm8gKmRhY2xpbmZvKQogCQljYXNlIERFRkFDTE9C Sl9OQU1FU1BBQ0U6CiAJCQl0eXBlID0gIlNDSEVNQVMiOwogCQkJYnJlYWs7CisJCWNhc2UgREVG QUNMT0JKX1ZBUklBQkxFOgorCQkJdHlwZSA9ICJWQVJJQUJMRVMiOworCQkJYnJlYWs7CiAJCWRl ZmF1bHQ6CiAJCQkvKiBzaG91bGRuJ3QgZ2V0IGhlcmUgKi8KIAkJCXBnX2ZhdGFsKCJ1bnJlY29n bml6ZWQgb2JqZWN0IHR5cGUgaW4gZGVmYXVsdCBwcml2aWxlZ2VzOiAlZCIsCkBAIC0xODQzMiw2 ICsxODYyNCw3IEBAIGFkZEJvdW5kYXJ5RGVwZW5kZW5jaWVzKER1bXBhYmxlT2JqZWN0ICoqZG9i anMsIGludCBudW1PYmpzLAogCQkJY2FzZSBET19DT05WRVJTSU9OOgogCQkJY2FzZSBET19UQUJM RToKIAkJCWNhc2UgRE9fVEFCTEVfQVRUQUNIOgorCQkJY2FzZSBET19WQVJJQUJMRToKIAkJCWNh c2UgRE9fQVRUUkRFRjoKIAkJCWNhc2UgRE9fUFJPQ0xBTkc6CiAJCQljYXNlIERPX0NBU1Q6CmRp ZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oIGIvc3JjL2Jpbi9wZ19kdW1wL3Bn X2R1bXAuaAppbmRleCA0YjJlNTg3MGE5Li4zNmE2OWEwODMyIDEwMDY0NAotLS0gYS9zcmMvYmlu L3BnX2R1bXAvcGdfZHVtcC5oCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKQEAgLTUy LDYgKzUyLDcgQEAgdHlwZWRlZiBlbnVtCiAJRE9fVEFCTEUsCiAJRE9fVEFCTEVfQVRUQUNILAog CURPX0FUVFJERUYsCisJRE9fVkFSSUFCTEUsCiAJRE9fSU5ERVgsCiAJRE9fSU5ERVhfQVRUQUNI LAogCURPX1NUQVRTRVhULApAQCAtNjkyLDYgKzY5MywyMyBAQCB0eXBlZGVmIHN0cnVjdCBfU3Vi UmVsSW5mbwogCWNoYXIJICAgKnNyc3VibHNuOwogfSBTdWJSZWxJbmZvOwogCisvKgorICogVGhl IFZhcmlhYmxlSW5mbyBzdHJ1Y3QgaXMgdXNlZCB0byByZXByZXNlbnQgc2Vzc2lvbiB2YXJpYWJs ZXMKKyAqLwordHlwZWRlZiBzdHJ1Y3QgX1ZhcmlhYmxlSW5mbworeworCUR1bXBhYmxlT2JqZWN0 IGRvYmo7CisJRHVtcGFibGVBY2wgZGFjbDsKKwlPaWQJCQl2YXJ0eXBlOworCWNoYXIJICAgKnZh cnR5cG5hbWU7CisJY2hhcgkgICAqdmFyYWNsOworCWNoYXIJICAgKnJ2YXJhY2w7CisJY2hhcgkg ICAqaW5pdHZhcmFjbDsKKwljaGFyCSAgICppbml0cnZhcmFjbDsKKwlPaWQJCQl2YXJjb2xsYXRp b247CisJY29uc3QgY2hhciAqcm9sbmFtZTsJCS8qIG5hbWUgb2Ygb3duZXIsIG9yIGVtcHR5IHN0 cmluZyAqLworfSBWYXJpYWJsZUluZm87CisKIC8qCiAgKgljb21tb24gdXRpbGl0eSBmdW5jdGlv bnMKICAqLwpAQCAtNzc1LDUgKzc5Myw2IEBAIGV4dGVybiB2b2lkIGdldFB1YmxpY2F0aW9uVGFi bGVzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyB0YmxpbmZvW10sCiAJCQkJCQkJCSBpbnQgbnVt VGFibGVzKTsKIGV4dGVybiB2b2lkIGdldFN1YnNjcmlwdGlvbnMoQXJjaGl2ZSAqZm91dCk7CiBl eHRlcm4gdm9pZCBnZXRTdWJzY3JpcHRpb25UYWJsZXMoQXJjaGl2ZSAqZm91dCk7CitleHRlcm4g dm9pZCBnZXRWYXJpYWJsZXMoQXJjaGl2ZSAqZm91dCk7CiAKICNlbmRpZgkJCQkJCQkvKiBQR19E VU1QX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wX3NvcnQuYyBiL3Ny Yy9iaW4vcGdfZHVtcC9wZ19kdW1wX3NvcnQuYwppbmRleCA0Y2I3NTRjYWE1Li5lYmI5YmYwMzdj IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcF9zb3J0LmMKKysrIGIvc3JjL2Jp bi9wZ19kdW1wL3BnX2R1bXBfc29ydC5jCkBAIC03OCw2ICs3OCw3IEBAIGVudW0gZGJPYmplY3RU eXBlUHJpb3JpdGllcwogCVBSSU9fRFVNTVlfVFlQRSwKIAlQUklPX0FUVFJERUYsCiAJUFJJT19M QVJHRV9PQkpFQ1QsCisJUFJJT19WQVJJQUJMRSwKIAlQUklPX1BSRV9EQVRBX0JPVU5EQVJZLAkJ LyogYm91bmRhcnkhICovCiAJUFJJT19UQUJMRV9EQVRBLAogCVBSSU9fU0VRVUVOQ0VfU0VULApA QCAtMTE5LDYgKzEyMCw3IEBAIHN0YXRpYyBjb25zdCBpbnQgZGJPYmplY3RUeXBlUHJpb3JpdHlb XSA9CiAJW0RPX1RBQkxFXSA9IFBSSU9fVEFCTEUsCiAJW0RPX1RBQkxFX0FUVEFDSF0gPSBQUklP X1RBQkxFX0FUVEFDSCwKIAlbRE9fQVRUUkRFRl0gPSBQUklPX0FUVFJERUYsCisJW0RPX1ZBUklB QkxFXSA9IFBSSU9fVkFSSUFCTEUsCiAJW0RPX0lOREVYXSA9IFBSSU9fSU5ERVgsCiAJW0RPX0lO REVYX0FUVEFDSF0gPSBQUklPX0lOREVYX0FUVEFDSCwKIAlbRE9fU1RBVFNFWFRdID0gUFJJT19T VEFUU0VYVCwKQEAgLTE0OTAsNiArMTQ5MiwxMCBAQCBkZXNjcmliZUR1bXBhYmxlT2JqZWN0KER1 bXBhYmxlT2JqZWN0ICpvYmosIGNoYXIgKmJ1ZiwgaW50IGJ1ZnNpemUpCiAJCQkJCSAiUE9TVC1E QVRBIEJPVU5EQVJZICAoSUQgJWQpIiwKIAkJCQkJIG9iai0+ZHVtcElkKTsKIAkJCXJldHVybjsK KwkJY2FzZSBET19WQVJJQUJMRToKKwkJCXNucHJpbnRmKGJ1ZiwgYnVmc2l6ZSwKKwkJCQkJICJW QVJJQUJMRSAlcyAgKElEICVkIE9JRCAldSkiLAorCQkJCQkgb2JqLT5uYW1lLCBvYmotPmR1bXBJ ZCwgb2JqLT5jYXRJZC5vaWQpOwogCX0KIAkvKiBzaG91bGRuJ3QgZ2V0IGhlcmUgKi8KIAlzbnBy aW50ZihidWYsIGJ1ZnNpemUsCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdf ZHVtcC5wbCBiL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCmluZGV4IDViY2MyMjQ0 ZDUuLjBkMzc2NWVlZDQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1w LnBsCisrKyBiL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCkBAIC03ODksNiArNzg5 LDE2IEBAIG15ICV0ZXN0cyA9ICgKIAkJdW5saWtlID0+IHsgbm9fcHJpdnMgPT4gMSwgfSwKIAkg IH0sCiAKKwknQUxURVIgREVGQVVMVCBQUklWSUxFR0VTIEZPUiBST0xFIHJlZ3Jlc3NfZHVtcF90 ZXN0X3JvbGUgR1JBTlQgU0VMRUNUIE9OIFZBUklBQkxFUyBUTyBQVUJMSUMnCisJICA9PiB7CisJ CWNyZWF0ZV9vcmRlciA9PiA1NiwKKwkJY3JlYXRlX3NxbCAgID0+ICdBTFRFUiBERUZBVUxUIFBS SVZJTEVHRVMgRk9SIFJPTEUgcmVncmVzc19kdW1wX3Rlc3Rfcm9sZSBHUkFOVCBTRUxFQ1QgT04g VkFSSUFCTEVTIFRPIFBVQkxJQzsnLAorCQlyZWdleHAgPT4gcXIvXgorCQkJXFFBTFRFUiBERUZB VUxUIFBSSVZJTEVHRVMgRk9SIFJPTEUgcmVncmVzc19kdW1wX3Rlc3Rfcm9sZSBHUkFOVCBTRUxF Q1QgT04gVkFSSUFCTEVTIFRPIFBVQkxJQztcRS94bSwKKwkJbGlrZSA9PiB7ICVmdWxsX3J1bnMs IHNlY3Rpb25fcG9zdF9kYXRhID0+IDEsIH0sCisJCXVubGlrZSA9PiB7IG5vX3ByaXZzID0+IDEs IH0sCisJICB9LAorCiAJJ0FMVEVSIFJPTEUgcmVncmVzc19kdW1wX3Rlc3Rfcm9sZScgPT4gewog CQlyZWdleHAgPT4gcXIvXgogCQkJXFFBTFRFUiBST0xFIHJlZ3Jlc3NfZHVtcF90ZXN0X3JvbGUg V0lUSCBcRQpAQCAtMTYzOCw2ICsxNjQ4LDIzIEBAIG15ICV0ZXN0cyA9ICgKIAkJfSwKIAl9LAog CisJJ0NPTU1FTlQgT04gVkFSSUFCTEUgZHVtcF90ZXN0LnZhcmlhYmxlMScgPT4geworCQljcmVh dGVfb3JkZXIgPT4gNzEsCisJCWNyZWF0ZV9zcWwgICA9PiAnQ09NTUVOVCBPTiBWQVJJQUJMRSBk dW1wX3Rlc3QudmFyaWFibGUxCisJCQkJCSAgIElTIFwnY29tbWVudCBvbiB2YXJpYWJsZVwnOycs CisJCXJlZ2V4cCA9PgorCQkgIHFyL15cUUNPTU1FTlQgT04gVkFSSUFCTEUgZHVtcF90ZXN0LnZh cmlhYmxlMSBJUyAnY29tbWVudCBvbiB2YXJpYWJsZSc7XEUvbSwKKwkJbGlrZSA9PiB7CisJCQkl ZnVsbF9ydW5zLAorCQkJJWR1bXBfdGVzdF9zY2hlbWFfcnVucywKKwkJCXNlY3Rpb25fcHJlX2Rh dGEgICAgID0+IDEsCisJCX0sCisJCXVubGlrZSA9PiB7CisJCQlleGNsdWRlX2R1bXBfdGVzdF9z Y2hlbWEgPT4gMSwKKwkJCW9ubHlfZHVtcF9tZWFzdXJlbWVudCAgICA9PiAxLAorCQl9LAorCX0s CisKIAknQ09QWSB0ZXN0X3RhYmxlJyA9PiB7CiAJCWNyZWF0ZV9vcmRlciA9PiA0LAogCQljcmVh dGVfc3FsID0+ICdJTlNFUlQgSU5UTyBkdW1wX3Rlc3QudGVzdF90YWJsZSAoY29sMSkgJwpAQCAt Mzg5Niw2ICszOTIzLDI0IEBAIG15ICV0ZXN0cyA9ICgKIAkJfSwKIAl9LAogCisJJ0NSRUFURSBW QVJJQUJMRSB0ZXN0X3ZhcmlhYmxlJyA9PiB7CisJCWFsbF9ydW5zICAgICA9PiAxLAorCQljYXRj aF9hbGwgICAgPT4gJ0NSRUFURSAuLi4gY29tbWFuZHMnLAorCQljcmVhdGVfb3JkZXIgPT4gNjEs CisJCWNyZWF0ZV9zcWwgICA9PiAnQ1JFQVRFIFZBUklBQkxFIGR1bXBfdGVzdC52YXJpYWJsZTEg QVMgaW50ZWdlcjsnLAorCQlyZWdleHAgPT4gcXIvXgorCQkJXFFDUkVBVEUgVkFSSUFCTEUgZHVt cF90ZXN0LnZhcmlhYmxlMSBBUyBpbnRlZ2VyO1xFL3htLAorCQlsaWtlID0+IHsKKwkJCSVmdWxs X3J1bnMsCisJCQklZHVtcF90ZXN0X3NjaGVtYV9ydW5zLAorCQkJc2VjdGlvbl9wcmVfZGF0YSA9 PiAxLAorCQl9LAorCQl1bmxpa2UgPT4geworCQkJZXhjbHVkZV9kdW1wX3Rlc3Rfc2NoZW1hID0+ IDEsCisJCQlvbmx5X2R1bXBfbWVhc3VyZW1lbnQgICAgPT4gMSwKKwkJfSwKKwl9LAorCiAJJ0NS RUFURSBWSUVXIHRlc3RfdmlldycgPT4gewogCQljcmVhdGVfb3JkZXIgPT4gNjEsCiAJCWNyZWF0 ZV9zcWwgPT4gJ0NSRUFURSBWSUVXIGR1bXBfdGVzdC50ZXN0X3ZpZXcKQEAgLTQzNTgsNiArNDQw MywyNSBAQCBteSAldGVzdHMgPSAoCiAJCWxpa2UgPT4ge30sCiAJfSwKIAorCSdHUkFOVCBTRUxF Q1QgT04gVkFSSUFCTEUgZHVtcF90ZXN0LnZhcmlhYmxlMScgPT4geworCQljcmVhdGVfb3JkZXIg PT4gNzMsCisJCWNyZWF0ZV9zcWwgPT4KKwkJICAnR1JBTlQgU0VMRUNUIE9OIFZBUklBQkxFIGR1 bXBfdGVzdC52YXJpYWJsZTEgVE8gcmVncmVzc19kdW1wX3Rlc3Rfcm9sZTsnLAorCQlyZWdleHAg PT4gcXIvXgorCQkJXFFHUkFOVCBTRUxFQ1QgT04gVkFSSUFCTEUgZHVtcF90ZXN0LnZhcmlhYmxl MSBUTyByZWdyZXNzX2R1bXBfdGVzdF9yb2xlO1xFCisJCQkveG0sCisJCWxpa2UgPT4geworCQkJ JWZ1bGxfcnVucywKKwkJCSVkdW1wX3Rlc3Rfc2NoZW1hX3J1bnMsCisJCQlzZWN0aW9uX3ByZV9k YXRhID0+IDEsCisJCX0sCisJCXVubGlrZSA9PiB7CisJCQlleGNsdWRlX2R1bXBfdGVzdF9zY2hl bWEgPT4gMSwKKwkJCW5vX3ByaXZzICAgICAgICAgICAgICAgICA9PiAxLAorCQkJb25seV9kdW1w X21lYXN1cmVtZW50ICAgID0+IDEsCisJCX0sCisJfSwKKwogCSdSRUZSRVNIIE1BVEVSSUFMSVpF RCBWSUVXIG1hdHZpZXcnID0+IHsKIAkJcmVnZXhwID0+IHFyL15cUVJFRlJFU0ggTUFURVJJQUxJ WkVEIFZJRVcgZHVtcF90ZXN0Lm1hdHZpZXc7XEUvbSwKIAkJbGlrZSA9PgpkaWZmIC0tZ2l0IGEv c3JjL2Jpbi9wc3FsL2NvbW1hbmQuYyBiL3NyYy9iaW4vcHNxbC9jb21tYW5kLmMKaW5kZXggMTgw NzgxZWNkMC4uMjZhOWEzZmFjNyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2NvbW1hbmQuYwor KysgYi9zcmMvYmluL3BzcWwvY29tbWFuZC5jCkBAIC05ODYsNiArOTg2LDkgQEAgZXhlY19jb21t YW5kX2QoUHNxbFNjYW5TdGF0ZSBzY2FuX3N0YXRlLCBib29sIGFjdGl2ZV9icmFuY2gsIGNvbnN0 IGNoYXIgKmNtZCkKIAkJCQkJCWJyZWFrOwogCQkJCX0KIAkJCQlicmVhazsKKwkJCWNhc2UgJ1Yn OgkJCS8qIFZhcmlhYmxlcyAqLworCQkJCXN1Y2Nlc3MgPSBsaXN0VmFyaWFibGVzKHBhdHRlcm4s IHNob3dfdmVyYm9zZSk7CisJCQkJYnJlYWs7CiAJCQljYXNlICd4JzoJCQkvKiBFeHRlbnNpb25z ICovCiAJCQkJaWYgKHNob3dfdmVyYm9zZSkKIAkJCQkJc3VjY2VzcyA9IGxpc3RFeHRlbnNpb25D b250ZW50cyhwYXR0ZXJuKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jIGIv c3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKaW5kZXggN2M5YTFmMjM0Yy4uYWRmODNlZDE5NyAxMDA2 NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2Rlc2Ny aWJlLmMKQEAgLTUxNDgsNiArNTE0OCwxMDIgQEAgZXJyb3JfcmV0dXJuOgogCXJldHVybiBmYWxz ZTsKIH0KIAorLyoKKyAqIFxkVgorICoKKyAqIGxpc3RWYXJpYWJsZXMoKQorICovCitib29sCits aXN0VmFyaWFibGVzKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSkKK3sKKwlQUUV4 cEJ1ZmZlckRhdGEgYnVmOworCVBHcmVzdWx0ICAgKnJlczsKKwlwcmludFF1ZXJ5T3B0IG15b3B0 ID0gcHNldC5wb3B0OworCXN0YXRpYyBjb25zdCBib29sIHRyYW5zbGF0ZV9jb2x1bW5zW10gPSB7 ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2V9OworCisJaWYg KHBzZXQuc3ZlcnNpb24gPCAxODAwMDApCisJeworCQljaGFyCQlzdmVyYnVmWzMyXTsKKworCQlw Z19sb2dfZXJyb3IoIlRoZSBzZXJ2ZXIgKHZlcnNpb24gJXMpIGRvZXMgbm90IHN1cHBvcnQgc2Vz c2lvbiB2YXJpYWJsZXMuIiwKKwkJCQkJIGZvcm1hdFBHVmVyc2lvbk51bWJlcihwc2V0LnN2ZXJz aW9uLCBmYWxzZSwKKwkJCQkJCQkJCQkgICBzdmVyYnVmLCBzaXplb2Yoc3ZlcmJ1ZikpKTsKKwkJ cmV0dXJuIHRydWU7CisJfQorCisJaW5pdFBRRXhwQnVmZmVyKCZidWYpOworCisJcHJpbnRmUFFF eHBCdWZmZXIoJmJ1ZiwKKwkJCQkJICAiU0VMRUNUIG4ubnNwbmFtZSBhcyBcIiVzXCIsXG4iCisJ CQkJCSAgIiAgdi52YXJuYW1lIGFzIFwiJXNcIixcbiIKKwkJCQkJICAiICBwZ19jYXRhbG9nLmZv cm1hdF90eXBlKHYudmFydHlwZSwgdi52YXJ0eXBtb2QpIGFzIFwiJXNcIixcbiIKKwkJCQkJICAi ICAoU0VMRUNUIGMuY29sbG5hbWUgRlJPTSBwZ19jYXRhbG9nLnBnX2NvbGxhdGlvbiBjLCBwZ19j YXRhbG9nLnBnX3R5cGUgYnRcbiIKKwkJCQkJICAiICAgV0hFUkUgYy5vaWQgPSB2LnZhcmNvbGxh dGlvbiBBTkQgYnQub2lkID0gdi52YXJ0eXBlIEFORCB2LnZhcmNvbGxhdGlvbiA8PiBidC50eXBj b2xsYXRpb24pIGFzIFwiJXNcIixcbiIKKwkJCQkJICAiICBwZ19jYXRhbG9nLnBnX2dldF91c2Vy YnlpZCh2LnZhcm93bmVyKSBhcyBcIiVzXCJcbiIsCisJCQkJCSAgZ2V0dGV4dF9ub29wKCJTY2hl bWEiKSwKKwkJCQkJICBnZXR0ZXh0X25vb3AoIk5hbWUiKSwKKwkJCQkJICBnZXR0ZXh0X25vb3Ao IlR5cGUiKSwKKwkJCQkJICBnZXR0ZXh0X25vb3AoIkNvbGxhdGlvbiIpLAorCQkJCQkgIGdldHRl eHRfbm9vcCgiT3duZXIiKSk7CisKKwlpZiAodmVyYm9zZSkKKwl7CisJCWFwcGVuZFBRRXhwQnVm ZmVyU3RyKCZidWYsICIsXG4gICIpOworCQlwcmludEFDTENvbHVtbigmYnVmLCAidi52YXJhY2wi KTsKKwkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCSAgIixcbiAgcGdfY2F0YWxvZy5v YmpfZGVzY3JpcHRpb24odi5vaWQsICdwZ192YXJpYWJsZScpIEFTIFwiJXNcIiIsCisJCQkJCQkg IGdldHRleHRfbm9vcCgiRGVzY3JpcHRpb24iKSk7CisJfQorCisJYXBwZW5kUFFFeHBCdWZmZXJT dHIoJmJ1ZiwKKwkJCQkJCSAiXG5GUk9NIHBnX2NhdGFsb2cucGdfdmFyaWFibGUgdiIKKwkJCQkJ CSAiXG4gICAgIExFRlQgSk9JTiBwZ19jYXRhbG9nLnBnX25hbWVzcGFjZSBuIE9OIG4ub2lkID0g di52YXJuYW1lc3BhY2UiKTsKKworCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsICJcbldIRVJF IHRydWVcbiIpOworCWlmICghcGF0dGVybikKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1Ziwg IiAgICAgIEFORCBuLm5zcG5hbWUgPD4gJ3BnX2NhdGFsb2cnXG4iCisJCQkJCQkJICIgICAgICBB TkQgbi5uc3BuYW1lIDw+ICdpbmZvcm1hdGlvbl9zY2hlbWEnXG4iKTsKKworCWlmICghdmFsaWRh dGVTUUxOYW1lUGF0dGVybigmYnVmLCBwYXR0ZXJuLCB0cnVlLCBmYWxzZSwKKwkJCQkJCQkJIm4u bnNwbmFtZSIsICJ2LnZhcm5hbWUiLCBOVUxMLAorCQkJCQkJCQkicGdfY2F0YWxvZy5wZ192YXJp YWJsZV9pc192aXNpYmxlKHYub2lkKSIsCisJCQkJCQkJCU5VTEwsIDMpKQorCQlyZXR1cm4gZmFs c2U7CisKKwlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAiT1JERVIgQlkgMSwyOyIpOworCisJ cmVzID0gUFNRTGV4ZWMoYnVmLmRhdGEpOworCXRlcm1QUUV4cEJ1ZmZlcigmYnVmKTsKKwlpZiAo IXJlcykKKwkJcmV0dXJuIGZhbHNlOworCisJLyoKKwkgKiBNb3N0IGZ1bmN0aW9ucyBpbiB0aGlz IGZpbGUgYXJlIGNvbnRlbnQgdG8gcHJpbnQgYW4gZW1wdHkgdGFibGUgd2hlbgorCSAqIHRoZXJl IGFyZSBubyBtYXRjaGluZyBvYmplY3RzLiAgV2UgaW50ZW50aW9uYWxseSBkZXZpYXRlIGZyb20g dGhhdAorCSAqIGhlcmUsIGJ1dCBvbmx5IGluICFxdWlldCBtb2RlLCBmb3IgaGlzdG9yaWNhbCBy ZWFzb25zLgorCSAqLworCWlmIChQUW50dXBsZXMocmVzKSA9PSAwICYmICFwc2V0LnF1aWV0KQor CXsKKwkJaWYgKHBhdHRlcm4pCisJCQlwZ19sb2dfZXJyb3IoIkRpZCBub3QgZmluZCBhbnkgc2Vz c2lvbiB2YXJpYWJsZSBuYW1lZCBcIiVzXCIuIiwKKwkJCQkJCSBwYXR0ZXJuKTsKKwkJZWxzZQor CQkJcGdfbG9nX2Vycm9yKCJEaWQgbm90IGZpbmQgYW55IHNlc3Npb24gdmFyaWFibGVzLiIpOwor CX0KKwllbHNlCisJeworCQlteW9wdC5udWxsUHJpbnQgPSBOVUxMOworCQlteW9wdC50aXRsZSA9 IF8oIkxpc3Qgb2YgdmFyaWFibGVzIik7CisJCW15b3B0LnRyYW5zbGF0ZV9oZWFkZXIgPSB0cnVl OworCQlteW9wdC50cmFuc2xhdGVfY29sdW1ucyA9IHRyYW5zbGF0ZV9jb2x1bW5zOworCQlteW9w dC5uX3RyYW5zbGF0ZV9jb2x1bW5zID0gbGVuZ3Rob2YodHJhbnNsYXRlX2NvbHVtbnMpOworCisJ CXByaW50UXVlcnkocmVzLCAmbXlvcHQsIHBzZXQucXVlcnlGb3V0LCBmYWxzZSwgcHNldC5sb2dm aWxlKTsKKwl9CisKKwlQUWNsZWFyKHJlcyk7CisJcmV0dXJuIHRydWU7Cit9CiAKIC8qCiAgKiBc ZEZwCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuaCBiL3NyYy9iaW4vcHNxbC9k ZXNjcmliZS5oCmluZGV4IDI3M2Y5NzQ1MzguLjRlMTVhMTgwZWEgMTAwNjQ0Ci0tLSBhL3NyYy9i aW4vcHNxbC9kZXNjcmliZS5oCisrKyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5oCkBAIC0xNDks NCArMTQ5LDcgQEAgZXh0ZXJuIGJvb2wgbGlzdE9wRmFtaWx5RnVuY3Rpb25zKGNvbnN0IGNoYXIg KmFjY2Vzc19tZXRob2RfcGF0dGVybiwKIC8qIFxkbCBvciBcbG9fbGlzdCAqLwogZXh0ZXJuIGJv b2wgbGlzdExhcmdlT2JqZWN0cyhib29sIHZlcmJvc2UpOwogCisvKiBcZFYgKi8KK2V4dGVybiBi b29sIGxpc3RWYXJpYWJsZXMoY29uc3QgY2hhciAqcGF0dGVybiwgYm9vbCB2YXJib3NlKTsKKwog I2VuZGlmCQkJCQkJCS8qIERFU0NSSUJFX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9o ZWxwLmMgYi9zcmMvYmluL3BzcWwvaGVscC5jCmluZGV4IDZmNThhMTEwNzQuLmJkYzMyN2ZmZTMg MTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9oZWxwLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2hlbHAu YwpAQCAtMjY1LDYgKzI2NSw3IEBAIHNsYXNoVXNhZ2UodW5zaWduZWQgc2hvcnQgaW50IHBhZ2Vy KQogCUhFTFAwKCIgIFxcZFRbUytdIFtQQVRURVJOXSAgICAgIGxpc3QgZGF0YSB0eXBlc1xuIik7 CiAJSEVMUDAoIiAgXFxkdVtTK10gW1BBVFRFUk5dICAgICAgbGlzdCByb2xlc1xuIik7CiAJSEVM UDAoIiAgXFxkdltTK10gW1BBVFRFUk5dICAgICAgbGlzdCB2aWV3c1xuIik7CisJSEVMUDAoIiAg XFxkViAgICAgW1BBVFRFUk5dICAgICAgbGlzdCBzZXNzaW9uIHZhcmlhYmxlc1xuIik7CiAJSEVM UDAoIiAgXFxkeFsrXSAgW1BBVFRFUk5dICAgICAgbGlzdCBleHRlbnNpb25zXG4iKTsKIAlIRUxQ MCgiICBcXGRYICAgICBbUEFUVEVSTl0gICAgICBsaXN0IGV4dGVuZGVkIHN0YXRpc3RpY3NcbiIp OwogCUhFTFAwKCIgIFxcZHlbK10gIFtQQVRURVJOXSAgICAgIGxpc3QgZXZlbnQgdHJpZ2dlcnNc biIpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jIGIvc3JjL2Jpbi9w c3FsL3RhYi1jb21wbGV0ZS5jCmluZGV4IDAyNDQ2OTQ3NGQuLjg3M2E4M2ZhNWEgMTAwNjQ0Ci0t LSBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYworKysgYi9zcmMvYmluL3BzcWwvdGFiLWNv bXBsZXRlLmMKQEAgLTk2Myw2ICs5NjMsMTMgQEAgc3RhdGljIGNvbnN0IFNjaGVtYVF1ZXJ5IFF1 ZXJ5X2Zvcl90cmlnZ2VyX29mX3RhYmxlID0gewogCS5yZWZuYW1lc3BhY2UgPSAiYzEucmVsbmFt ZXNwYWNlIiwKIH07CiAKK3N0YXRpYyBjb25zdCBTY2hlbWFRdWVyeSBRdWVyeV9mb3JfbGlzdF9v Zl92YXJpYWJsZXMgPSB7CisJLm1pbl9zZXJ2ZXJfdmVyc2lvbiA9IDE4MDAwMCwKKwkuY2F0bmFt ZSA9ICJwZ19jYXRhbG9nLnBnX3ZhcmlhYmxlIHYiLAorCS52aXNjb25kaXRpb24gPSAicGdfY2F0 YWxvZy5wZ192YXJpYWJsZV9pc192aXNpYmxlKHYub2lkKSIsCisJLm5hbWVzcGFjZSA9ICJ2LnZh cm5hbWVzcGFjZSIsCisJLnJlc3VsdCA9ICJ2LnZhcm5hbWUiLAorfTsKIAogLyoKICAqIFF1ZXJp ZXMgdG8gZ2V0IGxpc3RzIG9mIG5hbWVzIG9mIHZhcmlvdXMga2luZHMgb2YgdGhpbmdzLCBwb3Nz aWJseQpAQCAtMTI4Myw2ICsxMjkwLDcgQEAgc3RhdGljIGNvbnN0IHBnc3FsX3RoaW5nX3Qgd29y ZHNfYWZ0ZXJfY3JlYXRlW10gPSB7CiAJCQkJCQkJCQkJCQkJCQkJCQkJICogVEFCTEUgLi4uICov CiAJeyJVU0VSIiwgUXVlcnlfZm9yX2xpc3Rfb2Zfcm9sZXMsIE5VTEwsIE5VTEwsIEtleXdvcmRz X2Zvcl91c2VyX3RoaW5nfSwKIAl7IlVTRVIgTUFQUElORyBGT1IiLCBOVUxMLCBOVUxMLCBOVUxM fSwKKwl7IlZBUklBQkxFIiwgTlVMTCwgTlVMTCwgJlF1ZXJ5X2Zvcl9saXN0X29mX3ZhcmlhYmxl c30sCiAJeyJWSUVXIiwgTlVMTCwgTlVMTCwgJlF1ZXJ5X2Zvcl9saXN0X29mX3ZpZXdzfSwKIAl7 TlVMTH0JCQkJCQkvKiBlbmQgb2YgbGlzdCAqLwogfTsKQEAgLTE3MjIsNyArMTczMCw3IEBAIHBz cWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpCiAJCSJc XGRGIiwgIlxcZEZkIiwgIlxcZEZwIiwgIlxcZEZ0IiwgIlxcZGciLCAiXFxkaSIsICJcXGRsIiwg IlxcZEwiLAogCQkiXFxkbSIsICJcXGRuIiwgIlxcZG8iLCAiXFxkTyIsICJcXGRwIiwgIlxcZFAi LCAiXFxkUGkiLCAiXFxkUHQiLAogCQkiXFxkcmRzIiwgIlxcZHJnIiwgIlxcZFJzIiwgIlxcZFJw IiwgIlxcZHMiLAotCQkiXFxkdCIsICJcXGRUIiwgIlxcZHYiLCAiXFxkdSIsICJcXGR4IiwgIlxc ZFgiLCAiXFxkeSIsCisJCSJcXGR0IiwgIlxcZFQiLCAiXFxkdiIsICJcXGR1IiwgIlxcZHgiLCAi XFxkWCIsICJcXGR5IiwgIlxcZFYiLAogCQkiXFxlY2hvIiwgIlxcZWRpdCIsICJcXGVmIiwgIlxc ZWxpZiIsICJcXGVsc2UiLCAiXFxlbmNvZGluZyIsCiAJCSJcXGVuZGlmIiwgIlxcZXJydmVyYm9z ZSIsICJcXGV2IiwKIAkJIlxcZiIsCkBAIC0yMjI0LDYgKzIyMzIsOSBAQCBwc3FsX2NvbXBsZXRp b24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCQkJCQkJCQkJCSAgIkFM TCIpOwogCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlNZU1RFTSIsICJTRVQiLCBNYXRjaEFu eSkpCiAJCUNPTVBMRVRFX1dJVEgoIlRPIik7CisJLyogQUxURVIgVkFSSUFCTEUgPG5hbWU+ICov CisJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiVkFSSUFCTEUiLCBNYXRjaEFueSkpCisJCUNP TVBMRVRFX1dJVEgoIk9XTkVSIFRPIiwgIlJFTkFNRSBUTyIsICJTRVQgU0NIRU1BIik7CiAJLyog QUxURVIgVklFVyA8bmFtZT4gKi8KIAllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJWSUVXIiwg TWF0Y2hBbnkpKQogCQlDT01QTEVURV9XSVRIKCJBTFRFUiBDT0xVTU4iLCAiT1dORVIgVE8iLCAi UkVOQU1FIiwgIlJFU0VUIiwgIlNFVCIpOwpAQCAtMjgwNCw3ICsyODE1LDcgQEAgcHNxbF9jb21w bGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50IGVuZCkKIAkJCQkJICAiUk9V VElORSIsICJSVUxFIiwgIlNDSEVNQSIsICJTRVFVRU5DRSIsICJTRVJWRVIiLAogCQkJCQkgICJT VEFUSVNUSUNTIiwgIlNVQlNDUklQVElPTiIsICJUQUJMRSIsCiAJCQkJCSAgIlRBQkxFU1BBQ0Ui LCAiVEVYVCBTRUFSQ0giLCAiVFJBTlNGT1JNIEZPUiIsCi0JCQkJCSAgIlRSSUdHRVIiLCAiVFlQ RSIsICJWSUVXIik7CisJCQkJCSAgIlRSSUdHRVIiLCAiVFlQRSIsICJWQVJJQUJMRSIsICJWSUVX Iik7CiAJZWxzZSBpZiAoTWF0Y2hlcygiQ09NTUVOVCIsICJPTiIsICJBQ0NFU1MiLCAiTUVUSE9E IikpCiAJCUNPTVBMRVRFX1dJVEhfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfYWNjZXNzX21ldGhv ZHMpOwogCWVsc2UgaWYgKE1hdGNoZXMoIkNPTU1FTlQiLCAiT04iLCAiQ09OU1RSQUlOVCIpKQpA QCAtMzI2Niw3ICszMjc3LDcgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGlu dCBzdGFydCwgaW50IGVuZCkKIC8qIENSRUFURSBUQUJMRSAtLS0gaXMgYWxsb3dlZCBpbnNpZGUg Q1JFQVRFIFNDSEVNQSwgc28gdXNlIFRhaWxNYXRjaGVzICovCiAJLyogQ29tcGxldGUgIkNSRUFU RSBURU1QL1RFTVBPUkFSWSIgd2l0aCB0aGUgcG9zc2libGUgdGVtcCBvYmplY3RzICovCiAJZWxz ZSBpZiAoVGFpbE1hdGNoZXMoIkNSRUFURSIsICJURU1QfFRFTVBPUkFSWSIpKQotCQlDT01QTEVU RV9XSVRIKCJTRVFVRU5DRSIsICJUQUJMRSIsICJWSUVXIik7CisJCUNPTVBMRVRFX1dJVEgoIlNF UVVFTkNFIiwgIlRBQkxFIiwgIlZBUklBQkxFIiwgIlZJRVciKTsKIAkvKiBDb21wbGV0ZSAiQ1JF QVRFIFVOTE9HR0VEIiB3aXRoIFRBQkxFIG9yIFNFUVVFTkNFICovCiAJZWxzZSBpZiAoVGFpbE1h dGNoZXMoIkNSRUFURSIsICJVTkxPR0dFRCIpKQogCQlDT01QTEVURV9XSVRIKCJUQUJMRSIsICJT RVFVRU5DRSIpOwpAQCAtMzU4MCw2ICszNTkxLDEzIEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBj aGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpCiAJCWVsc2UgaWYgKFRhaWxNYXRjaGVzKCI9 IiwgTWF0Y2hBbnlFeGNlcHQoIiopIikpKQogCQkJQ09NUExFVEVfV0lUSCgiLCIsICIpIik7CiAJ fQorLyogQ1JFQVRFIFZBUklBQkxFIC0tLSBpcyBhbGxvd2VkIGluc2lkZSBDUkVBVEUgU0NIRU1B LCBzbyB1c2UgVGFpbE1hdGNoZXMgKi8KKwkvKiBDb21wbGV0ZSBDUkVBVEUgVkFSSUFCTEUgPG5h bWU+IHdpdGggQVMgKi8KKwllbHNlIGlmIChUYWlsTWF0Y2hlcygiQ1JFQVRFIiwgIlZBUklBQkxF IiwgTWF0Y2hBbnkpKQorCQlDT01QTEVURV9XSVRIKCJBUyIpOworCWVsc2UgaWYgKFRhaWxNYXRj aGVzKCJWQVJJQUJMRSIsIE1hdGNoQW55LCAiQVMiKSkKKwkJLyogQ29tcGxldGUgQ1JFQVRFIFZB UklBQkxFIDxuYW1lPiB3aXRoIEFTIHR5cGVzICovCisJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FV RVJZKFF1ZXJ5X2Zvcl9saXN0X29mX2RhdGF0eXBlcyk7CiAKIC8qIENSRUFURSBWSUVXIC0tLSBp cyBhbGxvd2VkIGluc2lkZSBDUkVBVEUgU0NIRU1BLCBzbyB1c2UgVGFpbE1hdGNoZXMgKi8KIAkv KiBDb21wbGV0ZSBDUkVBVEUgWyBPUiBSRVBMQUNFIF0gVklFVyA8bmFtZT4gd2l0aCBBUyBvciBX SVRIICovCkBAIC0zODQzLDYgKzM4NjEsMTIgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIg KnRleHQsIGludCBzdGFydCwgaW50IGVuZCkKIAllbHNlIGlmIChNYXRjaGVzKCJEUk9QIiwgIlRS QU5TRk9STSIsICJGT1IiLCBNYXRjaEFueSwgIkxBTkdVQUdFIiwgTWF0Y2hBbnkpKQogCQlDT01Q TEVURV9XSVRIKCJDQVNDQURFIiwgIlJFU1RSSUNUIik7CiAKKwkvKiBEUk9QIFZBUklBQkxFICov CisJZWxzZSBpZiAoTWF0Y2hlcygiRFJPUCIsICJWQVJJQUJMRSIpKQorCQlDT01QTEVURV9XSVRI X1NDSEVNQV9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl92YXJpYWJsZXMpOworCWVsc2UgaWYgKE1h dGNoZXMoIkRST1AiLCAiVkFSSUFCTEUiLCBNYXRjaEFueSkpCisJCUNPTVBMRVRFX1dJVEgoIkNB U0NBREUiLCAiUkVTVFJJQ1QiKTsKKwogLyogRVhFQ1VURSAqLwogCWVsc2UgaWYgKE1hdGNoZXMo IkVYRUNVVEUiKSkKIAkJQ09NUExFVEVfV0lUSF9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl9wcmVw YXJlZF9zdGF0ZW1lbnRzKTsKQEAgLTQwNDYsNyArNDA3MCw3IEBAIHBzcWxfY29tcGxldGlvbihj b25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpCiAJCSAqIG9iamVjdHMgc3VwcG9y dGVkLgogCQkgKi8KIAkJaWYgKEhlYWRNYXRjaGVzKCJBTFRFUiIsICJERUZBVUxUIiwgIlBSSVZJ TEVHRVMiKSkKLQkJCUNPTVBMRVRFX1dJVEgoIlRBQkxFUyIsICJTRVFVRU5DRVMiLCAiRlVOQ1RJ T05TIiwgIlBST0NFRFVSRVMiLCAiUk9VVElORVMiLCAiVFlQRVMiLCAiU0NIRU1BUyIpOworCQkJ Q09NUExFVEVfV0lUSCgiVEFCTEVTIiwgIlNFUVVFTkNFUyIsICJGVU5DVElPTlMiLCAiUFJPQ0VE VVJFUyIsICJST1VUSU5FUyIsICJUWVBFUyIsICJTQ0hFTUFTIiwgIlZBUklBQkxFUyIpOwogCQll bHNlCiAJCQlDT01QTEVURV9XSVRIX1NDSEVNQV9RVUVSWV9QTFVTKFF1ZXJ5X2Zvcl9saXN0X29m X2dyYW50YWJsZXMsCiAJCQkJCQkJCQkJCSJBTEwgRlVOQ1RJT05TIElOIFNDSEVNQSIsCkBAIC00 MDY4LDcgKzQwOTIsOCBAQCBwc3FsX2NvbXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0 YXJ0LCBpbnQgZW5kKQogCQkJCQkJCQkJCQkiU0VRVUVOQ0UiLAogCQkJCQkJCQkJCQkiVEFCTEUi LAogCQkJCQkJCQkJCQkiVEFCTEVTUEFDRSIsCi0JCQkJCQkJCQkJCSJUWVBFIik7CisJCQkJCQkJ CQkJCSJUWVBFIiwKKwkJCQkJCQkJCQkJIlZBUklBQkxFIik7CiAJfQogCWVsc2UgaWYgKFRhaWxN YXRjaGVzKCJHUkFOVHxSRVZPS0UiLCBNYXRjaEFueSwgIk9OIiwgIkFMTCIpIHx8CiAJCQkgVGFp bE1hdGNoZXMoIlJFVk9LRSIsICJHUkFOVCIsICJPUFRJT04iLCAiRk9SIiwgTWF0Y2hBbnksICJP TiIsICJBTEwiKSkKQEAgLTQwNzYsNyArNDEwMSw4IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBj aGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpCiAJCQkJCSAgIlBST0NFRFVSRVMgSU4gU0NI RU1BIiwKIAkJCQkJICAiUk9VVElORVMgSU4gU0NIRU1BIiwKIAkJCQkJICAiU0VRVUVOQ0VTIElO IFNDSEVNQSIsCi0JCQkJCSAgIlRBQkxFUyBJTiBTQ0hFTUEiKTsKKwkJCQkJICAiVEFCTEVTIElO IFNDSEVNQSIsCisJCQkJCSAgIlZBUklBQkxFUyBJTiBTQ0hFTUEiKTsKIAllbHNlIGlmIChUYWls TWF0Y2hlcygiR1JBTlR8UkVWT0tFIiwgTWF0Y2hBbnksICJPTiIsICJGT1JFSUdOIikgfHwKIAkJ CSBUYWlsTWF0Y2hlcygiUkVWT0tFIiwgIkdSQU5UIiwgIk9QVElPTiIsICJGT1IiLCBNYXRjaEFu eSwgIk9OIiwgIkZPUkVJR04iKSkKIAkJQ09NUExFVEVfV0lUSCgiREFUQSBXUkFQUEVSIiwgIlNF UlZFUiIpOwpAQCAtNDExMiw2ICs0MTM4LDggQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIg KnRleHQsIGludCBzdGFydCwgaW50IGVuZCkKIAkJCUNPTVBMRVRFX1dJVEhfUVVFUlkoUXVlcnlf Zm9yX2xpc3Rfb2ZfdGFibGVzcGFjZXMpOwogCQllbHNlIGlmIChUYWlsTWF0Y2hlcygiVFlQRSIp KQogCQkJQ09NUExFVEVfV0lUSF9TQ0hFTUFfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfZGF0YXR5 cGVzKTsKKwkJZWxzZSBpZiAoVGFpbE1hdGNoZXMoIlZBUklBQkxFIikpCisJCQlDT01QTEVURV9X SVRIX1NDSEVNQV9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl92YXJpYWJsZXMpOwogCQllbHNlIGlm IChUYWlsTWF0Y2hlcygiR1JBTlQiLCBNYXRjaEFueSwgTWF0Y2hBbnksIE1hdGNoQW55KSkKIAkJ CUNPTVBMRVRFX1dJVEgoIlRPIik7CiAJCWVsc2UKQEAgLTQ0MTUsNyArNDQ0Myw3IEBAIHBzcWxf Y29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpCiAKIC8qIFBS RVBBUkUgeHggQVMgKi8KIAllbHNlIGlmIChNYXRjaGVzKCJQUkVQQVJFIiwgTWF0Y2hBbnksICJB UyIpKQotCQlDT01QTEVURV9XSVRIKCJTRUxFQ1QiLCAiVVBEQVRFIiwgIklOU0VSVCBJTlRPIiwg IkRFTEVURSBGUk9NIik7CisJCUNPTVBMRVRFX1dJVEgoIlNFTEVDVCIsICJVUERBVEUiLCAiSU5T RVJUIElOVE8iLCAiREVMRVRFIEZST00iLCAiTEVUIik7CiAKIC8qCiAgKiBQUkVQQVJFIFRSQU5T QUNUSU9OIGlzIG1pc3Npbmcgb24gcHVycG9zZS4gSXQncyBpbnRlbmRlZCBmb3IgdHJhbnNhY3Rp b24KQEAgLTQ4ODMsNiArNDkxMSw4IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0 LCBpbnQgc3RhcnQsIGludCBlbmQpCiAJCUNPTVBMRVRFX1dJVEhfUVVFUlkoUXVlcnlfZm9yX2xp c3Rfb2Zfcm9sZXMpOwogCWVsc2UgaWYgKFRhaWxNYXRjaGVzQ1MoIlxcZHYqIikpCiAJCUNPTVBM RVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX3ZpZXdzKTsKKwllbHNlIGlm IChUYWlsTWF0Y2hlc0NTKCJcXGRWKiIpKQorCQlDT01QTEVURV9XSVRIX1NDSEVNQV9RVUVSWShR dWVyeV9mb3JfbGlzdF9vZl92YXJpYWJsZXMpOwogCWVsc2UgaWYgKFRhaWxNYXRjaGVzQ1MoIlxc ZHgqIikpCiAJCUNPTVBMRVRFX1dJVEhfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfZXh0ZW5zaW9u cyk7CiAJZWxzZSBpZiAoVGFpbE1hdGNoZXNDUygiXFxkWCoiKSkKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2NhdGFsb2cvTWFrZWZpbGUgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL01ha2VmaWxlCmlu ZGV4IDE2N2Y5MWE2ZTMuLjUwN2YzODA4MjEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFs b2cvTWFrZWZpbGUKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9NYWtlZmlsZQpAQCAtODEsNyAr ODEsOCBAQCBDQVRBTE9HX0hFQURFUlMgOj0gXAogCXBnX3B1YmxpY2F0aW9uX25hbWVzcGFjZS5o IFwKIAlwZ19wdWJsaWNhdGlvbl9yZWwuaCBcCiAJcGdfc3Vic2NyaXB0aW9uLmggXAotCXBnX3N1 YnNjcmlwdGlvbl9yZWwuaAorCXBnX3N1YnNjcmlwdGlvbl9yZWwuaCBcCisJcGdfdmFyaWFibGUu aAogCiBHRU5FUkFURURfSEVBREVSUyA6PSAkKENBVEFMT0dfSEVBREVSUzolLmg9JV9kLmgpCiAK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvbWVzb24uYnVpbGQgYi9zcmMvaW5jbHVk ZS9jYXRhbG9nL21lc29uLmJ1aWxkCmluZGV4IGY3MGQxZGFiYTUuLjZlZWM3OWQyZWUgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvbWVzb24uYnVpbGQKKysrIGIvc3JjL2luY2x1ZGUv Y2F0YWxvZy9tZXNvbi5idWlsZApAQCAtNjksNiArNjksNyBAQCBjYXRhbG9nX2hlYWRlcnMgPSBb CiAgICdwZ19wdWJsaWNhdGlvbl9yZWwuaCcsCiAgICdwZ19zdWJzY3JpcHRpb24uaCcsCiAgICdw Z19zdWJzY3JpcHRpb25fcmVsLmgnLAorICAncGdfdmFyaWFibGUuaCcsCiBdCiAKICMgVGhlIC5k YXQgZmlsZXMgd2UgbmVlZCBjYW4ganVzdCBiZSBsaXN0ZWQgYWxwaGFiZXRpY2FsbHkuCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL25hbWVzcGFjZS5oIGIvc3JjL2luY2x1ZGUvY2F0 YWxvZy9uYW1lc3BhY2UuaAppbmRleCA4ZDQzNGQ0OGQ1Li4xOGVhNmFjODNhIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9jYXRhbG9nL25hbWVzcGFjZS5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFs b2cvbmFtZXNwYWNlLmgKQEAgLTk3LDYgKzk3LDggQEAgZXh0ZXJuIE9pZAlUeXBlbmFtZUdldFR5 cGlkKGNvbnN0IGNoYXIgKnR5cG5hbWUpOwogZXh0ZXJuIE9pZAlUeXBlbmFtZUdldFR5cGlkRXh0 ZW5kZWQoY29uc3QgY2hhciAqdHlwbmFtZSwgYm9vbCB0ZW1wX29rKTsKIGV4dGVybiBib29sIFR5 cGVJc1Zpc2libGUoT2lkIHR5cGlkKTsKIAorZXh0ZXJuIGJvb2wgVmFyaWFibGVJc1Zpc2libGUo T2lkIHZhcmlkKTsKKwogZXh0ZXJuIEZ1bmNDYW5kaWRhdGVMaXN0IEZ1bmNuYW1lR2V0Q2FuZGlk YXRlcyhMaXN0ICpuYW1lcywKIAkJCQkJCQkJCQkJICAgaW50IG5hcmdzLCBMaXN0ICphcmduYW1l cywKIAkJCQkJCQkJCQkJICAgYm9vbCBleHBhbmRfdmFyaWFkaWMsCkBAIC0xNjksNiArMTcxLDgg QEAgZXh0ZXJuIFNlYXJjaFBhdGhNYXRjaGVyICpHZXRTZWFyY2hQYXRoTWF0Y2hlcihNZW1vcnlD b250ZXh0IGNvbnRleHQpOwogZXh0ZXJuIFNlYXJjaFBhdGhNYXRjaGVyICpDb3B5U2VhcmNoUGF0 aE1hdGNoZXIoU2VhcmNoUGF0aE1hdGNoZXIgKnBhdGgpOwogZXh0ZXJuIGJvb2wgU2VhcmNoUGF0 aE1hdGNoZXNDdXJyZW50RW52aXJvbm1lbnQoU2VhcmNoUGF0aE1hdGNoZXIgKnBhdGgpOwogCitl eHRlcm4gT2lkCUxvb2t1cFZhcmlhYmxlKGNvbnN0IGNoYXIgKm5zcG5hbWUsIGNvbnN0IGNoYXIg KnZhcm5hbWUsIGJvb2wgbWlzc2luZ19vayk7CisKIGV4dGVybiBPaWQJZ2V0X2NvbGxhdGlvbl9v aWQoTGlzdCAqY29sbG5hbWUsIGJvb2wgbWlzc2luZ19vayk7CiBleHRlcm4gT2lkCWdldF9jb252 ZXJzaW9uX29pZChMaXN0ICpjb25uYW1lLCBib29sIG1pc3Npbmdfb2spOwogZXh0ZXJuIE9pZAlG aW5kRGVmYXVsdENvbnZlcnNpb25Qcm9jKGludDMyIGZvcl9lbmNvZGluZywgaW50MzIgdG9fZW5j b2RpbmcpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19kZWZhdWx0X2FjbC5o IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19kZWZhdWx0X2FjbC5oCmluZGV4IGQyNzJjZGYwOGIu LjUyOWQ1M2M2YmIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfZGVmYXVsdF9h Y2wuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2RlZmF1bHRfYWNsLmgKQEAgLTY4LDYg KzY4LDcgQEAgTUFLRV9TWVNDQUNIRShERUZBQ0xST0xFTlNQT0JKLCBwZ19kZWZhdWx0X2FjbF9y b2xlX25zcF9vYmpfaW5kZXgsIDgpOwogI2RlZmluZSBERUZBQ0xPQkpfRlVOQ1RJT04JCSdmJyAv KiBmdW5jdGlvbiAqLwogI2RlZmluZSBERUZBQ0xPQkpfVFlQRQkJCSdUJyAvKiB0eXBlICovCiAj ZGVmaW5lIERFRkFDTE9CSl9OQU1FU1BBQ0UJCSduJyAvKiBuYW1lc3BhY2UgKi8KKyNkZWZpbmUg REVGQUNMT0JKX1ZBUklBQkxFCQknVicgLyogdmFyaWFibGUgKi8KIAogI2VuZGlmCQkJCQkJCS8q IEVYUE9TRV9UT19DTElFTlRfQ09ERSAqLwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAppbmRleCAw NmIyZjRiYTY2Li44MzdkOGRmYWUxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKQEAgLTY0NzIs NiArNjQ3Miw5IEBACiAgIHByb25hbWUgPT4gJ3BnX2NvbGxhdGlvbl9pc192aXNpYmxlJywgcHJv Y29zdCA9PiAnMTAnLCBwcm92b2xhdGlsZSA9PiAncycsCiAgIHByb3JldHR5cGUgPT4gJ2Jvb2wn LCBwcm9hcmd0eXBlcyA9PiAnb2lkJywKICAgcHJvc3JjID0+ICdwZ19jb2xsYXRpb25faXNfdmlz aWJsZScgfSwKK3sgb2lkID0+ICc5MjIxJywgZGVzY3IgPT4gJ2lzIHNlc3Npb24gdmFyaWFibGUg dmlzaWJsZSBpbiBzZWFyY2ggcGF0aD8nLAorICBwcm9uYW1lID0+ICdwZ192YXJpYWJsZV9pc192 aXNpYmxlJywgcHJvY29zdCA9PiAnMTAnLCBwcm92b2xhdGlsZSA9PiAncycsCisgIHByb3JldHR5 cGUgPT4gJ2Jvb2wnLCBwcm9hcmd0eXBlcyA9PiAnb2lkJywgcHJvc3JjID0+ICdwZ192YXJpYWJs ZV9pc192aXNpYmxlJyB9LAogCiB7IG9pZCA9PiAnMjg1NCcsIGRlc2NyID0+ICdnZXQgT0lEIG9m IGN1cnJlbnQgc2Vzc2lvblwncyB0ZW1wIHNjaGVtYSwgaWYgYW55JywKICAgcHJvbmFtZSA9PiAn cGdfbXlfdGVtcF9zY2hlbWEnLCBwcm92b2xhdGlsZSA9PiAncycsIHByb3BhcmFsbGVsID0+ICdy JywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfdmFyaWFibGUuaCBiL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfdmFyaWFibGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwLi4zODEwZTA0MGYyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ192YXJpYWJsZS5oCkBAIC0wLDAgKzEsODEgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICoKKyAqIHBnX3ZhcmlhYmxlLmgKKyAqCSAgZGVmaW5pdGlvbiBvZiBzZXNzaW9uIHZhcmlhYmxl cyBzeXN0ZW0gY2F0YWxvZyAocGdfdmFyaWFibGVzKQorICoKKyAqCisgKiBQb3J0aW9ucyBDb3B5 cmlnaHQgKGMpIDE5OTYtMjAyNCwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAK KyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0 eSBvZiBDYWxpZm9ybmlhCisgKgorICogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ192YXJpYWJsZS5o CisgKgorICogTk9URVMKKyAqCSAgVGhlIENhdGFsb2cucG0gbW9kdWxlIHJlYWRzIHRoaXMgZmls ZSBhbmQgZGVyaXZlcyBzY2hlbWEKKyAqCSAgaW5mb3JtYXRpb24uCisgKgorICotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgKi8KKyNpZm5kZWYgUEdfVkFSSUFCTEVfSAorI2RlZmluZSBQR19WQVJJQUJMRV9I CisKKyNpbmNsdWRlICJjYXRhbG9nL2dlbmJraS5oIgorI2luY2x1ZGUgImNhdGFsb2cvb2JqZWN0 YWRkcmVzcy5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdmFyaWFibGVfZC5oIgorI2luY2x1ZGUg InV0aWxzL2FjbC5oIgorCisvKiAtLS0tLS0tLS0tLS0tLS0tCisgKgkJcGdfdmFyaWFibGUgZGVm aW5pdGlvbi4gIGNwcCB0dXJucyB0aGlzIGludG8KKyAqCQl0eXBlZGVmIHN0cnVjdCBGb3JtRGF0 YV9wZ192YXJpYWJsZQorICogLS0tLS0tLS0tLS0tLS0tLQorICovCitDQVRBTE9HKHBnX3Zhcmlh YmxlLDkyMjIsVmFyaWFibGVSZWxhdGlvbklkKQoreworCU9pZAkJCW9pZDsJCQkvKiBvaWQgKi8K KworCS8qIE9JRCBvZiBlbnRyeSBpbiBwZ190eXBlIGZvciB2YXJpYWJsZSdzIHR5cGUgKi8KKwlP aWQJCQl2YXJ0eXBlIEJLSV9MT09LVVAocGdfdHlwZSk7CisKKwkvKiB2YXJpYWJsZSBuYW1lICov CisJTmFtZURhdGEJdmFybmFtZTsKKworCS8qIE9JRCBvZiBuYW1lc3BhY2UgY29udGFpbmluZyB2 YXJpYWJsZSBjbGFzcyAqLworCU9pZAkJCXZhcm5hbWVzcGFjZSBCS0lfTE9PS1VQKHBnX25hbWVz cGFjZSk7CisKKwkvKiB2YXJpYWJsZSBvd25lciAqLworCU9pZAkJCXZhcm93bmVyIEJLSV9MT09L VVAocGdfYXV0aGlkKTsKKworCS8qIHR5cG1vZCBmb3IgdmFyaWFibGUncyB0eXBlICovCisJaW50 MzIJCXZhcnR5cG1vZCBCS0lfREVGQVVMVCgtMSk7CisKKwkvKiB2YXJpYWJsZSBjb2xsYXRpb24g Ki8KKwlPaWQJCQl2YXJjb2xsYXRpb24gQktJX0RFRkFVTFQoMCkgQktJX0xPT0tVUF9PUFQocGdf Y29sbGF0aW9uKTsKKworCisjaWZkZWYgQ0FUQUxPR19WQVJMRU4JCQkvKiB2YXJpYWJsZS1sZW5n dGggZmllbGRzIHN0YXJ0IGhlcmUgKi8KKworCS8qIGFjY2VzcyBwZXJtaXNzaW9ucyAqLworCWFj bGl0ZW0JCXZhcmFjbFsxXSBCS0lfREVGQVVMVChfbnVsbF8pOworCisjZW5kaWYKK30gRm9ybURh dGFfcGdfdmFyaWFibGU7CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0KKyAqCQlGb3JtX3BnX3Zhcmlh YmxlIGNvcnJlc3BvbmRzIHRvIGEgcG9pbnRlciB0byBhIHR1cGxlIHdpdGgKKyAqCQl0aGUgZm9y bWF0IG9mIHRoZSBwZ192YXJpYWJsZSByZWxhdGlvbi4KKyAqIC0tLS0tLS0tLS0tLS0tLS0KKyAq LwordHlwZWRlZiBGb3JtRGF0YV9wZ192YXJpYWJsZSAqRm9ybV9wZ192YXJpYWJsZTsKKworREVD TEFSRV9UT0FTVChwZ192YXJpYWJsZSwgOTIyMywgOTIyNCk7CisKK0RFQ0xBUkVfVU5JUVVFX0lO REVYX1BLRVkocGdfdmFyaWFibGVfb2lkX2luZGV4LCA5MjI1LCBWYXJpYWJsZU9pZEluZGV4SWQs IHBnX3ZhcmlhYmxlLCBidHJlZShvaWQgb2lkX29wcykpOworREVDTEFSRV9VTklRVUVfSU5ERVgo cGdfdmFyaWFibGVfdmFybmFtZV9uc3BfaW5kZXgsIDkyMjYsIFZhcmlhYmxlTmFtZU5zcEluZGV4 SWQsIHBnX3ZhcmlhYmxlLCBidHJlZSh2YXJuYW1lIG5hbWVfb3BzLCB2YXJuYW1lc3BhY2Ugb2lk X29wcykpOworCitleHRlcm4gT2JqZWN0QWRkcmVzcyBDcmVhdGVWYXJpYWJsZShQYXJzZVN0YXRl ICpwc3RhdGUsCisJCQkJCQkJCQlDcmVhdGVTZXNzaW9uVmFyU3RtdCAqc3RtdCk7CitleHRlcm4g dm9pZCBEcm9wVmFyaWFibGVCeUlkKE9pZCB2YXJpZCk7CisKK01BS0VfU1lTQ0FDSEUoVkFSSUFC TEVOQU1FTlNQLCBwZ192YXJpYWJsZV92YXJuYW1lX25zcF9pbmRleCwgOCk7CitNQUtFX1NZU0NB Q0hFKFZBUklBQkxFT0lELCBwZ192YXJpYWJsZV9vaWRfaW5kZXgsIDgpOworCisjZW5kaWYJCQkJ CQkJLyogUEdfVkFSSUFCTEVfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFy c2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4IDg1YTYyYjUz OGUuLjgwZWE1OTI4ZWUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMu aAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTIzMDksNiArMjMwOSw3 IEBAIHR5cGVkZWYgZW51bSBPYmplY3RUeXBlCiAJT0JKRUNUX1RTVEVNUExBVEUsCiAJT0JKRUNU X1RZUEUsCiAJT0JKRUNUX1VTRVJfTUFQUElORywKKwlPQkpFQ1RfVkFSSUFCTEUsCiAJT0JKRUNU X1ZJRVcsCiB9IE9iamVjdFR5cGU7CiAKQEAgLTM0MjUsNiArMzQyNiwyMSBAQCB0eXBlZGVmIHN0 cnVjdCBBbHRlclN0YXRzU3RtdAogCWJvb2wJCW1pc3Npbmdfb2s7CQkvKiBza2lwIGVycm9yIGlm IHN0YXRpc3RpY3Mgb2JqZWN0IGlzIG1pc3NpbmcgKi8KIH0gQWx0ZXJTdGF0c1N0bXQ7CiAKKwor LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoJCXtDcmVhdGV8QWx0ZXJ9IFZBUklBQkxFIFN0 YXRlbWVudAorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCit0eXBlZGVmIHN0cnVjdCBD cmVhdGVTZXNzaW9uVmFyU3RtdAoreworCU5vZGVUYWcJCXR5cGU7CisJUmFuZ2VWYXIgICAqdmFy aWFibGU7CQkvKiB0aGUgdmFyaWFibGUgdG8gY3JlYXRlICovCisJVHlwZU5hbWUgICAqdHlwZU5h bWU7CQkvKiB0aGUgdHlwZSBvZiB2YXJpYWJsZSAqLworCUNvbGxhdGVDbGF1c2UgKmNvbGxDbGF1 c2U7CisJYm9vbAkJaWZfbm90X2V4aXN0czsJLyogZG8gbm90aGluZyBpZiBpdCBhbHJlYWR5IGV4 aXN0cyAqLworfSBDcmVhdGVTZXNzaW9uVmFyU3RtdDsKKworCiAvKiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tCiAgKgkJQ3JlYXRlIEZ1bmN0aW9uIFN0YXRlbWVudAogICogLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oIGIvc3JjL2lu Y2x1ZGUvcGFyc2VyL2t3bGlzdC5oCmluZGV4IGY3ZmU4MzRjZjQuLmM4ODRjZDVjNDYgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJz ZXIva3dsaXN0LmgKQEAgLTQ4Niw2ICs0ODYsOCBAQCBQR19LRVlXT1JEKCJ2YWxpZGF0b3IiLCBW QUxJREFUT1IsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInZh bHVlIiwgVkFMVUVfUCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09S RCgidmFsdWVzIiwgVkFMVUVTLCBDT0xfTkFNRV9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZ V09SRCgidmFyY2hhciIsIFZBUkNIQVIsIENPTF9OQU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwpCitQ R19LRVlXT1JEKCJ2YXJpYWJsZSIsIFZBUklBQkxFLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVf TEFCRUwpCitQR19LRVlXT1JEKCJ2YXJpYWJsZXMiLCBWQVJJQUJMRVMsIFVOUkVTRVJWRURfS0VZ V09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInZhcmlhZGljIiwgVkFSSUFESUMsIFJFU0VS VkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJ2YXJ5aW5nIiwgVkFSWUlORywg VU5SRVNFUlZFRF9LRVlXT1JELCBBU19MQUJFTCkKIFBHX0tFWVdPUkQoInZlcmJvc2UiLCBWRVJC T1NFLCBUWVBFX0ZVTkNfTkFNRV9LRVlXT1JELCBCQVJFX0xBQkVMKQpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvdGNvcC9jbWR0YWdsaXN0LmggYi9zcmMvaW5jbHVkZS90Y29wL2NtZHRhZ2xpc3Qu aAppbmRleCA3ZmRjZWM2ZGQ5Li45NDY1ZGY3YjJmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS90 Y29wL2NtZHRhZ2xpc3QuaAorKysgYi9zcmMvaW5jbHVkZS90Y29wL2NtZHRhZ2xpc3QuaApAQCAt NjgsNiArNjgsNyBAQCBQR19DTURUQUcoQ01EVEFHX0FMVEVSX1RSQU5TRk9STSwgIkFMVEVSIFRS QU5TRk9STSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKIFBHX0NNRFRBRyhDTURUQUdfQUxURVJfVFJJ R0dFUiwgIkFMVEVSIFRSSUdHRVIiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCiBQR19DTURUQUcoQ01E VEFHX0FMVEVSX1RZUEUsICJBTFRFUiBUWVBFIiwgdHJ1ZSwgdHJ1ZSwgZmFsc2UpCiBQR19DTURU QUcoQ01EVEFHX0FMVEVSX1VTRVJfTUFQUElORywgIkFMVEVSIFVTRVIgTUFQUElORyIsIHRydWUs IGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfQUxURVJfVkFSSUFCTEUsICJBTFRFUiBW QVJJQUJMRSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKIFBHX0NNRFRBRyhDTURUQUdfQUxURVJfVklF VywgIkFMVEVSIFZJRVciLCB0cnVlLCBmYWxzZSwgZmFsc2UpCiBQR19DTURUQUcoQ01EVEFHX0FO QUxZWkUsICJBTkFMWVpFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKIFBHX0NNRFRBRyhDTURUQUdf QkVHSU4sICJCRUdJTiIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCkBAIC0xMjMsNiArMTI0LDcgQEAg UEdfQ01EVEFHKENNRFRBR19DUkVBVEVfVFJBTlNGT1JNLCAiQ1JFQVRFIFRSQU5TRk9STSIsIHRy dWUsIGZhbHNlLCBmYWxzZSkKIFBHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1RSSUdHRVIsICJDUkVB VEUgVFJJR0dFUiIsIHRydWUsIGZhbHNlLCBmYWxzZSkKIFBHX0NNRFRBRyhDTURUQUdfQ1JFQVRF X1RZUEUsICJDUkVBVEUgVFlQRSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKIFBHX0NNRFRBRyhDTURU QUdfQ1JFQVRFX1VTRVJfTUFQUElORywgIkNSRUFURSBVU0VSIE1BUFBJTkciLCB0cnVlLCBmYWxz ZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0NSRUFURV9WQVJJQUJMRSwgIkNSRUFURSBWQVJJ QUJMRSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKIFBHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1ZJRVcs ICJDUkVBVEUgVklFVyIsIHRydWUsIGZhbHNlLCBmYWxzZSkKIFBHX0NNRFRBRyhDTURUQUdfREVB TExPQ0FURSwgIkRFQUxMT0NBVEUiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQogUEdfQ01EVEFHKENN RFRBR19ERUFMTE9DQVRFX0FMTCwgIkRFQUxMT0NBVEUgQUxMIiwgZmFsc2UsIGZhbHNlLCBmYWxz ZSkKQEAgLTE3NSw2ICsxNzcsNyBAQCBQR19DTURUQUcoQ01EVEFHX0RST1BfVFJBTlNGT1JNLCAi RFJPUCBUUkFOU0ZPUk0iLCB0cnVlLCBmYWxzZSwgZmFsc2UpCiBQR19DTURUQUcoQ01EVEFHX0RS T1BfVFJJR0dFUiwgIkRST1AgVFJJR0dFUiIsIHRydWUsIGZhbHNlLCBmYWxzZSkKIFBHX0NNRFRB RyhDTURUQUdfRFJPUF9UWVBFLCAiRFJPUCBUWVBFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQogUEdf Q01EVEFHKENNRFRBR19EUk9QX1VTRVJfTUFQUElORywgIkRST1AgVVNFUiBNQVBQSU5HIiwgdHJ1 ZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19EUk9QX1ZBUklBQkxFLCAiRFJPUCBW QVJJQUJMRSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKIFBHX0NNRFRBRyhDTURUQUdfRFJPUF9WSUVX LCAiRFJPUCBWSUVXIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQogUEdfQ01EVEFHKENNRFRBR19FWEVD VVRFLCAiRVhFQ1VURSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCiBQR19DTURUQUcoQ01EVEFHX0VY UExBSU4sICJFWFBMQUlOIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL3V0aWxzL2FjbC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvYWNsLmgKaW5kZXggNzMxZDg0 YjJhOS4uOThhYWI5ODIyOSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvYWNsLmgKKysr IGIvc3JjL2luY2x1ZGUvdXRpbHMvYWNsLmgKQEAgLTE2OSw2ICsxNjksNyBAQCB0eXBlZGVmIHN0 cnVjdCBBcnJheVR5cGUgQWNsOwogI2RlZmluZSBBQ0xfQUxMX1JJR0hUU19TQ0hFTUEJCShBQ0xf VVNBR0V8QUNMX0NSRUFURSkKICNkZWZpbmUgQUNMX0FMTF9SSUdIVFNfVEFCTEVTUEFDRQkoQUNM X0NSRUFURSkKICNkZWZpbmUgQUNMX0FMTF9SSUdIVFNfVFlQRQkJCShBQ0xfVVNBR0UpCisjZGVm aW5lIEFDTF9BTExfUklHSFRTX1ZBUklBQkxFCQkoQUNMX1NFTEVDVHxBQ0xfVVBEQVRFKQogCiAv KiBvcGVyYXRpb24gY29kZXMgZm9yIHBnXypfYWNsbWFzayAqLwogdHlwZWRlZiBlbnVtCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaCBiL3NyYy9pbmNsdWRlL3V0aWxz L2xzeXNjYWNoZS5oCmluZGV4IDIwNDQ2ZjZmODMuLjhhMzY4NGU3MTEgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNj YWNoZS5oCkBAIC0xMzQsNiArMTM0LDcgQEAgZXh0ZXJuIGNoYXIgZ2V0X2Z1bmNfcHJva2luZChP aWQgZnVuY2lkKTsKIGV4dGVybiBib29sIGdldF9mdW5jX2xlYWtwcm9vZihPaWQgZnVuY2lkKTsK IGV4dGVybiBSZWdQcm9jZWR1cmUgZ2V0X2Z1bmNfc3VwcG9ydChPaWQgZnVuY2lkKTsKIGV4dGVy biBPaWQJZ2V0X3JlbG5hbWVfcmVsaWQoY29uc3QgY2hhciAqcmVsbmFtZSwgT2lkIHJlbG5hbWVz cGFjZSk7CitleHRlcm4gT2lkCWdldF92YXJuYW1lX3ZhcmlkKGNvbnN0IGNoYXIgKnZhcm5hbWUs IE9pZCB2YXJuYW1lc3BhY2UpOwogZXh0ZXJuIGNoYXIgKmdldF9yZWxfbmFtZShPaWQgcmVsaWQp OwogZXh0ZXJuIE9pZAlnZXRfcmVsX25hbWVzcGFjZShPaWQgcmVsaWQpOwogZXh0ZXJuIE9pZAln ZXRfcmVsX3R5cGVfaWQoT2lkIHJlbGlkKTsKQEAgLTIwNiw2ICsyMDcsMTQgQEAgZXh0ZXJuIGNo YXIgKmdldF9wdWJsaWNhdGlvbl9uYW1lKE9pZCBwdWJpZCwgYm9vbCBtaXNzaW5nX29rKTsKIGV4 dGVybiBPaWQJZ2V0X3N1YnNjcmlwdGlvbl9vaWQoY29uc3QgY2hhciAqc3VibmFtZSwgYm9vbCBt aXNzaW5nX29rKTsKIGV4dGVybiBjaGFyICpnZXRfc3Vic2NyaXB0aW9uX25hbWUoT2lkIHN1Ymlk LCBib29sIG1pc3Npbmdfb2spOwogCitleHRlcm4gY2hhciAqZ2V0X3Nlc3Npb25fdmFyaWFibGVf bmFtZShPaWQgdmFyaWQpOworZXh0ZXJuIE9pZAlnZXRfc2Vzc2lvbl92YXJpYWJsZV9uYW1lc3Bh Y2UoT2lkIHZhcmlkKTsKK2V4dGVybiBPaWQJZ2V0X3Nlc3Npb25fdmFyaWFibGVfdHlwZShPaWQg dmFyaWQpOworZXh0ZXJuIHZvaWQgZ2V0X3Nlc3Npb25fdmFyaWFibGVfdHlwZV90eXBtb2RfY29s bGlkKE9pZCB2YXJpZCwKKwkJCQkJCQkJCQkJCQlPaWQgKnR5cGlkLAorCQkJCQkJCQkJCQkJCWlu dDMyICp0eXBtb2QsCisJCQkJCQkJCQkJCQkJT2lkICpjb2xsaWQpOworCiAjZGVmaW5lIHR5cGVf aXNfYXJyYXkodHlwaWQpICAoZ2V0X2VsZW1lbnRfdHlwZSh0eXBpZCkgIT0gSW52YWxpZE9pZCkK IC8qIHR5cGVfaXNfYXJyYXlfZG9tYWluIGFjY2VwdHMgYm90aCBwbGFpbiBhcnJheXMgYW5kIGRv bWFpbnMgb3ZlciBhcnJheXMgKi8KICNkZWZpbmUgdHlwZV9pc19hcnJheV9kb21haW4odHlwaWQp ICAoZ2V0X2Jhc2VfZWxlbWVudF90eXBlKHR5cGlkKSAhPSBJbnZhbGlkT2lkKQpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9kZXBlbmRlbmN5Lm91dCBiL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvZGVwZW5kZW5jeS5vdXQKaW5kZXggNzRkOWZmMjk5OC4uYzMzNmY2N2E1 OSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9kZXBlbmRlbmN5Lm91dAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2RlcGVuZGVuY3kub3V0CkBAIC0xNTEsMyAr MTUxLDIwIEBAIG93bmVyIG9mIHR5cGUgZGVwdGVzdF90CiBEUk9QIE9XTkVEIEJZIHJlZ3Jlc3Nf ZGVwX3VzZXIyLCByZWdyZXNzX2RlcF91c2VyMDsKIERST1AgVVNFUiByZWdyZXNzX2RlcF91c2Vy MjsKIERST1AgVVNFUiByZWdyZXNzX2RlcF91c2VyMDsKKy0tIGRlcGVuZGVuY3kgb24gdHlwZQor Q1JFQVRFIERPTUFJTiB2YXJkb21haW4gQVMgaW50OworQ1JFQVRFIFRZUEUgdmFydHlwZSBBUyAo YSBpbnQsIGIgaW50LCBjIHZhcmRvbWFpbik7CitDUkVBVEUgVkFSSUFCTEUgdmFyMSBBUyB2YXJ0 eXBlOworLS0gc2hvdWxkIGZhaWwKK0RST1AgRE9NQUlOIHZhcmRvbWFpbjsKK0VSUk9SOiAgY2Fu bm90IGRyb3AgdHlwZSB2YXJkb21haW4gYmVjYXVzZSBvdGhlciBvYmplY3RzIGRlcGVuZCBvbiBp dAorREVUQUlMOiAgY29sdW1uIGMgb2YgY29tcG9zaXRlIHR5cGUgdmFydHlwZSBkZXBlbmRzIG9u IHR5cGUgdmFyZG9tYWluCitISU5UOiAgVXNlIERST1AgLi4uIENBU0NBREUgdG8gZHJvcCB0aGUg ZGVwZW5kZW50IG9iamVjdHMgdG9vLgorRFJPUCBUWVBFIHZhcnR5cGU7CitFUlJPUjogIGNhbm5v dCBkcm9wIHR5cGUgdmFydHlwZSBiZWNhdXNlIG90aGVyIG9iamVjdHMgZGVwZW5kIG9uIGl0CitE RVRBSUw6ICBzZXNzaW9uIHZhcmlhYmxlIHZhcjEgZGVwZW5kcyBvbiB0eXBlIHZhcnR5cGUKK0hJ TlQ6ICBVc2UgRFJPUCAuLi4gQ0FTQ0FERSB0byBkcm9wIHRoZSBkZXBlbmRlbnQgb2JqZWN0cyB0 b28uCistLSBjbGVhbiB1cAorRFJPUCBWQVJJQUJMRSB2YXIxOworRFJPUCBUWVBFIHZhcnR5cGU7 CitEUk9QIERPTUFJTiB2YXJkb21haW47CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL29pZGpvaW5zLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb2lkam9pbnMu b3V0CmluZGV4IDIxNWViODk5YmUuLmQ5OTUzMzIxNDAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvb2lkam9pbnMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvb2lkam9pbnMub3V0CkBAIC0yNjYsMyArMjY2LDcgQEAgTk9USUNFOiAgY2hlY2tpbmcgcGdf c3Vic2NyaXB0aW9uIHtzdWJkYmlkfSA9PiBwZ19kYXRhYmFzZSB7b2lkfQogTk9USUNFOiAgY2hl Y2tpbmcgcGdfc3Vic2NyaXB0aW9uIHtzdWJvd25lcn0gPT4gcGdfYXV0aGlkIHtvaWR9CiBOT1RJ Q0U6ICBjaGVja2luZyBwZ19zdWJzY3JpcHRpb25fcmVsIHtzcnN1YmlkfSA9PiBwZ19zdWJzY3Jp cHRpb24ge29pZH0KIE5PVElDRTogIGNoZWNraW5nIHBnX3N1YnNjcmlwdGlvbl9yZWwge3NycmVs aWR9ID0+IHBnX2NsYXNzIHtvaWR9CitOT1RJQ0U6ICBjaGVja2luZyBwZ192YXJpYWJsZSB7dmFy dHlwZX0gPT4gcGdfdHlwZSB7b2lkfQorTk9USUNFOiAgY2hlY2tpbmcgcGdfdmFyaWFibGUge3Zh cm5hbWVzcGFjZX0gPT4gcGdfbmFtZXNwYWNlIHtvaWR9CitOT1RJQ0U6ICBjaGVja2luZyBwZ192 YXJpYWJsZSB7dmFyb3duZXJ9ID0+IHBnX2F1dGhpZCB7b2lkfQorTk9USUNFOiAgY2hlY2tpbmcg cGdfdmFyaWFibGUge3ZhcmNvbGxhdGlvbn0gPT4gcGdfY29sbGF0aW9uIHtvaWR9CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwub3V0IGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9wc3FsLm91dAppbmRleCAzYmJlNGM1Zjk3Li5jODkwNjc0OTBmIDEwMDY0NAot LS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwub3V0CisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvcHNxbC5vdXQKQEAgLTU4MjgsNiArNTgyOCwzMCBAQCBDT01NSVQ7CiAj IGZpbmFsIE9OX0VSUk9SX1JPTExCQUNLOiBvZmYKIERST1AgVEFCTEUgYmxhOwogRFJPUCBGVU5D VElPTiBwc3FsX2Vycm9yOworLS0gc2Vzc2lvbiB2YXJpYWJsZSB0ZXN0CitDUkVBVEUgUk9MRSBy ZWdyZXNzX3ZhcmlhYmxlX293bmVyOworU0VUIFJPTEUgVE8gcmVncmVzc192YXJpYWJsZV9vd25l cjsKK0NSRUFURSBWQVJJQUJMRSB2YXIxIEFTIHZhcmNoYXIgQ09MTEFURSAiQyI7CitcZFYrIHZh cjEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiB2 YXJpYWJsZXMKKyBTY2hlbWEgfCBOYW1lIHwgICAgICAgVHlwZSAgICAgICAgfCBDb2xsYXRpb24g fCAgICAgICAgIE93bmVyICAgICAgICAgIHwgQWNjZXNzIHByaXZpbGVnZXMgfCBEZXNjcmlwdGlv biAKKy0tLS0tLS0tKy0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBw dWJsaWMgfCB2YXIxIHwgY2hhcmFjdGVyIHZhcnlpbmcgfCBDICAgICAgICAgfCByZWdyZXNzX3Zh cmlhYmxlX293bmVyIHwgICAgICAgICAgICAgICAgICAgfCAKKygxIHJvdykKKworR1JBTlQgU0VM RUNUIE9OIFZBUklBQkxFIHZhcjEgVE8gUFVCTElDOworQ09NTUVOVCBPTiBWQVJJQUJMRSB2YXIx IElTICdzb21lIGRlc2NyaXB0aW9uJzsKK1xkVisgdmFyMQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHZhcmlhYmxl cworIFNjaGVtYSB8IE5hbWUgfCAgICAgICBUeXBlICAgICAgICB8IENvbGxhdGlvbiB8ICAgICAg ICAgT3duZXIgICAgICAgICAgfCAgICAgICAgICAgICAgICBBY2Nlc3MgcHJpdmlsZWdlcyAgICAg ICAgICAgICAgICAgfCAgIERlc2NyaXB0aW9uICAgIAorLS0tLS0tLS0rLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLQorIHB1YmxpYyB8IHZhcjEgfCBjaGFyYWN0ZXIgdmFyeWluZyB8IEMgICAgICAgICB8IHJl Z3Jlc3NfdmFyaWFibGVfb3duZXIgfCByZWdyZXNzX3ZhcmlhYmxlX293bmVyPXJ3L3JlZ3Jlc3Nf dmFyaWFibGVfb3duZXIrfCBzb21lIGRlc2NyaXB0aW9uCisgICAgICAgIHwgICAgICB8ICAgICAg ICAgICAgICAgICAgIHwgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8ID1yL3Jl Z3Jlc3NfdmFyaWFibGVfb3duZXIgICAgICAgICAgICAgICAgICAgICAgICB8IAorKDEgcm93KQor CitEUk9QIFZBUklBQkxFIHZhcjE7CitTRVQgUk9MRSBUTyBERUZBVUxUOworRFJPUCBST0xFIHJl Z3Jlc3NfdmFyaWFibGVfb3duZXI7CiAtLSBjaGVjayBkZXNjcmliaW5nIGludmFsaWQgbXVsdGlw YXJ0IG5hbWVzCiBcZEEgcmVncmVzc2lvbi5oZWFwCiBpbXByb3BlciBxdWFsaWZpZWQgbmFtZSAo dG9vIG1hbnkgZG90dGVkIG5hbWVzKTogcmVncmVzc2lvbi5oZWFwCkBAIC02MDQ5LDYgKzYwNzMs MTIgQEAgY3Jvc3MtZGF0YWJhc2UgcmVmZXJlbmNlcyBhcmUgbm90IGltcGxlbWVudGVkOiBub25l c3VjaC5wdWJsaWMuZnVuY19kZXBzX3N0YXQKIGltcHJvcGVyIHF1YWxpZmllZCBuYW1lICh0b28g bWFueSBkb3R0ZWQgbmFtZXMpOiByZWdyZXNzaW9uLm15ZXZ0CiBcZHkgbm9uZXN1Y2gubXlldnQK IGltcHJvcGVyIHF1YWxpZmllZCBuYW1lICh0b28gbWFueSBkb3R0ZWQgbmFtZXMpOiBub25lc3Vj aC5teWV2dAorXGRWIGhvc3QucmVncmVzc2lvbi5wdWJsaWMudmFyCitpbXByb3BlciBxdWFsaWZp ZWQgbmFtZSAodG9vIG1hbnkgZG90dGVkIG5hbWVzKTogaG9zdC5yZWdyZXNzaW9uLnB1YmxpYy52 YXIKK1xkViByZWdyZXNzaW9ufG15ZGIucHVibGljLnZhcgorY3Jvc3MtZGF0YWJhc2UgcmVmZXJl bmNlcyBhcmUgbm90IGltcGxlbWVudGVkOiByZWdyZXNzaW9ufG15ZGIucHVibGljLnZhcgorXGRW IG5vbmVzdWNoLnB1YmxpYy52YXIKK2Nyb3NzLWRhdGFiYXNlIHJlZmVyZW5jZXMgYXJlIG5vdCBp bXBsZW1lbnRlZDogbm9uZXN1Y2gucHVibGljLnZhcgogLS0gY2hlY2sgdGhhdCBkb3RzIHdpdGhp biBxdW90ZWQgbmFtZSBzZWdtZW50cyBhcmUgbm90IGNvdW50ZWQKIFxkQSAibm8uc3VjaC5hY2Nl c3MubWV0aG9kIgogTGlzdCBvZiBhY2Nlc3MgbWV0aG9kcwpAQCAtNjI4Myw2ICs2MzEzLDEyIEBA IExpc3Qgb2Ygc2NoZW1hcwogLS0tLS0tKy0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLSstLS0tLS0KICgwIHJvd3MpCiAKK1xkViAibm8uc3VjaC52YXJpYWJsZSIKKyAgICAgICAg ICAgIExpc3Qgb2YgdmFyaWFibGVzCisgU2NoZW1hIHwgTmFtZSB8IFR5cGUgfCBDb2xsYXRpb24g fCBPd25lciAKKy0tLS0tLS0tKy0tLS0tLSstLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLQorKDAg cm93cykKKwogLS0gYWdhaW4sIGJ1dCB3aXRoIGRvdHRlZCBzY2hlbWEgcXVhbGlmaWNhdGlvbnMu CiBcZEEgIm5vLnN1Y2guc2NoZW1hIi4ibm8uc3VjaC5hY2Nlc3MubWV0aG9kIgogaW1wcm9wZXIg cXVhbGlmaWVkIG5hbWUgKHRvbyBtYW55IGRvdHRlZCBuYW1lcyk6ICJuby5zdWNoLnNjaGVtYSIu Im5vLnN1Y2guYWNjZXNzLm1ldGhvZCIKQEAgLTY0NTIsNiArNjQ4OCwxMiBAQCBpbXByb3BlciBx dWFsaWZpZWQgbmFtZSAodG9vIG1hbnkgZG90dGVkIG5hbWVzKTogIm5vLnN1Y2guc2NoZW1hIi4i bm8uc3VjaC5pbnN0YQogCiBcZHkgIm5vLnN1Y2guc2NoZW1hIi4ibm8uc3VjaC5ldmVudC50cmln Z2VyIgogaW1wcm9wZXIgcXVhbGlmaWVkIG5hbWUgKHRvbyBtYW55IGRvdHRlZCBuYW1lcyk6ICJu by5zdWNoLnNjaGVtYSIuIm5vLnN1Y2guZXZlbnQudHJpZ2dlciIKK1xkViAibm8uc3VjaC5zY2hl bWEiLiJuby5zdWNoLnZhcmlhYmxlIgorICAgICAgICAgICAgTGlzdCBvZiB2YXJpYWJsZXMKKyBT Y2hlbWEgfCBOYW1lIHwgVHlwZSB8IENvbGxhdGlvbiB8IE93bmVyIAorLS0tLS0tLS0rLS0tLS0t Ky0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tCisoMCByb3dzKQorCiAtLSBhZ2FpbiwgYnV0IHdp dGggY3VycmVudCBkYXRhYmFzZSBhbmQgZG90dGVkIHNjaGVtYSBxdWFsaWZpY2F0aW9ucy4KIFxk dCByZWdyZXNzaW9uLiJuby5zdWNoLnNjaGVtYSIuIm5vLnN1Y2gudGFibGUucmVsYXRpb24iCiAg ICAgICBMaXN0IG9mIHJlbGF0aW9ucwpAQCAtNjU4NSw2ICs2NjI3LDEyIEBAIExpc3Qgb2YgdGV4 dCBzZWFyY2ggdGVtcGxhdGVzCiAtLS0tLS0tLSstLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tCiAoMCByb3dzKQogCitcZFYgcmVncmVzc2lvbi4ibm8u c3VjaC5zY2hlbWEiLiJuby5zdWNoLnZhcmlhYmxlIgorICAgICAgICAgICAgTGlzdCBvZiB2YXJp YWJsZXMKKyBTY2hlbWEgfCBOYW1lIHwgVHlwZSB8IENvbGxhdGlvbiB8IE93bmVyIAorLS0tLS0t LS0rLS0tLS0tKy0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tCisoMCByb3dzKQorCiAtLSBhZ2Fp biwgYnV0IHdpdGggZG90dGVkIGRhdGFiYXNlIGFuZCBkb3R0ZWQgc2NoZW1hIHF1YWxpZmljYXRp b25zLgogXGR0ICJuby5zdWNoLmRhdGFiYXNlIi4ibm8uc3VjaC5zY2hlbWEiLiJuby5zdWNoLnRh YmxlLnJlbGF0aW9uIgogY3Jvc3MtZGF0YWJhc2UgcmVmZXJlbmNlcyBhcmUgbm90IGltcGxlbWVu dGVkOiAibm8uc3VjaC5kYXRhYmFzZSIuIm5vLnN1Y2guc2NoZW1hIi4ibm8uc3VjaC50YWJsZS5y ZWxhdGlvbiIKQEAgLTY2MzIsNiArNjY4MCw4IEBAIGNyb3NzLWRhdGFiYXNlIHJlZmVyZW5jZXMg YXJlIG5vdCBpbXBsZW1lbnRlZDogIm5vLnN1Y2guZGF0YWJhc2UiLiJuby5zdWNoLnNjaGVtCiBj cm9zcy1kYXRhYmFzZSByZWZlcmVuY2VzIGFyZSBub3QgaW1wbGVtZW50ZWQ6ICJuby5zdWNoLmRh dGFiYXNlIi4ibm8uc3VjaC5zY2hlbWEiLiJuby5zdWNoLmRhdGEudHlwZSIKIFxkWCAibm8uc3Vj aC5kYXRhYmFzZSIuIm5vLnN1Y2guc2NoZW1hIi4ibm8uc3VjaC5leHRlbmRlZC5zdGF0aXN0aWNz IgogY3Jvc3MtZGF0YWJhc2UgcmVmZXJlbmNlcyBhcmUgbm90IGltcGxlbWVudGVkOiAibm8uc3Vj aC5kYXRhYmFzZSIuIm5vLnN1Y2guc2NoZW1hIi4ibm8uc3VjaC5leHRlbmRlZC5zdGF0aXN0aWNz IgorXGRWICJuby5zdWNoLmRhdGFiYXNlIi4ibm8uc3VjaC5zY2hlbWEiLiJuby5zdWNoLnZhcmlh YmxlIgorY3Jvc3MtZGF0YWJhc2UgcmVmZXJlbmNlcyBhcmUgbm90IGltcGxlbWVudGVkOiAibm8u c3VjaC5kYXRhYmFzZSIuIm5vLnN1Y2guc2NoZW1hIi4ibm8uc3VjaC52YXJpYWJsZSIKIC0tIGNo ZWNrIFxkcmcgYW5kIFxkdQogQ1JFQVRFIFJPTEUgcmVncmVzc19kdV9yb2xlMDsKIENSRUFURSBS T0xFIHJlZ3Jlc3NfZHVfcm9sZTE7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3Nlc3Npb25fdmFyaWFibGVzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc2Vz c2lvbl92YXJpYWJsZXMub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAu LmFjYTc2NjA0MmQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3Nlc3Npb25fdmFyaWFibGVzLm91dApAQCAtMCwwICsxLDU3IEBACitDUkVBVEUgUk9MRSByZWdy ZXNzX3ZhcmlhYmxlX293bmVyOworLS0gc2hvdWxkIGJlIG9rCitDUkVBVEUgVkFSSUFCTEUgdmFy MSBBUyBpbnQ7CistLSBzaG91bGQgZmFpbCwgcHNldWRvdHlwZXMgYXJlIG5vdCBhbGxvd2VkCitD UkVBVEUgVkFSSUFCTEUgdmFyMiBBUyBhbnllbGVtZW50OworRVJST1I6ICBzZXNzaW9uIHZhcmlh YmxlIGNhbm5vdCBiZSBwc2V1ZG8tdHlwZSBhbnllbGVtZW50CistLSBzaG91bGQgYmUgb2ssIGRv IG5vdGhpbmcKK0RST1AgVkFSSUFCTEUgSUYgRVhJU1RTIHZhcjI7CitOT1RJQ0U6ICBzZXNzaW9u IHZhcmlhYmxlICJ2YXIyIiBkb2VzIG5vdCBleGlzdCwgc2tpcHBpbmcKKy0tIGRvIG5vdGhpbmcK K0NSRUFURSBWQVJJQUJMRSBJRiBOT1QgRVhJU1RTIHZhcjEgQVMgaW50OworTk9USUNFOiAgc2Vz c2lvbiB2YXJpYWJsZSAidmFyMSIgYWxyZWFkeSBleGlzdHMsIHNraXBwaW5nCistLSBzaG91bGQg ZmFpbAorQ1JFQVRFIFZBUklBQkxFIHZhcjEgQVMgaW50OworRVJST1I6ICBzZXNzaW9uIHZhcmlh YmxlICJ2YXIxIiBhbHJlYWR5IGV4aXN0cworLS0gc2hvdWxkIGJlIG9rCitEUk9QIFZBUklBQkxF IElGIEVYSVNUUyB2YXIxOworLS0gY2hlY2sgY29tbWVudCBvbiB2YXJpYWJsZQorQ1JFQVRFIFZB UklBQkxFIHZhcjEgQVMgaW50OworQ09NTUVOVCBPTiBWQVJJQUJMRSB2YXIxIElTICdzb21lIHZh cmlhYmxlIGNvbW1lbnQnOworU0VMRUNUIHBnX2NhdGFsb2cub2JqX2Rlc2NyaXB0aW9uKG9pZCwg J3BnX3ZhcmlhYmxlJykgRlJPTSBwZ192YXJpYWJsZSBXSEVSRSB2YXJuYW1lID0gJ3ZhcjEnOwor ICAgIG9ial9kZXNjcmlwdGlvbiAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgc29tZSB2 YXJpYWJsZSBjb21tZW50CisoMSByb3cpCisKK0RST1AgVkFSSUFCTEUgdmFyMTsKKy0tLSBjaGVj ayBhY2Nlc3MgcmlnaHRzIGFuZCBzdXBwb3J0ZWQgQUxURVIKK0NSRUFURSBTQ0hFTUEgc3ZhcnRl c3Q7CitHUkFOVCBBTEwgT04gU0NIRU1BIHN2YXJ0ZXN0IFRPIHJlZ3Jlc3NfdmFyaWFibGVfb3du ZXI7CitDUkVBVEUgVkFSSUFCTEUgc3ZhcnRlc3QudmFyMSBBUyBpbnQ7CitDUkVBVEUgUk9MRSBy ZWdyZXNzX3ZhcmlhYmxlX3JlYWRlcjsKK0dSQU5UIFNFTEVDVCBPTiBWQVJJQUJMRSBzdmFydGVz dC52YXIxIFRPIHJlZ3Jlc3NfdmFyaWFibGVfcmVhZGVyOworUkVWT0tFIEFMTCBPTiBWQVJJQUJM RSBzdmFydGVzdC52YXIxIEZST00gcmVncmVzc192YXJpYWJsZV9yZWFkZXI7CitBTFRFUiBWQVJJ QUJMRSBzdmFydGVzdC52YXIxIE9XTkVSIFRPIHJlZ3Jlc3NfdmFyaWFibGVfb3duZXI7CitBTFRF UiBWQVJJQUJMRSBzdmFydGVzdC52YXIxIFJFTkFNRSBUTyB2YXJ4eDsKK0FMVEVSIFZBUklBQkxF IHN2YXJ0ZXN0LnZhcnh4IFNFVCBTQ0hFTUEgcHVibGljOworRFJPUCBWQVJJQUJMRSBwdWJsaWMu dmFyeHg7CitBTFRFUiBERUZBVUxUIFBSSVZJTEVHRVMKKyAgIEZPUiBST0xFIHJlZ3Jlc3NfdmFy aWFibGVfb3duZXIKKyAgIElOIFNDSEVNQSBzdmFydGVzdAorICAgR1JBTlQgU0VMRUNUIE9OIFZB UklBQkxFUyBUTyByZWdyZXNzX3ZhcmlhYmxlX3JlYWRlcjsKKy0tIGNyZWF0aW5nIHZhcmlhYmxl IHdpdGggZGVmYXVsdCBwcml2aWxlZ2VzCitTRVQgUk9MRSBUTyByZWdyZXNzX3ZhcmlhYmxlX293 bmVyOworQ1JFQVRFIFZBUklBQkxFIHN2YXJ0ZXN0LnZhcjEgQVMgaW50OworU0VUIFJPTEUgVE8g REVGQVVMVDsKK1xkVisgc3ZhcnRlc3QudmFyMQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHZhcmlhYmxlcworICBTY2hlbWEg IHwgTmFtZSB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCAgICAgICAgIE93bmVyICAgICAgICAgIHwg ICAgICAgICAgICAgICAgQWNjZXNzIHByaXZpbGVnZXMgICAgICAgICAgICAgICAgIHwgRGVzY3Jp cHRpb24gCistLS0tLS0tLS0tKy0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBzdmFydGVzdCB8IHZhcjEgfCBpbnRlZ2VyIHwgICAg ICAgICAgIHwgcmVncmVzc192YXJpYWJsZV9vd25lciB8IHJlZ3Jlc3NfdmFyaWFibGVfb3duZXI9 cncvcmVncmVzc192YXJpYWJsZV9vd25lcit8IAorICAgICAgICAgIHwgICAgICB8ICAgICAgICAg fCAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVncmVzc192YXJpYWJsZV9y ZWFkZXI9ci9yZWdyZXNzX3ZhcmlhYmxlX293bmVyIHwgCisoMSByb3cpCisKK0RST1AgVkFSSUFC TEUgc3ZhcnRlc3QudmFyMTsKK0RST1AgU0NIRU1BIHN2YXJ0ZXN0OworRFJPUCBST0xFIHJlZ3Jl c3NfdmFyaWFibGVfb3duZXI7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVs X3NjaGVkdWxlIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQppbmRleCAyNDI5 ZWMyYmJhLi5lZDY4OTNkNDc5IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVs X3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKQEAgLTEx MSw3ICsxMTEsNyBAQCB0ZXN0OiBqc29uIGpzb25iIGpzb25fZW5jb2RpbmcganNvbnBhdGgganNv bnBhdGhfZW5jb2RpbmcganNvbmJfanNvbnBhdGggc3FsanNvbgogIyBOQjogdGVtcC5zcWwgZG9l cyBhIHJlY29ubmVjdCB3aGljaCB0cmFuc2llbnRseSB1c2VzIDIgY29ubmVjdGlvbnMsCiAjIHNv IGtlZXAgdGhpcyBwYXJhbGxlbCBncm91cCB0byBhdCBtb3N0IDE5IHRlc3RzCiAjIC0tLS0tLS0t LS0KLXRlc3Q6IHBsYW5jYWNoZSBsaW1pdCBwbHBnc3FsIGNvcHkyIHRlbXAgZG9tYWluIHJhbmdl ZnVuY3MgcHJlcGFyZSBjb252ZXJzaW9uIHRydW5jYXRlIGFsdGVyX3RhYmxlIHNlcXVlbmNlIHBv bHltb3JwaGlzbSByb3d0eXBlcyByZXR1cm5pbmcgbGFyZ2VvYmplY3Qgd2l0aCB4bWwKK3Rlc3Q6 IHBsYW5jYWNoZSBsaW1pdCBwbHBnc3FsIGNvcHkyIHRlbXAgZG9tYWluIHJhbmdlZnVuY3MgcHJl cGFyZSBjb252ZXJzaW9uIHRydW5jYXRlIGFsdGVyX3RhYmxlIHNlcXVlbmNlIHBvbHltb3JwaGlz bSByb3d0eXBlcyByZXR1cm5pbmcgbGFyZ2VvYmplY3Qgd2l0aCB4bWwgc2Vzc2lvbl92YXJpYWJs ZXMKIAogIyAtLS0tLS0tLS0tCiAjIEFub3RoZXIgZ3JvdXAgb2YgcGFyYWxsZWwgdGVzdHMKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2RlcGVuZGVuY3kuc3FsIGIvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvZGVwZW5kZW5jeS5zcWwKaW5kZXggOGQ3NGVkNzEyMi4uNmMxOGI3Zjg0MCAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZGVwZW5kZW5jeS5zcWwKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvZGVwZW5kZW5jeS5zcWwKQEAgLTExNCwzICsxMTQsMTcgQEAgRFJP UCBVU0VSIHJlZ3Jlc3NfZGVwX3VzZXIyOwogRFJPUCBPV05FRCBCWSByZWdyZXNzX2RlcF91c2Vy MiwgcmVncmVzc19kZXBfdXNlcjA7CiBEUk9QIFVTRVIgcmVncmVzc19kZXBfdXNlcjI7CiBEUk9Q IFVTRVIgcmVncmVzc19kZXBfdXNlcjA7CisKKy0tIGRlcGVuZGVuY3kgb24gdHlwZQorQ1JFQVRF IERPTUFJTiB2YXJkb21haW4gQVMgaW50OworQ1JFQVRFIFRZUEUgdmFydHlwZSBBUyAoYSBpbnQs IGIgaW50LCBjIHZhcmRvbWFpbik7CitDUkVBVEUgVkFSSUFCTEUgdmFyMSBBUyB2YXJ0eXBlOwor CistLSBzaG91bGQgZmFpbAorRFJPUCBET01BSU4gdmFyZG9tYWluOworRFJPUCBUWVBFIHZhcnR5 cGU7CisKKy0tIGNsZWFuIHVwCitEUk9QIFZBUklBQkxFIHZhcjE7CitEUk9QIFRZUEUgdmFydHlw ZTsKK0RST1AgRE9NQUlOIHZhcmRvbWFpbjsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3BzcWwuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHNxbC5zcWwKaW5kZXggM2IzYzZm NmUyOS4uYjgwZDU2YTI3YSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHNxbC5z cWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHNxbC5zcWwKQEAgLTE1OTEsNiArMTU5MSwx OSBAQCBDT01NSVQ7CiBEUk9QIFRBQkxFIGJsYTsKIERST1AgRlVOQ1RJT04gcHNxbF9lcnJvcjsK IAorLS0gc2Vzc2lvbiB2YXJpYWJsZSB0ZXN0CitDUkVBVEUgUk9MRSByZWdyZXNzX3ZhcmlhYmxl X293bmVyOworU0VUIFJPTEUgVE8gcmVncmVzc192YXJpYWJsZV9vd25lcjsKK0NSRUFURSBWQVJJ QUJMRSB2YXIxIEFTIHZhcmNoYXIgQ09MTEFURSAiQyI7CitcZFYrIHZhcjEKK0dSQU5UIFNFTEVD VCBPTiBWQVJJQUJMRSB2YXIxIFRPIFBVQkxJQzsKK0NPTU1FTlQgT04gVkFSSUFCTEUgdmFyMSBJ UyAnc29tZSBkZXNjcmlwdGlvbic7CitcZFYrIHZhcjEKK0RST1AgVkFSSUFCTEUgdmFyMTsKKwor U0VUIFJPTEUgVE8gREVGQVVMVDsKK0RST1AgUk9MRSByZWdyZXNzX3ZhcmlhYmxlX293bmVyOwor CiAtLSBjaGVjayBkZXNjcmliaW5nIGludmFsaWQgbXVsdGlwYXJ0IG5hbWVzCiBcZEEgcmVncmVz c2lvbi5oZWFwCiBcZEEgbm9uZXN1Y2guaGVhcApAQCAtMTcwMiw2ICsxNzE1LDkgQEAgRFJPUCBG VU5DVElPTiBwc3FsX2Vycm9yOwogXGRYIG5vbmVzdWNoLnB1YmxpYy5mdW5jX2RlcHNfc3RhdAog XGR5IHJlZ3Jlc3Npb24ubXlldnQKIFxkeSBub25lc3VjaC5teWV2dAorXGRWIGhvc3QucmVncmVz c2lvbi5wdWJsaWMudmFyCitcZFYgcmVncmVzc2lvbnxteWRiLnB1YmxpYy52YXIKK1xkViBub25l c3VjaC5wdWJsaWMudmFyCiAKIC0tIGNoZWNrIHRoYXQgZG90cyB3aXRoaW4gcXVvdGVkIG5hbWUg c2VnbWVudHMgYXJlIG5vdCBjb3VudGVkCiBcZEEgIm5vLnN1Y2guYWNjZXNzLm1ldGhvZCIKQEAg LTE3NDMsNiArMTc1OSw4IEBAIERST1AgRlVOQ1RJT04gcHNxbF9lcnJvcjsKIFxkeCAibm8uc3Vj aC5pbnN0YWxsZWQuZXh0ZW5zaW9uIgogXGRYICJuby5zdWNoLmV4dGVuZGVkLnN0YXRpc3RpY3Mi CiBcZHkgIm5vLnN1Y2guZXZlbnQudHJpZ2dlciIKK1xkViAibm8uc3VjaC52YXJpYWJsZSIKKwog CiAtLSBhZ2FpbiwgYnV0IHdpdGggZG90dGVkIHNjaGVtYSBxdWFsaWZpY2F0aW9ucy4KIFxkQSAi bm8uc3VjaC5zY2hlbWEiLiJuby5zdWNoLmFjY2Vzcy5tZXRob2QiCkBAIC0xNzgzLDYgKzE4MDEs NyBAQCBEUk9QIEZVTkNUSU9OIHBzcWxfZXJyb3I7CiBcZHggIm5vLnN1Y2guc2NoZW1hIi4ibm8u c3VjaC5pbnN0YWxsZWQuZXh0ZW5zaW9uIgogXGRYICJuby5zdWNoLnNjaGVtYSIuIm5vLnN1Y2gu ZXh0ZW5kZWQuc3RhdGlzdGljcyIKIFxkeSAibm8uc3VjaC5zY2hlbWEiLiJuby5zdWNoLmV2ZW50 LnRyaWdnZXIiCitcZFYgIm5vLnN1Y2guc2NoZW1hIi4ibm8uc3VjaC52YXJpYWJsZSIKIAogLS0g YWdhaW4sIGJ1dCB3aXRoIGN1cnJlbnQgZGF0YWJhc2UgYW5kIGRvdHRlZCBzY2hlbWEgcXVhbGlm aWNhdGlvbnMuCiBcZHQgcmVncmVzc2lvbi4ibm8uc3VjaC5zY2hlbWEiLiJuby5zdWNoLnRhYmxl LnJlbGF0aW9uIgpAQCAtMTgwNyw2ICsxODI2LDcgQEAgRFJPUCBGVU5DVElPTiBwc3FsX2Vycm9y OwogXGRQIHJlZ3Jlc3Npb24uIm5vLnN1Y2guc2NoZW1hIi4ibm8uc3VjaC5wYXJ0aXRpb25lZC5y ZWxhdGlvbiIKIFxkVCByZWdyZXNzaW9uLiJuby5zdWNoLnNjaGVtYSIuIm5vLnN1Y2guZGF0YS50 eXBlIgogXGRYIHJlZ3Jlc3Npb24uIm5vLnN1Y2guc2NoZW1hIi4ibm8uc3VjaC5leHRlbmRlZC5z dGF0aXN0aWNzIgorXGRWIHJlZ3Jlc3Npb24uIm5vLnN1Y2guc2NoZW1hIi4ibm8uc3VjaC52YXJp YWJsZSIKIAogLS0gYWdhaW4sIGJ1dCB3aXRoIGRvdHRlZCBkYXRhYmFzZSBhbmQgZG90dGVkIHNj aGVtYSBxdWFsaWZpY2F0aW9ucy4KIFxkdCAibm8uc3VjaC5kYXRhYmFzZSIuIm5vLnN1Y2guc2No ZW1hIi4ibm8uc3VjaC50YWJsZS5yZWxhdGlvbiIKQEAgLTE4MzIsNiArMTg1Miw3IEBAIERST1Ag RlVOQ1RJT04gcHNxbF9lcnJvcjsKIFxkUCAibm8uc3VjaC5kYXRhYmFzZSIuIm5vLnN1Y2guc2No ZW1hIi4ibm8uc3VjaC5wYXJ0aXRpb25lZC5yZWxhdGlvbiIKIFxkVCAibm8uc3VjaC5kYXRhYmFz ZSIuIm5vLnN1Y2guc2NoZW1hIi4ibm8uc3VjaC5kYXRhLnR5cGUiCiBcZFggIm5vLnN1Y2guZGF0 YWJhc2UiLiJuby5zdWNoLnNjaGVtYSIuIm5vLnN1Y2guZXh0ZW5kZWQuc3RhdGlzdGljcyIKK1xk ViAibm8uc3VjaC5kYXRhYmFzZSIuIm5vLnN1Y2guc2NoZW1hIi4ibm8uc3VjaC52YXJpYWJsZSIK IAogLS0gY2hlY2sgXGRyZyBhbmQgXGR1CiBDUkVBVEUgUk9MRSByZWdyZXNzX2R1X3JvbGUwOwpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc2Vzc2lvbl92YXJpYWJsZXMuc3FsIGIv c3JjL3Rlc3QvcmVncmVzcy9zcWwvc2Vzc2lvbl92YXJpYWJsZXMuc3FsCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjQyZGZiOTVhMDIKLS0tIC9kZXYvbnVsbAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL3NxbC9zZXNzaW9uX3ZhcmlhYmxlcy5zcWwKQEAgLTAsMCArMSw2MSBA QAorQ1JFQVRFIFJPTEUgcmVncmVzc192YXJpYWJsZV9vd25lcjsKKworLS0gc2hvdWxkIGJlIG9r CitDUkVBVEUgVkFSSUFCTEUgdmFyMSBBUyBpbnQ7CisKKy0tIHNob3VsZCBmYWlsLCBwc2V1ZG90 eXBlcyBhcmUgbm90IGFsbG93ZWQKK0NSRUFURSBWQVJJQUJMRSB2YXIyIEFTIGFueWVsZW1lbnQ7 CisKKy0tIHNob3VsZCBiZSBvaywgZG8gbm90aGluZworRFJPUCBWQVJJQUJMRSBJRiBFWElTVFMg dmFyMjsKKworLS0gZG8gbm90aGluZworQ1JFQVRFIFZBUklBQkxFIElGIE5PVCBFWElTVFMgdmFy MSBBUyBpbnQ7CisKKy0tIHNob3VsZCBmYWlsCitDUkVBVEUgVkFSSUFCTEUgdmFyMSBBUyBpbnQ7 CisKKy0tIHNob3VsZCBiZSBvaworRFJPUCBWQVJJQUJMRSBJRiBFWElTVFMgdmFyMTsKKworLS0g Y2hlY2sgY29tbWVudCBvbiB2YXJpYWJsZQorQ1JFQVRFIFZBUklBQkxFIHZhcjEgQVMgaW50Owor Q09NTUVOVCBPTiBWQVJJQUJMRSB2YXIxIElTICdzb21lIHZhcmlhYmxlIGNvbW1lbnQnOworU0VM RUNUIHBnX2NhdGFsb2cub2JqX2Rlc2NyaXB0aW9uKG9pZCwgJ3BnX3ZhcmlhYmxlJykgRlJPTSBw Z192YXJpYWJsZSBXSEVSRSB2YXJuYW1lID0gJ3ZhcjEnOworCitEUk9QIFZBUklBQkxFIHZhcjE7 CisKKy0tLSBjaGVjayBhY2Nlc3MgcmlnaHRzIGFuZCBzdXBwb3J0ZWQgQUxURVIKK0NSRUFURSBT Q0hFTUEgc3ZhcnRlc3Q7CitHUkFOVCBBTEwgT04gU0NIRU1BIHN2YXJ0ZXN0IFRPIHJlZ3Jlc3Nf dmFyaWFibGVfb3duZXI7CisKK0NSRUFURSBWQVJJQUJMRSBzdmFydGVzdC52YXIxIEFTIGludDsK KworQ1JFQVRFIFJPTEUgcmVncmVzc192YXJpYWJsZV9yZWFkZXI7CisKK0dSQU5UIFNFTEVDVCBP TiBWQVJJQUJMRSBzdmFydGVzdC52YXIxIFRPIHJlZ3Jlc3NfdmFyaWFibGVfcmVhZGVyOworUkVW T0tFIEFMTCBPTiBWQVJJQUJMRSBzdmFydGVzdC52YXIxIEZST00gcmVncmVzc192YXJpYWJsZV9y ZWFkZXI7CisKK0FMVEVSIFZBUklBQkxFIHN2YXJ0ZXN0LnZhcjEgT1dORVIgVE8gcmVncmVzc192 YXJpYWJsZV9vd25lcjsKK0FMVEVSIFZBUklBQkxFIHN2YXJ0ZXN0LnZhcjEgUkVOQU1FIFRPIHZh cnh4OworQUxURVIgVkFSSUFCTEUgc3ZhcnRlc3QudmFyeHggU0VUIFNDSEVNQSBwdWJsaWM7CisK K0RST1AgVkFSSUFCTEUgcHVibGljLnZhcnh4OworCitBTFRFUiBERUZBVUxUIFBSSVZJTEVHRVMK KyAgIEZPUiBST0xFIHJlZ3Jlc3NfdmFyaWFibGVfb3duZXIKKyAgIElOIFNDSEVNQSBzdmFydGVz dAorICAgR1JBTlQgU0VMRUNUIE9OIFZBUklBQkxFUyBUTyByZWdyZXNzX3ZhcmlhYmxlX3JlYWRl cjsKKworLS0gY3JlYXRpbmcgdmFyaWFibGUgd2l0aCBkZWZhdWx0IHByaXZpbGVnZXMKK1NFVCBS T0xFIFRPIHJlZ3Jlc3NfdmFyaWFibGVfb3duZXI7CitDUkVBVEUgVkFSSUFCTEUgc3ZhcnRlc3Qu dmFyMSBBUyBpbnQ7CitTRVQgUk9MRSBUTyBERUZBVUxUOworCitcZFYrIHN2YXJ0ZXN0LnZhcjEK KworRFJPUCBWQVJJQUJMRSBzdmFydGVzdC52YXIxOworCitEUk9QIFNDSEVNQSBzdmFydGVzdDsK KworRFJPUCBST0xFIHJlZ3Jlc3NfdmFyaWFibGVfb3duZXI7CmRpZmYgLS1naXQgYS9zcmMvdG9v bHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5s aXN0CmluZGV4IDNkZWI2MTEzYjguLjgzN2U1YjgzYTMgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9w Z2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5s aXN0CkBAIC01MzMsNiArNTMzLDcgQEAgQ3JlYXRlUm9sZVN0bXQKIENyZWF0ZVNjaGVtYVN0bXQK IENyZWF0ZVNjaGVtYVN0bXRDb250ZXh0CiBDcmVhdGVTZXFTdG10CitDcmVhdGVTZXNzaW9uVmFy U3RtdAogQ3JlYXRlU3RhdHNTdG10CiBDcmVhdGVTdG10CiBDcmVhdGVTdG10Q29udGV4dApAQCAt ODcyLDYgKzg3Myw3IEBAIEZvcm1EYXRhX3BnX3RzX3BhcnNlcgogRm9ybURhdGFfcGdfdHNfdGVt cGxhdGUKIEZvcm1EYXRhX3BnX3R5cGUKIEZvcm1EYXRhX3BnX3VzZXJfbWFwcGluZworRm9ybURh dGFfcGdfdmFyaWFibGUKIEZvcm1FeHRyYURhdGFfcGdfYXR0cmlidXRlCiBGb3JtX3BnX2FnZ3Jl Z2F0ZQogRm9ybV9wZ19hbQpAQCAtOTMxLDYgKzkzMyw3IEBAIEZvcm1fcGdfdHNfcGFyc2VyCiBG b3JtX3BnX3RzX3RlbXBsYXRlCiBGb3JtX3BnX3R5cGUKIEZvcm1fcGdfdXNlcl9tYXBwaW5nCitG b3JtX3BnX3ZhcmlhYmxlCiBGb3JtYXROb2RlCiBGcmVlQmxvY2tOdW1iZXJBcnJheQogRnJlZUxp c3REYXRhCkBAIC0zMDYxLDYgKzMwNjQsNyBAQCBWYXJTdHJpbmcKIFZhclN0cmluZ1NvcnRTdXBw b3J0CiBWYXJpYWJsZQogVmFyaWFibGVBc3NpZ25Ib29rCitWYXJpYWJsZUluZm8KIFZhcmlhYmxl U2V0S2luZAogVmFyaWFibGVTZXRTdG10CiBWYXJpYWJsZVNob3dTdG10Ci0tIAoyLjQ1LjIKCg== --=-ck/4UnhDo36KLHDuWECU Content-Disposition: attachment; filename*0=v20240731-0002-Storage-for-session-variables-and-SQL-inte.pat; filename*1=ch Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name="v20240731-0002-Storage-for-session-variables-and-SQL-inte.patch"; charset="UTF-8" RnJvbSA1YmIxMTM0ODNjODVmNWViZmM4ZjI0NDI4OGUwYjBlOWRhM2NhZjJiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMYXVyZW56IEFsYmUgPGxhdXJlbnouYWxiZUBjeWJlcnRlYy5h dD4KRGF0ZTogV2VkLCAzMSBKdWwgMjAyNCAxMTo0MjozOSArMDIwMApTdWJqZWN0OiBbUEFUQ0gg djIwMjQwNzMxIDIvMl0gU3RvcmFnZSBmb3Igc2Vzc2lvbiB2YXJpYWJsZXMgYW5kIFNRTCBpbnRl cmZhY2UKClNlc3Npb24gdmFyaWFibGVzIGFyZSBzdG9yZWQgaW4gc2Vzc2lvbiBtZW1vcnkgaW4g YSBkZWRpY2F0ZWQgaGFzaCB0YWJsZS4KVGhleSBhcmUgc2V0IGJ5IHRoZSBMRVQgY29tbWFuZCBh bmQgcmVhZCBieSB0aGUgU0VMRUNUIGNvbW1hbmQuClRoZSBhY2Nlc3MgcmlnaHRzIHNob3VsZCBi ZSBjaGVja2VkLgoKVGhlIGlkZW50aWZpZXJzIG9mIHNlc3Npb24gdmFyaWFibGVzIHNob3VsZCBh bHdheXMgYmUgc2hhZG93ZWQgYnkgcG9zc2libGUKY29sdW1uIGlkZW50aWZpZXJzOiB3ZSBkb24n dCB3YW50IHRvIGJyZWFrIGFuIGFwcGxpY2F0aW9uIGJ5IGNyZWF0aW5nIHNvbWUKYmFkbHkgbmFt ZWQgc2Vzc2lvbiB2YXJpYWJsZS4KClRoZSBsaW1pdHMgb2YgdGhpcyBwYXRjaCAoc29sdmVkIGJ5 IG90aGVyIHBhdGNoZXMpOgoKLSBzZXNzaW9uIHZhcmlhYmxlcyBibG9jayBwYXJhbGxlbCBleGVj dXRpb24KLSBzZXNzaW9uIHZhcmlhYmxlcyBibG9ja3Mgc2ltcGxlIGV4cHJlc3Npb24gZXZhbHVh dGlvbiAoaW4gcGxwZ3NxbCkKLSBTUUwgZnVuY3Rpb25zIHdpdGggc2Vzc2lvbiB2YXJpYWJsZXMg YXJlIG5vdCBpbmxpbmVkCi0gQ0FMTCBzdGF0ZW1lbnQgaXMgbm90IHN1cHBvcnRlZCAodXNhZ2Ug b2YgZGlyZWN0IGFjY2VzcyB0byBleHByZXNzIGV4ZWN1dG9yKQotIG1lbW9yeSB1c2VkIGJ5IGRy b3BwZWQgc2Vzc2lvbiB2YXJpYWJsZXMgaXMgbm90IHJlbGVhc2VkCgpJbXBsZW1lbnRhdGlvbnMg b2YgRVhQTEFJTiBMRVQgYW5kIFBSRVBBUkUgTEVUIHN0YXRlbWVudHMKYXJlIGluIHNlcGFyYXRl IHBhdGNoZXMgKGZvciBiZXR0ZXIgcmVhZGFiaWxpdHkpCi0tLQogZG9jL3NyYy9zZ21sL2NhdGFs b2dzLnNnbWwgICAgICAgICAgICAgICAgICAgIHwgIDEzICsKIGRvYy9zcmMvc2dtbC9kZGwuc2dt bCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzMiArCiBkb2Mvc3JjL3NnbWwvZXZlbnQtdHJp Z2dlci5zZ21sICAgICAgICAgICAgICAgfCAgMjQgKwogZG9jL3NyYy9zZ21sL3BhcmFsbGVsLnNn bWwgICAgICAgICAgICAgICAgICAgIHwgICA2ICsKIGRvYy9zcmMvc2dtbC9wbHBnc3FsLnNnbWwg ICAgICAgICAgICAgICAgICAgICB8ICAxNCArCiBkb2Mvc3JjL3NnbWwvcmVmL2FsbGZpbGVzLnNn bWwgICAgICAgICAgICAgICAgfCAgIDEgKwogZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl92YXJpYWJs ZS5zZ21sICAgICAgICAgIHwgICAxICsKIGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3ZhcmlhYmxl LnNnbWwgICAgICAgICB8ICAgMSArCiBkb2Mvc3JjL3NnbWwvcmVmL2Ryb3BfdmFyaWFibGUuc2dt bCAgICAgICAgICAgfCAgIDEgKwogZG9jL3NyYy9zZ21sL3JlZi9sZXQuc2dtbCAgICAgICAgICAg ICAgICAgICAgIHwgIDk2ICsrCiBkb2Mvc3JjL3NnbWwvcmVmZXJlbmNlLnNnbWwgICAgICAgICAg ICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMgICAgICAg ICAgICAgIHwgICA1ICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvbmFtZXNwYWNlLmMgICAgICAgICAg ICAgICB8IDMxNyArKysrKysKIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfdmFyaWFibGUuYyAgICAg ICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9NYWtlZmlsZSAgICAgICAgICAg ICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvbWVzb24uYnVpbGQgICAgICAgICAg ICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3Nlc3Npb25fdmFyaWFibGUuYyAgICAg ICB8IDU3NCArKysrKysrKysrKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvTWFrZWZpbGUgICAgICAg ICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMgICAgICAg ICAgICAgICB8ICA0MiArCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jICAgICAgICAg ICAgICAgfCAgNDcgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvbWVzb24uYnVpbGQgICAgICAgICAg ICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL3N2YXJpYWJsZVJlY2VpdmVyLmMgICAg ICB8IDIwMSArKysrCiBzcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYyAgICAgICAgICAgICAg ICAgfCAgMTAgKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jICAgICAgICAg IHwgICA5ICsKIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYyAgICAgICAgICB8 IDEzNSArKy0KIHNyYy9iYWNrZW5kL29wdGltaXplci9wcmVwL3ByZXBqb2ludHJlZS5jICAgICB8 ICAgMyArCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9jbGF1c2VzLmMgICAgICAgICAgfCAg MzUgKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMgICAgICAgICAgICAgICAgICB8IDI2 NCArKysrLQogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAgICAgICAgICAgICAgIHwg IDQ5ICstCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfYWdnLmMgICAgICAgICAgICAgICAgfCAg IDkgKwogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYyAgICAgICAgICAgICAgIHwgMjIw ICsrKystCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jICAgICAgICAgICAgICAgfCAg IDIgKwogc3JjL2JhY2tlbmQvdGNvcC9kZXN0LmMgICAgICAgICAgICAgICAgICAgICAgIHwgICA3 ICsKIHNyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMgICAgICAgICAgICAgICAgICAgICB8ICAgMyAr CiBzcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYyAgICAgICAgICAgICAgICAgICAgfCAgMTYgKwog c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jICAgICAgICAgICAgIHwgIDQ2ICsKIHNy Yy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jICAgICAgICAgICB8ICA0MSArLQogc3Jj L2JhY2tlbmQvdXRpbHMvZm1nci9mbWdyLmMgICAgICAgICAgICAgICAgIHwgIDEwICstCiBzcmMv YmluL3BzcWwvdGFiLWNvbXBsZXRlLmMgICAgICAgICAgICAgICAgICAgfCAgMTIgKy0KIHNyYy9p bmNsdWRlL2NhdGFsb2cvbmFtZXNwYWNlLmggICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvaW5j bHVkZS9jYXRhbG9nL3BnX3ZhcmlhYmxlLmggICAgICAgICAgICAgfCAgIDggKwogc3JjL2luY2x1 ZGUvY29tbWFuZHMvc2Vzc2lvbl92YXJpYWJsZS5oICAgICAgIHwgIDMyICsKIHNyYy9pbmNsdWRl L2V4ZWN1dG9yL2V4ZWNkZXNjLmggICAgICAgICAgICAgICB8ICAgNCArCiBzcmMvaW5jbHVkZS9l eGVjdXRvci9zdmFyaWFibGVSZWNlaXZlci5oICAgICAgfCAgMjIgKwogc3JjL2luY2x1ZGUvbm9k ZXMvZXhlY25vZGVzLmggICAgICAgICAgICAgICAgIHwgIDE2ICsKIHNyYy9pbmNsdWRlL25vZGVz L3BhcnNlbm9kZXMuaCAgICAgICAgICAgICAgICB8ICAxNyArCiBzcmMvaW5jbHVkZS9ub2Rlcy9w YXRobm9kZXMuaCAgICAgICAgICAgICAgICAgfCAgIDUgKwogc3JjL2luY2x1ZGUvbm9kZXMvcGxh bm5vZGVzLmggICAgICAgICAgICAgICAgIHwgICA0ICstCiBzcmMvaW5jbHVkZS9ub2Rlcy9wcmlt bm9kZXMuaCAgICAgICAgICAgICAgICAgfCAgIDYgKwogc3JjL2luY2x1ZGUvb3B0aW1pemVyL3Bs YW5tYWluLmggICAgICAgICAgICAgIHwgICAyICsKIHNyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3Qu aCAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9k ZS5oICAgICAgICAgICAgICAgfCAgIDMgKwogc3JjL2luY2x1ZGUvdGNvcC9jbWR0YWdsaXN0Lmgg ICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL3Rjb3AvZGVzdC5oICAgICAgICAg ICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvcGwvcGxwZ3NxbC9zcmMvcGxfZXhlYy5jICAgICAg ICAgICAgICAgICAgfCAgIDMgKy0KIC4uLi9yZWdyZXNzL2V4cGVjdGVkL3Nlc3Npb25fdmFyaWFi bGVzLm91dCAgICB8IDkxMiArKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3Nlc3Npb25fdmFyaWFibGVzLnNxbCAgICB8IDYyNSArKysrKysrKysrKysKIHNyYy90b29scy9w Z2luZGVudC90eXBlZGVmcy5saXN0ICAgICAgICAgICAgICB8ICAgNSArCiA1OCBmaWxlcyBjaGFu Z2VkLCAzODk5IGluc2VydGlvbnMoKyksIDIzIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAw NjQ0IGRvYy9zcmMvc2dtbC9yZWYvbGV0LnNnbWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFj a2VuZC9jb21tYW5kcy9zZXNzaW9uX3ZhcmlhYmxlLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMv YmFja2VuZC9leGVjdXRvci9zdmFyaWFibGVSZWNlaXZlci5jCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjL2luY2x1ZGUvY29tbWFuZHMvc2Vzc2lvbl92YXJpYWJsZS5oCiBjcmVhdGUgbW9kZSAxMDA2 NDQgc3JjL2luY2x1ZGUvZXhlY3V0b3Ivc3ZhcmlhYmxlUmVjZWl2ZXIuaAoKZGlmZiAtLWdpdCBh L2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwK aW5kZXggZGUxMjJlNTQzZi4uYWMzYjA0ZmY5MSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2Nh dGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKQEAgLTk3NzcsNiAr OTc3NywxOSBAQCBTQ1JBTS1TSEEtMjU2JDxyZXBsYWNlYWJsZT4mbHQ7aXRlcmF0aW9uIGNvdW50 Jmd0OzwvcmVwbGFjZWFibGU+OjxyZXBsYWNlYWJsZT4mbAogICAgICAgPC9wYXJhPjwvZW50cnk+ CiAgICAgIDwvcm93PgogCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190 YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1 Y3RmaWVsZD52YXJjcmVhdGVfbHNuPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+WExvZ1JlY1B0cjwvdHlw ZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIExTTiBvZiB0aGUgdHJhbnNh Y3Rpb24gd2hlcmUgdGhlIHZhcmlhYmxlIHdhcyBjcmVhdGVkLgorICAgICAgIDxzdHJ1Y3RmaWVs ZD52YXJjcmVhdGVfbHNuPC9zdHJ1Y3RmaWVsZD4gYW5kCisgICAgICAgPHN0cnVjdGZpZWxkPm9p ZDwvc3RydWN0ZmllbGQ+IHRvZ2V0aGVyIGZvcm0gdGhlIGFsbC10aW1lIHVuaXF1ZQorICAgICAg IGlkZW50aWZpZXIgKDxzdHJ1Y3RmaWVsZD5vaWQ8L3N0cnVjdGZpZWxkPiBhbG9uZSBpcyBub3Qg ZW5vdWdoLCBzaW5jZQorICAgICAgIG9iamVjdCBpZGVudGlmaWVycyBjYW4gZ2V0IHJldXNlZCku CisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKICAgICAgPHJvdz4KICAgICAg IDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVm aW5pdGlvbiI+CiAgICAgICAgPHN0cnVjdGZpZWxkPnZhcm5hbWU8L3N0cnVjdGZpZWxkPiA8dHlw ZT5uYW1lPC90eXBlPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2RkbC5zZ21sIGIvZG9jL3Ny Yy9zZ21sL2RkbC5zZ21sCmluZGV4IDc1MzFkZTE3ZmQuLjU3NDU0MGNhNmYgMTAwNjQ0Ci0tLSBh L2RvYy9zcmMvc2dtbC9kZGwuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvZGRsLnNnbWwKQEAgLTUz MTcsNiArNTMxNywzOCBAQCBFWFBMQUlOIFNFTEVDVCBjb3VudCgqKSBGUk9NIG1lYXN1cmVtZW50 IFdIRVJFIGxvZ2RhdGUgJmd0Oz0gREFURSAnMjAwOC0wMS0wMSc7CiAgICAgVkFSSUFCTEU8L2Nv bW1hbmQ+IGNvbW1hbmQuCiAgICA8L3BhcmE+CiAKKyAgIDxwYXJhPgorICAgIFRoZSB2YWx1ZSBv ZiBhIHNlc3Npb24gdmFyaWFibGUgaXMgc2V0IHdpdGggdGhlIFNRTCBzdGF0ZW1lbnQKKyAgICA8 Y29tbWFuZD5MRVQ8L2NvbW1hbmQ+LiAgVGhlIHZhbHVlIG9mIGEgc2Vzc2lvbiB2YXJpYWJsZSBj YW4gYmUgcmV0cmlldmVkCisgICAgd2l0aCB0aGUgU1FMIHN0YXRlbWVudCA8Y29tbWFuZD5TRUxF Q1Q8L2NvbW1hbmQ+LgorPHByb2dyYW1saXN0aW5nPgorQ1JFQVRFIFZBUklBQkxFIHZhcjEgQVMg ZGF0ZTsKK0xFVCB2YXIxID0gY3VycmVudF9kYXRlOworU0VMRUNUIHZhcjE7Cis8L3Byb2dyYW1s aXN0aW5nPgorCisgICAgb3IKKworPHByb2dyYW1saXN0aW5nPgorQ1JFQVRFIFZBUklBQkxFIHB1 YmxpYy5jdXJyZW50X3VzZXJfaWQgQVMgaW50ZWdlcjsKK0dSQU5UIFJFQUQgT04gVkFSSUFCTEUg cHVibGljLmN1cnJlbnRfdXNlcl9pZCBUTyBQVUJMSUM7CitMRVQgY3VycmVudF91c2VyX2lkID0g KFNFTEVDVCBpZCBGUk9NIHVzZXJzIFdIRVJFIHVzZW5hbWUgPSBzZXNzaW9uX3VzZXIpOworU0VM RUNUIGN1cnJlbnRfdXNlcl9pZDsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgICA8L3BhcmE+CisKKyAg IDxwYXJhPgorICAgIFRoZSB2YWx1ZSBvZiBhIHNlc3Npb24gdmFyaWFibGUgaXMgbG9jYWwgdG8g dGhlIGN1cnJlbnQgc2Vzc2lvbi4gUmV0cmlldmluZworICAgIGEgdmFyaWFibGUncyB2YWx1ZSBy ZXR1cm5zIGEgPGxpdGVyYWw+TlVMTDwvbGl0ZXJhbD4sIHVubGVzcyBpdHMgdmFsdWUgaGFzCisg ICAgYmVlbiBzZXQgdG8gc29tZXRoaW5nIGVsc2UgaW4gdGhlIGN1cnJlbnQgc2Vzc2lvbiB1c2lu ZyB0aGUKKyAgICA8Y29tbWFuZD5MRVQ8L2NvbW1hbmQ+IGNvbW1hbmQuICBTZXNzaW9uIHZhcmlh YmxlcyBhcmUgbm90IHRyYW5zYWN0aW9uYWw6CisgICAgYW55IGNoYW5nZXMgbWFkZSB0byB0aGUg dmFsdWUgb2YgYSBzZXNzaW9uIHZhcmlhYmxlIGluIGEgdHJhbnNhY3Rpb24gd29uJ3QKKyAgICBi ZSB1bmRvbmUgaWYgdGhlIHRyYW5zYWN0aW9uIGlzIHJvbGxlZCBiYWNrIChqdXN0IGxpa2UgdmFy aWFibGVzIGluCisgICAgcHJvY2VkdXJhbCBsYW5ndWFnZXMpLiAgU2Vzc2lvbiB2YXJpYWJsZXMg dGhlbXNlbHZlcyBhcmUgcGVyc2lzdGVudCwgYnV0CisgICAgdGhlaXIgdmFsdWVzIGFyZSBuZWl0 aGVyIHBlcnNpc3RlbnQgbm9yIHNoYXJlZCAobGlrZSB0aGUgY29udGVudCBvZgorICAgIHRlbXBv cmFyeSB0YWJsZXMpLgorICAgPC9wYXJhPgorCiAgICA8cGFyYT4KICAgICBJbnNpZGUgYSBxdWVy eSBvciBhbiBleHByZXNzaW9uLCBhIHNlc3Npb24gdmFyaWFibGUgY2FuIGJlCiAgICAgPHF1b3Rl PnNoYWRvd2VkPC9xdW90ZT4gYnkgYSBjb2x1bW4gd2l0aCB0aGUgc2FtZSBuYW1lLiAgU2ltaWxh cmx5LCB0aGUKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9ldmVudC10cmlnZ2VyLnNnbWwgYi9k b2Mvc3JjL3NnbWwvZXZlbnQtdHJpZ2dlci5zZ21sCmluZGV4IDE1YjJhZjk5ZGMuLjU3OGI5N2Fm ZWUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9ldmVudC10cmlnZ2VyLnNnbWwKKysrIGIvZG9j L3NyYy9zZ21sL2V2ZW50LXRyaWdnZXIuc2dtbApAQCAtNDMyLDYgKzQzMiwxNCBAQAogICAgICAg ICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgogICAg ICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9yb3c+CisgICAgICAg PHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5BTFRFUiBWQVJJQUJM RTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVy YWw+WDwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxp dGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+ PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRl ciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249Imxl ZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5 IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5BTFRFUiBWSUVXPC9saXRlcmFsPjwvZW50cnk+CiAgICAg ICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+CkBA IC03MjgsNiArNzM2LDE0IEBACiAgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJh bD4tPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRy eT4KICAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249Imxl ZnQiPjxsaXRlcmFsPkNSRUFURSBWQVJJQUJMRTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8 ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAg ICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgorICAg ICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5Pgor ICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5 PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CiAg ICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5DUkVBVEUg VklFVzwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxp dGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgpAQCAtMTAyNCw2ICsxMDQwLDE0IEBACiAgICAgICAg IDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CiAgICAg ICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4KKyAgICAgICA8 cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkRST1AgVkFSSUFCTEU8 L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFs Plg8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRl cmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxs aXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIi PjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0 Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRyeSBh bGlnbj0ibGVmdCI+PGxpdGVyYWw+RFJPUCBWSUVXPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAg IDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+CmRpZmYg LS1naXQgYS9kb2Mvc3JjL3NnbWwvcGFyYWxsZWwuc2dtbCBiL2RvYy9zcmMvc2dtbC9wYXJhbGxl bC5zZ21sCmluZGV4IDU5MGNiMzg1ZGQuLmE1Y2VmNGNkNzkgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC9wYXJhbGxlbC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9wYXJhbGxlbC5zZ21sCkBAIC01 MjEsNiArNTIxLDEyIEBAIEVYUExBSU4gU0VMRUNUICogRlJPTSBwZ2JlbmNoX2FjY291bnRzIFdI RVJFIGZpbGxlciBMSUtFICcleCUnOwogICAgICAgICBQbGFuIG5vZGVzIHRoYXQgcmVmZXJlbmNl IGEgY29ycmVsYXRlZCA8bGl0ZXJhbD5TdWJQbGFuPC9saXRlcmFsPi4KICAgICAgIDwvcGFyYT4K ICAgICA8L2xpc3RpdGVtPgorCisgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+CisgICAgICAg IFBsYW4gbm9kZXMgdGhhdCB1c2UgYSBzZXNzaW9uIHZhcmlhYmxlLgorICAgICAgPC9wYXJhPgor ICAgIDwvbGlzdGl0ZW0+CiAgIDwvaXRlbWl6ZWRsaXN0PgogCiAgPHNlY3QyIGlkPSJwYXJhbGxl bC1sYWJlbGluZyI+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcGxwZ3NxbC5zZ21sIGIvZG9j L3NyYy9zZ21sL3BscGdzcWwuc2dtbAppbmRleCBhNjc1OTIzODY3Li5jMTE5NmM3MTA3IDEwMDY0 NAotLS0gYS9kb2Mvc3JjL3NnbWwvcGxwZ3NxbC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9wbHBn c3FsLnNnbWwKQEAgLTYwMzQsNiArNjAzNCwyMCBAQCAkJCBMQU5HVUFHRSBwbHBnc3FsIFNUUklD VCBJTU1VVEFCTEU7CiA8L3Byb2dyYW1saXN0aW5nPgogICAgIDwvcGFyYT4KICAgIDwvc2VjdDM+ CisKKyAgIDxzZWN0MyBpZD0icGxwZ3NxbC1wb3J0aW5nLXBhY2thZ2UtdmFyaWFibGVzIj4KKyAg ICA8dGl0bGU+PGNvbW1hbmQ+UGFja2FnZXMgYW5kIHBhY2thZ2UgdmFyaWFibGVzPC9jb21tYW5k PjwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgVGhlIDxhcHBsaWNhdGlvbj5QTC9wZ1NRTDwv YXBwbGljYXRpb24+IGxhbmd1YWdlIGhhcyBubyBwYWNrYWdlcywgYW5kCisgICAgIHRoZXJlZm9y ZSBubyBwYWNrYWdlIHZhcmlhYmxlcyBvciBwYWNrYWdlIGNvbnN0YW50cy4KKyAgICAgWW91IGNh biBjb25zaWRlciB0cmFuc2xhdGluZyBhbiBPcmFjbGUgcGFja2FnZSBpbnRvIGEgc2NoZW1hIGlu CisgICAgIDxwcm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4uICBQYWNrYWdlIGZ1 bmN0aW9ucyBhbmQgcHJvY2VkdXJlcworICAgICB3b3VsZCB0aGVuIGJlY29tZSBmdW5jdGlvbnMg YW5kIHByb2NlZHVyZXMgaW4gdGhhdCBzY2hlbWEsIGFuZCBwYWNrYWdlCisgICAgIHZhcmlhYmxl cyBjb3VsZCBiZSB0cmFuc2xhdGVkIHRvIHNlc3Npb24gdmFyaWFibGVzIGluIHRoYXQgc2NoZW1h LgorICAgICAoc2VlIDx4cmVmIGxpbmtlbmQ9ImRkbC1zZXNzaW9uLXZhcmlhYmxlcyJcPikuCisg ICAgPC9wYXJhPgorICAgPC9zZWN0Mz4KICAgPC9zZWN0Mj4KIAogICA8c2VjdDIgaWQ9InBscGdz cWwtcG9ydGluZy1hcHBlbmRpeCI+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2FsbGZp bGVzLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsbGZpbGVzLnNnbWwKaW5kZXggMmY2N2RlM2Uy MS4uY2MzYmQ1YWI1NCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9hbGxmaWxlcy5zZ21s CisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvYWxsZmlsZXMuc2dtbApAQCAtMTU4LDYgKzE1OCw3IEBA IENvbXBsZXRlIGxpc3Qgb2YgdXNhYmxlIHNnbWwgc291cmNlIGZpbGVzIGluIHRoaXMgZGlyZWN0 b3J5LgogPCFFTlRJVFkgZ3JhbnQgICAgICAgICAgICAgIFNZU1RFTSAiZ3JhbnQuc2dtbCI+CiA8 IUVOVElUWSBpbXBvcnRGb3JlaWduU2NoZW1hIFNZU1RFTSAiaW1wb3J0X2ZvcmVpZ25fc2NoZW1h LnNnbWwiPgogPCFFTlRJVFkgaW5zZXJ0ICAgICAgICAgICAgIFNZU1RFTSAiaW5zZXJ0LnNnbWwi PgorPCFFTlRJVFkgbGV0ICAgICAgICAgICAgICAgIFNZU1RFTSAibGV0LnNnbWwiPgogPCFFTlRJ VFkgbGlzdGVuICAgICAgICAgICAgIFNZU1RFTSAibGlzdGVuLnNnbWwiPgogPCFFTlRJVFkgbG9h ZCAgICAgICAgICAgICAgIFNZU1RFTSAibG9hZC5zZ21sIj4KIDwhRU5USVRZIGxvY2sgICAgICAg ICAgICAgICBTWVNURU0gImxvY2suc2dtbCI+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVm L2FsdGVyX3ZhcmlhYmxlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3ZhcmlhYmxlLnNn bWwKaW5kZXggZDg3NTcwZTdkOC4uZDIwMzYzNTFlNSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21s L3JlZi9hbHRlcl92YXJpYWJsZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdmFy aWFibGUuc2dtbApAQCAtMTczLDYgKzE3Myw3IEBAIEFMVEVSIFZBUklBQkxFIGJvbyBTRVQgU0NI RU1BIHByaXZhdGU7CiAgIDxzaW1wbGVsaXN0IHR5cGU9ImlubGluZSI+CiAgICA8bWVtYmVyPjx4 cmVmIGxpbmtlbmQ9InNxbC1jcmVhdGV2YXJpYWJsZSIvPjwvbWVtYmVyPgogICAgPG1lbWJlcj48 eHJlZiBsaW5rZW5kPSJzcWwtZHJvcHZhcmlhYmxlIi8+PC9tZW1iZXI+CisgICA8bWVtYmVyPjx4 cmVmIGxpbmtlbmQ9InNxbC1sZXQiLz48L21lbWJlcj4KICAgPC9zaW1wbGVsaXN0PgogIDwvcmVm c2VjdDE+CiA8L3JlZmVudHJ5PgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVf dmFyaWFibGUuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3ZhcmlhYmxlLnNnbWwKaW5k ZXggZWMxNjVhYjk2Zi4uMDViZjY3ZTM0MSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9j cmVhdGVfdmFyaWFibGUuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV92YXJpYWJs ZS5zZ21sCkBAIC0xNDUsNiArMTQ1LDcgQEAgU0VMRUNUIHZhcjE7CiAgIDxzaW1wbGVsaXN0IHR5 cGU9ImlubGluZSI+CiAgICA8bWVtYmVyPjx4cmVmIGxpbmtlbmQ9InNxbC1hbHRlcnZhcmlhYmxl Ii8+PC9tZW1iZXI+CiAgICA8bWVtYmVyPjx4cmVmIGxpbmtlbmQ9InNxbC1kcm9wdmFyaWFibGUi Lz48L21lbWJlcj4KKyAgIDxtZW1iZXI+PHhyZWYgbGlua2VuZD0ic3FsLWxldCIvPjwvbWVtYmVy PgogICA8L3NpbXBsZWxpc3Q+CiAgPC9yZWZzZWN0MT4KIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9z Z21sL3JlZi9kcm9wX3ZhcmlhYmxlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2Ryb3BfdmFyaWFi bGUuc2dtbAppbmRleCA1YmRiMzU2MGYwLi42Nzk4OGI1ZmNkIDEwMDY0NAotLS0gYS9kb2Mvc3Jj L3NnbWwvcmVmL2Ryb3BfdmFyaWFibGUuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2Ryb3Bf dmFyaWFibGUuc2dtbApAQCAtMTExLDYgKzExMSw3IEBAIERST1AgVkFSSUFCTEUgdmFyMTsKICAg PHNpbXBsZWxpc3QgdHlwZT0iaW5saW5lIj4KICAgIDxtZW1iZXI+PHhyZWYgbGlua2VuZD0ic3Fs LWFsdGVydmFyaWFibGUiLz48L21lbWJlcj4KICAgIDxtZW1iZXI+PHhyZWYgbGlua2VuZD0ic3Fs LWNyZWF0ZXZhcmlhYmxlIi8+PC9tZW1iZXI+CisgICA8bWVtYmVyPjx4cmVmIGxpbmtlbmQ9InNx bC1sZXQiLz48L21lbWJlcj4KICAgPC9zaW1wbGVsaXN0PgogIDwvcmVmc2VjdDE+CiAKZGlmZiAt LWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvbGV0LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2xldC5z Z21sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmY2NjQwNTc2YmUKLS0t IC9kZXYvbnVsbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2xldC5zZ21sCkBAIC0wLDAgKzEsOTYg QEAKKzwhLS0KK2RvYy9zcmMvc2dtbC9yZWYvbGV0LnNnbWwKK1Bvc3RncmVTUUwgZG9jdW1lbnRh dGlvbgorLS0+CisKKzxyZWZlbnRyeSBpZD0ic3FsLWxldCI+CisgPGluZGV4dGVybSB6b25lPSJz cWwtbGV0Ij4KKyAgPHByaW1hcnk+TEVUPC9wcmltYXJ5PgorIDwvaW5kZXh0ZXJtPgorCisgPGlu ZGV4dGVybT4KKyAgPHByaW1hcnk+c2Vzc2lvbiB2YXJpYWJsZTwvcHJpbWFyeT4KKyAgPHNlY29u ZGFyeT5jaGFuZ2luZzwvc2Vjb25kYXJ5PgorIDwvaW5kZXh0ZXJtPgorCisgPHJlZm1ldGE+Cisg IDxyZWZlbnRyeXRpdGxlPkxFVDwvcmVmZW50cnl0aXRsZT4KKyAgPG1hbnZvbG51bT43PC9tYW52 b2xudW0+CisgIDxyZWZtaXNjaW5mbz5TUUwgLSBMYW5ndWFnZSBTdGF0ZW1lbnRzPC9yZWZtaXNj aW5mbz4KKyA8L3JlZm1ldGE+CisKKyA8cmVmbmFtZWRpdj4KKyAgPHJlZm5hbWU+TEVUPC9yZWZu YW1lPgorICA8cmVmcHVycG9zZT5jaGFuZ2UgYSBzZXNzaW9uIHZhcmlhYmxlJ3MgdmFsdWU8L3Jl ZnB1cnBvc2U+CisgPC9yZWZuYW1lZGl2PgorCisgPHJlZnN5bm9wc2lzZGl2PgorPHN5bm9wc2lz PgorTEVUIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zZXNzaW9uX3ZhcmlhYmxlPC9y ZXBsYWNlYWJsZT4gPSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3FsX2V4cHJlc3Np b248L3JlcGxhY2VhYmxlPgorPC9zeW5vcHNpcz4KKyA8L3JlZnN5bm9wc2lzZGl2PgorCisgPHJl ZnNlY3QxPgorICA8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgorCisgIDxwYXJhPgorICAgVGhl IDxjb21tYW5kPkxFVDwvY29tbWFuZD4gY29tbWFuZCBhc3NpZ25zIGEgdmFsdWUgdG8gdGhlIHNw ZWNpZmllZCBzZXNzaW9uCisgICB2YXJpYWJsZS4KKyAgPC9wYXJhPgorCisgPC9yZWZzZWN0MT4K KworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPlBhcmFtZXRlcnM8L3RpdGxlPgorCisgIDx2YXJpYWJs ZWxpc3Q+CisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxsaXRlcmFsPnNlc3Npb25fdmFy aWFibGU8L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAg ICBUaGUgbmFtZSBvZiB0aGUgc2Vzc2lvbiB2YXJpYWJsZS4KKyAgICAgPC9wYXJhPgorICAgIDwv bGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8 dGVybT48bGl0ZXJhbD5zcWxfZXhwcmVzc2lvbjwvbGl0ZXJhbD48L3Rlcm0+CisgICAgPGxpc3Rp dGVtPgorICAgICA8cGFyYT4KKyAgICAgIEFuIGFyYml0cmFyeSBTUUwgZXhwcmVzc2lvbi4gIFRo ZSByZXN1bHQgbXVzdCBiZSBvZiBhIGRhdGEgdHlwZSB0aGF0IGNhbgorICAgICAgYmUgY2FzdCB0 byB0aGUgdHlwZSBvZiB0aGUgc2Vzc2lvbiB2YXJpYWJsZSBpbiBhbiBhc3NpZ25tZW50LgorICAg ICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgIDwvdmFy aWFibGVsaXN0PgorCisgIDxwYXJhPgorICAgRXhhbXBsZToKKzxwcm9ncmFtbGlzdGluZz4KK0NS RUFURSBWQVJJQUJMRSBteXZhciBBUyBpbnRlZ2VyOworTEVUIG15dmFyID0gMTA7CitMRVQgbXl2 YXIgPSAoU0VMRUNUIHN1bSh2YWwpIEZST00gdGFiKTsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgIDwv cGFyYT4KKyA8L3JlZnNlY3QxPgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+Q29tcGF0aWJpbGl0 eTwvdGl0bGU+CisKKyAgPHBhcmE+CisgICBUaGUgPGNvbW1hbmQ+TEVUPC9jb21tYW5kPiBpcyBh IDxwcm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4KKyAgIGV4dGVuc2lvbi4KKyAg PC9wYXJhPgorIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5TZWUgQWxzbzwv dGl0bGU+CisKKyAgPHNpbXBsZWxpc3QgdHlwZT0iaW5saW5lIj4KKyAgIDxtZW1iZXI+PHhyZWYg bGlua2VuZD0ic3FsLWFsdGVydmFyaWFibGUiLz48L21lbWJlcj4KKyAgIDxtZW1iZXI+PHhyZWYg bGlua2VuZD0ic3FsLWNyZWF0ZXZhcmlhYmxlIi8+PC9tZW1iZXI+CisgICA8bWVtYmVyPjx4cmVm IGxpbmtlbmQ9InNxbC1kcm9wdmFyaWFibGUiLz48L21lbWJlcj4KKyAgPC9zaW1wbGVsaXN0Pgor IDwvcmVmc2VjdDE+Cis8L3JlZmVudHJ5PgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZmVy ZW5jZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZmVyZW5jZS5zZ21sCmluZGV4IDI1NTc4ZjM5NDYu LjEzZTRhZGM1ZGYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWZlcmVuY2Uuc2dtbAorKysg Yi9kb2Mvc3JjL3NnbWwvcmVmZXJlbmNlLnNnbWwKQEAgLTE4Niw2ICsxODYsNyBAQAogICAgJmdy YW50OwogICAgJmltcG9ydEZvcmVpZ25TY2hlbWE7CiAgICAmaW5zZXJ0OworICAgJmxldDsKICAg ICZsaXN0ZW47CiAgICAmbG9hZDsKICAgICZsb2NrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y2F0YWxvZy9kZXBlbmRlbmN5LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVuY3kuYwpp bmRleCBjOWQ2ODY2NjVkLi4xNDg3MTllNDkwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRh bG9nL2RlcGVuZGVuY3kuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVuY3kuYwpA QCAtMTg2NCw2ICsxODY0LDExIEBAIGZpbmRfZXhwcl9yZWZlcmVuY2VzX3dhbGtlcihOb2RlICpu b2RlLAogCXsKIAkJUGFyYW0JICAgKnBhcmFtID0gKFBhcmFtICopIG5vZGU7CiAKKwkJLyogYSB2 YXJpYWJsZSBwYXJhbWV0ZXIgZGVwZW5kcyBvbiB0aGUgc2Vzc2lvbiB2YXJpYWJsZSAqLworCQlp ZiAocGFyYW0tPnBhcmFta2luZCA9PSBQQVJBTV9WQVJJQUJMRSkKKwkJCWFkZF9vYmplY3RfYWRk cmVzcyhWYXJpYWJsZVJlbGF0aW9uSWQsIHBhcmFtLT5wYXJhbXZhcmlkLCAwLAorCQkJCQkJCSAg IGNvbnRleHQtPmFkZHJzKTsKKwogCQkvKiBBIHBhcmFtZXRlciBtdXN0IGRlcGVuZCBvbiB0aGUg cGFyYW1ldGVyJ3MgZGF0YXR5cGUgKi8KIAkJYWRkX29iamVjdF9hZGRyZXNzKFR5cGVSZWxhdGlv bklkLCBwYXJhbS0+cGFyYW10eXBlLCAwLAogCQkJCQkJICAgY29udGV4dC0+YWRkcnMpOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9uYW1lc3BhY2UuYyBiL3NyYy9iYWNrZW5kL2Nh dGFsb2cvbmFtZXNwYWNlLmMKaW5kZXggODc1MmUxNjQ2ZS4uMmUxMjhlZjdlYyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9uYW1lc3BhY2UuYworKysgYi9zcmMvYmFja2VuZC9jYXRh bG9nL25hbWVzcGFjZS5jCkBAIC0zMzk5LDYgKzMzOTksMzIzIEBAIExvb2t1cFZhcmlhYmxlKGNv bnN0IGNoYXIgKm5zcG5hbWUsCiAJcmV0dXJuIHZhcm9pZDsKIH0KIAorLyoKKyAqIFRoZSBpbnB1 dCBsaXN0IGNvbnRhaW5zIG5hbWVzIHdpdGggaW5kaXJlY3Rpb24gZXhwcmVzc2lvbnMgdXNlZCBh cyB0aGUgbGVmdAorICogcGFydCBvZiBMRVQgc3RhdGVtZW50LiBUaGUgZm9sbG93aW5nIHJvdXRp bmUgcmV0dXJucyBhIG5ldyBsaXN0IHdpdGggb25seQorICogaW5pdGlhbCBzdHJpbmdzIChuYW1l cykgLSB3aXRob3V0IGluZGlyZWN0aW9uIGV4cHJlc3Npb25zLgorICovCitMaXN0ICoKK05hbWVz RnJvbUxpc3QoTGlzdCAqbmFtZXMpCit7CisJTGlzdENlbGwgICAqbDsKKwlMaXN0CSAgICpyZXN1 bHQgPSBOSUw7CisKKwlmb3JlYWNoKGwsIG5hbWVzKQorCXsKKwkJTm9kZQkgICAqbiA9IGxmaXJz dChsKTsKKworCQlpZiAoSXNBKG4sIFN0cmluZykpCisJCXsKKwkJCXJlc3VsdCA9IGxhcHBlbmQo cmVzdWx0LCBuKTsKKwkJfQorCQllbHNlCisJCQlicmVhazsKKwl9CisKKwlyZXR1cm4gcmVzdWx0 OworfQorCisvKiAtLS0tLQorICogSWRlbnRpZnlWYXJpYWJsZSAtIHRyeSB0byBmaW5kIGEgdmFy aWFibGUgZnJvbSBhIGxpc3Qgb2YgaWRlbnRpZmllcnMKKyAqCisgKiBSZXR1cm5zIHRoZSBPSUQg b2YgdGhlIHZhcmlhYmxlIGZvdW5kLCBvciBJbnZhbGlkT2lkLgorICoKKyAqICJuYW1lcyIgaXMg YSBsaXN0IG9mIHVwIHRvIGZvdXIgaWRlbnRpZmllcnM7IHBvc3NpYmxlIG1lYW5pbmdzIGFyZToK KyAqIC0gdmFyaWFibGUgIChzZWFyY2hlZCBvbiB0aGUgc2VhcmNoX3BhdGgpCisgKiAtIHNjaGVt YS52YXJpYWJsZQorICogLSB2YXJpYWJsZS5hdHRyaWJ1dGUgIChzZWFyY2hlZCBvbiB0aGUgc2Vh cmNoX3BhdGgpCisgKiAtIHNjaGVtYS52YXJpYWJsZS5hdHRyaWJ1dGUKKyAqIC0gZGF0YWJhc2Uu c2NoZW1hLnZhcmlhYmxlCisgKiAtIGRhdGFiYXNlLnNjaGVtYS52YXJpYWJsZS5hdHRyaWJ1dGUK KyAqCisgKiBJZiB0aGVyZSBpcyBtb3JlIHRoYW4gb25lIHdheSB0byBpZGVudGlmeSBhIHZhcmlh YmxlLCAibm90X3VuaXF1ZSIgd2lsbCBiZQorICogc2V0IHRvIHRydWUuCisgKgorICogVW5sZXNz ICJub2Vycm9yIiBpcyB0cnVlLCBhbiBlcnJvciBpcyByYWlzZWQgaWYgdGhlcmUgYXJlIG1vcmUg dGhhbiBmb3VyCisgKiAgaWRlbnRpZmllcnMgaW4gdGhlIGxpc3QsIG9yIGlmIHRoZSBuYW1lZCBk YXRhYmFzZSBpcyBub3QgdGhlIGN1cnJlbnQgb25lLgorICogVGhpcyBpcyB1c2VmdWwgaWYgd2Ug d2FudCB0byBpZGVudGlmeSBhIHNoYWRvd2VkIHZhcmlhYmxlLgorICoKKyAqIElmIGFuIGF0dHJp YnV0ZSBpcyBpZGVudGlmaWVkLCBpdCBpcyBzdG9yZWQgaW4gImF0dHJuYW1lIiwgb3RoZXJ3aXNl IHRoZQorICogcGFyYW1ldGVyIGlzIHNldCB0byBOVUxMLgorICoKKyAqIFRoZSBpZGVudGlmaWVk IHNlc3Npb24gdmFyaWFibGUgd2lsbCBiZSBsb2NrZWQgd2l0aCBhbiBBY2Nlc3NTaGFyZUxvY2su CisgKiAtLS0tLQorICovCitPaWQKK0lkZW50aWZ5VmFyaWFibGUoTGlzdCAqbmFtZXMsIGNoYXIg KiphdHRybmFtZSwgYm9vbCAqbm90X3VuaXF1ZSwgYm9vbCBub2Vycm9yKQoreworCU5vZGUJICAg KmZpZWxkMSA9IE5VTEw7CisJTm9kZQkgICAqZmllbGQyID0gTlVMTDsKKwlOb2RlCSAgICpmaWVs ZDMgPSBOVUxMOworCU5vZGUJICAgKmZpZWxkNCA9IE5VTEw7CisJY2hhcgkgICAqYSA9IE5VTEw7 CisJY2hhcgkgICAqYiA9IE5VTEw7CisJY2hhcgkgICAqYyA9IE5VTEw7CisJY2hhcgkgICAqZCA9 IE5VTEw7CisJT2lkCQkJdmFyaWQgPSBJbnZhbGlkT2lkOworCU9pZAkJCW9sZF92YXJpZCA9IElu dmFsaWRPaWQ7CisJdWludDY0CQlpbnZhbF9jb3VudDsKKwlib29sCQlyZXRyeSA9IGZhbHNlOwor CisJLyoKKwkgKiBEREwgb3BlcmF0aW9ucyBjYW4gY2hhbmdlIHRoZSByZXN1bHRzIG9mIGEgbmFt ZSBsb29rdXAuICBTaW5jZSBhbGwgc3VjaAorCSAqIG9wZXJhdGlvbnMgd2lsbCBnZW5lcmF0ZSBp bnZhbGlkYXRpb24gbWVzc2FnZXMsIHdlIGtlZXAgdHJhY2sgb2YKKwkgKiB3aGV0aGVyIGFueSBz dWNoIG1lc3NhZ2VzIHNob3cgdXAgd2hpbGUgd2UncmUgcGVyZm9ybWluZyB0aGUgb3BlcmF0aW9u LAorCSAqIGFuZCByZXRyeSB1bnRpbCBlaXRoZXIgKDEpIG5vIG1vcmUgaW52YWxpZGF0aW9uIG1l c3NhZ2VzIHNob3cgdXAgb3IgKDIpCisJICogdGhlIGFuc3dlciBkb2Vzbid0IGNoYW5nZS4KKwkg Ki8KKwlmb3IgKDs7KQorCXsKKwkJT2lkCQkJdmFyb2lkX3dpdGhvdXRfYXR0ciA9IEludmFsaWRP aWQ7CisJCU9pZAkJCXZhcm9pZF93aXRoX2F0dHIgPSBJbnZhbGlkT2lkOworCisJCSpub3RfdW5p cXVlID0gZmFsc2U7CisJCSphdHRybmFtZSA9IE5VTEw7CisJCXZhcmlkID0gSW52YWxpZE9pZDsK KworCQlpbnZhbF9jb3VudCA9IFNoYXJlZEludmFsaWRNZXNzYWdlQ291bnRlcjsKKworCQlzd2l0 Y2ggKGxpc3RfbGVuZ3RoKG5hbWVzKSkKKwkJeworCQkJY2FzZSAxOgorCQkJCWZpZWxkMSA9IGxp bml0aWFsKG5hbWVzKTsKKworCQkJCUFzc2VydChJc0EoZmllbGQxLCBTdHJpbmcpKTsKKworCQkJ CXZhcmlkID0gTG9va3VwVmFyaWFibGUoTlVMTCwgc3RyVmFsKGZpZWxkMSksIHRydWUpOworCQkJ CWJyZWFrOworCisJCQljYXNlIDI6CisJCQkJZmllbGQxID0gbGluaXRpYWwobmFtZXMpOworCQkJ CWZpZWxkMiA9IGxzZWNvbmQobmFtZXMpOworCisJCQkJQXNzZXJ0KElzQShmaWVsZDEsIFN0cmlu ZykpOworCQkJCWEgPSBzdHJWYWwoZmllbGQxKTsKKworCQkJCWlmIChJc0EoZmllbGQyLCBTdHJp bmcpKQorCQkJCXsKKwkJCQkJLyogd2hlbiBib3RoIGZpZWxkcyBhcmUgb2Ygc3RyaW5nIHR5cGUg Ki8KKwkJCQkJYiA9IHN0clZhbChmaWVsZDIpOworCisJCQkJCS8qCisJCQkJCSAqIGEuYiBjYW4g bWVhbiAic2NoZW1hIi4idmFyaWFibGUiIG9yICJ2YXJpYWJsZSIuImZpZWxkIi4KKwkJCQkJICog Q2hlY2sgYm90aCB2YXJpYW50cywgYW5kIHJldHVybnMgSW52YWxpZE9pZCB3aXRoCisJCQkJCSAq IG5vdF91bmlxdWUgZmxhZywgd2hlbiBib3RoIGludGVycHJldGF0aW9ucyBhcmUKKwkJCQkJICog cG9zc2libGUuCisJCQkJCSAqLworCQkJCQl2YXJvaWRfd2l0aG91dF9hdHRyID0gTG9va3VwVmFy aWFibGUoYSwgYiwgdHJ1ZSk7CisJCQkJCXZhcm9pZF93aXRoX2F0dHIgPSBMb29rdXBWYXJpYWJs ZShOVUxMLCBhLCB0cnVlKTsKKwkJCQl9CisJCQkJZWxzZQorCQkJCXsKKwkJCQkJLyogVGhlIGxh c3QgZmllbGQgb2YgbGlzdCBjYW4gYmUgc3RhciB0b28uICovCisJCQkJCUFzc2VydChJc0EoZmll bGQyLCBBX1N0YXIpKTsKKworCQkJCQkvKgorCQkJCQkgKiBJbiB0aGlzIGNhc2UsIHRoZSBmaWVs ZDEgc2hvdWxkIGJlIHZhcmlhYmxlIG5hbWUuIEJ1dAorCQkJCQkgKiBkaXJlY3QgdW5ib3hpbmcg b2YgY29tcG9zaXRlIHNlc3Npb24gdmFyaWFibGVzIGlzIG5vdAorCQkJCQkgKiBzdXBwb3J0ZWQg bm93LCBhbmQgdGhlbiB3ZSBkb24ndCBuZWVkIHRvIHRyeSBsb29rdXAKKwkJCQkJICogcmVsYXRl ZCB2YXJpYWJsZS4KKwkJCQkJICoKKwkJCQkJICogVW5ib3hpbmcgaXMgc3VwcG9ydGVkIGJ5IHN5 bnRheCAodmFyKS4qCisJCQkJCSAqLworCQkJCQlyZXR1cm4gSW52YWxpZE9pZDsKKwkJCQl9CisK KwkJCQlpZiAoT2lkSXNWYWxpZCh2YXJvaWRfd2l0aG91dF9hdHRyKSAmJiBPaWRJc1ZhbGlkKHZh cm9pZF93aXRoX2F0dHIpKQorCQkJCXsKKwkJCQkJKm5vdF91bmlxdWUgPSB0cnVlOworCQkJCQl2 YXJpZCA9IHZhcm9pZF93aXRob3V0X2F0dHI7CisJCQkJfQorCQkJCWVsc2UgaWYgKE9pZElzVmFs aWQodmFyb2lkX3dpdGhvdXRfYXR0cikpCisJCQkJeworCQkJCQl2YXJpZCA9IHZhcm9pZF93aXRo b3V0X2F0dHI7CisJCQkJfQorCQkJCWVsc2UgaWYgKE9pZElzVmFsaWQodmFyb2lkX3dpdGhfYXR0 cikpCisJCQkJeworCQkJCQkqYXR0cm5hbWUgPSBiOworCQkJCQl2YXJpZCA9IHZhcm9pZF93aXRo X2F0dHI7CisJCQkJfQorCQkJCWJyZWFrOworCisJCQljYXNlIDM6CisJCQkJeworCQkJCQlib29s CQlmaWVsZDFfaXNfY2F0YWxvZyA9IGZhbHNlOworCisJCQkJCWZpZWxkMSA9IGxpbml0aWFsKG5h bWVzKTsKKwkJCQkJZmllbGQyID0gbHNlY29uZChuYW1lcyk7CisJCQkJCWZpZWxkMyA9IGx0aGly ZChuYW1lcyk7CisKKwkJCQkJQXNzZXJ0KElzQShmaWVsZDEsIFN0cmluZykpOworCQkJCQlBc3Nl cnQoSXNBKGZpZWxkMiwgU3RyaW5nKSk7CisKKwkJCQkJYSA9IHN0clZhbChmaWVsZDEpOworCQkJ CQliID0gc3RyVmFsKGZpZWxkMik7CisKKwkJCQkJaWYgKElzQShmaWVsZDMsIFN0cmluZykpCisJ CQkJCXsKKwkJCQkJCWMgPSBzdHJWYWwoZmllbGQzKTsKKworCQkJCQkJLyoKKwkJCQkJCSAqIGEu Yi5jIGNhbiBtZWFuIGNhdGFsb2cuc2NoZW1hLnZhcmlhYmxlIG9yCisJCQkJCQkgKiBzY2hlbWEu dmFyaWFibGUuZmllbGQuCisJCQkJCQkgKgorCQkJCQkJICogQ2hlY2sgYm90aCB2YXJpYW50cywg YW5kIHNldCBub3RfdW5pcXVlIGZsYWcsIHdoZW4KKwkJCQkJCSAqIGJvdGggaW50ZXJwcmV0YXRp b25zIGFyZSBwb3NzaWJsZS4KKwkJCQkJCSAqCisJCQkJCQkgKiBXaGVuIHRoaXJkIG5vZGUgaXMg c3Rhciwgb25seSBwb3NzaWJsZQorCQkJCQkJICogaW50ZXJwcmV0YXRpb24gaXMgc2NoZW1hLnZh cmlhYmxlLiosIGJ1dCB0aGlzCisJCQkJCQkgKiBwYXR0ZXJuIGlzIG5vdCBzdXBwb3J0ZWQgbm93 LgorCQkJCQkJICovCisJCQkJCQl2YXJvaWRfd2l0aF9hdHRyID0gTG9va3VwVmFyaWFibGUoYSwg YiwgdHJ1ZSk7CisKKwkJCQkJCS8qCisJCQkJCQkgKiBjaGVjayBwYXR0ZXJuIGNhdGFsb2cuc2No ZW1hLnZhcmlhYmxlIG9ubHkgd2hlbgorCQkJCQkJICogdGhlcmUgaXMgcG9zc2liaWxpdHkgdG8g c3VjY2Vzcy4KKwkJCQkJCSAqLworCQkJCQkJaWYgKHN0cmNtcChhLCBnZXRfZGF0YWJhc2VfbmFt ZShNeURhdGFiYXNlSWQpKSA9PSAwKQorCQkJCQkJeworCQkJCQkJCWZpZWxkMV9pc19jYXRhbG9n ID0gdHJ1ZTsKKwkJCQkJCQl2YXJvaWRfd2l0aG91dF9hdHRyID0gTG9va3VwVmFyaWFibGUoYiwg YywgdHJ1ZSk7CisJCQkJCQl9CisJCQkJCX0KKwkJCQkJZWxzZQorCQkJCQl7CisJCQkJCQlBc3Nl cnQoSXNBKGZpZWxkMywgQV9TdGFyKSk7CisJCQkJCQlyZXR1cm4gSW52YWxpZE9pZDsKKwkJCQkJ fQorCisJCQkJCWlmIChPaWRJc1ZhbGlkKHZhcm9pZF93aXRob3V0X2F0dHIpICYmIE9pZElzVmFs aWQodmFyb2lkX3dpdGhfYXR0cikpCisJCQkJCXsKKwkJCQkJCSpub3RfdW5pcXVlID0gdHJ1ZTsK KwkJCQkJCXZhcmlkID0gdmFyb2lkX3dpdGhvdXRfYXR0cjsKKwkJCQkJfQorCQkJCQllbHNlIGlm IChPaWRJc1ZhbGlkKHZhcm9pZF93aXRob3V0X2F0dHIpKQorCQkJCQl7CisJCQkJCQl2YXJpZCA9 IHZhcm9pZF93aXRob3V0X2F0dHI7CisJCQkJCX0KKwkJCQkJZWxzZSBpZiAoT2lkSXNWYWxpZCh2 YXJvaWRfd2l0aF9hdHRyKSkKKwkJCQkJeworCQkJCQkJKmF0dHJuYW1lID0gYzsKKwkJCQkJCXZh cmlkID0gdmFyb2lkX3dpdGhfYXR0cjsKKwkJCQkJfQorCisJCQkJCS8qCisJCQkJCSAqIFdoZW4g d2UgZGlkbid0IGZpbmQgdmFyaWFibGUsIHdlIGNhbiAod2hlbiBpdCBpcworCQkJCQkgKiBhbGxv d2VkKSByYWlzZSBjcm9zcy1kYXRhYmFzZSByZWZlcmVuY2UgZXJyb3IuCisJCQkJCSAqLworCQkJ CQlpZiAoIU9pZElzVmFsaWQodmFyaWQpICYmICFub2Vycm9yICYmICFmaWVsZDFfaXNfY2F0YWxv ZykKKwkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVS RV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJCQkJIGVycm1zZygiY3Jvc3MtZGF0YWJhc2UgcmVmZXJl bmNlcyBhcmUgbm90IGltcGxlbWVudGVkOiAlcyIsCisJCQkJCQkJCQkJTmFtZUxpc3RUb1N0cmlu ZyhuYW1lcykpKSk7CisJCQkJfQorCQkJCWJyZWFrOworCisJCQljYXNlIDQ6CisJCQkJeworCQkJ CQlmaWVsZDEgPSBsaW5pdGlhbChuYW1lcyk7CisJCQkJCWZpZWxkMiA9IGxzZWNvbmQobmFtZXMp OworCQkJCQlmaWVsZDMgPSBsdGhpcmQobmFtZXMpOworCQkJCQlmaWVsZDQgPSBsZm91cnRoKG5h bWVzKTsKKworCQkJCQlBc3NlcnQoSXNBKGZpZWxkMSwgU3RyaW5nKSk7CisJCQkJCUFzc2VydChJ c0EoZmllbGQyLCBTdHJpbmcpKTsKKwkJCQkJQXNzZXJ0KElzQShmaWVsZDMsIFN0cmluZykpOwor CisJCQkJCWEgPSBzdHJWYWwoZmllbGQxKTsKKwkJCQkJYiA9IHN0clZhbChmaWVsZDIpOworCQkJ CQljID0gc3RyVmFsKGZpZWxkMyk7CisKKwkJCQkJLyoKKwkJCQkJICogSW4gdGhpcyBjYXNlLCAi YSIgaXMgdXNlZCBhcyBjYXRhbG9nIG5hbWUgLSBjaGVjayBpdC4KKwkJCQkJICovCisJCQkJCWlm IChzdHJjbXAoYSwgZ2V0X2RhdGFiYXNlX25hbWUoTXlEYXRhYmFzZUlkKSkgIT0gMCkKKwkJCQkJ eworCQkJCQkJaWYgKCFub2Vycm9yKQorCQkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCQko ZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCQkJCQkgZXJybXNn KCJjcm9zcy1kYXRhYmFzZSByZWZlcmVuY2VzIGFyZSBub3QgaW1wbGVtZW50ZWQ6ICVzIiwKKwkJ CQkJCQkJCQkJTmFtZUxpc3RUb1N0cmluZyhuYW1lcykpKSk7CisJCQkJCX0KKwkJCQkJZWxzZQor CQkJCQl7CisJCQkJCQlpZiAoSXNBKGZpZWxkNCwgU3RyaW5nKSkKKwkJCQkJCXsKKwkJCQkJCQlk ID0gc3RyVmFsKGZpZWxkNCk7CisJCQkJCQl9CisJCQkJCQllbHNlCisJCQkJCQl7CisJCQkJCQkJ QXNzZXJ0KElzQShmaWVsZDQsIEFfU3RhcikpOworCQkJCQkJCXJldHVybiBJbnZhbGlkT2lkOwor CQkJCQkJfQorCisJCQkJCQkqYXR0cm5hbWUgPSBkOworCQkJCQkJdmFyaWQgPSBMb29rdXBWYXJp YWJsZShiLCBjLCB0cnVlKTsKKwkJCQkJfQorCQkJCX0KKwkJCQlicmVhazsKKworCQkJZGVmYXVs dDoKKwkJCQlpZiAoIW5vZXJyb3IpCisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJKGVycmNv ZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJCSBlcnJtc2coImltcHJvcGVyIHF1YWxp ZmllZCBuYW1lICh0b28gbWFueSBkb3R0ZWQgbmFtZXMpOiAlcyIsCisJCQkJCQkJCQlOYW1lTGlz dFRvU3RyaW5nKG5hbWVzKSkpKTsKKwkJCQlyZXR1cm4gSW52YWxpZE9pZDsKKwkJfQorCisJCS8q CisJCSAqIElmLCB1cG9uIHJldHJ5LCB3ZSBnZXQgYmFjayB0aGUgc2FtZSBPSUQgd2UgZGlkIGxh c3QgdGltZSwgdGhlbiB0aGUKKwkJICogaW52YWxpZGF0aW9uIG1lc3NhZ2VzIHdlIHByb2Nlc3Nl ZCBkaWQgbm90IGNoYW5nZSB0aGUgZmluYWwgYW5zd2VyLgorCQkgKiBTbyB3ZSdyZSBkb25lLgor CQkgKgorCQkgKiBJZiB3ZSBnb3QgYSBkaWZmZXJlbnQgT0lELCB3ZSd2ZSBsb2NrZWQgdGhlIHZh cmlhYmxlIHRoYXQgdXNlZCB0bworCQkgKiBoYXZlIHRoaXMgbmFtZSByYXRoZXIgdGhhbiB0aGUg b25lIHRoYXQgZG9lcyBub3cuICBTbyByZWxlYXNlIHRoZQorCQkgKiBsb2NrLgorCQkgKi8KKwkJ aWYgKHJldHJ5KQorCQl7CisJCQlpZiAob2xkX3ZhcmlkID09IHZhcmlkKQorCQkJCWJyZWFrOwor CisJCQlpZiAoT2lkSXNWYWxpZChvbGRfdmFyaWQpKQorCQkJCVVubG9ja0RhdGFiYXNlT2JqZWN0 KFZhcmlhYmxlUmVsYXRpb25JZCwgb2xkX3ZhcmlkLCAwLCBBY2Nlc3NTaGFyZUxvY2spOworCQl9 CisKKwkJLyoKKwkJICogTG9jayB0aGUgdmFyaWFibGUuICBUaGlzIHdpbGwgYWxzbyBhY2NlcHQg YW55IHBlbmRpbmcgaW52YWxpZGF0aW9uCisJCSAqIG1lc3NhZ2VzLiAgSWYgd2UgZ290IGJhY2sg SW52YWxpZE9pZCwgaW5kaWNhdGluZyBub3QgZm91bmQsIHRoZW4KKwkJICogdGhlcmUncyBub3Ro aW5nIHRvIGxvY2ssIGJ1dCB3ZSBhY2NlcHQgaW52YWxpZGF0aW9uIG1lc3NhZ2VzCisJCSAqIGFu eXdheSwgdG8gZmx1c2ggYW55IG5lZ2F0aXZlIGNhdGNhY2hlIGVudHJpZXMgdGhhdCBtYXkgYmUK KwkJICogbGluZ2VyaW5nLgorCQkgKi8KKwkJaWYgKCFPaWRJc1ZhbGlkKHZhcmlkKSkKKwkJCUFj Y2VwdEludmFsaWRhdGlvbk1lc3NhZ2VzKCk7CisJCWVsc2UgaWYgKE9pZElzVmFsaWQodmFyaWQp KQorCQkJTG9ja0RhdGFiYXNlT2JqZWN0KFZhcmlhYmxlUmVsYXRpb25JZCwgdmFyaWQsIDAsIEFj Y2Vzc1NoYXJlTG9jayk7CisKKwkJaWYgKGludmFsX2NvdW50ID09IFNoYXJlZEludmFsaWRNZXNz YWdlQ291bnRlcikKKwkJCWJyZWFrOworCisJCXJldHJ5ID0gdHJ1ZTsKKwkJb2xkX3ZhcmlkID0g dmFyaWQ7CisJCXZhcmlkID0gSW52YWxpZE9pZDsKKwl9CisKKwlyZXR1cm4gdmFyaWQ7Cit9CisK IC8qCiAgKiBEZWNvbnN0cnVjdFF1YWxpZmllZE5hbWUKICAqCQlHaXZlbiBhIHBvc3NpYmx5LXF1 YWxpZmllZCBuYW1lIGV4cHJlc3NlZCBhcyBhIGxpc3Qgb2YgU3RyaW5nIG5vZGVzLApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ192YXJpYWJsZS5jIGIvc3JjL2JhY2tlbmQvY2F0 YWxvZy9wZ192YXJpYWJsZS5jCmluZGV4IGY2NTEyMTQ0MGEuLjFjNzMxODFjM2QgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfdmFyaWFibGUuYworKysgYi9zcmMvYmFja2VuZC9j YXRhbG9nL3BnX3ZhcmlhYmxlLmMKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJwYXJzZXIv cGFyc2VfdHlwZS5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRp bHMvbHN5c2NhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvcGdfbHNuLmgiCiAjaW5jbHVkZSAidXRp bHMvc3lzY2FjaGUuaCIKIAogc3RhdGljIE9iamVjdEFkZHJlc3MgY3JlYXRlX3ZhcmlhYmxlKGNv bnN0IGNoYXIgKnZhck5hbWUsCkBAIC0xMDEsNiArMTAyLDcgQEAgY3JlYXRlX3ZhcmlhYmxlKGNv bnN0IGNoYXIgKnZhck5hbWUsCiAJdmFyaWQgPSBHZXROZXdPaWRXaXRoSW5kZXgocmVsLCBWYXJp YWJsZU9pZEluZGV4SWQsIEFudW1fcGdfdmFyaWFibGVfb2lkKTsKIAogCXZhbHVlc1tBbnVtX3Bn X3ZhcmlhYmxlX29pZCAtIDFdID0gT2JqZWN0SWRHZXREYXR1bSh2YXJpZCk7CisJdmFsdWVzW0Fu dW1fcGdfdmFyaWFibGVfdmFyY3JlYXRlX2xzbiAtIDFdID0gTFNOR2V0RGF0dW0oR2V0WExvZ0lu c2VydFJlY1B0cigpKTsKIAl2YWx1ZXNbQW51bV9wZ192YXJpYWJsZV92YXJuYW1lIC0gMV0gPSBO YW1lR2V0RGF0dW0oJnZhcm5hbWUpOwogCXZhbHVlc1tBbnVtX3BnX3ZhcmlhYmxlX3Zhcm5hbWVz cGFjZSAtIDFdID0gT2JqZWN0SWRHZXREYXR1bSh2YXJOYW1lc3BhY2UpOwogCXZhbHVlc1tBbnVt X3BnX3ZhcmlhYmxlX3ZhcnR5cGUgLSAxXSA9IE9iamVjdElkR2V0RGF0dW0odmFyVHlwZSk7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9NYWtlZmlsZSBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL01ha2VmaWxlCmluZGV4IDQ4ZjczNDhmOTEuLjFjZmFlY2E1MWUgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL01ha2VmaWxlCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L01ha2VmaWxlCkBAIC01MCw2ICs1MCw3IEBAIE9CSlMgPSBcCiAJc2NoZW1hY21kcy5vIFwKIAlz ZWNsYWJlbC5vIFwKIAlzZXF1ZW5jZS5vIFwKKwlzZXNzaW9uX3ZhcmlhYmxlLm8gXAogCXN0YXRz Y21kcy5vIFwKIAlzdWJzY3JpcHRpb25jbWRzLm8gXAogCXRhYmxlY21kcy5vIFwKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21lc29uLmJ1aWxkIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvbWVzb24uYnVpbGQKaW5kZXggNmRkMDBhNGFiZC4uY2E2MjFiZTVlYyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvbWVzb24uYnVpbGQKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvbWVzb24uYnVpbGQKQEAgLTM4LDYgKzM4LDcgQEAgYmFja2VuZF9zb3VyY2VzICs9IGZpbGVz KAogICAnc2NoZW1hY21kcy5jJywKICAgJ3NlY2xhYmVsLmMnLAogICAnc2VxdWVuY2UuYycsCisg ICdzZXNzaW9uX3ZhcmlhYmxlLmMnLAogICAnc3RhdHNjbWRzLmMnLAogICAnc3Vic2NyaXB0aW9u Y21kcy5jJywKICAgJ3RhYmxlY21kcy5jJywKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3Nlc3Npb25fdmFyaWFibGUuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3Nlc3Npb25fdmFy aWFibGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4yM2U3ZmE5OWY3 Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2Vzc2lvbl92YXJpYWJs ZS5jCkBAIC0wLDAgKzEsNTc0IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBzZXNzaW9u X3ZhcmlhYmxlLmMKKyAqCSAgc2Vzc2lvbiB2YXJpYWJsZSBjcmVhdGlvbi9tYW5pcHVsYXRpb24g Y29tbWFuZHMKKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyNCwgUG9zdGdy ZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykg MTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCisgKgorICoKKyAq IElERU5USUZJQ0FUSU9OCisgKgkgIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3Nlc3Npb25fdmFyaWFi bGUuYworICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjaW5jbHVkZSAicG9zdGdyZXMuaCIK KworI2luY2x1ZGUgImNhdGFsb2cvcGdfdmFyaWFibGUuaCIKKyNpbmNsdWRlICJjb21tYW5kcy9z ZXNzaW9uX3ZhcmlhYmxlLmgiCisjaW5jbHVkZSAiZXhlY3V0b3Ivc3ZhcmlhYmxlUmVjZWl2ZXIu aCIKKyNpbmNsdWRlICJmdW5jYXBpLmgiCisjaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVk ZSAicmV3cml0ZS9yZXdyaXRlSGFuZGxlci5oIgorI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgor I2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgorI2luY2x1ZGUgInRjb3AvdGNvcHByb3QuaCIKKyNp bmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgorI2luY2x1ZGUgInV0aWxzL2RhdHVtLmgiCisjaW5j bHVkZSAidXRpbHMvaW52YWwuaCIKKyNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKKyNpbmNs dWRlICJ1dGlscy9zbmFwbWdyLmgiCisjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKKworLyoK KyAqIFRoZSB2YWx1ZXMgb2Ygc2Vzc2lvbiB2YXJpYWJsZXMgYXJlIHN0b3JlZCBpbiB0aGUgYmFj a2VuZCdzIHByaXZhdGUgbWVtb3J5CisgKiBpbiB0aGUgZGVkaWNhdGVkIG1lbW9yeSBjb250ZXh0 IFNWYXJpYWJsZU1lbW9yeUNvbnRleHQgaW4gYmluYXJ5IGZvcm1hdC4KKyAqIFRoZXkgYXJlIHN0 b3JlZCBpbiB0aGUgInNlc3Npb252YXJzIiBoYXNoIHRhYmxlLCB3aG9zZSBrZXkgaXMgdGhlIE9J RCBvZiB0aGUKKyAqIHZhcmlhYmxlLiAgSG93ZXZlciwgdGhlIE9JRCBpcyBub3QgZ29vZCBlbm91 Z2ggdG8gaWRlbnRpZnkgYSBzZXNzaW9uCisgKiB2YXJpYWJsZTogY29uY3VycmVudCBzZXNzaW9u cyBjb3VsZCBkcm9wIHRoZSBzZXNzaW9uIHZhcmlhYmxlIGFuZCBjcmVhdGUgYQorICogbmV3IG9u ZSwgd2hpY2ggY291bGQgYmUgYXNzaWduZWQgdGhlIHNhbWUgT0lELiAgVG8gZW5zdXJlIHRoYXQg dGhlIHZhbHVlcworICogc3RvcmVkIGluIG1lbW9yeSBhbmQgdGhlIGNhdGFsb2cgZGVmaW5pdGlv biBtYXRjaCwgd2UgYWxzbyBrZWVwIHRyYWNrIG9mCisgKiB0aGUgImNyZWF0ZV9sc24iLiAgQmVm b3JlIGFueSBhY2Nlc3MgdG8gdGhlIHZhcmlhYmxlIHZhbHVlcywgd2UgbmVlZCB0bworICogY2hl Y2sgaWYgdGhlIExTTiBzdG9yZWQgaW4gbWVtb3J5IG1hdGNoZXMgdGhlIExTTiBpbiB0aGUgY2F0 YWxvZy4gIElmIHRoZXJlCisgKiBpcyBhIG1pc21hdGNoIGJldHdlZW4gdGhlIExTTnMsIG9yIGlm IHRoZSBPSUQgaXMgbm90IHByZXNlbnQgaW4gcGdfdmFyaWFibGUKKyAqIGF0IGFsbCwgdGhlIHZh bHVlIHN0b3JlZCBpbiBtZW1vcnkgaXMgcmVsZWFzZWQuCisgKi8KK3R5cGVkZWYgc3RydWN0IFNW YXJpYWJsZURhdGEKK3sKKwlPaWQJCQl2YXJpZDsJCQkvKiBwZ192YXJpYWJsZSBPSUQgb2YgdGhl IHZhcmlhYmxlIChoYXNoIGtleSkgKi8KKwlYTG9nUmVjUHRyCWNyZWF0ZV9sc247CisKKwlib29s CQlpc251bGw7CisJRGF0dW0JCXZhbHVlOworCisJT2lkCQkJdHlwaWQ7CisJaW50MTYJCXR5cGxl bjsKKwlib29sCQl0eXBieXZhbDsKKworCWJvb2wJCWlzX2RvbWFpbjsKKworCS8qCisJICogZG9t YWluX2NoZWNrX2V4dHJhIGhvbGRzIGNhY2hlZCBkb21haW4gbWV0YWRhdGEuICBUaGlzICJleHRy YSIgaXMKKwkgKiB1c3VhbGx5IHN0b3JlZCBpbiBmbl9tY3h0LiAgV2UgZG8gbm90IGhhdmUgYWNj ZXNzIHRvIHRoYXQgbWVtb3J5IGNvbnRleHQKKwkgKiBmb3Igc2Vzc2lvbiB2YXJpYWJsZXMsIGJ1 dCB3ZSBjYW4gdXNlIFRvcFRyYW5zYWN0aW9uQ29udGV4dCBpbnN0ZWFkLgorCSAqIEEgZnJlc2gg dmFsdWUgaXMgZm9yY2VkIHdoZW4gd2UgZGV0ZWN0IHdlIGFyZSBpbiBhIGRpZmZlcmVudCB0cmFu c2FjdGlvbgorCSAqICh0aGUgbG9jYWwgdHJhbnNhY3Rpb24gSUQgZGlmZmVycyBmcm9tIGRvbWFp bl9jaGVja19leHRyYV9seGlkKS4KKwkgKi8KKwl2b2lkCSAgICpkb21haW5fY2hlY2tfZXh0cmE7 CisJTG9jYWxUcmFuc2FjdGlvbklkIGRvbWFpbl9jaGVja19leHRyYV9seGlkOworCisJLyoKKwkg KiBTdG9yZWQgdmFsdWUgYW5kIHR5cGUgZGVzY3JpcHRpb24gY2FuIGJlIG91dGRhdGVkIHdoZW4g d2UgcmVjZWl2ZSBhCisJICogc2ludmFsIG1lc3NhZ2UuICBXZSB0aGVuIGhhdmUgdG8gY2hlY2sg aWYgdGhlIHN0b3JlZCBkYXRhIGFyZSBzdGlsbAorCSAqIHRydXN0d29ydGh5LgorCSAqLworCWJv b2wJCWlzX3ZhbGlkOworCisJdWludDMyCQloYXNodmFsdWU7CQkvKiB1c2VkIGZvciBwYWlyaW5n IHNpbnZhbCBtZXNzYWdlICovCit9IFNWYXJpYWJsZURhdGE7CisKK3R5cGVkZWYgU1ZhcmlhYmxl RGF0YSAqU1ZhcmlhYmxlOworCitzdGF0aWMgSFRBQiAqc2Vzc2lvbnZhcnMgPSBOVUxMOwkvKiBo YXNoIHRhYmxlIGZvciBzZXNzaW9uIHZhcmlhYmxlcyAqLworCitzdGF0aWMgTWVtb3J5Q29udGV4 dCBTVmFyaWFibGVNZW1vcnlDb250ZXh0ID0gTlVMTDsKKworLyoKKyAqIENhbGxiYWNrIGZ1bmN0 aW9uIGZvciBzZXNzaW9uIHZhcmlhYmxlIGludmFsaWRhdGlvbi4KKyAqLworc3RhdGljIHZvaWQK K3BnX3ZhcmlhYmxlX2NhY2hlX2NhbGxiYWNrKERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVpbnQz MiBoYXNodmFsdWUpCit7CisJSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKKwlTVmFyaWFibGUJc3Zh cjsKKworCWVsb2coREVCVUcxLCAicGdfdmFyaWFibGVfY2FjaGVfY2FsbGJhY2sgJXUgJXUiLCBj YWNoZWlkLCBoYXNodmFsdWUpOworCisJQXNzZXJ0KHNlc3Npb252YXJzKTsKKworCS8qCisJICog SWYgdGhlIGhhc2h2YWx1ZSBpcyBub3Qgc3BlY2lmaWVkLCB3ZSBoYXZlIHRvIHJlY2hlY2sgYWxs IGN1cnJlbnRseQorCSAqIHVzZWQgc2Vzc2lvbiB2YXJpYWJsZXMuICBTaW5jZSB3ZSBjYW4ndCB0 ZWxsIHRoZSBleGFjdCBzZXNzaW9uIHZhcmlhYmxlCisJICogZnJvbSBpdHMgaGFzaHZhbHVlLCB3 ZSBoYXZlIHRvIGl0ZXJhdGUgb3ZlciBhbGwgaXRlbXMgaW4gdGhlIGhhc2ggYnVja2V0LgorCSAq LworCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgc2Vzc2lvbnZhcnMpOworCisJd2hpbGUgKChzdmFy ID0gKFNWYXJpYWJsZSkgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCXsKKwkJ aWYgKGhhc2h2YWx1ZSA9PSAwIHx8IHN2YXItPmhhc2h2YWx1ZSA9PSBoYXNodmFsdWUpCisJCXsK KwkJCXN2YXItPmlzX3ZhbGlkID0gZmFsc2U7CisJCX0KKwl9Cit9CisKKy8qCisgKiBSZWxlYXNl IHN0b3JlZCB2YWx1ZSwgZnJlZSBtZW1vcnkKKyAqLworc3RhdGljIHZvaWQKK2ZyZWVfc2Vzc2lv bl92YXJpYWJsZV92YWx1ZShTVmFyaWFibGUgc3ZhcikKK3sKKwkvKiBjbGVhbiB0aGUgY3VycmVu dCB2YWx1ZSAqLworCWlmICghc3Zhci0+aXNudWxsKQorCXsKKwkJaWYgKCFzdmFyLT50eXBieXZh bCkKKwkJCXBmcmVlKERhdHVtR2V0UG9pbnRlcihzdmFyLT52YWx1ZSkpOworCisJCXN2YXItPmlz bnVsbCA9IHRydWU7CisJfQorCisJc3Zhci0+dmFsdWUgPSAoRGF0dW0pIDA7Cit9CisKKy8qCisg KiBSZXR1cm5zIHRydWUgd2hlbiB0aGUgZW50cnkgaW4gcGdfdmFyaWFibGUgaXMgY29uc2lzdGVu dCB3aXRoIHRoZSBnaXZlbgorICogc2Vzc2lvbiB2YXJpYWJsZS4KKyAqLworc3RhdGljIGJvb2wK K2lzX3Nlc3Npb25fdmFyaWFibGVfdmFsaWQoU1ZhcmlhYmxlIHN2YXIpCit7CisJSGVhcFR1cGxl CXRwOworCWJvb2wJCXJlc3VsdCA9IGZhbHNlOworCisJQXNzZXJ0KE9pZElzVmFsaWQoc3Zhci0+ dmFyaWQpKTsKKworCXRwID0gU2VhcmNoU3lzQ2FjaGUxKFZBUklBQkxFT0lELCBPYmplY3RJZEdl dERhdHVtKHN2YXItPnZhcmlkKSk7CisKKwlpZiAoSGVhcFR1cGxlSXNWYWxpZCh0cCkpCisJewor CQkvKgorCQkgKiBUaGUgT0lEIGFsb25lIGlzIG5vdCBlbm91Z2ggYXMgYW4gdW5pcXVlIGlkZW50 aWZpZXIsIGJlY2F1c2UgT0lECisJCSAqIHZhbHVlcyBnZXQgcmVjeWNsZWQsIGFuZCBhIG5ldyBz ZXNzaW9uIHZhcmlhYmxlIGNvdWxkIGhhdmUgZ290CisJCSAqIHRoZSBzYW1lIE9JRC4gIFdlIGRv IGEgc2Vjb25kIGNoZWNrIGFnYWluc3QgdGhlIDY0LWJpdCBMU04gd2hlbgorCQkgKiB0aGUgdmFy aWFibGUgd2FzIGNyZWF0ZWQuCisJCSAqLworCQlpZiAoc3Zhci0+Y3JlYXRlX2xzbiA9PSAoKEZv cm1fcGdfdmFyaWFibGUpIEdFVFNUUlVDVCh0cCkpLT52YXJjcmVhdGVfbHNuKQorCQkJcmVzdWx0 ID0gdHJ1ZTsKKworCQlSZWxlYXNlU3lzQ2FjaGUodHApOworCX0KKworCXJldHVybiByZXN1bHQ7 Cit9CisKKy8qCisgKiBJbml0aWFsaXplIGF0dHJpYnV0ZXMgY2FjaGVkIGluICJzdmFyIgorICov CitzdGF0aWMgdm9pZAorc2V0dXBfc2Vzc2lvbl92YXJpYWJsZShTVmFyaWFibGUgc3ZhciwgT2lk IHZhcmlkKQoreworCUhlYXBUdXBsZQl0dXA7CisJRm9ybV9wZ192YXJpYWJsZSB2YXJmb3JtOwor CisJQXNzZXJ0KE9pZElzVmFsaWQodmFyaWQpKTsKKworCXR1cCA9IFNlYXJjaFN5c0NhY2hlMShW QVJJQUJMRU9JRCwgT2JqZWN0SWRHZXREYXR1bSh2YXJpZCkpOworCisJaWYgKCFIZWFwVHVwbGVJ c1ZhbGlkKHR1cCkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBzZXNz aW9uIHZhcmlhYmxlICV1IiwgdmFyaWQpOworCisJdmFyZm9ybSA9IChGb3JtX3BnX3ZhcmlhYmxl KSBHRVRTVFJVQ1QodHVwKTsKKworCXN2YXItPnZhcmlkID0gdmFyaWQ7CisJc3Zhci0+Y3JlYXRl X2xzbiA9IHZhcmZvcm0tPnZhcmNyZWF0ZV9sc247CisKKwlzdmFyLT50eXBpZCA9IHZhcmZvcm0t PnZhcnR5cGU7CisKKwlnZXRfdHlwbGVuYnl2YWwoc3Zhci0+dHlwaWQsICZzdmFyLT50eXBsZW4s ICZzdmFyLT50eXBieXZhbCk7CisKKwlzdmFyLT5pc19kb21haW4gPSAoZ2V0X3R5cHR5cGUodmFy Zm9ybS0+dmFydHlwZSkgPT0gVFlQVFlQRV9ET01BSU4pOworCXN2YXItPmRvbWFpbl9jaGVja19l eHRyYSA9IE5VTEw7CisJc3Zhci0+ZG9tYWluX2NoZWNrX2V4dHJhX2x4aWQgPSBJbnZhbGlkTG9j YWxUcmFuc2FjdGlvbklkOworCisJc3Zhci0+aXNudWxsID0gdHJ1ZTsKKwlzdmFyLT52YWx1ZSA9 IChEYXR1bSkgMDsKKworCXN2YXItPmlzX3ZhbGlkID0gdHJ1ZTsKKworCXN2YXItPmhhc2h2YWx1 ZSA9IEdldFN5c0NhY2hlSGFzaFZhbHVlMShWQVJJQUJMRU9JRCwKKwkJCQkJCQkJCQkJT2JqZWN0 SWRHZXREYXR1bSh2YXJpZCkpOworCisJUmVsZWFzZVN5c0NhY2hlKHR1cCk7Cit9CisKKy8qCisg KiBBc3NpZ24gYSBuZXcgdmFsdWUgdG8gdGhlIHNlc3Npb24gdmFyaWFibGUuICBJdCBpcyBjb3Bp ZWQgdG8KKyAqIFNWYXJpYWJsZU1lbW9yeUNvbnRleHQgaWYgbmVjZXNzYXJ5LgorICoKKyAqIElm IGFueSBlcnJvciBoYXBwZW5zLCB0aGUgZXhpc3RpbmcgdmFsdWUgd29uJ3QgYmUgbW9kaWZpZWQu CisgKi8KK3N0YXRpYyB2b2lkCitzZXRfc2Vzc2lvbl92YXJpYWJsZShTVmFyaWFibGUgc3Zhciwg RGF0dW0gdmFsdWUsIGJvb2wgaXNudWxsKQoreworCURhdHVtCQluZXd2YWw7CisJU1ZhcmlhYmxl RGF0YSBsb2NzdmFyLAorCQkJICAgKl9zdmFyOworCisJQXNzZXJ0KHN2YXIpOworCUFzc2VydCgh aXNudWxsIHx8IHZhbHVlID09IChEYXR1bSkgMCk7CisKKwkvKgorCSAqIFVzZSB0eXBieXZhbCwg dHlwYnlsZW4gZnJvbSBzZXNzaW9uIHZhcmlhYmxlIG9ubHkgd2hlbiB0aGV5IGFyZQorCSAqIHRy dXN0d29ydGh5ICh0aGUgaW52YWxpZGF0aW9uIG1lc3NhZ2Ugd2FzIG5vdCBhY2NlcHRlZCBmb3Ig dGhpcworCSAqIHZhcmlhYmxlKS4gIElmIHRoZSB2YXJpYWJsZSBtaWdodCBiZSBpbnZhbGlkLCBm b3JjZSBzZXR1cC4KKwkgKgorCSAqIERvIG5vdCBvdmVyd3JpdGUgdGhlIHBhc3NlZCBzZXNzaW9u IHZhcmlhYmxlIHVudGlsIHdlIGNhbiBiZSBjZXJ0YWluCisJICogdGhhdCBubyBlcnJvciBjYW4g YmUgdGhyb3duLgorCSAqLworCWlmICghc3Zhci0+aXNfdmFsaWQpCisJeworCQlzZXR1cF9zZXNz aW9uX3ZhcmlhYmxlKCZsb2NzdmFyLCBzdmFyLT52YXJpZCk7CisJCV9zdmFyID0gJmxvY3N2YXI7 CisJfQorCWVsc2UKKwkJX3N2YXIgPSBzdmFyOworCisJaWYgKCFpc251bGwpCisJeworCQlNZW1v cnlDb250ZXh0IG9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhTVmFyaWFibGVNZW1vcnlD b250ZXh0KTsKKworCQluZXd2YWwgPSBkYXR1bUNvcHkodmFsdWUsIF9zdmFyLT50eXBieXZhbCwg X3N2YXItPnR5cGxlbik7CisKKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7CisJfQor CWVsc2UKKwkJbmV3dmFsID0gdmFsdWU7CisKKwlmcmVlX3Nlc3Npb25fdmFyaWFibGVfdmFsdWUo c3Zhcik7CisKKwllbG9nKERFQlVHMSwgInNlc3Npb24gdmFyaWFibGUgXCIlcy4lc1wiIChvaWQ6 JXUpIGhhcyBuZXcgdmFsdWUiLAorCQkgZ2V0X25hbWVzcGFjZV9uYW1lKGdldF9zZXNzaW9uX3Zh cmlhYmxlX25hbWVzcGFjZShzdmFyLT52YXJpZCkpLAorCQkgZ2V0X3Nlc3Npb25fdmFyaWFibGVf bmFtZShzdmFyLT52YXJpZCksCisJCSBzdmFyLT52YXJpZCk7CisKKwkvKiBubyBtb3JlIGVycm9y IGV4cGVjdGVkLCBzbyB3ZSBjYW4gb3ZlcndyaXRlIHRoZSBvbGQgdmFyaWFibGUgbm93ICovCisJ aWYgKHN2YXIgIT0gX3N2YXIpCisJCW1lbWNweShzdmFyLCBfc3Zhciwgc2l6ZW9mKFNWYXJpYWJs ZURhdGEpKTsKKworCXN2YXItPnZhbHVlID0gbmV3dmFsOworCXN2YXItPmlzbnVsbCA9IGlzbnVs bDsKK30KKworLyoKKyAqIENyZWF0ZSB0aGUgaGFzaCB0YWJsZSBmb3Igc3RvcmluZyBzZXNzaW9u IHZhcmlhYmxlcy4KKyAqLworc3RhdGljIHZvaWQKK2NyZWF0ZV9zZXNzaW9udmFyc19oYXNodGFi bGVzKHZvaWQpCit7CisJSEFTSENUTAkJdmFyc19jdGw7CisKKwlBc3NlcnQoIXNlc3Npb252YXJz KTsKKworCWlmICghU1ZhcmlhYmxlTWVtb3J5Q29udGV4dCkKKwl7CisJCS8qIHJlYWQgc2ludmFs IG1lc3NhZ2VzICovCisJCUNhY2hlUmVnaXN0ZXJTeXNjYWNoZUNhbGxiYWNrKFZBUklBQkxFT0lE LAorCQkJCQkJCQkJICBwZ192YXJpYWJsZV9jYWNoZV9jYWxsYmFjaywKKwkJCQkJCQkJCSAgKERh dHVtKSAwKTsKKworCQkvKiB3ZSBuZWVkIG91ciBvd24gbG9uZy1saXZlZCBtZW1vcnkgY29udGV4 dCAqLworCQlTVmFyaWFibGVNZW1vcnlDb250ZXh0ID0KKwkJCUFsbG9jU2V0Q29udGV4dENyZWF0 ZShUb3BNZW1vcnlDb250ZXh0LAorCQkJCQkJCQkgICJzZXNzaW9uIHZhcmlhYmxlcyIsCisJCQkJ CQkJCSAgQUxMT0NTRVRfU1RBUlRfU01BTExfU0laRVMpOworCX0KKworCW1lbXNldCgmdmFyc19j dGwsIDAsIHNpemVvZih2YXJzX2N0bCkpOworCXZhcnNfY3RsLmtleXNpemUgPSBzaXplb2YoT2lk KTsKKwl2YXJzX2N0bC5lbnRyeXNpemUgPSBzaXplb2YoU1ZhcmlhYmxlRGF0YSk7CisJdmFyc19j dGwuaGN4dCA9IFNWYXJpYWJsZU1lbW9yeUNvbnRleHQ7CisKKwlzZXNzaW9udmFycyA9IGhhc2hf Y3JlYXRlKCJTZXNzaW9uIHZhcmlhYmxlcyIsIDY0LCAmdmFyc19jdGwsCisJCQkJCQkJICBIQVNI X0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsKK30KKworLyoKKyAqIFNlYXJjaCBh IHNlc3Npb24gdmFyaWFibGUgaW4gdGhlIGhhc2ggdGFibGUgZ2l2ZW4gaXRzIE9JRC4gIElmIGl0 CisgKiBkb2Vzbid0IGV4aXN0LCB0aGVuIGluc2VydCBpdCB0aGVyZS4KKyAqCisgKiBUaGUgY2Fs bGVyIGlzIHJlc3BvbnNpYmxlIGZvciBkb2luZyBwZXJtaXNzaW9uIGNoZWNrcy4KKyAqCisgKiBB cyBhIHNpZGUgZWZmZWN0LCB0aGlzIGZ1bmN0aW9uIGFjcXVpcmVzIGEgQWNjZXNzU2hhcmVMb2Nr IG9uIHRoZQorICogc2Vzc2lvbiB2YXJpYWJsZSB1bnRpbCB0aGUgZW5kIG9mIHRoZSB0cmFuc2Fj dGlvbi4KKyAqLworc3RhdGljIFNWYXJpYWJsZQorZ2V0X3Nlc3Npb25fdmFyaWFibGUoT2lkIHZh cmlkKQoreworCVNWYXJpYWJsZQlzdmFyOworCWJvb2wJCWZvdW5kOworCisJLyogcHJvdGVjdCB0 aGUgdXNlZCBzZXNzaW9uIHZhcmlhYmxlIGFnYWluc3QgRFJPUCAqLworCUxvY2tEYXRhYmFzZU9i amVjdChWYXJpYWJsZVJlbGF0aW9uSWQsIHZhcmlkLCAwLCBBY2Nlc3NTaGFyZUxvY2spOworCisJ aWYgKCFzZXNzaW9udmFycykKKwkJY3JlYXRlX3Nlc3Npb252YXJzX2hhc2h0YWJsZXMoKTsKKwor CXN2YXIgPSAoU1ZhcmlhYmxlKSBoYXNoX3NlYXJjaChzZXNzaW9udmFycywgJnZhcmlkLAorCQkJ CQkJCQkgICBIQVNIX0VOVEVSLCAmZm91bmQpOworCisJaWYgKGZvdW5kKQorCXsKKwkJaWYgKCFz dmFyLT5pc192YWxpZCkKKwkJeworCQkJLyoKKwkJCSAqIElmIHRoZXJlIHdhcyBhbiBpbnZhbGlk YXRpb24gbWVzc2FnZSwgdGhlIHZhcmlhYmxlIG1pZ2h0IHN0aWxsIGJlCisJCQkgKiB2YWxpZCwg YnV0IHdlIGhhdmUgdG8gY2hlY2sgd2l0aCB0aGUgc3lzdGVtIGNhdGFsb2cuCisJCQkgKi8KKwkJ CWlmIChpc19zZXNzaW9uX3ZhcmlhYmxlX3ZhbGlkKHN2YXIpKQorCQkJCXN2YXItPmlzX3ZhbGlk ID0gdHJ1ZTsKKwkJCWVsc2UKKwkJCQkvKiBpZiB0aGUgdmFsdWUgY2Fubm90IGJlIHZhbGlkYXRl ZCwgd2UgaGF2ZSB0byBkaXNjYXJkIGl0ICovCisJCQkJZnJlZV9zZXNzaW9uX3ZhcmlhYmxlX3Zh bHVlKHN2YXIpOworCQl9CisJfQorCWVsc2UKKwkJc3Zhci0+aXNfdmFsaWQgPSBmYWxzZTsKKwor CS8qCisJICogRm9yY2Ugc2V0dXAgZm9yIG5vdCB5ZXQgaW5pdGlhbGl6ZWQgdmFyaWFibGVzIG9y IHZhcmlhYmxlcyB0aGF0IGNhbm5vdAorCSAqIGJlIHZhbGlkYXRlZC4KKwkgKi8KKwlpZiAoIXN2 YXItPmlzX3ZhbGlkKQorCXsKKwkJc2V0dXBfc2Vzc2lvbl92YXJpYWJsZShzdmFyLCB2YXJpZCk7 CisKKwkJZWxvZyhERUJVRzEsICJzZXNzaW9uIHZhcmlhYmxlIFwiJXMuJXNcIiAob2lkOiV1KSBo YXMgYXNzaWduZWQgZW50cnkgaW4gbWVtb3J5IChlbWl0dGVkIGJ5IFJFQUQpIiwKKwkJCSBnZXRf bmFtZXNwYWNlX25hbWUoZ2V0X3Nlc3Npb25fdmFyaWFibGVfbmFtZXNwYWNlKHZhcmlkKSksCisJ CQkgZ2V0X3Nlc3Npb25fdmFyaWFibGVfbmFtZSh2YXJpZCksCisJCQkgdmFyaWQpOworCX0KKwor CS8qIGVuc3VyZSB0aGUgcmV0dXJuZWQgZGF0YSBpcyBzdGlsbCBvZiB0aGUgY29ycmVjdCBkb21h aW4gKi8KKwlpZiAoc3Zhci0+aXNfZG9tYWluKQorCXsKKwkJLyoKKwkJICogU3RvcmUgImV4dHJh IiBmb3IgZG9tYWluX2NoZWNrKCkgaW4gVG9wVHJhbnNhY3Rpb25Db250ZXh0LiAgV2hlbiB3ZQor CQkgKiBhcmUgaW4gYSBuZXcgdHJhbnNhY3Rpb24sIGRvbWFpbl9jaGVja19leHRyYSBjYWNoZSBp cyBub3QgdmFsaWQgYW55CisJCSAqIG1vcmUuCisJCSAqLworCQlpZiAoc3Zhci0+ZG9tYWluX2No ZWNrX2V4dHJhX2x4aWQgIT0gTXlQcm9jLT52eGlkLmx4aWQpCisJCQlzdmFyLT5kb21haW5fY2hl Y2tfZXh0cmEgPSBOVUxMOworCisJCWRvbWFpbl9jaGVjayhzdmFyLT52YWx1ZSwgc3Zhci0+aXNu dWxsLAorCQkJCQkgc3Zhci0+dHlwaWQsICZzdmFyLT5kb21haW5fY2hlY2tfZXh0cmEsCisJCQkJ CSBUb3BUcmFuc2FjdGlvbkNvbnRleHQpOworCisJCXN2YXItPmRvbWFpbl9jaGVja19leHRyYV9s eGlkID0gTXlQcm9jLT52eGlkLmx4aWQ7CisJfQorCisJcmV0dXJuIHN2YXI7Cit9CisKKy8qCisg KiBTdG9yZSB0aGUgZ2l2ZW4gdmFsdWUgaW4gYSBzZXNzaW9uIHZhcmlhYmxlIGluIHRoZSBjYWNo ZS4KKyAqCisgKiBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBkb2luZyBwZXJtaXNzaW9u IGNoZWNrcy4KKyAqCisgKiBBcyBhIHNpZGUgZWZmZWN0LCB0aGlzIGZ1bmN0aW9uIGFjcXVpcmVz IGEgQWNjZXNzU2hhcmVMb2NrIG9uIHRoZSBzZXNzaW9uCisgKiB2YXJpYWJsZSB1bnRpbCB0aGUg ZW5kIG9mIHRoZSB0cmFuc2FjdGlvbi4KKyAqLwordm9pZAorU2V0U2Vzc2lvblZhcmlhYmxlKE9p ZCB2YXJpZCwgRGF0dW0gdmFsdWUsIGJvb2wgaXNOdWxsKQoreworCVNWYXJpYWJsZQlzdmFyOwor CWJvb2wJCWZvdW5kOworCisJLyogcHJvdGVjdCB1c2VkIHNlc3Npb24gdmFyaWFibGUgYWdhaW5z dCBEUk9QICovCisJTG9ja0RhdGFiYXNlT2JqZWN0KFZhcmlhYmxlUmVsYXRpb25JZCwgdmFyaWQs IDAsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwlpZiAoIXNlc3Npb252YXJzKQorCQljcmVhdGVfc2Vz c2lvbnZhcnNfaGFzaHRhYmxlcygpOworCisJc3ZhciA9IChTVmFyaWFibGUpIGhhc2hfc2VhcmNo KHNlc3Npb252YXJzLCAmdmFyaWQsCisJCQkJCQkJCSAgIEhBU0hfRU5URVIsICZmb3VuZCk7CisK KwlpZiAoIWZvdW5kKQorCXsKKwkJc2V0dXBfc2Vzc2lvbl92YXJpYWJsZShzdmFyLCB2YXJpZCk7 CisKKwkJZWxvZyhERUJVRzEsICJzZXNzaW9uIHZhcmlhYmxlIFwiJXMuJXNcIiAob2lkOiV1KSBo YXMgYXNzaWduZWQgZW50cnkgaW4gbWVtb3J5IChlbWl0dGVkIGJ5IFdSSVRFKSIsCisJCQkgZ2V0 X25hbWVzcGFjZV9uYW1lKGdldF9zZXNzaW9uX3ZhcmlhYmxlX25hbWVzcGFjZShzdmFyLT52YXJp ZCkpLAorCQkJIGdldF9zZXNzaW9uX3ZhcmlhYmxlX25hbWUoc3Zhci0+dmFyaWQpLAorCQkJIHZh cmlkKTsKKwl9CisKKwkvKiBpZiB0aGlzIGZhaWxzLCBpdCB3b24ndCBjaGFuZ2UgdGhlIHN0b3Jl ZCB2YWx1ZSAqLworCXNldF9zZXNzaW9uX3ZhcmlhYmxlKHN2YXIsIHZhbHVlLCBpc051bGwpOwor fQorCisvKgorICogV3JhcHBlciBhcm91bmQgU2V0U2Vzc2lvblZhcmlhYmxlIHdpdGggcGVybWlz c2lvbiBjaGVja3MuCisgKi8KK3ZvaWQKK1NldFNlc3Npb25WYXJpYWJsZVdpdGhTZWN1cml0eUNo ZWNrKE9pZCB2YXJpZCwgRGF0dW0gdmFsdWUsIGJvb2wgaXNOdWxsKQoreworCUFjbFJlc3VsdAlh Y2xyZXN1bHQ7CisKKwkvKiBpcyB0aGUgY2FsbGVyIGFsbG93ZWQgdG8gdXBkYXRlIHRoZSBzZXNz aW9uIHZhcmlhYmxlPyAqLworCWFjbHJlc3VsdCA9IG9iamVjdF9hY2xjaGVjayhWYXJpYWJsZVJl bGF0aW9uSWQsIHZhcmlkLCBHZXRVc2VySWQoKSwgQUNMX1VQREFURSk7CisJaWYgKGFjbHJlc3Vs dCAhPSBBQ0xDSEVDS19PSykKKwkJYWNsY2hlY2tfZXJyb3IoYWNscmVzdWx0LCBPQkpFQ1RfVkFS SUFCTEUsIGdldF9zZXNzaW9uX3ZhcmlhYmxlX25hbWUodmFyaWQpKTsKKworCVNldFNlc3Npb25W YXJpYWJsZSh2YXJpZCwgdmFsdWUsIGlzTnVsbCk7Cit9CisKKy8qCisgKiBSZXR1cm5zIGEgY29w eSBvZiB0aGUgdmFsdWUgc3RvcmVkIGluIGEgdmFyaWFibGUuCisgKi8KK3N0YXRpYyBpbmxpbmUg RGF0dW0KK2NvcHlfc2Vzc2lvbl92YXJpYWJsZV92YWx1ZShTVmFyaWFibGUgc3ZhciwgYm9vbCAq aXNOdWxsKQoreworCURhdHVtCQl2YWx1ZTsKKworCS8qIGZvcmNlIGNvcHkgb2Ygbm9uIE5VTEwg dmFsdWUgKi8KKwlpZiAoIXN2YXItPmlzbnVsbCkKKwl7CisJCXZhbHVlID0gZGF0dW1Db3B5KHN2 YXItPnZhbHVlLCBzdmFyLT50eXBieXZhbCwgc3Zhci0+dHlwbGVuKTsKKwkJKmlzTnVsbCA9IGZh bHNlOworCX0KKwllbHNlCisJeworCQl2YWx1ZSA9IChEYXR1bSkgMDsKKwkJKmlzTnVsbCA9IHRy dWU7CisJfQorCisJcmV0dXJuIHZhbHVlOworfQorCisvKgorICogUmV0dXJucyBhIGNvcHkgb2Yg dGhlIHZhbHVlIG9mIHRoZSBzZXNzaW9uIHZhcmlhYmxlIChpbiB0aGUgY3VycmVudCBtZW1vcnkK KyAqIGNvbnRleHQpLiAgVGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgcGVybWlzc2lvbiBj aGVja3MuCisgKi8KK0RhdHVtCitHZXRTZXNzaW9uVmFyaWFibGUoT2lkIHZhcmlkLCBib29sICpp c051bGwsIE9pZCAqdHlwaWQpCit7CisJU1ZhcmlhYmxlCXN2YXI7CisKKwlzdmFyID0gZ2V0X3Nl c3Npb25fdmFyaWFibGUodmFyaWQpOworCisJLyoKKwkgKiBBbHRob3VnaCBzdmFyIGlzIGZyZXNo bHkgdmFsaWRhdGVkIGluIHRoaXMgcG9pbnQsIHRoZSBzdmFyLT5pc192YWxpZCBjYW4KKwkgKiBi ZSBmYWxzZSwgZHVlIHBvc3NpYmxlIGFjY2VwdGluZyBpbnZhbGlkYXRpb24gbWVzc2FnZSBpbnNp ZGUgZG9tYWluCisJICogY2hlY2suIE5vdywgdGhlIHZhbGlkYXRpb24gaXMgZG9uZSBhZnRlciBs b2NrLCB0aGF0IGNhbiBhbHNvIGFjY2VwdAorCSAqIGludmFsaWRhdGlvbiBtZXNzYWdlLCBzbyB2 YWxpZGF0aW9uIHNob3VsZCBiZSB0cnVzdGZ1bC4KKwkgKgorCSAqIEZvciBub3csIHdlIGRvbid0 IG5lZWQgdG8gcmVwZWF0IHZhbGlkYXRpb24uIE9ubHkgc3ZhciBzaG91bGQgYmUgdmFsaWQKKwkg KiBwb2ludGVyLgorCSAqLworCUFzc2VydChzdmFyKTsKKworCSp0eXBpZCA9IHN2YXItPnR5cGlk OworCisJcmV0dXJuIGNvcHlfc2Vzc2lvbl92YXJpYWJsZV92YWx1ZShzdmFyLCBpc051bGwpOwor fQorCisvKgorICogUmV0dXJucyBhIGNvcHkgb2YgdGhlIHZhbHVlIG9mIHRoZSBzZXNzaW9uIHZh cmlhYmxlIGFmdGVyIGNoZWNraW5nIGlmIHRoZQorICogdHlwZSBpcyB0aGUgc2FtZSBhcyAiZXhw ZWN0ZWRfdHlwaWQiLiAgVGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IKKyAqIHBlcm1pc3Np b24gY2hlY2tzLgorICovCitEYXR1bQorR2V0U2Vzc2lvblZhcmlhYmxlV2l0aFR5cGVDaGVjayhP aWQgdmFyaWQsIGJvb2wgKmlzTnVsbCwgT2lkIGV4cGVjdGVkX3R5cGlkKQoreworCVNWYXJpYWJs ZQlzdmFyOworCisJc3ZhciA9IGdldF9zZXNzaW9uX3ZhcmlhYmxlKHZhcmlkKTsKKworCUFzc2Vy dChzdmFyICYmIHN2YXItPmlzX3ZhbGlkKTsKKworCWlmIChleHBlY3RlZF90eXBpZCAhPSBzdmFy LT50eXBpZCkKKwkJZWxvZyhFUlJPUiwgInR5cGUgb2YgdmFyaWFibGUgXCIlcy4lc1wiIGlzIGRp ZmZlcmVudCB0aGFuIGV4cGVjdGVkIiwKKwkJCSBnZXRfbmFtZXNwYWNlX25hbWUoZ2V0X3Nlc3Np b25fdmFyaWFibGVfbmFtZXNwYWNlKHZhcmlkKSksCisJCQkgZ2V0X3Nlc3Npb25fdmFyaWFibGVf bmFtZSh2YXJpZCkpOworCisJcmV0dXJuIGNvcHlfc2Vzc2lvbl92YXJpYWJsZV92YWx1ZShzdmFy LCBpc051bGwpOworfQorCisvKgorICogQXNzaWduIHRoZSByZXN1bHQgb2YgdGhlIGV2YWx1YXRl ZCBleHByZXNzaW9uIHRvIHRoZSBzZXNzaW9uIHZhcmlhYmxlCisgKi8KK3ZvaWQKK0V4ZWN1dGVM ZXRTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwKKwkJCSAgIExldFN0bXQgKnN0bXQsCisJCQkgICBQ YXJhbUxpc3RJbmZvIHBhcmFtcywKKwkJCSAgIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LAor CQkJICAgUXVlcnlDb21wbGV0aW9uICpxYykKK3sKKwlRdWVyeQkgICAqcXVlcnkgPSBjYXN0Tm9k ZShRdWVyeSwgc3RtdC0+cXVlcnkpOworCUxpc3QJICAgKnJld3JpdHRlbjsKKwlEZXN0UmVjZWl2 ZXIgKmRlc3Q7CisJQWNsUmVzdWx0CWFjbHJlc3VsdDsKKwlQbGFubmVkU3RtdCAqcGxhbjsKKwlR dWVyeURlc2MgICpxdWVyeURlc2M7CisJT2lkCQkJdmFyaWQgPSBxdWVyeS0+cmVzdWx0VmFyaWFi bGU7CisKKwlBc3NlcnQoT2lkSXNWYWxpZCh2YXJpZCkpOworCisJLyogZG8gd2UgaGF2ZSBwZXJt aXNzaW9uIHRvIHdyaXRlIHRvIHRoZSBzZXNzaW9uIHZhcmlhYmxlPyAqLworCWFjbHJlc3VsdCA9 IG9iamVjdF9hY2xjaGVjayhWYXJpYWJsZVJlbGF0aW9uSWQsIHZhcmlkLCBHZXRVc2VySWQoKSwg QUNMX1VQREFURSk7CisJaWYgKGFjbHJlc3VsdCAhPSBBQ0xDSEVDS19PSykKKwkJYWNsY2hlY2tf ZXJyb3IoYWNscmVzdWx0LCBPQkpFQ1RfVkFSSUFCTEUsIGdldF9zZXNzaW9uX3ZhcmlhYmxlX25h bWUodmFyaWQpKTsKKworCS8qIGNyZWF0ZSBhIGRlc3QgcmVjZWl2ZXIgZm9yIExFVCAqLworCWRl c3QgPSBDcmVhdGVWYXJpYWJsZURlc3RSZWNlaXZlcih2YXJpZCk7CisKKwkvKiBydW4gdGhlIHF1 ZXJ5IHJld3JpdGVyICovCisJcXVlcnkgPSBjb3B5T2JqZWN0KHF1ZXJ5KTsKKworCXJld3JpdHRl biA9IFF1ZXJ5UmV3cml0ZShxdWVyeSk7CisKKwlBc3NlcnQobGlzdF9sZW5ndGgocmV3cml0dGVu KSA9PSAxKTsKKworCXF1ZXJ5ID0gbGluaXRpYWxfbm9kZShRdWVyeSwgcmV3cml0dGVuKTsKKwlB c3NlcnQocXVlcnktPmNvbW1hbmRUeXBlID09IENNRF9TRUxFQ1QpOworCisJLyogcGxhbiB0aGUg cXVlcnkgKi8KKwlwbGFuID0gcGdfcGxhbl9xdWVyeShxdWVyeSwgcHN0YXRlLT5wX3NvdXJjZXRl eHQsCisJCQkJCQkgQ1VSU09SX09QVF9QQVJBTExFTF9PSywgcGFyYW1zKTsKKworCS8qCisJICog VXNlIGEgc25hcHNob3Qgd2l0aCBhbiB1cGRhdGVkIGNvbW1hbmQgSUQgdG8gZW5zdXJlIHRoaXMg cXVlcnkgc2VlcyB0aGUKKwkgKiByZXN1bHRzIG9mIGFueSBwcmV2aW91c2x5IGV4ZWN1dGVkIHF1 ZXJpZXMuICAoVGhpcyBjb3VsZCBvbmx5IG1hdHRlciBpZgorCSAqIHRoZSBwbGFubmVyIGV4ZWN1 dGVkIGFuIGFsbGVnZWRseS1zdGFibGUgZnVuY3Rpb24gdGhhdCBjaGFuZ2VkIHRoZQorCSAqIGRh dGFiYXNlIGNvbnRlbnRzLCBidXQgbGV0J3MgZG8gaXQgYW55d2F5IHRvIGJlIHBhcmFsbGVsIHRv IHRoZSBFWFBMQUlOCisJICogY29kZSBwYXRoLikKKwkgKi8KKwlQdXNoQ29waWVkU25hcHNob3Qo R2V0QWN0aXZlU25hcHNob3QoKSk7CisJVXBkYXRlQWN0aXZlU25hcHNob3RDb21tYW5kSWQoKTsK KworCS8qIGNyZWF0ZSBhIFF1ZXJ5RGVzYywgcmVkaXJlY3Rpbmcgb3V0cHV0IHRvIG91ciB0dXBs ZSByZWNlaXZlciAqLworCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBwc3RhdGUt PnBfc291cmNldGV4dCwKKwkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwgSW52YWxpZFNuYXBz aG90LAorCQkJCQkJCQlkZXN0LCBwYXJhbXMsIHF1ZXJ5RW52LCAwKTsKKworCS8qIGNhbGwgRXhl Y3V0b3JTdGFydCB0byBwcmVwYXJlIHRoZSBwbGFuIGZvciBleGVjdXRpb24gKi8KKwlFeGVjdXRv clN0YXJ0KHF1ZXJ5RGVzYywgMCk7CisKKwkvKgorCSAqIFJ1biB0aGUgcGxhbiB0byBjb21wbGV0 aW9uLiAgVGhlIHJlc3VsdCBzaG91bGQgYmUgb25seSBvbmUgcm93LiAgVG8KKwkgKiBjaGVjayBp ZiB0aGVyZSBhcmUgdG9vIG1hbnkgcmVzdWx0IHJvd3MsIHdlIHRyeSB0byBmZXRjaCB0d28uCisJ ICovCisJRXhlY3V0b3JSdW4ocXVlcnlEZXNjLCBGb3J3YXJkU2NhbkRpcmVjdGlvbiwgMkwsIHRy dWUpOworCisJLyogc2F2ZSB0aGUgcm93Y291bnQgaWYgd2UncmUgZ2l2ZW4gYSBRdWVyeUNvbXBs ZXRpb24gdG8gZmlsbCAqLworCWlmIChxYykKKwkJU2V0UXVlcnlDb21wbGV0aW9uKHFjLCBDTURU QUdfTEVULCBxdWVyeURlc2MtPmVzdGF0ZS0+ZXNfcHJvY2Vzc2VkKTsKKworCS8qIGFuZCBjbGVh biB1cCAqLworCUV4ZWN1dG9yRmluaXNoKHF1ZXJ5RGVzYyk7CisJRXhlY3V0b3JFbmQocXVlcnlE ZXNjKTsKKworCUZyZWVRdWVyeURlc2MocXVlcnlEZXNjKTsKKworCVBvcEFjdGl2ZVNuYXBzaG90 KCk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9NYWtlZmlsZSBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL01ha2VmaWxlCmluZGV4IDExMTE4ZDBjZTAuLjcxMjQ4YTM0ZjIgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL01ha2VmaWxlCisrKyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL01ha2VmaWxlCkBAIC03Niw2ICs3Niw3IEBAIE9CSlMgPSBcCiAJbm9kZVdpbmRv d0FnZy5vIFwKIAlub2RlV29ya3RhYmxlc2Nhbi5vIFwKIAlzcGkubyBcCisJc3ZhcmlhYmxlUmVj ZWl2ZXIubyBcCiAJdHF1ZXVlLm8gXAogCXRzdG9yZVJlY2VpdmVyLm8KIApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNFeHByLmMKaW5kZXggOWI1MmJhYjUyZi4uM2ZkZDljYjYzMCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj RXhwci5jCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9vYmplY3RhY2Nlc3Mu aCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3Byb2MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5 cGUuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAiZXhlY3V0 b3IvZXhlY0V4cHIuaCIKICNpbmNsdWRlICJleGVjdXRvci9ub2RlU3VicGxhbi5oIgogI2luY2x1 ZGUgImZ1bmNhcGkuaCIKQEAgLTk4OCw2ICs5ODksNDcgQEAgRXhlY0luaXRFeHByUmVjKEV4cHIg Km5vZGUsIEV4cHJTdGF0ZSAqc3RhdGUsCiAJCQkJCQlzY3JhdGNoLmQucGFyYW0ucGFyYW10eXBl ID0gcGFyYW0tPnBhcmFtdHlwZTsKIAkJCQkJCUV4cHJFdmFsUHVzaFN0ZXAoc3RhdGUsICZzY3Jh dGNoKTsKIAkJCQkJCWJyZWFrOworCisJCQkJCWNhc2UgUEFSQU1fVkFSSUFCTEU6CisJCQkJCQl7 CisJCQkJCQkJaW50CQkJZXNfbnVtX3Nlc3Npb25fdmFyaWFibGVzID0gMDsKKwkJCQkJCQlTZXNz aW9uVmFyaWFibGVWYWx1ZSAqZXNfc2Vzc2lvbl92YXJpYWJsZXMgPSBOVUxMOworCQkJCQkJCVNl c3Npb25WYXJpYWJsZVZhbHVlICp2YXI7CisKKwkJCQkJCQlpZiAoc3RhdGUtPnBhcmVudCAmJiBz dGF0ZS0+cGFyZW50LT5zdGF0ZSkKKwkJCQkJCQl7CisJCQkJCQkJCWVzX3Nlc3Npb25fdmFyaWFi bGVzID0gc3RhdGUtPnBhcmVudC0+c3RhdGUtPmVzX3Nlc3Npb25fdmFyaWFibGVzOworCQkJCQkJ CQllc19udW1fc2Vzc2lvbl92YXJpYWJsZXMgPSBzdGF0ZS0+cGFyZW50LT5zdGF0ZS0+ZXNfbnVt X3Nlc3Npb25fdmFyaWFibGVzOworCQkJCQkJCX0KKworCQkJCQkJCUFzc2VydChlc19zZXNzaW9u X3ZhcmlhYmxlcyk7CisKKwkJCQkJCQkvKgorCQkJCQkJCSAqIFVzZSBidWZmZXJlZCBzZXNzaW9u IHZhcmlhYmxlcyB3aGVuIHRoZQorCQkJCQkJCSAqIGJ1ZmZlciB3aXRoIGNvcGllZCB2YWx1ZXMg aXMgYXZhaWFibGUKKwkJCQkJCQkgKiAoc3RhbmRhcmQgcXVlcnkgZXhlY3V0b3IgbW9kZSkKKwkJ CQkJCQkgKi8KKworCQkJCQkJCS8qIFBhcmFtZXRlciBzYW5pdHkgY2hlY2tzLiAqLworCQkJCQkJ CWlmIChwYXJhbS0+cGFyYW1pZCA+PSBlc19udW1fc2Vzc2lvbl92YXJpYWJsZXMpCisJCQkJCQkJ CWVsb2coRVJST1IsICJwYXJhbWlkIG9mIFBBUkFNX1ZBUklBQkxFIHBhcmFtIGlzIG91dCBvZiBy YW5nZSIpOworCisJCQkJCQkJdmFyID0gJmVzX3Nlc3Npb25fdmFyaWFibGVzW3BhcmFtLT5wYXJh bWlkXTsKKworCQkJCQkJCWlmICh2YXItPnR5cGlkICE9IHBhcmFtLT5wYXJhbXR5cGUpCisJCQkJ CQkJCWVsb2coRVJST1IsICJ0eXBlIG9mIGJ1ZmZlcmVkIHZhbHVlIGlzIGRpZmZlcmVudCB0aGFu IFBBUkFNX1ZBUklBQkxFIHR5cGUiKTsKKworCQkJCQkJCS8qCisJCQkJCQkJICogSW4gdGhpcyBj YXNlLCBwYXNzIHRoZSB2YWx1ZSBsaWtlIGEKKwkJCQkJCQkgKiBjb25zdGFudC4KKwkJCQkJCQkg Ki8KKwkJCQkJCQlzY3JhdGNoLm9wY29kZSA9IEVFT1BfQ09OU1Q7CisJCQkJCQkJc2NyYXRjaC5k LmNvbnN0dmFsLnZhbHVlID0gdmFyLT52YWx1ZTsKKwkJCQkJCQlzY3JhdGNoLmQuY29uc3R2YWwu aXNudWxsID0gdmFyLT5pc251bGw7CisJCQkJCQkJRXhwckV2YWxQdXNoU3RlcChzdGF0ZSwgJnNj cmF0Y2gpOworCQkJCQkJfQorCQkJCQkJYnJlYWs7CisKIAkJCQkJY2FzZSBQQVJBTV9FWFRFUk46 CiAKIAkJCQkJCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5j IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwppbmRleCA0ZDdjOTJkNjNjLi5mMmZi NjgwZGVmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKQEAgLTQzLDcgKzQzLDkgQEAKICNpbmNs dWRlICJhY2Nlc3MveGFjdC5oIgogI2luY2x1ZGUgImNhdGFsb2cvbmFtZXNwYWNlLmgiCiAjaW5j bHVkZSAiY2F0YWxvZy9wYXJ0aXRpb24uaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3ZhcmlhYmxl LmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvbWF0dmlldy5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3Nl c3Npb25fdmFyaWFibGUuaCIKICNpbmNsdWRlICJjb21tYW5kcy90cmlnZ2VyLmgiCiAjaW5jbHVk ZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKICNpbmNsdWRlICJleGVjdXRvci9ub2RlU3VicGxhbi5o IgpAQCAtMTk2LDYgKzE5OCw1MSBAQCBzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAq cXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCUFzc2VydChxdWVyeURlc2MtPnNvdXJjZVRleHQgIT0g TlVMTCk7CiAJZXN0YXRlLT5lc19zb3VyY2VUZXh0ID0gcXVlcnlEZXNjLT5zb3VyY2VUZXh0Owog CisJLyoKKwkgKiBUaGUgZXhlY3V0b3IgZG9lc24ndCB3b3JrIHdpdGggc2Vzc2lvbiB2YXJpYWJs ZXMgZGlyZWN0bHkuIFZhbHVlcyBvZgorCSAqIHJlbGF0ZWQgc2Vzc2lvbiB2YXJpYWJsZXMgYXJl IGNvcGllZCB0byBkZWRpY2F0ZWQgYXJyYXksIGFuZCB0aGlzIGFycmF5CisJICogaXMgcGFzc2Vk IHRvIGV4ZWN1dG9yLgorCSAqLworCWlmIChxdWVyeURlc2MtPnBsYW5uZWRzdG10LT5zZXNzaW9u VmFyaWFibGVzKQorCXsKKwkJTGlzdENlbGwgICAqbGM7CisJCWludAkJCW5TZXNzaW9uVmFyaWFi bGVzOworCQlpbnQJCQlpID0gMDsKKworCQkvKgorCQkgKiBJbiB0aGlzIGNhc2UsIHRoZSBxdWVy eSB1c2VzIHNlc3Npb24gdmFyaWFibGVzLCBidXQgd2UgaGF2ZSB0bworCQkgKiBwcmVwYXJlIHRo ZSBhcnJheSB3aXRoIHBhc3NlZCB2YWx1ZXMgKG9mIHVzZWQgc2Vzc2lvbiB2YXJpYWJsZXMpCisJ CSAqIGZpcnN0LgorCQkgKi8KKwkJQXNzZXJ0KCFJc1BhcmFsbGVsV29ya2VyKCkpOworCQluU2Vz c2lvblZhcmlhYmxlcyA9IGxpc3RfbGVuZ3RoKHF1ZXJ5RGVzYy0+cGxhbm5lZHN0bXQtPnNlc3Np b25WYXJpYWJsZXMpOworCisJCS8qIENyZWF0ZSB0aGUgYXJyYXkgdXNlZCBmb3IgcGFzc2luZyB2 YWx1ZXMgb2YgdXNlZCBzZXNzaW9uIHZhcmlhYmxlcyAqLworCQllc3RhdGUtPmVzX3Nlc3Npb25f dmFyaWFibGVzID0gKFNlc3Npb25WYXJpYWJsZVZhbHVlICopCisJCQlwYWxsb2MoblNlc3Npb25W YXJpYWJsZXMgKiBzaXplb2YoU2Vzc2lvblZhcmlhYmxlVmFsdWUpKTsKKworCQkvKiBGaWxsIHRo ZSBhcnJheSAqLworCQlmb3JlYWNoKGxjLCBxdWVyeURlc2MtPnBsYW5uZWRzdG10LT5zZXNzaW9u VmFyaWFibGVzKQorCQl7CisJCQlBY2xSZXN1bHQJYWNscmVzdWx0OworCQkJT2lkCQkJdmFyaWQg PSBsZmlyc3Rfb2lkKGxjKTsKKworCQkJYWNscmVzdWx0ID0gb2JqZWN0X2FjbGNoZWNrKFZhcmlh YmxlUmVsYXRpb25JZCwgdmFyaWQsIEdldFVzZXJJZCgpLCBBQ0xfU0VMRUNUKTsKKwkJCWlmIChh Y2xyZXN1bHQgIT0gQUNMQ0hFQ0tfT0spCisJCQkJYWNsY2hlY2tfZXJyb3IoYWNscmVzdWx0LCBP QkpFQ1RfVkFSSUFCTEUsCisJCQkJCQkJICAgZ2V0X3Nlc3Npb25fdmFyaWFibGVfbmFtZSh2YXJp ZCkpOworCisJCQllc3RhdGUtPmVzX3Nlc3Npb25fdmFyaWFibGVzW2ldLnZhcmlkID0gdmFyaWQ7 CisJCQllc3RhdGUtPmVzX3Nlc3Npb25fdmFyaWFibGVzW2ldLnZhbHVlID0gR2V0U2Vzc2lvblZh cmlhYmxlKHZhcmlkLAorCQkJCQkJCQkJCQkJCQkJCQkgICAmZXN0YXRlLT5lc19zZXNzaW9uX3Zh cmlhYmxlc1tpXS5pc251bGwsCisJCQkJCQkJCQkJCQkJCQkJCSAgICZlc3RhdGUtPmVzX3Nlc3Np b25fdmFyaWFibGVzW2ldLnR5cGlkKTsKKworCQkJaSsrOworCQl9CisKKwkJZXN0YXRlLT5lc19u dW1fc2Vzc2lvbl92YXJpYWJsZXMgPSBuU2Vzc2lvblZhcmlhYmxlczsKKwl9CisKIAkvKgogCSAq IEZpbGwgaW4gdGhlIHF1ZXJ5IGVudmlyb25tZW50LCBpZiBhbnksIGZyb20gcXVlcnlEZXNjLgog CSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvbWVzb24uYnVpbGQgYi9zcmMv YmFja2VuZC9leGVjdXRvci9tZXNvbi5idWlsZAppbmRleCBiNTExYTQyOWFkLi5iNjY2MmM2ZThm IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9tZXNvbi5idWlsZAorKysgYi9zcmMv YmFja2VuZC9leGVjdXRvci9tZXNvbi5idWlsZApAQCAtNjQsNiArNjQsNyBAQCBiYWNrZW5kX3Nv dXJjZXMgKz0gZmlsZXMoCiAgICdub2RlV2luZG93QWdnLmMnLAogICAnbm9kZVdvcmt0YWJsZXNj YW4uYycsCiAgICdzcGkuYycsCisgICdzdmFyaWFibGVSZWNlaXZlci5jJywKICAgJ3RxdWV1ZS5j JywKICAgJ3RzdG9yZVJlY2VpdmVyLmMnLAogKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivc3ZhcmlhYmxlUmVjZWl2ZXIuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3N2YXJpYWJs ZVJlY2VpdmVyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uYzRjZmY0 NGVjZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3N2YXJpYWJsZVJl Y2VpdmVyLmMKQEAgLTAsMCArMSwyMDEgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHN2 YXJpYWJsZVJlY2VpdmVyLmMKKyAqCSAgQW4gaW1wbGVtZW50YXRpb24gb2YgRGVzdFJlY2VpdmVy IHRoYXQgc3RvcmVzIHRoZSByZXN1bHQgdmFsdWUgaW4KKyAqCSAgYSBzZXNzaW9uIHZhcmlhYmxl LgorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDI0LCBQb3N0Z3JlU1FMIEds b2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LCBS ZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAqCisgKiBJREVOVElGSUNB VElPTgorICoJICBzcmMvYmFja2VuZC9leGVjdXRvci9zdmFyaWFibGVSZWNlaXZlci5jCisgKgor ICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworI2luY2x1ZGUgInBvc3RncmVzLmgiCisjaW5jbHVk ZSAibWlzY2FkbWluLmgiCisKKyNpbmNsdWRlICJhY2Nlc3MvZGV0b2FzdC5oIgorI2luY2x1ZGUg ImNhdGFsb2cvcGdfdmFyaWFibGUuaCIKKyNpbmNsdWRlICJjb21tYW5kcy9zZXNzaW9uX3Zhcmlh YmxlLmgiCisjaW5jbHVkZSAiZXhlY3V0b3Ivc3ZhcmlhYmxlUmVjZWl2ZXIuaCIKKyNpbmNsdWRl ICJzdG9yYWdlL2xvY2suaCIKKyNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgorI2luY2x1ZGUg InV0aWxzL2xzeXNjYWNoZS5oIgorI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCisKKy8qCisg KiBUaGlzIERlc3RSZWNlaXZlciBpcyB1c2VkIGJ5IHRoZSBMRVQgY29tbWFuZCBmb3Igc3Rvcmlu ZyB0aGUgcmVzdWx0IHRvIGEKKyAqIHNlc3Npb24gdmFyaWFibGUuICBUaGUgcmVzdWx0IGhhcyB0 byBoYXZlIG9ubHkgb25lIHR1cGxlIHdpdGggb25seSBvbmUKKyAqIG5vbi1kZWxldGVkIGF0dHJp YnV0ZS4gIFRoZSByb3cgY291bnRlciAoZmllbGQgInJvd3MiKSBpcyBpbmNyZW1lbnRlZAorICog YWZ0ZXIgcmVjZWl2aW5nIGEgcm93LCBhbmQgYW4gZXJyb3IgaXMgcmFpc2VkIHdoZW4gdGhlcmUg YXJlIG5vIHJvd3Mgb3IKKyAqIHRoZXJlIGFyZSBtb3JlIHRoYW4gb25lIHJlY2VpdmVkIHJvd3Mu ICBCZWNhdXNlIGEgcmVjZWl2ZWQgdHVwbGUgY2FuIGhhdmUKKyAqIGRlbGV0ZWQgYXR0cmlidXRl cywgd2UgbmVlZCB0byBmaW5kIHRoZSBmaXJzdCBub24tZGVsZXRlZCBhdHRyaWJ1dGUKKyAqIChm aWVsZCAic2xvdF9vZmZzZXQiKS4gIFRoZSB2YWx1ZSBpcyBkZXRvYXN0ZWQgYmVmb3JlIHN0b3Jp bmcgaXQgaW4gdGhlCisgKiBzZXNzaW9uIHZhcmlhYmxlLgorICovCit0eXBlZGVmIHN0cnVjdAor eworCURlc3RSZWNlaXZlciBwdWI7CisJT2lkCQkJdmFyaWQ7CisJYm9vbAkJbmVlZF9kZXRvYXN0 OwkJLyogZG8gd2UgbmVlZCB0byBkZXRvYXN0IHRoZSBhdHRyaWJ1dGU/ICovCisJaW50CQkJc2xv dF9vZmZzZXQ7CQkvKiBwb3NpdGlvbiBvZiBub24tZGVsZXRlZCBhdHRyaWJ1dGUgKi8KKwlpbnQJ CQlyb3dzOwkJCQkvKiByb3cgY291bnRlciAqLworfSBTVmFyaWFibGVTdGF0ZTsKKworLyoKKyAq IFByZXBhcmUgdG8gcmVjZWl2ZSB0dXBsZXMgZnJvbSBleGVjdXRvci4KKyAqLworc3RhdGljIHZv aWQKK3N2YXJpYWJsZVN0YXJ0dXBSZWNlaXZlcihEZXN0UmVjZWl2ZXIgKnNlbGYsIGludCBvcGVy YXRpb24sIFR1cGxlRGVzYyB0eXBlaW5mbykKK3sKKwlTVmFyaWFibGVTdGF0ZSAqbXlTdGF0ZSA9 IChTVmFyaWFibGVTdGF0ZSAqKSBzZWxmOworCWludAkJCW5hdHRzID0gdHlwZWluZm8tPm5hdHRz OworCWludAkJCW91dGNvbHMgPSAwOworCWludAkJCWk7CisJTE9DS1RBRwkJbG9ja3RhZyBQR19V U0VEX0ZPUl9BU1NFUlRTX09OTFk7CisKKwlBc3NlcnQobXlTdGF0ZS0+cHViLm15ZGVzdCA9PSBE ZXN0VmFyaWFibGUpOworCUFzc2VydChPaWRJc1ZhbGlkKG15U3RhdGUtPnZhcmlkKSk7CisJQXNz ZXJ0KFNlYXJjaFN5c0NhY2hlRXhpc3RzMShWQVJJQUJMRU9JRCwgbXlTdGF0ZS0+dmFyaWQpKTsK KworI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKKworCVNFVF9MT0NLVEFHX09CSkVDVChsb2Nr dGFnLAorCQkJCQkgICBNeURhdGFiYXNlSWQsCisJCQkJCSAgIFZhcmlhYmxlUmVsYXRpb25JZCwK KwkJCQkJICAgbXlTdGF0ZS0+dmFyaWQsCisJCQkJCSAgIDApOworCisJQXNzZXJ0KExvY2tIZWxk QnlNZSgmbG9ja3RhZywgQWNjZXNzU2hhcmVMb2NrLCBmYWxzZSkpOworCisjZW5kaWYKKworCWZv ciAoaSA9IDA7IGkgPCBuYXR0czsgaSsrKQorCXsKKwkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0ciA9 IFR1cGxlRGVzY0F0dHIodHlwZWluZm8sIGkpOworCQlPaWQJCQl0eXBpZDsKKwkJT2lkCQkJY29s bGlkOworCQlpbnQzMgkJdHlwbW9kOworCisJCWlmIChhdHRyLT5hdHRpc2Ryb3BwZWQpCisJCQlj b250aW51ZTsKKworCQlpZiAoKytvdXRjb2xzID4gMSkKKwkJCWNvbnRpbnVlOworCisJCWdldF9z ZXNzaW9uX3ZhcmlhYmxlX3R5cGVfdHlwbW9kX2NvbGxpZChteVN0YXRlLT52YXJpZCwKKwkJCQkJ CQkJCQkJCSZ0eXBpZCwKKwkJCQkJCQkJCQkJCSZ0eXBtb2QsCisJCQkJCQkJCQkJCQkmY29sbGlk KTsKKworCQkvKgorCQkgKiBEb3VibGUgY2hlY2sgLSB0aGUgdHlwZSBhbmQgdHlwbW9kIG9mIHRh cmdldCB2YXJpYWJsZSBzaG91bGQgYmUgdGhlCisJCSAqIHNhbWUgYXMgdGhlIHR5cGUgYW5kIHR5 cG1vZCBvZiBhc3NpZ25tZW50IGV4cHJlc3Npb24uICBUaGUKKwkJICogZXhwcmVzc2lvbiBzaG91 bGQgYmUgd3JhcHBlZCBieSBhIGNhc3QgdG8gdGhlIHRhcmdldCB0eXBlL3R5cG1vZC4KKwkJICov CisJCWlmIChhdHRyLT5hdHR0eXBpZCAhPSB0eXBpZCB8fAorCQkJKGF0dHItPmF0dHR5cG1vZCA+ PSAwICYmCisJCQkgYXR0ci0+YXR0dHlwbW9kICE9IHR5cG1vZCkpCisJCQllcmVwb3J0KEVSUk9S LAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJCQkJIGVycm1z ZygidGFyZ2V0IHNlc3Npb24gdmFyaWFibGUgaXMgb2YgdHlwZSAlcyIKKwkJCQkJCQkiIGJ1dCBl eHByZXNzaW9uIGlzIG9mIHR5cGUgJXMiLAorCQkJCQkJCWZvcm1hdF90eXBlX3dpdGhfdHlwZW1v ZCh0eXBpZCwgdHlwbW9kKSwKKwkJCQkJCQlmb3JtYXRfdHlwZV93aXRoX3R5cGVtb2QoYXR0ci0+ YXR0dHlwaWQsCisJCQkJCQkJCQkJCQkJIGF0dHItPmF0dHR5cG1vZCkpKSk7CisKKwkJbXlTdGF0 ZS0+bmVlZF9kZXRvYXN0ID0gYXR0ci0+YXR0bGVuID09IC0xOworCQlteVN0YXRlLT5zbG90X29m ZnNldCA9IGk7CisJfQorCisJaWYgKG91dGNvbHMgIT0gMSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJ CQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJIGVycm1zZ19wbHVyYWwoImFz c2lnbm1lbnQgZXhwcmVzc2lvbiByZXR1cm5lZCAlZCBjb2x1bW4iLAorCQkJCQkJCSAgICJhc3Np Z25tZW50IGV4cHJlc3Npb24gcmV0dXJuZWQgJWQgY29sdW1ucyIsCisJCQkJCQkJICAgb3V0Y29s cywKKwkJCQkJCQkgICBvdXRjb2xzKSkpOworCisJbXlTdGF0ZS0+cm93cyA9IDA7Cit9CisKKy8q CisgKiBSZWNlaXZlIGEgdHVwbGUgZnJvbSB0aGUgZXhlY3V0b3IgYW5kIHN0b3JlIGl0IGluIHRo ZSBzZXNzaW9uIHZhcmlhYmxlLgorICovCitzdGF0aWMgYm9vbAorc3ZhcmlhYmxlUmVjZWl2ZVNs b3QoVHVwbGVUYWJsZVNsb3QgKnNsb3QsIERlc3RSZWNlaXZlciAqc2VsZikKK3sKKwlTVmFyaWFi bGVTdGF0ZSAqbXlTdGF0ZSA9IChTVmFyaWFibGVTdGF0ZSAqKSBzZWxmOworCURhdHVtCQl2YWx1 ZTsKKwlib29sCQlpc251bGw7CisJYm9vbAkJZnJlZXZhbCA9IGZhbHNlOworCisJLyogbWFrZSBz dXJlIHRoZSB0dXBsZSBpcyBmdWxseSBkZWNvbnN0cnVjdGVkICovCisJc2xvdF9nZXRhbGxhdHRy cyhzbG90KTsKKworCXZhbHVlID0gc2xvdC0+dHRzX3ZhbHVlc1tteVN0YXRlLT5zbG90X29mZnNl dF07CisJaXNudWxsID0gc2xvdC0+dHRzX2lzbnVsbFtteVN0YXRlLT5zbG90X29mZnNldF07CisK KwlpZiAobXlTdGF0ZS0+bmVlZF9kZXRvYXN0ICYmICFpc251bGwgJiYgVkFSQVRUX0lTX0VYVEVS TkFMKERhdHVtR2V0UG9pbnRlcih2YWx1ZSkpKQorCXsKKwkJdmFsdWUgPSBQb2ludGVyR2V0RGF0 dW0oZGV0b2FzdF9leHRlcm5hbF9hdHRyKChzdHJ1Y3QgdmFybGVuYSAqKQorCQkJCQkJCQkJCQkJ CSAgRGF0dW1HZXRQb2ludGVyKHZhbHVlKSkpOworCQlmcmVldmFsID0gdHJ1ZTsKKwl9CisKKwlt eVN0YXRlLT5yb3dzICs9IDE7CisKKwlpZiAobXlTdGF0ZS0+cm93cyA+IDEpCisJCWVyZXBvcnQo RVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9UT09fTUFOWV9ST1dTKSwKKwkJCQkgZXJybXNn KCJleHByZXNzaW9uIHJldHVybmVkIG1vcmUgdGhhbiBvbmUgcm93IikpKTsKKworCVNldFNlc3Np b25WYXJpYWJsZShteVN0YXRlLT52YXJpZCwgdmFsdWUsIGlzbnVsbCk7CisKKwlpZiAoZnJlZXZh bCkKKwkJcGZyZWUoRGF0dW1HZXRQb2ludGVyKHZhbHVlKSk7CisKKwlyZXR1cm4gdHJ1ZTsKK30K KworLyoKKyAqIENsZWFuIHVwIGF0IGVuZCBvZiB0aGUgZXhlY3V0b3IgcnVuCisgKi8KK3N0YXRp YyB2b2lkCitzdmFyaWFibGVTaHV0ZG93blJlY2VpdmVyKERlc3RSZWNlaXZlciAqc2VsZikKK3sK KwlpZiAoKChTVmFyaWFibGVTdGF0ZSAqKSBzZWxmKS0+cm93cyA9PSAwKQorCQllcmVwb3J0KEVS Uk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfTk9fREFUQV9GT1VORCksCisJCQkJIGVycm1zZygi ZXhwcmVzc2lvbiByZXR1cm5lZCBubyByb3dzIikpKTsKK30KKworLyoKKyAqIERlc3Ryb3kgdGhl IHJlY2VpdmVyIHdoZW4gd2UgYXJlIGRvbmUgd2l0aCBpdAorICovCitzdGF0aWMgdm9pZAorc3Zh cmlhYmxlRGVzdHJveVJlY2VpdmVyKERlc3RSZWNlaXZlciAqc2VsZikKK3sKKwlwZnJlZShzZWxm KTsKK30KKworLyoKKyAqIEluaXRpYWxseSBjcmVhdGUgYSBEZXN0UmVjZWl2ZXIgb2JqZWN0Lgor ICovCitEZXN0UmVjZWl2ZXIgKgorQ3JlYXRlVmFyaWFibGVEZXN0UmVjZWl2ZXIoT2lkIHZhcmlk KQoreworCVNWYXJpYWJsZVN0YXRlICpzZWxmID0gKFNWYXJpYWJsZVN0YXRlICopIHBhbGxvYzAo c2l6ZW9mKFNWYXJpYWJsZVN0YXRlKSk7CisKKwlzZWxmLT5wdWIucmVjZWl2ZVNsb3QgPSBzdmFy aWFibGVSZWNlaXZlU2xvdDsKKwlzZWxmLT5wdWIuclN0YXJ0dXAgPSBzdmFyaWFibGVTdGFydHVw UmVjZWl2ZXI7CisJc2VsZi0+cHViLnJTaHV0ZG93biA9IHN2YXJpYWJsZVNodXRkb3duUmVjZWl2 ZXI7CisJc2VsZi0+cHViLnJEZXN0cm95ID0gc3ZhcmlhYmxlRGVzdHJveVJlY2VpdmVyOworCXNl bGYtPnB1Yi5teWRlc3QgPSBEZXN0VmFyaWFibGU7CisKKwlzZWxmLT52YXJpZCA9IHZhcmlkOwor CisJcmV0dXJuIChEZXN0UmVjZWl2ZXIgKikgc2VsZjsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL25vZGVzL25vZGVGdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKaW5k ZXggZDJlMmFmNGY4MS4uMDdmZTA1ZGVhZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMv bm9kZUZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKQEAgLTQzMjgs NiArNDMyOCwxNiBAQCByYXdfZXhwcmVzc2lvbl90cmVlX3dhbGtlcl9pbXBsKE5vZGUgKm5vZGUs CiAJCQkJCXJldHVybiB0cnVlOwogCQkJfQogCQkJYnJlYWs7CisJCWNhc2UgVF9MZXRTdG10Ogor CQkJeworCQkJCUxldFN0bXQgICAgKnN0bXQgPSAoTGV0U3RtdCAqKSBub2RlOworCisJCQkJaWYg KFdBTEsoc3RtdC0+dGFyZ2V0KSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQkJaWYgKFdBTEsoc3Rt dC0+cXVlcnkpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCX0KKwkJCWJyZWFrOwogCQljYXNlIFRf UExBc3NpZ25TdG10OgogCQkJewogCQkJCVBMQXNzaWduU3RtdCAqc3RtdCA9IChQTEFzc2lnblN0 bXQgKikgbm9kZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5u ZXIuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwppbmRleCA5NDhhZmQ5 MDk0Li5lNTAyNGYzM2E1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9w bGFubmVyLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCkBAIC0z MjMsNiArMzIzLDcgQEAgc3RhbmRhcmRfcGxhbm5lcihRdWVyeSAqcGFyc2UsIGNvbnN0IGNoYXIg KnF1ZXJ5X3N0cmluZywgaW50IGN1cnNvck9wdGlvbnMsCiAJZ2xvYi0+bGFzdFBsYW5Ob2RlSWQg PSAwOwogCWdsb2ItPnRyYW5zaWVudFBsYW4gPSBmYWxzZTsKIAlnbG9iLT5kZXBlbmRzT25Sb2xl ID0gZmFsc2U7CisJZ2xvYi0+c2Vzc2lvblZhcmlhYmxlcyA9IE5JTDsKIAogCS8qCiAJICogQXNz ZXNzIHdoZXRoZXIgaXQncyBmZWFzaWJsZSB0byB1c2UgcGFyYWxsZWwgbW9kZSBmb3IgdGhpcyBx dWVyeS4gV2UKQEAgLTU1Nyw2ICs1NTgsNyBAQCBzdGFuZGFyZF9wbGFubmVyKFF1ZXJ5ICpwYXJz ZSwgY29uc3QgY2hhciAqcXVlcnlfc3RyaW5nLCBpbnQgY3Vyc29yT3B0aW9ucywKIAlyZXN1bHQt PnBhcmFtRXhlY1R5cGVzID0gZ2xvYi0+cGFyYW1FeGVjVHlwZXM7CiAJLyogdXRpbGl0eVN0bXQg c2hvdWxkIGJlIG51bGwsIGJ1dCB3ZSBtaWdodCBhcyB3ZWxsIGNvcHkgaXQgKi8KIAlyZXN1bHQt PnV0aWxpdHlTdG10ID0gcGFyc2UtPnV0aWxpdHlTdG10OworCXJlc3VsdC0+c2Vzc2lvblZhcmlh YmxlcyA9IGdsb2ItPnNlc3Npb25WYXJpYWJsZXM7CiAJcmVzdWx0LT5zdG10X2xvY2F0aW9uID0g cGFyc2UtPnN0bXRfbG9jYXRpb247CiAJcmVzdWx0LT5zdG10X2xlbiA9IHBhcnNlLT5zdG10X2xl bjsKIApAQCAtNzI3LDYgKzcyOSwxMyBAQCBzdWJxdWVyeV9wbGFubmVyKFBsYW5uZXJHbG9iYWwg Kmdsb2IsIFF1ZXJ5ICpwYXJzZSwgUGxhbm5lckluZm8gKnBhcmVudF9yb290LAogCSAqLwogCXB1 bGxfdXBfc3VicXVlcmllcyhyb290KTsKIAorCS8qCisJICogQ2hlY2sgaWYgc29tZSBzdWJxdWVy eSB1c2VzIGEgc2Vzc2lvbiB2YXJpYWJsZS4gIFRoZSBmbGFnCisJICogaGFzU2Vzc2lvblZhcmlh YmxlcyBzaG91bGQgYmUgdHJ1ZSBpZiB0aGUgcXVlcnkgb3Igc29tZSBzdWJxdWVyeSB1c2VzIGEK KwkgKiBzZXNzaW9uIHZhcmlhYmxlLgorCSAqLworCXB1bGxfdXBfaGFzX3Nlc3Npb25fdmFyaWFi bGVzKHJvb3QpOworCiAJLyoKIAkgKiBJZiB0aGlzIGlzIGEgc2ltcGxlIFVOSU9OIEFMTCBxdWVy eSwgZmxhdHRlbiBpdCBpbnRvIGFuIGFwcGVuZHJlbC4gV2UKIAkgKiBkbyB0aGlzIG5vdyBiZWNh dXNlIGl0IHJlcXVpcmVzIGFwcGx5aW5nIHB1bGxfdXBfc3VicXVlcmllcyB0byB0aGUgbGVhZgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jIGIvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCmluZGV4IDdhZWQ4NDU4NGMuLjk1Y2RhNDcy NmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYworKysg Yi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKQEAgLTIwOSw2ICsyMDksOSBA QCBzdGF0aWMgTGlzdCAqc2V0X3JldHVybmluZ19jbGF1c2VfcmVmZXJlbmNlcyhQbGFubmVySW5m byAqcm9vdCwKIHN0YXRpYyBMaXN0ICpzZXRfd2luZG93YWdnX3J1bmNvbmRpdGlvbl9yZWZlcmVu Y2VzKFBsYW5uZXJJbmZvICpyb290LAogCQkJCQkJCQkJCQkJICAgTGlzdCAqcnVuY29uZGl0aW9u LAogCQkJCQkJCQkJCQkJICAgUGxhbiAqcGxhbik7CitzdGF0aWMgYm9vbCBwdWxsX3VwX2hhc19z ZXNzaW9uX3ZhcmlhYmxlc193YWxrZXIoTm9kZSAqbm9kZSwKKwkJCQkJCQkJCQkJCSBQbGFubmVy SW5mbyAqcm9vdCk7CitzdGF0aWMgdm9pZCByZWNvcmRfcGxhbl92YXJpYWJsZV9kZXBlbmRlbmN5 KFBsYW5uZXJJbmZvICpyb290LCBPaWQgdmFyaWQpOwogCiAKIC8qKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KgpAQCAtMTMwOCw2ICsxMzExLDUwIEBAIHNldF9wbGFuX3JlZnMoUGxhbm5lckluZm8gKnJvb3Qs IFBsYW4gKnBsYW4sIGludCBydG9mZnNldCkKIAlyZXR1cm4gcGxhbjsKIH0KIAorLyoKKyAqIFNl YXJjaCB1c2FnZSBvZiBzZXNzaW9uIHZhcmlhYmxlcyBpbiBzdWJxdWVyaWVzCisgKi8KK3ZvaWQK K3B1bGxfdXBfaGFzX3Nlc3Npb25fdmFyaWFibGVzKFBsYW5uZXJJbmZvICpyb290KQoreworCVF1 ZXJ5CSAgICpxdWVyeSA9IHJvb3QtPnBhcnNlOworCisJaWYgKHF1ZXJ5LT5oYXNTZXNzaW9uVmFy aWFibGVzKQorCXsKKwkJcm9vdC0+aGFzU2Vzc2lvblZhcmlhYmxlcyA9IHRydWU7CisJfQorCWVs c2UKKwl7CisJCSh2b2lkKSBxdWVyeV90cmVlX3dhbGtlcihxdWVyeSwKKwkJCQkJCQkJIHB1bGxf dXBfaGFzX3Nlc3Npb25fdmFyaWFibGVzX3dhbGtlciwKKwkJCQkJCQkJICh2b2lkICopIHJvb3Qs IDApOworCX0KK30KKworc3RhdGljIGJvb2wKK3B1bGxfdXBfaGFzX3Nlc3Npb25fdmFyaWFibGVz X3dhbGtlcihOb2RlICpub2RlLCBQbGFubmVySW5mbyAqcm9vdCkKK3sKKwlpZiAobm9kZSA9PSBO VUxMKQorCQlyZXR1cm4gZmFsc2U7CisJaWYgKElzQShub2RlLCBRdWVyeSkpCisJeworCQlRdWVy eQkgICAqcXVlcnkgPSAoUXVlcnkgKikgbm9kZTsKKworCQlpZiAocXVlcnktPmhhc1Nlc3Npb25W YXJpYWJsZXMpCisJCXsKKwkJCXJvb3QtPmhhc1Nlc3Npb25WYXJpYWJsZXMgPSB0cnVlOworCQkJ cmV0dXJuIGZhbHNlOworCQl9CisKKwkJLyogUmVjdXJzZSBpbnRvIHN1YnNlbGVjdHMgKi8KKwkJ cmV0dXJuIHF1ZXJ5X3RyZWVfd2Fsa2VyKChRdWVyeSAqKSBub2RlLAorCQkJCQkJCQkgcHVsbF91 cF9oYXNfc2Vzc2lvbl92YXJpYWJsZXNfd2Fsa2VyLAorCQkJCQkJCQkgKHZvaWQgKikgcm9vdCwg MCk7CisJfQorCXJldHVybiBleHByZXNzaW9uX3RyZWVfd2Fsa2VyKG5vZGUsIHB1bGxfdXBfaGFz X3Nlc3Npb25fdmFyaWFibGVzX3dhbGtlciwKKwkJCQkJCQkJICAodm9pZCAqKSByb290KTsKK30K KwogLyoKICAqIHNldF9pbmRleG9ubHlzY2FuX3JlZmVyZW5jZXMKICAqCQlEbyBzZXRfcGxhbl9y ZWZlcmVuY2VzIHByb2Nlc3Npbmcgb24gYW4gSW5kZXhPbmx5U2NhbgpAQCAtMTk1Niw4ICsyMDAz LDkgQEAgY29weVZhcihWYXIgKnZhcikKICAqIFRoaXMgaXMgY29kZSB0aGF0IGlzIGNvbW1vbiB0 byBhbGwgdmFyaWFudHMgb2YgZXhwcmVzc2lvbi1maXhpbmcuCiAgKiBXZSBtdXN0IGxvb2sgdXAg b3BlcmF0b3Igb3Bjb2RlIGluZm8gZm9yIE9wRXhwciBhbmQgcmVsYXRlZCBub2RlcywKICAqIGFk ZCBPSURzIGZyb20gcmVnY2xhc3MgQ29uc3Qgbm9kZXMgaW50byByb290LT5nbG9iLT5yZWxhdGlv bk9pZHMsIGFuZAotICogYWRkIFBsYW5JbnZhbEl0ZW1zIGZvciB1c2VyLWRlZmluZWQgZnVuY3Rp b25zIGludG8gcm9vdC0+Z2xvYi0+aW52YWxJdGVtcy4KLSAqIFdlIGFsc28gZmlsbCBpbiBjb2x1 bW4gaW5kZXggbGlzdHMgZm9yIEdST1VQSU5HKCkgZXhwcmVzc2lvbnMuCisgKiBhZGQgUGxhbklu dmFsSXRlbXMgZm9yIHVzZXItZGVmaW5lZCBmdW5jdGlvbnMgYW5kIHNlc3Npb24gdmFyaWFibGVz IGludG8KKyAqIHJvb3QtPmdsb2ItPmludmFsSXRlbXMuICBXZSBhbHNvIGZpbGwgaW4gY29sdW1u IGluZGV4IGxpc3RzIGZvciBHUk9VUElORygpCisgKiBleHByZXNzaW9ucy4KICAqCiAgKiBXZSBh c3N1bWUgaXQncyBva2F5IHRvIHVwZGF0ZSBvcGNvZGUgaW5mbyBpbi1wbGFjZS4gIFNvIHRoaXMg Y291bGQgcG9zc2libHkKICAqIHNjcmliYmxlIG9uIHRoZSBwbGFubmVyJ3MgaW5wdXQgZGF0YSBz dHJ1Y3R1cmVzLCBidXQgaXQncyBPSy4KQEAgLTIwNDcsNiArMjA5NSwxMyBAQCBmaXhfZXhwcl9j b21tb24oUGxhbm5lckluZm8gKnJvb3QsIE5vZGUgKm5vZGUpCiAJCQkJZy0+Y29scyA9IGNvbHM7 CiAJCX0KIAl9CisJZWxzZSBpZiAoSXNBKG5vZGUsIFBhcmFtKSkKKwl7CisJCVBhcmFtCSAgICpw ID0gKFBhcmFtICopIG5vZGU7CisKKwkJaWYgKHAtPnBhcmFta2luZCA9PSBQQVJBTV9WQVJJQUJM RSkKKwkJCXJlY29yZF9wbGFuX3ZhcmlhYmxlX2RlcGVuZGVuY3kocm9vdCwgcC0+cGFyYW12YXJp ZCk7CisJfQogfQogCiAvKgpAQCAtMjA1Niw2ICsyMTExLDEwIEBAIGZpeF9leHByX2NvbW1vbihQ bGFubmVySW5mbyAqcm9vdCwgTm9kZSAqbm9kZSkKICAqIElmIGl0J3MgYSBQQVJBTV9NVUxUSUVY UFIsIHJlcGxhY2UgaXQgd2l0aCB0aGUgYXBwcm9wcmlhdGUgUGFyYW0gZnJvbQogICogcm9vdC0+ bXVsdGlleHByX3BhcmFtczsgb3RoZXJ3aXNlIG5vIGNoYW5nZSBpcyBuZWVkZWQuCiAgKiBKdXN0 IGZvciBwYXJhbm9pYSdzIHNha2UsIHdlIG1ha2UgYSBjb3B5IG9mIHRoZSBub2RlIGluIGVpdGhl ciBjYXNlLgorICoKKyAqIElmIGl0J3MgYSBQQVJBTV9WQVJJQUJMRSwgdGhlbiB3ZSBjb2xsZWN0 IHVzZWQgc2Vzc2lvbiB2YXJpYWJsZXMgaW4KKyAqIHRoZSBsaXN0IHJvb3QtPmdsb2ItPnNlc3Np b25WYXJpYWJsZS4gIEFsc28sIGFzc2lnbiB0aGUgcGFyYW1ldGVyJ3MKKyAqICJwYXJhbWlkIiB0 byB0aGUgcGFyYW1ldGVyJ3MgcG9zaXRpb24gaW4gdGhhdCBsaXN0LgogICovCiBzdGF0aWMgTm9k ZSAqCiBmaXhfcGFyYW1fbm9kZShQbGFubmVySW5mbyAqcm9vdCwgUGFyYW0gKnApCkBAIC0yMDc0 LDYgKzIxMzMsNDEgQEAgZml4X3BhcmFtX25vZGUoUGxhbm5lckluZm8gKnJvb3QsIFBhcmFtICpw KQogCQkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgUEFSQU1fTVVMVElFWFBSIElEOiAlZCIsIHAt PnBhcmFtaWQpOwogCQlyZXR1cm4gY29weU9iamVjdChsaXN0X250aChwYXJhbXMsIGNvbG5vIC0g MSkpOwogCX0KKworCWlmIChwLT5wYXJhbWtpbmQgPT0gUEFSQU1fVkFSSUFCTEUpCisJeworCQlM aXN0Q2VsbCAgICpsYzsKKwkJaW50CQkJbiA9IDA7CisJCWJvb2wJCWZvdW5kID0gZmFsc2U7CisK KwkJLyogV2Ugd2lsbCBtb2RpZnkgb2JqZWN0ICovCisJCXAgPSAoUGFyYW0gKikgY29weU9iamVj dChwKTsKKworCQkvKgorCQkgKiBOb3csIHdlIGNhbiBhY3R1YWxpemUgbGlzdCBvZiBzZXNzaW9u IHZhcmlhYmxlcywgYW5kIHdlIGNhbgorCQkgKiBjb21wbGV0ZSBwYXJhbWlkIHBhcmFtZXRlci4K KwkJICovCisJCWZvcmVhY2gobGMsIHJvb3QtPmdsb2ItPnNlc3Npb25WYXJpYWJsZXMpCisJCXsK KwkJCWlmIChsZmlyc3Rfb2lkKGxjKSA9PSBwLT5wYXJhbXZhcmlkKQorCQkJeworCQkJCXAtPnBh cmFtaWQgPSBuOworCQkJCWZvdW5kID0gdHJ1ZTsKKwkJCQlicmVhazsKKwkJCX0KKwkJCW4gKz0g MTsKKwkJfQorCisJCWlmICghZm91bmQpCisJCXsKKwkJCXJvb3QtPmdsb2ItPnNlc3Npb25WYXJp YWJsZXMgPSBsYXBwZW5kX29pZChyb290LT5nbG9iLT5zZXNzaW9uVmFyaWFibGVzLAorCQkJCQkJ CQkJCQkJCSAgIHAtPnBhcmFtdmFyaWQpOworCQkJcC0+cGFyYW1pZCA9IG47CisJCX0KKworCQly ZXR1cm4gKE5vZGUgKikgcDsKKwl9CisKIAlyZXR1cm4gKE5vZGUgKikgY29weU9iamVjdChwKTsK IH0KIApAQCAtMjEzNSw3ICsyMjI5LDEwIEBAIGZpeF9hbHRlcm5hdGl2ZV9zdWJwbGFuKFBsYW5u ZXJJbmZvICpyb290LCBBbHRlcm5hdGl2ZVN1YlBsYW4gKmFzcGxhbiwKICAqIHJlcGxhY2luZyBB Z2dyZWYgbm9kZXMgdGhhdCBzaG91bGQgYmUgcmVwbGFjZWQgYnkgaW5pdHBsYW4gb3V0cHV0IFBh cmFtcywKICAqIGNob29zaW5nIHRoZSBiZXN0IGltcGxlbWVudGF0aW9uIGZvciBBbHRlcm5hdGl2 ZVN1YlBsYW5zLAogICogbG9va2luZyB1cCBvcGVyYXRvciBvcGNvZGUgaW5mbyBmb3IgT3BFeHBy IGFuZCByZWxhdGVkIG5vZGVzLAotICogYW5kIGFkZGluZyBPSURzIGZyb20gcmVnY2xhc3MgQ29u c3Qgbm9kZXMgaW50byByb290LT5nbG9iLT5yZWxhdGlvbk9pZHMuCisgKiBhZGRpbmcgT0lEcyBm cm9tIHJlZ2NsYXNzIENvbnN0IG5vZGVzIGludG8gcm9vdC0+Z2xvYi0+cmVsYXRpb25PaWRzLAor ICogYXNzaWduaW5nIHBhcmFtdmFyaWQgdG8gUEFSQU1fVkFSSUFCTEUgcGFyYW1zLCBhbmQgY29s bGVjdGluZyB0aGUKKyAqIE9JRHMgb2Ygc2Vzc2lvbiB2YXJpYWJsZXMgaW4gdGhlIHJvb3QtPmds b2ItPnNlc3Npb25WYXJpYWJsZXMgbGlzdAorICogKHBhcmFtdmFyaWQgaXMgdGhlIHBvc2l0aW9u IG9mIHRoZSBzZXNzaW9uIHZhcmlhYmxlIGluIHRoaXMgbGlzdCkuCiAgKgogICogJ25vZGUnOiB0 aGUgZXhwcmVzc2lvbiB0byBiZSBtb2RpZmllZAogICogJ3J0b2Zmc2V0JzogaG93IG11Y2ggdG8g aW5jcmVtZW50IHZhcm5vcyBieQpAQCAtMjE1Nyw3ICsyMjU0LDggQEAgZml4X3NjYW5fZXhwcihQ bGFubmVySW5mbyAqcm9vdCwgTm9kZSAqbm9kZSwgaW50IHJ0b2Zmc2V0LCBkb3VibGUgbnVtX2V4 ZWMpCiAJCXJvb3QtPm11bHRpZXhwcl9wYXJhbXMgIT0gTklMIHx8CiAJCXJvb3QtPmdsb2ItPmxh c3RQSElkICE9IDAgfHwKIAkJcm9vdC0+bWlubWF4X2FnZ3MgIT0gTklMIHx8Ci0JCXJvb3QtPmhh c0FsdGVybmF0aXZlU3ViUGxhbnMpCisJCXJvb3QtPmhhc0FsdGVybmF0aXZlU3ViUGxhbnMgfHwK KwkJcm9vdC0+aGFzU2Vzc2lvblZhcmlhYmxlcykKIAl7CiAJCXJldHVybiBmaXhfc2Nhbl9leHBy X211dGF0b3Iobm9kZSwgJmNvbnRleHQpOwogCX0KQEAgLTM1MjAsNiArMzYxOCwyNSBAQCByZWNv cmRfcGxhbl90eXBlX2RlcGVuZGVuY3koUGxhbm5lckluZm8gKnJvb3QsIE9pZCB0eXBpZCkKIAl9 CiB9CiAKKy8qCisgKiBSZWNvcmQgZGVwZW5kZW5jeSBvbiBhIHNlc3Npb24gdmFyaWFibGUuICBU aGUgdmFyaWFibGUgY2FuIGJlIHVzZWQgYXMgYQorICogc2Vzc2lvbiB2YXJpYWJsZSBpbiBhbiBl eHByZXNzaW9uIGxpc3QsIG9yIGFzIHRoZSB0YXJnZXQgb2YgYSBMRVQgc3RhdGVtZW50LgorICov CitzdGF0aWMgdm9pZAorcmVjb3JkX3BsYW5fdmFyaWFibGVfZGVwZW5kZW5jeShQbGFubmVySW5m byAqcm9vdCwgT2lkIHZhcmlkKQoreworCVBsYW5JbnZhbEl0ZW0gKmludmFsX2l0ZW0gPSBtYWtl Tm9kZShQbGFuSW52YWxJdGVtKTsKKworCS8qIHBhcmFtaWQgaXMgc3RpbGwgc2Vzc2lvbiB2YXJp YWJsZSBpZCAqLworCWludmFsX2l0ZW0tPmNhY2hlSWQgPSBWQVJJQUJMRU9JRDsKKwlpbnZhbF9p dGVtLT5oYXNoVmFsdWUgPSBHZXRTeXNDYWNoZUhhc2hWYWx1ZTEoVkFSSUFCTEVPSUQsCisJCQkJ CQkJCQkJCQkgIE9iamVjdElkR2V0RGF0dW0odmFyaWQpKTsKKworCS8qIEFwcGVuZCB0aGlzIHZh cmlhYmxlIHRvIGdsb2JhbCwgcmVnaXN0ZXIgZGVwZW5kZW5jeSAqLworCXJvb3QtPmdsb2ItPmlu dmFsSXRlbXMgPSBsYXBwZW5kKHJvb3QtPmdsb2ItPmludmFsSXRlbXMsCisJCQkJCQkJCQkgaW52 YWxfaXRlbSk7Cit9CisKIC8qCiAgKiBleHRyYWN0X3F1ZXJ5X2RlcGVuZGVuY2llcwogICoJCUdp dmVuIGEgcmV3cml0dGVuLCBidXQgbm90IHlldCBwbGFubmVkLCBxdWVyeSBvciBxdWVyaWVzCkBA IC0zNjA1LDkgKzM3MjIsOSBAQCBleHRyYWN0X3F1ZXJ5X2RlcGVuZGVuY2llc193YWxrZXIoTm9k ZSAqbm9kZSwgUGxhbm5lckluZm8gKmNvbnRleHQpCiAJCQl9CiAKIAkJCS8qCi0JCQkgKiBJZ25v cmUgb3RoZXIgdXRpbGl0eSBzdGF0ZW1lbnRzLCBleGNlcHQgdGhvc2UgKHN1Y2ggYXMgRVhQTEFJ TikKLQkJCSAqIHRoYXQgY29udGFpbiBhIHBhcnNlZC1idXQtbm90LXBsYW5uZWQgcXVlcnkuICBG b3IgdGhvc2UsIHdlCi0JCQkgKiBqdXN0IG5lZWQgdG8gdHJhbnNmZXIgb3VyIGF0dGVudGlvbiB0 byB0aGUgY29udGFpbmVkIHF1ZXJ5LgorCQkJICogSWdub3JlIG90aGVyIHV0aWxpdHkgc3RhdGVt ZW50cywgZXhjZXB0IHRob3NlIChzdWNoIGFzIEVYUExBSU4KKwkJCSAqIG9yIExFVCkgdGhhdCBj b250YWluIGEgcGFyc2VkLWJ1dC1ub3QtcGxhbm5lZCBxdWVyeS4gIEZvciB0aG9zZSwKKwkJCSAq IHdlIGp1c3QgbmVlZCB0byB0cmFuc2ZlciBvdXIgYXR0ZW50aW9uIHRvIHRoZSBjb250YWluZWQg cXVlcnkuCiAJCQkgKi8KIAkJCXF1ZXJ5ID0gVXRpbGl0eUNvbnRhaW5zUXVlcnkocXVlcnktPnV0 aWxpdHlTdG10KTsKIAkJCWlmIChxdWVyeSA9PSBOVUxMKQpAQCAtMzYzMCw2ICszNzQ3LDEwIEBA IGV4dHJhY3RfcXVlcnlfZGVwZW5kZW5jaWVzX3dhbGtlcihOb2RlICpub2RlLCBQbGFubmVySW5m byAqY29udGV4dCkKIAkJCQkJbGFwcGVuZF9vaWQoY29udGV4dC0+Z2xvYi0+cmVsYXRpb25PaWRz LCBydGUtPnJlbGlkKTsKIAkJfQogCisJCS8qIHJlY29yZCBkZXBlbmRlbmN5IG9uIHRoZSB0YXJn ZXQgdmFyaWFibGUgb2YgYSBMRVQgY29tbWFuZCAqLworCQlpZiAoT2lkSXNWYWxpZChxdWVyeS0+ cmVzdWx0VmFyaWFibGUpKQorCQkJcmVjb3JkX3BsYW5fdmFyaWFibGVfZGVwZW5kZW5jeShjb250 ZXh0LCBxdWVyeS0+cmVzdWx0VmFyaWFibGUpOworCiAJCS8qIEFuZCByZWN1cnNlIGludG8gdGhl IHF1ZXJ5J3Mgc3ViZXhwcmVzc2lvbnMgKi8KIAkJcmV0dXJuIHF1ZXJ5X3RyZWVfd2Fsa2VyKHF1 ZXJ5LCBleHRyYWN0X3F1ZXJ5X2RlcGVuZGVuY2llc193YWxrZXIsCiAJCQkJCQkJCSAodm9pZCAq KSBjb250ZXh0LCAwKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wcmVwL3By ZXBqb2ludHJlZS5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3ByZXAvcHJlcGpvaW50cmVlLmMK aW5kZXggOTY5ZTI1N2Y3MC4uMDYxYWMyZGM3YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3ByZXAvcHJlcGpvaW50cmVlLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3By ZXAvcHJlcGpvaW50cmVlLmMKQEAgLTEzMTQsNiArMTMxNCw5IEBAIHB1bGxfdXBfc2ltcGxlX3N1 YnF1ZXJ5KFBsYW5uZXJJbmZvICpyb290LCBOb2RlICpqdG5vZGUsIFJhbmdlVGJsRW50cnkgKnJ0 ZSwKIAkvKiBJZiBzdWJxdWVyeSBoYWQgYW55IFJMUyBjb25kaXRpb25zLCBub3cgbWFpbiBxdWVy eSBkb2VzIHRvbyAqLwogCXBhcnNlLT5oYXNSb3dTZWN1cml0eSB8PSBzdWJxdWVyeS0+aGFzUm93 U2VjdXJpdHk7CiAKKwkvKiBpZiB0aGUgc3VicXVlcnkgaGFkIHNlc3Npb24gdmFyaWFibGVzLCB0 aGUgbWFpbiBxdWVyeSBkb2VzIHRvbyAqLworCXBhcnNlLT5oYXNTZXNzaW9uVmFyaWFibGVzIHw9 IHN1YnF1ZXJ5LT5oYXNTZXNzaW9uVmFyaWFibGVzOworCiAJLyoKIAkgKiBzdWJxdWVyeSB3b24n dCBiZSBwdWxsZWQgdXAgaWYgaXQgaGFzQWdncywgaGFzV2luZG93RnVuY3MsIG9yCiAJICogaGFz VGFyZ2V0U1JGcywgc28gbm8gd29yayBuZWVkZWQgb24gdGhvc2UgZmxhZ3MKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2NsYXVzZXMuYyBiL3NyYy9iYWNrZW5kL29wdGlt aXplci91dGlsL2NsYXVzZXMuYwppbmRleCBiNGUwODVlOWQ0Li4wMDYzYjJiNjMyIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9jbGF1c2VzLmMKKysrIGIvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3V0aWwvY2xhdXNlcy5jCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAi Y2F0YWxvZy9wZ19vcGVyYXRvci5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcHJvYy5oIgogI2lu Y2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3Nlc3Npb25fdmFy aWFibGUuaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjdXRvci5oIgogI2luY2x1ZGUgImV4ZWN1 dG9yL2Z1bmN0aW9ucy5oIgogI2luY2x1ZGUgImZ1bmNhcGkuaCIKQEAgLTkzNSw2ICs5MzYsMTMg QEAgbWF4X3BhcmFsbGVsX2hhemFyZF93YWxrZXIoTm9kZSAqbm9kZSwgbWF4X3BhcmFsbGVsX2hh emFyZF9jb250ZXh0ICpjb250ZXh0KQogCQlpZiAocGFyYW0tPnBhcmFta2luZCA9PSBQQVJBTV9F WFRFUk4pCiAJCQlyZXR1cm4gZmFsc2U7CiAKKwkJLyogd2UgZG9uJ3Qgc3VwcG9ydCBwYXNzaW5n IHNlc3Npb24gdmFyaWFibGVzIHRvIHdvcmtlcnMgKi8KKwkJaWYgKHBhcmFtLT5wYXJhbWtpbmQg PT0gUEFSQU1fVkFSSUFCTEUpCisJCXsKKwkJCWlmIChtYXhfcGFyYWxsZWxfaGF6YXJkX3Rlc3Qo UFJPUEFSQUxMRUxfUkVTVFJJQ1RFRCwgY29udGV4dCkpCisJCQkJcmV0dXJuIHRydWU7CisJCX0K KwogCQlpZiAocGFyYW0tPnBhcmFta2luZCAhPSBQQVJBTV9FWEVDIHx8CiAJCQkhbGlzdF9tZW1i ZXJfaW50KGNvbnRleHQtPnNhZmVfcGFyYW1faWRzLCBwYXJhbS0+cGFyYW1pZCkpCiAJCXsKQEAg LTIzODksNiArMjM5Nyw3IEBAIGNvbnZlcnRfc2FvcF90b19oYXNoZWRfc2FvcF93YWxrZXIoTm9k ZSAqbm9kZSwgdm9pZCAqY29udGV4dCkKICAqCSAgdmFsdWUgb2YgdGhlIFBhcmFtLgogICogMi4g Rm9sZCBzdGFibGUsIGFzIHdlbGwgYXMgaW1tdXRhYmxlLCBmdW5jdGlvbnMgdG8gY29uc3RhbnRz LgogICogMy4gUmVkdWNlIFBsYWNlSG9sZGVyVmFyIG5vZGVzIHRvIHRoZWlyIGNvbnRhaW5lZCBl eHByZXNzaW9ucy4KKyAqIDQuIEN1cnJlbnQgdmFsdWUgb2Ygc2Vzc2lvbiB2YXJpYWJsZSBjYW4g YmUgdXNlZCBmb3IgZXN0aW1hdGlvbiB0b28uCiAgKi0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8K IE5vZGUgKgpAQCAtMjUxNSw2ICsyNTI0LDI5IEBAIGV2YWxfY29uc3RfZXhwcmVzc2lvbnNfbXV0 YXRvcihOb2RlICpub2RlLAogCQkJCQkJfQogCQkJCQl9CiAJCQkJfQorCQkJCWVsc2UgaWYgKHBh cmFtLT5wYXJhbWtpbmQgPT0gUEFSQU1fVkFSSUFCTEUgJiYKKwkJCQkJCSBjb250ZXh0LT5lc3Rp bWF0ZSkKKwkJCQl7CisJCQkJCWludDE2CQl0eXBMZW47CisJCQkJCWJvb2wJCXR5cEJ5VmFsOwor CQkJCQlEYXR1bQkJcHZhbDsKKwkJCQkJYm9vbAkJaXNudWxsOworCisJCQkJCWdldF90eXBsZW5i eXZhbChwYXJhbS0+cGFyYW10eXBlLAorCQkJCQkJCQkJJnR5cExlbiwgJnR5cEJ5VmFsKTsKKwor CQkJCQlwdmFsID0gR2V0U2Vzc2lvblZhcmlhYmxlV2l0aFR5cGVDaGVjayhwYXJhbS0+cGFyYW12 YXJpZCwKKwkJCQkJCQkJCQkJCQkJICAgJmlzbnVsbCwKKwkJCQkJCQkJCQkJCQkJICAgcGFyYW0t PnBhcmFtdHlwZSk7CisKKwkJCQkJcmV0dXJuIChOb2RlICopIG1ha2VDb25zdChwYXJhbS0+cGFy YW10eXBlLAorCQkJCQkJCQkJCQkgIHBhcmFtLT5wYXJhbXR5cG1vZCwKKwkJCQkJCQkJCQkJICBw YXJhbS0+cGFyYW1jb2xsaWQsCisJCQkJCQkJCQkJCSAgKGludCkgdHlwTGVuLAorCQkJCQkJCQkJ CQkgIHB2YWwsCisJCQkJCQkJCQkJCSAgaXNudWxsLAorCQkJCQkJCQkJCQkgIHR5cEJ5VmFsKTsK KwkJCQl9CiAKIAkJCQkvKgogCQkJCSAqIE5vdCByZXBsYWNlYWJsZSwgc28ganVzdCBjb3B5IHRo ZSBQYXJhbSAobm8gbmVlZCB0bwpAQCAtNDcwNiw3ICs0NzM4LDggQEAgaW5saW5lX2Z1bmN0aW9u KE9pZCBmdW5jaWQsIE9pZCByZXN1bHRfdHlwZSwgT2lkIHJlc3VsdF9jb2xsaWQsCiAJCXF1ZXJ5 dHJlZS0+bGltaXRPZmZzZXQgfHwKIAkJcXVlcnl0cmVlLT5saW1pdENvdW50IHx8CiAJCXF1ZXJ5 dHJlZS0+c2V0T3BlcmF0aW9ucyB8fAotCQlsaXN0X2xlbmd0aChxdWVyeXRyZWUtPnRhcmdldExp c3QpICE9IDEpCisJCShsaXN0X2xlbmd0aChxdWVyeXRyZWUtPnRhcmdldExpc3QpICE9IDEpIHx8 CisJCXF1ZXJ5dHJlZS0+aGFzU2Vzc2lvblZhcmlhYmxlcykKIAkJZ290byBmYWlsOwogCiAJLyog SWYgdGhlIGZ1bmN0aW9uIHJlc3VsdCBpcyBjb21wb3NpdGUsIHJlc29sdmUgaXQgKi8KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIv YW5hbHl6ZS5jCmluZGV4IDI4ZmVkOWQ4N2YuLjA2MzA1MDM2OTQgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3BhcnNlci9hbmFseXplLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUu YwpAQCAtMjUsOSArMjUsMTIgQEAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCiAjaW5jbHVkZSAi YWNjZXNzL3N5c2F0dHIuaCIKKyNpbmNsdWRlICJjYXRhbG9nL25hbWVzcGFjZS5oIgogI2luY2x1 ZGUgImNhdGFsb2cvcGdfcHJvYy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgorI2lu Y2x1ZGUgImNhdGFsb2cvcGdfdmFyaWFibGUuaCIKICNpbmNsdWRlICJjb21tYW5kcy9kZWZyZW0u aCIKKyNpbmNsdWRlICJjb21tYW5kcy9zZXNzaW9uX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAibWlz Y2FkbWluLmgiCiAjaW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgiCiAjaW5jbHVkZSAibm9kZXMv bm9kZUZ1bmNzLmgiCkBAIC01MCw2ICs1Myw3IEBACiAjaW5jbHVkZSAicGFyc2VyL3BhcnNldHJl ZS5oIgogI2luY2x1ZGUgInV0aWxzL2JhY2tlbmRfc3RhdHVzLmgiCiAjaW5jbHVkZSAidXRpbHMv YnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGls cy9yZWwuaCIKICNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgogCkBAIC04Miw2ICs4Niw4IEBA IHN0YXRpYyBRdWVyeSAqdHJhbnNmb3JtQ3JlYXRlVGFibGVBc1N0bXQoUGFyc2VTdGF0ZSAqcHN0 YXRlLAogCQkJCQkJCQkJCSBDcmVhdGVUYWJsZUFzU3RtdCAqc3RtdCk7CiBzdGF0aWMgUXVlcnkg KnRyYW5zZm9ybUNhbGxTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCQkJQ2FsbFN0bXQg KnN0bXQpOworc3RhdGljIFF1ZXJ5ICp0cmFuc2Zvcm1MZXRTdG10KFBhcnNlU3RhdGUgKnBzdGF0 ZSwKKwkJCQkJCQkgICBMZXRTdG10ICpzdG10KTsKIHN0YXRpYyB2b2lkIHRyYW5zZm9ybUxvY2tp bmdDbGF1c2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBRdWVyeSAqcXJ5LAogCQkJCQkJCQkgICBMb2Nr aW5nQ2xhdXNlICpsYywgYm9vbCBwdXNoZWREb3duKTsKICNpZmRlZiBSQVdfRVhQUkVTU0lPTl9D T1ZFUkFHRV9URVNUCkBAIC0zMjUsNiArMzMxLDcgQEAgdHJhbnNmb3JtU3RtdChQYXJzZVN0YXRl ICpwc3RhdGUsIE5vZGUgKnBhcnNlVHJlZSkKIAkJY2FzZSBUX1VwZGF0ZVN0bXQ6CiAJCWNhc2Ug VF9EZWxldGVTdG10OgogCQljYXNlIFRfTWVyZ2VTdG10OgorCQljYXNlIFRfTGV0U3RtdDoKIAkJ CSh2b2lkKSB0ZXN0X3Jhd19leHByZXNzaW9uX2NvdmVyYWdlKHBhcnNlVHJlZSwgTlVMTCk7CiAJ CQlicmVhazsKIAkJZGVmYXVsdDoKQEAgLTQwMyw2ICs0MTAsMTEgQEAgdHJhbnNmb3JtU3RtdChQ YXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKnBhcnNlVHJlZSkKIAkJCQkJCQkJCSAgIChDYWxsU3Rt dCAqKSBwYXJzZVRyZWUpOwogCQkJYnJlYWs7CiAKKwkJY2FzZSBUX0xldFN0bXQ6CisJCQlyZXN1 bHQgPSB0cmFuc2Zvcm1MZXRTdG10KHBzdGF0ZSwKKwkJCQkJCQkJCSAgKExldFN0bXQgKikgcGFy c2VUcmVlKTsKKwkJCWJyZWFrOworCiAJCWRlZmF1bHQ6CiAKIAkJCS8qCkBAIC00NTQsNiArNDY2 LDcgQEAgc3RtdF9yZXF1aXJlc19wYXJzZV9hbmFseXNpcyhSYXdTdG10ICpwYXJzZVRyZWUpCiAJ CWNhc2UgVF9TZWxlY3RTdG10OgogCQljYXNlIFRfUmV0dXJuU3RtdDoKIAkJY2FzZSBUX1BMQXNz aWduU3RtdDoKKwkJY2FzZSBUX0xldFN0bXQ6CiAJCQlyZXN1bHQgPSB0cnVlOwogCQkJYnJlYWs7 CiAKQEAgLTU2Miw2ICs1NzUsNyBAQCB0cmFuc2Zvcm1EZWxldGVTdG10KFBhcnNlU3RhdGUgKnBz dGF0ZSwgRGVsZXRlU3RtdCAqc3RtdCkKIAlxcnktPmhhc1dpbmRvd0Z1bmNzID0gcHN0YXRlLT5w X2hhc1dpbmRvd0Z1bmNzOwogCXFyeS0+aGFzVGFyZ2V0U1JGcyA9IHBzdGF0ZS0+cF9oYXNUYXJn ZXRTUkZzOwogCXFyeS0+aGFzQWdncyA9IHBzdGF0ZS0+cF9oYXNBZ2dzOworCXFyeS0+aGFzU2Vz c2lvblZhcmlhYmxlcyA9IHBzdGF0ZS0+cF9oYXNTZXNzaW9uVmFyaWFibGVzOwogCiAJYXNzaWdu X3F1ZXJ5X2NvbGxhdGlvbnMocHN0YXRlLCBxcnkpOwogCkBAIC05ODgsNiArMTAwMiw3IEBAIHRy YW5zZm9ybUluc2VydFN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBJbnNlcnRTdG10ICpzdG10KQog CiAJcXJ5LT5oYXNUYXJnZXRTUkZzID0gcHN0YXRlLT5wX2hhc1RhcmdldFNSRnM7CiAJcXJ5LT5o YXNTdWJMaW5rcyA9IHBzdGF0ZS0+cF9oYXNTdWJMaW5rczsKKwlxcnktPmhhc1Nlc3Npb25WYXJp YWJsZXMgPSBwc3RhdGUtPnBfaGFzU2Vzc2lvblZhcmlhYmxlczsKIAogCWFzc2lnbl9xdWVyeV9j b2xsYXRpb25zKHBzdGF0ZSwgcXJ5KTsKIApAQCAtMTQ1Myw2ICsxNDY4LDcgQEAgdHJhbnNmb3Jt U2VsZWN0U3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIFNlbGVjdFN0bXQgKnN0bXQpCiAJcXJ5LT5o YXNXaW5kb3dGdW5jcyA9IHBzdGF0ZS0+cF9oYXNXaW5kb3dGdW5jczsKIAlxcnktPmhhc1Rhcmdl dFNSRnMgPSBwc3RhdGUtPnBfaGFzVGFyZ2V0U1JGczsKIAlxcnktPmhhc0FnZ3MgPSBwc3RhdGUt PnBfaGFzQWdnczsKKwlxcnktPmhhc1Nlc3Npb25WYXJpYWJsZXMgPSBwc3RhdGUtPnBfaGFzU2Vz c2lvblZhcmlhYmxlczsKIAogCWZvcmVhY2gobCwgc3RtdC0+bG9ja2luZ0NsYXVzZSkKIAl7CkBA IC0xNjc5LDEyICsxNjk1LDIzNSBAQCB0cmFuc2Zvcm1WYWx1ZXNDbGF1c2UoUGFyc2VTdGF0ZSAq cHN0YXRlLCBTZWxlY3RTdG10ICpzdG10KQogCXFyeS0+am9pbnRyZWUgPSBtYWtlRnJvbUV4cHIo cHN0YXRlLT5wX2pvaW5saXN0LCBOVUxMKTsKIAogCXFyeS0+aGFzU3ViTGlua3MgPSBwc3RhdGUt PnBfaGFzU3ViTGlua3M7CisJcXJ5LT5oYXNTZXNzaW9uVmFyaWFibGVzID0gcHN0YXRlLT5wX2hh c1Nlc3Npb25WYXJpYWJsZXM7CiAKIAlhc3NpZ25fcXVlcnlfY29sbGF0aW9ucyhwc3RhdGUsIHFy eSk7CiAKIAlyZXR1cm4gcXJ5OwogfQogCisvKgorICogdHJhbnNmb3JtTGV0U3RtdCAtCisgKgkg IHRyYW5zZm9ybSBhbiBMZXQgU3RhdGVtZW50CisgKi8KK3N0YXRpYyBRdWVyeSAqCit0cmFuc2Zv cm1MZXRTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGV0U3RtdCAqc3RtdCkKK3sKKwlRdWVyeQkg ICAqcXVlcnk7CisJUXVlcnkJICAgKnJlc3VsdDsKKwlMaXN0CSAgICpleHByTGlzdCA9IE5JTDsK KwlMaXN0CSAgICpleHByTGlzdENvZXIgPSBOSUw7CisJTGlzdENlbGwgICAqbGM7CisJTGlzdENl bGwgICAqaW5kaXJlY3Rpb25faGVhZCA9IE5VTEw7CisJUXVlcnkJICAgKnNlbGVjdFF1ZXJ5Owor CU9pZAkJCXZhcmlkOworCWNoYXIJICAgKmF0dHJuYW1lID0gTlVMTDsKKwlib29sCQlub3RfdW5p cXVlOworCWJvb2wJCWlzX3Jvd3R5cGU7CisJT2lkCQkJdHlwaWQ7CisJaW50MzIJCXR5cG1vZDsK KwlPaWQJCQljb2xsaWQ7CisJQWNsUmVzdWx0CWFjbHJlc3VsdDsKKwlMaXN0CSAgICpuYW1lcyA9 IE5VTEw7CisJaW50CQkJaW5kaXJlY3Rpb25fc3RhcnQ7CisJaW50CQkJaSA9IDA7CisKKwkvKiBU aGVyZSBjYW4ndCBiZSBhbnkgb3V0ZXIgV0lUSCB0byB3b3JyeSBhYm91dCAqLworCUFzc2VydChw c3RhdGUtPnBfY3RlbmFtZXNwYWNlID09IE5JTCk7CisKKwluYW1lcyA9IE5hbWVzRnJvbUxpc3Qo c3RtdC0+dGFyZ2V0KTsKKworCS8qIGxvY2tzIHRoZSB2YXJpYWJsZSB3aXRoIGFuIEFjY2Vzc1No YXJlTG9jayAqLworCXZhcmlkID0gSWRlbnRpZnlWYXJpYWJsZShuYW1lcywgJmF0dHJuYW1lLCAm bm90X3VuaXF1ZSwgZmFsc2UpOworCWlmIChub3RfdW5pcXVlKQorCQllcmVwb3J0KEVSUk9SLAor CQkJCShlcnJjb2RlKEVSUkNPREVfQU1CSUdVT1VTX1BBUkFNRVRFUiksCisJCQkJIGVycm1zZygi dGFyZ2V0IFwiJXNcIiBvZiBMRVQgY29tbWFuZCBpcyBhbWJpZ3VvdXMiLAorCQkJCQkJTmFtZUxp c3RUb1N0cmluZyhuYW1lcykpLAorCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBzdG10 LT5sb2NhdGlvbikpKTsKKworCWlmICghT2lkSXNWYWxpZCh2YXJpZCkpCisJCWVyZXBvcnQoRVJS T1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfT0JKRUNUKSwKKwkJCQkgZXJybXNn KCJzZXNzaW9uIHZhcmlhYmxlIFwiJXNcIiBkb2Vzbid0IGV4aXN0IiwKKwkJCQkJCU5hbWVMaXN0 VG9TdHJpbmcobmFtZXMpKSwKKwkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgc3RtdC0+ bG9jYXRpb24pKSk7CisKKwkvKgorCSAqIENhbGN1bGF0ZSBzdGFydCBvZiBwb3NzaWJsZSBwb3Np dGlvbiBvZiBhbiBpbmRpcmVjdGlvbiBpbiBsaXN0LCBhbmQKKwkgKiB3aGVuIGl0IGlzIGluc2lk ZSB0aGUgbGlzdCwgc3RvcmUgcG9pbnRlciBvbiBmaXJzdCBub2RlIG9mIGluZGlyZWN0aW9uLgor CSAqLworCWluZGlyZWN0aW9uX3N0YXJ0ID0gbGlzdF9sZW5ndGgobmFtZXMpIC0gKGF0dHJuYW1l ID8gMSA6IDApOworCWlmIChsaXN0X2xlbmd0aChzdG10LT50YXJnZXQpID4gaW5kaXJlY3Rpb25f c3RhcnQpCisJCWluZGlyZWN0aW9uX2hlYWQgPSBsaXN0X250aF9jZWxsKHN0bXQtPnRhcmdldCwg aW5kaXJlY3Rpb25fc3RhcnQpOworCisJZ2V0X3Nlc3Npb25fdmFyaWFibGVfdHlwZV90eXBtb2Rf Y29sbGlkKHZhcmlkLCAmdHlwaWQsICZ0eXBtb2QsICZjb2xsaWQpOworCisJaXNfcm93dHlwZSA9 IHR5cGVfaXNfcm93dHlwZSh0eXBpZCk7CisKKwlpZiAoYXR0cm5hbWUgJiYgIWlzX3Jvd3R5cGUp CisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQ RSksCisJCQkJIGVycm1zZygidHlwZSBcIiVzXCIgb2YgdGFyZ2V0IHNlc3Npb24gdmFyaWFibGUg XCIlcy4lc1wiIGlzIG5vdCBhIGNvbXBvc2l0ZSB0eXBlIiwKKwkJCQkJCWZvcm1hdF90eXBlX2Jl KHR5cGlkKSwKKwkJCQkJCWdldF9uYW1lc3BhY2VfbmFtZShnZXRfc2Vzc2lvbl92YXJpYWJsZV9u YW1lc3BhY2UodmFyaWQpKSwKKwkJCQkJCWdldF9zZXNzaW9uX3ZhcmlhYmxlX25hbWUodmFyaWQp KSwKKwkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgc3RtdC0+bG9jYXRpb24pKSk7CisK KwlhY2xyZXN1bHQgPSBvYmplY3RfYWNsY2hlY2soVmFyaWFibGVSZWxhdGlvbklkLCB2YXJpZCwg R2V0VXNlcklkKCksIEFDTF9VUERBVEUpOworCWlmIChhY2xyZXN1bHQgIT0gQUNMQ0hFQ0tfT0sp CisJCWFjbGNoZWNrX2Vycm9yKGFjbHJlc3VsdCwgT0JKRUNUX1ZBUklBQkxFLCBOYW1lTGlzdFRv U3RyaW5nKG5hbWVzKSk7CisKKwlwc3RhdGUtPnBfZXhwcl9raW5kID0gRVhQUl9LSU5EX0xFVF9U QVJHRVQ7CisKKwkvKiB3ZSBuZWVkIHRvIHBvc3Rwb25lIGNvbnZlcnNpb24gb2YgInVua25vd24i IHRvIHRleHQgKi8KKwlwc3RhdGUtPnBfcmVzb2x2ZV91bmtub3ducyA9IGZhbHNlOworCisJc2Vs ZWN0UXVlcnkgPSB0cmFuc2Zvcm1TdG10KHBzdGF0ZSwgc3RtdC0+cXVlcnkpOworCisJLyogdGhl IGdyYW1tYXIgc2hvdWxkIGhhdmUgcHJvZHVjZWQgYSBTRUxFQ1QgKi8KKwlBc3NlcnQoSXNBKHNl bGVjdFF1ZXJ5LCBRdWVyeSkgJiYgc2VsZWN0UXVlcnktPmNvbW1hbmRUeXBlID09IENNRF9TRUxF Q1QpOworCisJLyoKKwkgKiBHZW5lcmF0ZSBhbiBleHByZXNzaW9uIGxpc3QgZm9yIHRoZSBMRVQg dGhhdCBzZWxlY3RzIGFsbCB0aGUgbm9uLXJlc2p1bmsKKwkgKiBjb2x1bW5zIGZyb20gdGhlIHN1 YnF1ZXJ5LgorCSAqLworCWV4cHJMaXN0ID0gTklMOworCWZvcmVhY2gobGMsIHNlbGVjdFF1ZXJ5 LT50YXJnZXRMaXN0KQorCXsKKwkJVGFyZ2V0RW50cnkgKnRsZSA9IChUYXJnZXRFbnRyeSAqKSBs Zmlyc3QobGMpOworCisJCWlmICh0bGUtPnJlc2p1bmspCisJCQljb250aW51ZTsKKworCQlleHBy TGlzdCA9IGxhcHBlbmQoZXhwckxpc3QsIHRsZS0+ZXhwcik7CisJfQorCisJLyogZG9uJ3QgYWxs b3cgbXVsdGljb2x1bW4gcmVzdWx0ICovCisJaWYgKGxpc3RfbGVuZ3RoKGV4cHJMaXN0KSAhPSAx KQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwK KwkJCQkgZXJybXNnX3BsdXJhbCgiYXNzaWdubWVudCBleHByZXNzaW9uIHJldHVybmVkICVkIGNv bHVtbiIsCisJCQkJCQkJICAgImFzc2lnbm1lbnQgZXhwcmVzc2lvbiByZXR1cm5lZCAlZCBjb2x1 bW5zIiwKKwkJCQkJCQkgICBsaXN0X2xlbmd0aChleHByTGlzdCksCisJCQkJCQkJICAgbGlzdF9s ZW5ndGgoZXhwckxpc3QpKSwKKwkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwKKwkJCQkJ CQkJCWV4cHJMb2NhdGlvbigoTm9kZSAqKSBleHByTGlzdCkpKSk7CisKKwlleHByTGlzdENvZXIg PSBOSUw7CisKKwlmb3JlYWNoKGxjLCBleHByTGlzdCkKKwl7CisJCUV4cHIJICAgKmV4cHIgPSAo RXhwciAqKSBsZmlyc3QobGMpOworCQlFeHByCSAgICpjb2VyY2VkX2V4cHI7CisJCVBhcmFtCSAg ICpwYXJhbTsKKwkJT2lkCQkJZXhwcnR5cGlkOworCisJCS8qIG5vdyB3ZSBjYW4gcmVhZCB0aGUg dHlwZSBvZiB0aGUgZXhwcmVzc2lvbiAqLworCQlleHBydHlwaWQgPSBleHByVHlwZSgoTm9kZSAq KSBleHByKTsKKworCQlwYXJhbSA9IG1ha2VOb2RlKFBhcmFtKTsKKwkJcGFyYW0tPnBhcmFta2lu ZCA9IFBBUkFNX1ZBUklBQkxFOworCQlwYXJhbS0+cGFyYW12YXJpZCA9IHZhcmlkOworCQlwYXJh bS0+cGFyYW10eXBlID0gdHlwaWQ7CisJCXBhcmFtLT5wYXJhbXR5cG1vZCA9IHR5cG1vZDsKKwor CQlpZiAoaW5kaXJlY3Rpb25faGVhZCkKKwkJeworCQkJYm9vbAkJdGFyZ2V0SXNBcnJheTsKKwkJ CWNoYXIJICAgKnRhcmdldE5hbWU7CisKKwkJCXRhcmdldE5hbWUgPSBnZXRfc2Vzc2lvbl92YXJp YWJsZV9uYW1lKHZhcmlkKTsKKwkJCXRhcmdldElzQXJyYXkgPSBPaWRJc1ZhbGlkKGdldF9lbGVt ZW50X3R5cGUodHlwaWQpKTsKKworCQkJcHN0YXRlLT5wX2hhc1Nlc3Npb25WYXJpYWJsZXMgPSB0 cnVlOworCisJCQljb2VyY2VkX2V4cHIgPSAoRXhwciAqKQorCQkJCXRyYW5zZm9ybUFzc2lnbm1l bnRJbmRpcmVjdGlvbihwc3RhdGUsCisJCQkJCQkJCQkJCSAgIChOb2RlICopIHBhcmFtLAorCQkJ CQkJCQkJCQkgICB0YXJnZXROYW1lLAorCQkJCQkJCQkJCQkgICB0YXJnZXRJc0FycmF5LAorCQkJ CQkJCQkJCQkgICB0eXBpZCwKKwkJCQkJCQkJCQkJICAgdHlwbW9kLAorCQkJCQkJCQkJCQkgICBJ bnZhbGlkT2lkLAorCQkJCQkJCQkJCQkgICBzdG10LT50YXJnZXQsCisJCQkJCQkJCQkJCSAgIGlu ZGlyZWN0aW9uX2hlYWQsCisJCQkJCQkJCQkJCSAgIChOb2RlICopIGV4cHIsCisJCQkJCQkJCQkJ CSAgIENPRVJDSU9OX0FTU0lHTk1FTlQsCisJCQkJCQkJCQkJCSAgIHN0bXQtPmxvY2F0aW9uKTsK KwkJfQorCQllbHNlCisJCQljb2VyY2VkX2V4cHIgPSAoRXhwciAqKQorCQkJCWNvZXJjZV90b190 YXJnZXRfdHlwZShwc3RhdGUsCisJCQkJCQkJCQkgIChOb2RlICopIGV4cHIsCisJCQkJCQkJCQkg IGV4cHJ0eXBpZCwKKwkJCQkJCQkJCSAgdHlwaWQsIHR5cG1vZCwKKwkJCQkJCQkJCSAgQ09FUkNJ T05fQVNTSUdOTUVOVCwKKwkJCQkJCQkJCSAgQ09FUkNFX0lNUExJQ0lUX0NBU1QsCisJCQkJCQkJ CQkgIHN0bXQtPmxvY2F0aW9uKTsKKworCQlpZiAoY29lcmNlZF9leHByID09IE5VTEwpCisJCQll cmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwK KwkJCQkJIGVycm1zZygidmFyaWFibGUgXCIlcy4lc1wiIGlzIG9mIHR5cGUgJXMsIgorCQkJCQkJ CSIgYnV0IGV4cHJlc3Npb24gaXMgb2YgdHlwZSAlcyIsCisJCQkJCQkJZ2V0X25hbWVzcGFjZV9u YW1lKGdldF9zZXNzaW9uX3ZhcmlhYmxlX25hbWVzcGFjZSh2YXJpZCkpLAorCQkJCQkJCWdldF9z ZXNzaW9uX3ZhcmlhYmxlX25hbWUodmFyaWQpLAorCQkJCQkJCWZvcm1hdF90eXBlX2JlKHR5cGlk KSwKKwkJCQkJCQlmb3JtYXRfdHlwZV9iZShleHBydHlwaWQpKSwKKwkJCQkJIGVycmhpbnQoIllv dSB3aWxsIG5lZWQgdG8gcmV3cml0ZSBvciBjYXN0IHRoZSBleHByZXNzaW9uLiIpLAorCQkJCQkg cGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZXhwckxvY2F0aW9uKChOb2RlICopIGV4cHIpKSkp OworCisJCWV4cHJMaXN0Q29lciA9IGxhcHBlbmQoZXhwckxpc3RDb2VyLCBjb2VyY2VkX2V4cHIp OworCX0KKworCS8qIGdlbmVyYXRlIHF1ZXJ5J3MgdGFyZ2V0IGxpc3QgdXNpbmcgdGhlIGNvbXB1 dGVkIGxpc3Qgb2YgZXhwcmVzc2lvbnMgKi8KKwlxdWVyeSA9IG1ha2VOb2RlKFF1ZXJ5KTsKKwlx dWVyeS0+Y29tbWFuZFR5cGUgPSBDTURfU0VMRUNUOworCisJZm9yZWFjaChsYywgZXhwckxpc3RD b2VyKQorCXsKKwkJRXhwcgkgICAqZXhwciA9IChFeHByICopIGxmaXJzdChsYyk7CisJCVRhcmdl dEVudHJ5ICp0bGU7CisKKwkJdGxlID0gbWFrZVRhcmdldEVudHJ5KGV4cHIsCisJCQkJCQkJICBp ICsgMSwKKwkJCQkJCQkgIEZpZ3VyZUNvbG5hbWUoKE5vZGUgKikgZXhwciksCisJCQkJCQkJICBm YWxzZSk7CisJCXF1ZXJ5LT50YXJnZXRMaXN0ID0gbGFwcGVuZChxdWVyeS0+dGFyZ2V0TGlzdCwg dGxlKTsKKwl9CisKKwkvKiBkb25lIGJ1aWxkaW5nIHRoZSByYW5nZSB0YWJsZSBhbmQgam9pbnRy ZWUgKi8KKwlxdWVyeS0+cnRhYmxlID0gcHN0YXRlLT5wX3J0YWJsZTsKKwlxdWVyeS0+am9pbnRy ZWUgPSBtYWtlRnJvbUV4cHIocHN0YXRlLT5wX2pvaW5saXN0LCBOVUxMKTsKKworCXF1ZXJ5LT5o YXNUYXJnZXRTUkZzID0gcHN0YXRlLT5wX2hhc1RhcmdldFNSRnM7CisJcXVlcnktPmhhc1N1Ykxp bmtzID0gcHN0YXRlLT5wX2hhc1N1YkxpbmtzOworCXF1ZXJ5LT5oYXNTZXNzaW9uVmFyaWFibGVz ID0gcHN0YXRlLT5wX2hhc1Nlc3Npb25WYXJpYWJsZXM7CisKKwkvKiB0aGlzIGlzIHRvcC1sZXZl bCBxdWVyeSAqLworCXF1ZXJ5LT5jYW5TZXRUYWcgPSB0cnVlOworCisJLyoKKwkgKiBTYXZlIHRh cmdldCBzZXNzaW9uIHZhcmlhYmxlIElELiAgVGhpcyB2YWx1ZSBpcyB1c2VkIG11bHRpcGxlIHRp bWVzOiBieQorCSAqIHRoZSBxdWVyeSByZXdyaXRlciAoZm9yIGdldHRpbmcgcmVsYXRlZCBkZWZl eHByKSwgYnkgcGxhbm5lciAoZm9yCisJICogYWNxdWlyaW5nIGFuIEFjY2Vzc1NoYXJlTG9jayBv biB0YXJnZXQgdmFyaWFibGUpLCBhbmQgYnkgdGhlIGV4ZWN1dG9yCisJICogKHdlIG5lZWQgdG8g a25vdyB0aGUgdGFyZ2V0IHZhcmlhYmxlIElEKS4KKwkgKi8KKwlxdWVyeS0+cmVzdWx0VmFyaWFi bGUgPSB2YXJpZDsKKworCWFzc2lnbl9xdWVyeV9jb2xsYXRpb25zKHBzdGF0ZSwgcXVlcnkpOwor CisJc3RtdC0+cXVlcnkgPSAoTm9kZSAqKSBxdWVyeTsKKworCS8qIHJlcHJlc2VudCB0aGUgY29t bWFuZCBhcyBhIHV0aWxpdHkgUXVlcnkgKi8KKwlyZXN1bHQgPSBtYWtlTm9kZShRdWVyeSk7CisJ cmVzdWx0LT5jb21tYW5kVHlwZSA9IENNRF9VVElMSVRZOworCXJlc3VsdC0+dXRpbGl0eVN0bXQg PSAoTm9kZSAqKSBzdG10OworCisJcmV0dXJuIHJlc3VsdDsKK30KKwogLyoKICAqIHRyYW5zZm9y bVNldE9wZXJhdGlvblN0bXQgLQogICoJICB0cmFuc2Zvcm1zIGEgc2V0LW9wZXJhdGlvbnMgdHJl ZQpAQCAtMTkzMCw2ICsyMTY5LDcgQEAgdHJhbnNmb3JtU2V0T3BlcmF0aW9uU3RtdChQYXJzZVN0 YXRlICpwc3RhdGUsIFNlbGVjdFN0bXQgKnN0bXQpCiAJcXJ5LT5oYXNXaW5kb3dGdW5jcyA9IHBz dGF0ZS0+cF9oYXNXaW5kb3dGdW5jczsKIAlxcnktPmhhc1RhcmdldFNSRnMgPSBwc3RhdGUtPnBf aGFzVGFyZ2V0U1JGczsKIAlxcnktPmhhc0FnZ3MgPSBwc3RhdGUtPnBfaGFzQWdnczsKKwlxcnkt Pmhhc1Nlc3Npb25WYXJpYWJsZXMgPSBwc3RhdGUtPnBfaGFzU2Vzc2lvblZhcmlhYmxlczsKIAog CWZvcmVhY2gobCwgbG9ja2luZ0NsYXVzZSkKIAl7CkBAIC0yNDA0LDYgKzI2NDQsNyBAQCB0cmFu c2Zvcm1SZXR1cm5TdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgUmV0dXJuU3RtdCAqc3RtdCkKIAlx cnktPmhhc1dpbmRvd0Z1bmNzID0gcHN0YXRlLT5wX2hhc1dpbmRvd0Z1bmNzOwogCXFyeS0+aGFz VGFyZ2V0U1JGcyA9IHBzdGF0ZS0+cF9oYXNUYXJnZXRTUkZzOwogCXFyeS0+aGFzQWdncyA9IHBz dGF0ZS0+cF9oYXNBZ2dzOworCXFyeS0+aGFzU2Vzc2lvblZhcmlhYmxlcyA9IHBzdGF0ZS0+cF9o YXNTZXNzaW9uVmFyaWFibGVzOwogCiAJYXNzaWduX3F1ZXJ5X2NvbGxhdGlvbnMocHN0YXRlLCBx cnkpOwogCkBAIC0yNDcxLDYgKzI3MTIsNyBAQCB0cmFuc2Zvcm1VcGRhdGVTdG10KFBhcnNlU3Rh dGUgKnBzdGF0ZSwgVXBkYXRlU3RtdCAqc3RtdCkKIAogCXFyeS0+aGFzVGFyZ2V0U1JGcyA9IHBz dGF0ZS0+cF9oYXNUYXJnZXRTUkZzOwogCXFyeS0+aGFzU3ViTGlua3MgPSBwc3RhdGUtPnBfaGFz U3ViTGlua3M7CisJcXJ5LT5oYXNTZXNzaW9uVmFyaWFibGVzID0gcHN0YXRlLT5wX2hhc1Nlc3Np b25WYXJpYWJsZXM7CiAKIAlhc3NpZ25fcXVlcnlfY29sbGF0aW9ucyhwc3RhdGUsIHFyeSk7CiAK QEAgLTI2NTgsOSArMjkwMCwxNSBAQCB0cmFuc2Zvcm1QTEFzc2lnblN0bXQoUGFyc2VTdGF0ZSAq cHN0YXRlLCBQTEFzc2lnblN0bXQgKnN0bXQpCiAJLyoKIAkgKiBUcmFuc2Zvcm0gdGhlIHRhcmdl dCByZWZlcmVuY2UuICBUeXBpY2FsbHkgd2Ugd2lsbCBnZXQgYmFjayBhIFBhcmFtCiAJICogbm9k ZSwgYnV0IHRoZXJlJ3Mgbm8gcmVhc29uIHRvIGJlIHRvbyBwaWNreSBhYm91dCBpdHMgdHlwZS4K KwkgKgorCSAqIFNlc3Npb24gdmFyaWFibGVzIHNob3VsZCBub3QgYmUgdXNlZCBhcyB0YXJnZXQg b2YgYSBQTC9wZ1NRTCBhc3NpZ24KKwkgKiBzdGF0ZW1lbnQuICBTbyB3ZSBzaG91bGQgdXNlIGEg ZGVkaWNhdGVkIGV4cHJlc3Npb24ga2luZCBhbmQgZGlzYWxsb3cKKwkgKiBzZXNzaW9uIHZhcmlh YmxlcyB0aGVyZS4gIFRoZSBkZWRpY2F0ZWQgY29udGV4dCBhbGxvd3MgdG8gZWxpbWluYXRlCisJ ICogdW5kZXNpcmFibGUgd2FybmluZ3MgYWJvdXQgdGhlIHBvc3NpYmlsaXR5IG9mIGEgdGFyZ2V0 IFBML3BnU1FMIHZhcmlhYmxlCisJICogc2hhZG93aW5nIGEgc2Vzc2lvbiB2YXJpYWJsZS4KIAkg Ki8KIAl0YXJnZXQgPSB0cmFuc2Zvcm1FeHByKHBzdGF0ZSwgKE5vZGUgKikgY3JlZiwKLQkJCQkJ CSAgIEVYUFJfS0lORF9VUERBVEVfVEFSR0VUKTsKKwkJCQkJCSAgIEVYUFJfS0lORF9BU1NJR05f VEFSR0VUKTsKIAl0YXJnZXR0eXBlID0gZXhwclR5cGUodGFyZ2V0KTsKIAl0YXJnZXR0eXBtb2Qg PSBleHByVHlwbW9kKHRhcmdldCk7CiAJdGFyZ2V0Y29sbGF0aW9uID0gZXhwckNvbGxhdGlvbih0 YXJnZXQpOwpAQCAtMjcwMiw2ICsyOTUwLDEwIEBAIHRyYW5zZm9ybVBMQXNzaWduU3RtdChQYXJz ZVN0YXRlICpwc3RhdGUsIFBMQXNzaWduU3RtdCAqc3RtdCkKIAkgKi8KIAl0eXBlX2lkID0gZXhw clR5cGUoKE5vZGUgKikgdGxlLT5leHByKTsKIAorCS8qCisJICogRm9yIGluZGlyZWN0aW9uIHBy b2Nlc3NpbmcgYW5kIGFkZGl0aW9uYWwgY2FzdHMgd2UgY2FuIHVzZSBleHByX2tpbmQKKwkgKiBF WFBSX0tJTkRfVVBEQVRFX1RBUkdFVC4KKwkgKi8KIAlwc3RhdGUtPnBfZXhwcl9raW5kID0gRVhQ Ul9LSU5EX1VQREFURV9UQVJHRVQ7CiAKIAlpZiAoaW5kaXJlY3Rpb24pCkBAIC0yODQ0LDYgKzMw OTYsOCBAQCB0cmFuc2Zvcm1QTEFzc2lnblN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBQTEFzc2ln blN0bXQgKnN0bXQpCiAJCQkJCQkJICAgKExvY2tpbmdDbGF1c2UgKikgbGZpcnN0KGwpLCBmYWxz ZSk7CiAJfQogCisJcXJ5LT5oYXNTZXNzaW9uVmFyaWFibGVzID0gcHN0YXRlLT5wX2hhc1Nlc3Np b25WYXJpYWJsZXM7CisKIAlhc3NpZ25fcXVlcnlfY29sbGF0aW9ucyhwc3RhdGUsIHFyeSk7CiAK IAkvKiB0aGlzIG11c3QgYmUgZG9uZSBhZnRlciBjb2xsYXRpb25zLCBmb3IgcmVsaWFibGUgY29t cGFyaXNvbiBvZiBleHBycyAqLwpAQCAtMzExNyw2ICszMzcxLDE0IEBAIHRyYW5zZm9ybUNhbGxT dG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ2FsbFN0bXQgKnN0bXQpCiAJCQkJCQkJIHRydWUsCiAJ CQkJCQkJIHN0bXQtPmZ1bmNjYWxsLT5sb2NhdGlvbik7CiAKKwkvKgorCSAqIFRoZSBhcmd1bWVu dHMgb2YgQ0FMTCBzdGF0ZW1lbnQgYXJlIGV2YWx1YXRlZCBieSBhIGRpcmVjdCBleHByZXNzaW9u CisJICogZXhlY3V0b3IgY2FsbC4gIFRoaXMgcGF0aCBpcyB1bnN1cHBvcnRlZCB5ZXQsIHNvIGJs b2NrIGl0LiAgSXQgd2lsbCBiZQorCSAqIGVuYWJsZWQgbGF0ZXIuCisJICovCisJaWYgKHBzdGF0 ZS0+cF9oYXNTZXNzaW9uVmFyaWFibGVzKQorCQllbG9nKEVSUk9SLCAic2Vzc2lvbiB2YXJpYWJs ZSBjYW5ub3QgYmUgdXNlZCBhcyBhbiBhcmd1bWVudCIpOworCiAJYXNzaWduX2V4cHJfY29sbGF0 aW9ucyhwc3RhdGUsIG5vZGUpOwogCiAJZmV4cHIgPSBjYXN0Tm9kZShGdW5jRXhwciwgbm9kZSk7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFy c2VyL2dyYW0ueQppbmRleCAzZjJjNTkwY2UzLi41Nzg3NDAyZDM4IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKQEAg LTMwNyw3ICszMDcsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hh ciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCQlEcm9wVHJhbnNmb3Jt U3RtdAogCQlEcm9wVXNlck1hcHBpbmdTdG10IEV4cGxhaW5TdG10IEZldGNoU3RtdAogCQlHcmFu dFN0bXQgR3JhbnRSb2xlU3RtdCBJbXBvcnRGb3JlaWduU2NoZW1hU3RtdCBJbmRleFN0bXQgSW5z ZXJ0U3RtdAotCQlMaXN0ZW5TdG10IExvYWRTdG10IExvY2tTdG10IE1lcmdlU3RtdCBOb3RpZnlT dG10IEV4cGxhaW5hYmxlU3RtdCBQcmVwYXJhYmxlU3RtdAorCQlMZXRTdG10IExpc3RlblN0bXQg TG9hZFN0bXQgTG9ja1N0bXQgTWVyZ2VTdG10IE5vdGlmeVN0bXQgRXhwbGFpbmFibGVTdG10IFBy ZXBhcmFibGVTdG10CiAJCUNyZWF0ZUZ1bmN0aW9uU3RtdCBBbHRlckZ1bmN0aW9uU3RtdCBSZWlu ZGV4U3RtdCBSZW1vdmVBZ2dyU3RtdAogCQlSZW1vdmVGdW5jU3RtdCBSZW1vdmVPcGVyU3RtdCBS ZW5hbWVTdG10IFJldHVyblN0bXQgUmV2b2tlU3RtdCBSZXZva2VSb2xlU3RtdAogCQlSdWxlQWN0 aW9uU3RtdCBSdWxlQWN0aW9uU3RtdE9yRW1wdHkgUnVsZVN0bXQKQEAgLTQ1Nyw2ICs0NTcsNyBA QCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlz dCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCQkJCVRyaWdnZXJUcmFuc2l0aW9ucyBUcmlnZ2Vy UmVmZXJlbmNpbmcKIAkJCQl2YWN1dW1fcmVsYXRpb25fbGlzdCBvcHRfdmFjdXVtX3JlbGF0aW9u X2xpc3QKIAkJCQlkcm9wX29wdGlvbl9saXN0IHB1Yl9vYmpfbGlzdAorCQkJCWxldF90YXJnZXQK IAogJXR5cGUgPG5vZGU+CW9wdF9yb3V0aW5lX2JvZHkKICV0eXBlIDxncm91cGNsYXVzZT4gZ3Jv dXBfY2xhdXNlCkBAIC03NDksNyArNzUwLDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVW aWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAlL RUVQIEtFWSBLRVlTCiAKIAlMQUJFTCBMQU5HVUFHRSBMQVJHRV9QIExBU1RfUCBMQVRFUkFMX1AK LQlMRUFESU5HIExFQUtQUk9PRiBMRUFTVCBMRUZUIExFVkVMIExJS0UgTElNSVQgTElTVEVOIExP QUQgTE9DQUwKKwlMRUFESU5HIExFQUtQUk9PRiBMRUFTVCBMRUZUIExFVCBMRVZFTCBMSUtFIExJ TUlUIExJU1RFTiBMT0FEIExPQ0FMCiAJTE9DQUxUSU1FIExPQ0FMVElNRVNUQU1QIExPQ0FUSU9O IExPQ0tfUCBMT0NLRUQgTE9HR0VECiAKIAlNQVBQSU5HIE1BVENIIE1BVENIRUQgTUFURVJJQUxJ WkVEIE1BWFZBTFVFIE1FUkdFIE1FUkdFX0FDVElPTiBNRVRIT0QKQEAgLTExMDAsNiArMTEwMSw3 IEBAIHN0bXQ6CiAJCQl8IEltcG9ydEZvcmVpZ25TY2hlbWFTdG10CiAJCQl8IEluZGV4U3RtdAog CQkJfCBJbnNlcnRTdG10CisJCQl8IExldFN0bXQKIAkJCXwgTGlzdGVuU3RtdAogCQkJfCBSZWZy ZXNoTWF0Vmlld1N0bXQKIAkJCXwgTG9hZFN0bXQKQEAgLTEyNzY4LDYgKzEyNzcwLDQ3IEBAIG9w dF9ob2xkOiAvKiBFTVBUWSAqLwkJCQkJCXsgJCQgPSAwOyB9CiAJCQl8IFdJVEhPVVQgSE9MRAkJ CQkJeyAkJCA9IDA7IH0KIAkJOwogCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKgkJUVVF Ulk6CisgKgkJCQlMRVQgU1RBVEVNRU5UCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworTGV0 U3RtdDoJTEVUIGxldF90YXJnZXQgJz0nIGFfZXhwcgorCQkJCXsKKwkJCQkJTGV0U3RtdAkgICAq biA9IG1ha2VOb2RlKExldFN0bXQpOworCQkJCQlTZWxlY3RTdG10ICpzZWxlY3Q7CisJCQkJCVJl c1RhcmdldCAgKnJlczsKKworCQkJCQluLT50YXJnZXQgPSAkMjsKKworCQkJCQlzZWxlY3QgPSBt YWtlTm9kZShTZWxlY3RTdG10KTsKKwkJCQkJcmVzID0gbWFrZU5vZGUoUmVzVGFyZ2V0KTsKKwor CQkJCQkvKiBDcmVhdGUgdGFyZ2V0IGxpc3QgZm9yIGltcGxpY2l0IHF1ZXJ5ICovCisJCQkJCXJl cy0+bmFtZSA9IE5VTEw7CisJCQkJCXJlcy0+aW5kaXJlY3Rpb24gPSBOSUw7CisJCQkJCXJlcy0+ dmFsID0gKE5vZGUgKikgJDQ7CisJCQkJCXJlcy0+bG9jYXRpb24gPSBANDsKKworCQkJCQlzZWxl Y3QtPnRhcmdldExpc3QgPSBsaXN0X21ha2UxKHJlcyk7CisJCQkJCW4tPnF1ZXJ5ID0gKE5vZGUg Kikgc2VsZWN0OworCisJCQkJCW4tPmxvY2F0aW9uID0gQDI7CisJCQkJCSQkID0gKE5vZGUgKikg bjsKKwkJCQl9CisJCTsKKworbGV0X3RhcmdldDoKKwkJCUNvbElkIG9wdF9pbmRpcmVjdGlvbgor CQkJCXsKKwkJCQkJJCQgPSBsaXN0X21ha2UxKG1ha2VTdHJpbmcoJDEpKTsKKwkJCQkJaWYgKCQy KQorCQkJCQkJICAkJCA9IGxpc3RfY29uY2F0KCQkLAorCQkJCQkJCQkJCSAgIGNoZWNrX2luZGly ZWN0aW9uKCQyLCB5eXNjYW5uZXIpKTsKKwkJCQl9CisJCTsKKwogLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqCiAgKgogICoJCVFVRVJZOgpAQCAtMTc3OTksNiArMTc4NDIsNyBAQCB1bnJlc2VydmVkX2tl eXdvcmQ6CiAJCQl8IExBUkdFX1AKIAkJCXwgTEFTVF9QCiAJCQl8IExFQUtQUk9PRgorCQkJfCBM RVQKIAkJCXwgTEVWRUwKIAkJCXwgTElTVEVOCiAJCQl8IExPQUQKQEAgLTE4NDEyLDYgKzE4NDU2 LDcgQEAgYmFyZV9sYWJlbF9rZXl3b3JkOgogCQkJfCBMRUFLUFJPT0YKIAkJCXwgTEVBU1QKIAkJ CXwgTEVGVAorCQkJfCBMRVQKIAkJCXwgTEVWRUwKIAkJCXwgTElLRQogCQkJfCBMSVNURU4KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9hZ2cuYyBiL3NyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV9hZ2cuYwppbmRleCBiZWU3ZDgzNDZhLi5iNDk0Yzg4NWU5IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfYWdnLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2Vy L3BhcnNlX2FnZy5jCkBAIC01NzcsNiArNTc3LDExIEBAIGNoZWNrX2FnZ2xldmVsc19hbmRfY29u c3RyYWludHMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpleHByKQogCQkJZXJya2luZCA9IHRy dWU7CiAJCQlicmVhazsKIAorCQljYXNlIEVYUFJfS0lORF9BU1NJR05fVEFSR0VUOgorCQljYXNl IEVYUFJfS0lORF9MRVRfVEFSR0VUOgorCQkJZXJya2luZCA9IHRydWU7CisJCQlicmVhazsKKwog CQkJLyoKIAkJCSAqIFRoZXJlIGlzIGludGVudGlvbmFsbHkgbm8gZGVmYXVsdDogY2FzZSBoZXJl LCBzbyB0aGF0IHRoZQogCQkJICogY29tcGlsZXIgd2lsbCB3YXJuIGlmIHdlIGFkZCBhIG5ldyBQ YXJzZUV4cHJLaW5kIHdpdGhvdXQKQEAgLTk2Nyw2ICs5NzIsMTAgQEAgdHJhbnNmb3JtV2luZG93 RnVuY0NhbGwoUGFyc2VTdGF0ZSAqcHN0YXRlLCBXaW5kb3dGdW5jICp3ZnVuYywKIAkJY2FzZSBF WFBSX0tJTkRfQ1lDTEVfTUFSSzoKIAkJCWVycmtpbmQgPSB0cnVlOwogCQkJYnJlYWs7CisJCWNh c2UgRVhQUl9LSU5EX0FTU0lHTl9UQVJHRVQ6CisJCWNhc2UgRVhQUl9LSU5EX0xFVF9UQVJHRVQ6 CisJCQllcnJraW5kID0gdHJ1ZTsKKwkJCWJyZWFrOwogCiAJCQkvKgogCQkJICogVGhlcmUgaXMg aW50ZW50aW9uYWxseSBubyBkZWZhdWx0OiBjYXNlIGhlcmUsIHNvIHRoYXQgdGhlCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jIGIvc3JjL2JhY2tlbmQvcGFyc2Vy L3BhcnNlX2V4cHIuYwppbmRleCBkMmRiNjlhM2Y5Li5iNTBhYzgwMWE5IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV9leHByLmMKQEAgLTE4LDYgKzE4LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX2FnZ3Jl Z2F0ZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcHJvYy5oIgogI2luY2x1ZGUgImNhdGFsb2cv cGdfdHlwZS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdmFyaWFibGUuaCIKICNpbmNsdWRlICJj b21tYW5kcy9kYmNvbW1hbmRzLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAi bm9kZXMvbWFrZWZ1bmNzLmgiCkBAIC0zNCwxMiArMzUsMTQgQEAKICNpbmNsdWRlICJwYXJzZXIv cGFyc2VfcmVsYXRpb24uaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfdGFyZ2V0LmgiCiAjaW5j bHVkZSAicGFyc2VyL3BhcnNlX3R5cGUuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2xtZ3IuaCIKICNp bmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2RhdGUuaCIKICNpbmNs dWRlICJ1dGlscy9mbWdyb2lkcy5oIgogI2luY2x1ZGUgInV0aWxzL2pzb25iLmgiCiAjaW5jbHVk ZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvdGltZXN0YW1wLmgiCisjaW5j bHVkZSAidXRpbHMvdHlwY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy94bWwuaCIKIAogLyogR1VD IHBhcmFtZXRlcnMgKi8KQEAgLTEwOCw2ICsxMTEsOSBAQCBzdGF0aWMgRXhwciAqbWFrZV9kaXN0 aW5jdF9vcChQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKm9wbmFtZSwKIAkJCQkJCQkgIE5vZGUg Kmx0cmVlLCBOb2RlICpydHJlZSwgaW50IGxvY2F0aW9uKTsKIHN0YXRpYyBOb2RlICptYWtlX251 bGx0ZXN0X2Zyb21fZGlzdGluY3QoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJCQkJCSBBX0V4 cHIgKmRpc3RpbmN0YSwgTm9kZSAqYXJnKTsKK3N0YXRpYyBOb2RlICptYWtlUGFyYW1TZXNzaW9u VmFyaWFibGUoUGFyc2VTdGF0ZSAqcHN0YXRlLAorCQkJCQkJCQkJICBPaWQgdmFyaWQsIE9pZCB0 eXBpZCwgaW50MzIgdHlwbW9kLCBPaWQgY29sbGlkLAorCQkJCQkJCQkJICBjaGFyICphdHRybmFt ZSwgaW50IGxvY2F0aW9uKTsKIAogCiAvKgpAQCAtNTAxLDYgKzUwNyw4OSBAQCB0cmFuc2Zvcm1J bmRpcmVjdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFfSW5kaXJlY3Rpb24gKmluZCkKIAlyZXR1 cm4gcmVzdWx0OwogfQogCisvKgorICogUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBleHByZXNz aW9uIGtpbmQgaXMgdmFsaWQgZm9yIHNlc3Npb24gdmFyaWFibGVzLgorICogU2Vzc2lvbiB2YXJp YWJsZXMgY2FuIGJlIHVzZWQgZXZlcnl3aGVyZSB3aGVyZSBleHRlcm5hbCBwYXJhbWV0ZXJzIGNh biBiZQorICogdXNlZC4gIFNlc3Npb24gdmFyaWFibGVzIGFyZSBub3QgYWxsb3dlZCBpbiBEREwg Y29tbWFuZHMgb3IgaW4gY29uc3RyYWludHMuCisgKgorICogQW4gaWRlbnRpZmllciBjYW4gYmUg cGFyc2VkIGFzIGEgc2Vzc2lvbiB2YXJpYWJsZSBvbmx5IGZvciBleHByZXNzaW9uIGtpbmRzCisg KiB3aGVyZSBzZXNzaW9uIHZhcmlhYmxlcyBhcmUgYWxsb3dlZC4gIFRoaXMgaXMgdGhlIHByaW1h cnkgdXNhZ2Ugb2YgdGhpcworICogZnVuY3Rpb24uCisgKgorICogVGhlIHNlY29uZCB1c2FnZSBv ZiB0aGlzIGZ1bmN0aW9uIGlzIHRvIGRlY2lkZSB3aGV0aGVyIGEgImNvbHVtbiBkb2VzIG5vdAor ICogZXhpc3QiIG9yIGEgImNvbHVtbiBvciB2YXJpYWJsZSBkb2VzIG5vdCBleGlzdCIgZXJyb3Ig bWVzc2FnZSBzaG91bGQgYmUKKyAqIHByaW50ZWQuICBXaGVuIHdlIGFyZSBpbiBhbiBleHByZXNz aW9uIHdoZXJlIHNlc3Npb24gdmFyaWFibGVzIGNhbm5vdCBiZQorICogdXNlZCwgd2UgcmFpc2Ug dGhlIGZpcnN0IGZvcm0gb2YgZXJyb3IgbWVzc2FnZS4KKyAqLworc3RhdGljIGJvb2wKK2V4cHJf a2luZF9hbGxvd3Nfc2Vzc2lvbl92YXJpYWJsZXMoUGFyc2VFeHByS2luZCBwX2V4cHJfa2luZCkK K3sKKwlib29sCQlyZXN1bHQgPSBmYWxzZTsKKworCXN3aXRjaCAocF9leHByX2tpbmQpCisJewor CQljYXNlIEVYUFJfS0lORF9OT05FOgorCQkJQXNzZXJ0KGZhbHNlKTsJCS8qIGNhbid0IGhhcHBl biAqLworCQkJcmV0dXJuIGZhbHNlOworCisJCS8qIHNlc3Npb24gdmFyaWFibGVzIGFsbG93ZWQg Ki8KKwkJY2FzZSBFWFBSX0tJTkRfT1RIRVI6CisJCWNhc2UgRVhQUl9LSU5EX0pPSU5fT046CisJ CWNhc2UgRVhQUl9LSU5EX0ZST01fU1VCU0VMRUNUOgorCQljYXNlIEVYUFJfS0lORF9GUk9NX0ZV TkNUSU9OOgorCQljYXNlIEVYUFJfS0lORF9XSEVSRToKKwkJY2FzZSBFWFBSX0tJTkRfSEFWSU5H OgorCQljYXNlIEVYUFJfS0lORF9GSUxURVI6CisJCWNhc2UgRVhQUl9LSU5EX1dJTkRPV19QQVJU SVRJT046CisJCWNhc2UgRVhQUl9LSU5EX1dJTkRPV19PUkRFUjoKKwkJY2FzZSBFWFBSX0tJTkRf V0lORE9XX0ZSQU1FX1JBTkdFOgorCQljYXNlIEVYUFJfS0lORF9XSU5ET1dfRlJBTUVfUk9XUzoK KwkJY2FzZSBFWFBSX0tJTkRfV0lORE9XX0ZSQU1FX0dST1VQUzoKKwkJY2FzZSBFWFBSX0tJTkRf U0VMRUNUX1RBUkdFVDoKKwkJY2FzZSBFWFBSX0tJTkRfSU5TRVJUX1RBUkdFVDoKKwkJY2FzZSBF WFBSX0tJTkRfVVBEQVRFX1NPVVJDRToKKwkJY2FzZSBFWFBSX0tJTkRfVVBEQVRFX1RBUkdFVDoK KwkJY2FzZSBFWFBSX0tJTkRfTUVSR0VfV0hFTjoKKwkJY2FzZSBFWFBSX0tJTkRfTUVSR0VfUkVU VVJOSU5HOgorCQljYXNlIEVYUFJfS0lORF9HUk9VUF9CWToKKwkJY2FzZSBFWFBSX0tJTkRfT1JE RVJfQlk6CisJCWNhc2UgRVhQUl9LSU5EX0RJU1RJTkNUX09OOgorCQljYXNlIEVYUFJfS0lORF9M SU1JVDoKKwkJY2FzZSBFWFBSX0tJTkRfT0ZGU0VUOgorCQljYXNlIEVYUFJfS0lORF9SRVRVUk5J Tkc6CisJCWNhc2UgRVhQUl9LSU5EX1ZBTFVFUzoKKwkJY2FzZSBFWFBSX0tJTkRfVkFMVUVTX1NJ TkdMRToKKwkJY2FzZSBFWFBSX0tJTkRfQUxURVJfQ09MX1RSQU5TRk9STToKKwkJY2FzZSBFWFBS X0tJTkRfRVhFQ1VURV9QQVJBTUVURVI6CisJCWNhc2UgRVhQUl9LSU5EX1BPTElDWToKKwkJY2Fz ZSBFWFBSX0tJTkRfQ0FMTF9BUkdVTUVOVDoKKwkJY2FzZSBFWFBSX0tJTkRfQ09QWV9XSEVSRToK KwkJY2FzZSBFWFBSX0tJTkRfTEVUX1RBUkdFVDoKKwkJCXJlc3VsdCA9IHRydWU7CisJCQlicmVh azsKKworCQkvKiBzZXNzaW9uIHZhcmlhYmxlcyBub3QgYWxsb3dlZCAqLworCQljYXNlIEVYUFJf S0lORF9DSEVDS19DT05TVFJBSU5UOgorCQljYXNlIEVYUFJfS0lORF9ET01BSU5fQ0hFQ0s6CisJ CWNhc2UgRVhQUl9LSU5EX0NPTFVNTl9ERUZBVUxUOgorCQljYXNlIEVYUFJfS0lORF9GVU5DVElP Tl9ERUZBVUxUOgorCQljYXNlIEVYUFJfS0lORF9JTkRFWF9FWFBSRVNTSU9OOgorCQljYXNlIEVY UFJfS0lORF9JTkRFWF9QUkVESUNBVEU6CisJCWNhc2UgRVhQUl9LSU5EX1NUQVRTX0VYUFJFU1NJ T046CisJCWNhc2UgRVhQUl9LSU5EX1RSSUdHRVJfV0hFTjoKKwkJY2FzZSBFWFBSX0tJTkRfUEFS VElUSU9OX0JPVU5EOgorCQljYXNlIEVYUFJfS0lORF9QQVJUSVRJT05fRVhQUkVTU0lPTjoKKwkJ Y2FzZSBFWFBSX0tJTkRfR0VORVJBVEVEX0NPTFVNTjoKKwkJY2FzZSBFWFBSX0tJTkRfSk9JTl9V U0lORzoKKwkJY2FzZSBFWFBSX0tJTkRfQ1lDTEVfTUFSSzoKKwkJY2FzZSBFWFBSX0tJTkRfQVNT SUdOX1RBUkdFVDoKKwkJCXJlc3VsdCA9IGZhbHNlOworCQkJYnJlYWs7CisJfQorCisJcmV0dXJu IHJlc3VsdDsKK30KKwogLyoKICAqIFRyYW5zZm9ybSBhIENvbHVtblJlZi4KICAqCkBAIC01Nzcs NiArNjY2LDggQEAgdHJhbnNmb3JtQ29sdW1uUmVmKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ29sdW1u UmVmICpjcmVmKQogCQljYXNlIEVYUFJfS0lORF9DT1BZX1dIRVJFOgogCQljYXNlIEVYUFJfS0lO RF9HRU5FUkFURURfQ09MVU1OOgogCQljYXNlIEVYUFJfS0lORF9DWUNMRV9NQVJLOgorCQljYXNl IEVYUFJfS0lORF9BU1NJR05fVEFSR0VUOgorCQljYXNlIEVYUFJfS0lORF9MRVRfVEFSR0VUOgog CQkJLyogb2theSAqLwogCQkJYnJlYWs7CiAKQEAgLTg0OSw4ICs5NDAsNjEgQEAgdHJhbnNmb3Jt Q29sdW1uUmVmKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ29sdW1uUmVmICpjcmVmKQogCX0KIAogCS8q Ci0JICogVGhyb3cgZXJyb3IgaWYgbm8gdHJhbnNsYXRpb24gZm91bmQuCisJICogVGhlcmUgYXJl IGNvbnRleHRzIHdoZXJlIHNlc3Npb24gdmFyaWFibGVzIGFyZSBub3QgYWxsb3dlZC4gIFdlIGRv bid0CisJICogbmVlZCB0byBpZGVudGlmeSBzZXNzaW9uIHZhcmlhYmxlcyBpbiBzdWNoIGEgY29u dGV4dCwgYnV0IGlkZW50aWZ5aW5nCisJICogdGhlbSBhbGxvd3MgdXMgdG8gcmFpc2UgbWVhbmlu Z2Z1bCBlcnJvciBtZXNzYWdlcyBsaWtlICJ5b3UgY2Fubm90IHVzZQorCSAqIHNlc3Npb24gdmFy aWFibGVzIGhlcmUiLgogCSAqLworCWlmIChleHByX2tpbmRfYWxsb3dzX3Nlc3Npb25fdmFyaWFi bGVzKHBzdGF0ZS0+cF9leHByX2tpbmQpKQorCXsKKwkJT2lkCQkJdmFyaWQgPSBJbnZhbGlkT2lk OworCQljaGFyCSAgICphdHRybmFtZSA9IE5VTEw7CisJCWJvb2wJCW5vdF91bmlxdWU7CisKKwkJ LyogLS0tLS0KKwkJICogU2Vzc2lvbiB2YXJpYWJsZXMgYXJlIHNoYWRvd2VkIGJ5IGNvbHVtbnMs IHJvdXRpbmUgdmFyaWFibGVzIG9yCisJCSAqIHJvdXRpbmUgYXJndW1lbnRzLiAgV2UgY2VydGFp bmx5IGRvbid0IHdhbnQgdG8gdXNlIGEgc2Vzc2lvbiB2YXJpYWJsZQorCQkgKiB3aGVuIGl0IGlz IGV4YWN0bHkgc2hhZG93ZWQsIGJ1dCBhIFJURSBsaWtlIHRoaXMgaXMgY29uY2VpdmFibGU6CisJ CSAqCisJCSAqIENSRUFURSBUWVBFIHQgQVMgKGMgaW50KTsKKwkJICogQ1JFQVRFIFZBUklBQkxF IGZvbyBBUyB0OworCQkgKiBDUkVBVEUgVEFCTEUgZm9vKGEgaW50LCBiIGludCk7CisJCSAqCisJ CSAqIFNFTEVDVCBmb28uYSwgZm9vLmIsIGZvby5jIEZST00gZm9vOworCQkgKgorCQkgKiBIb3dl dmVyLCB0aGF0IGlzIHZlcnkgY29uZnVzaW5nLCBzbyB3ZSBkaXNhbGxvdyBpdC4gIFdlIGRvbid0 IHRyeSB0bworCQkgKiBpZGVudGlmeSBhIHZhcmlhYmxlIGlmIHdlIGtub3cgdGhhdCBpdCB3b3Vs ZCBiZSBzaGFkb3dlZC4KKwkJICogLS0tLS0KKwkJICovCisJCWlmICghbm9kZSAmJiAhKHJlbG5h bWUgJiYgY3JlcnIgPT0gQ1JFUlJfTk9fQ09MVU1OKSkKKwkJeworCQkJLyogdGFrZXMgYW4gQWNj ZXNzU2hhcmVMb2NrIG9uIHRoZSBzZXNzaW9uIHZhcmlhYmxlICovCisJCQl2YXJpZCA9IElkZW50 aWZ5VmFyaWFibGUoY3JlZi0+ZmllbGRzLCAmYXR0cm5hbWUsICZub3RfdW5pcXVlLCBmYWxzZSk7 CisKKwkJCWlmIChPaWRJc1ZhbGlkKHZhcmlkKSkKKwkJCXsKKwkJCQlPaWQJCQl0eXBpZDsKKwkJ CQlpbnQzMgkJdHlwbW9kOworCQkJCU9pZAkJCWNvbGxpZDsKKworCQkJCWlmIChub3RfdW5pcXVl KQorCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfQU1CSUdVT1VT X1BBUkFNRVRFUiksCisJCQkJCQkJIGVycm1zZygic2Vzc2lvbiB2YXJpYWJsZSByZWZlcmVuY2Ug XCIlc1wiIGlzIGFtYmlndW91cyIsCisJCQkJCQkJCQlOYW1lTGlzdFRvU3RyaW5nKGNyZWYtPmZp ZWxkcykpLAorCQkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBjcmVmLT5sb2NhdGlv bikpKTsKKworCQkJCWdldF9zZXNzaW9uX3ZhcmlhYmxlX3R5cGVfdHlwbW9kX2NvbGxpZCh2YXJp ZCwgJnR5cGlkLCAmdHlwbW9kLAorCQkJCQkJCQkJCQkJCQkmY29sbGlkKTsKKworCQkJCW5vZGUg PSBtYWtlUGFyYW1TZXNzaW9uVmFyaWFibGUocHN0YXRlLAorCQkJCQkJCQkJCQkJdmFyaWQsIHR5 cGlkLCB0eXBtb2QsIGNvbGxpZCwKKwkJCQkJCQkJCQkJCWF0dHJuYW1lLCBjcmVmLT5sb2NhdGlv bik7CisJCQl9CisJCX0KKwl9CisKKwkvKiB0aHJvdyBhbiBlcnJvciBpZiBubyB0cmFuc2xhdGlv biB3YXMgZm91bmQgKi8KIAlpZiAobm9kZSA9PSBOVUxMKQogCXsKIAkJc3dpdGNoIChjcmVycikK QEAgLTg4Miw2ICsxMDI2LDcyIEBAIHRyYW5zZm9ybUNvbHVtblJlZihQYXJzZVN0YXRlICpwc3Rh dGUsIENvbHVtblJlZiAqY3JlZikKIAlyZXR1cm4gbm9kZTsKIH0KIAorLyoKKyAqIEdlbmVyYXRl IHBhcmFtIHZhcmlhYmxlIGZvciByZWZlcmVuY2UgdG8gc2Vzc2lvbiB2YXJpYWJsZQorICovCitz dGF0aWMgTm9kZSAqCittYWtlUGFyYW1TZXNzaW9uVmFyaWFibGUoUGFyc2VTdGF0ZSAqcHN0YXRl LAorCQkJCQkJIE9pZCB2YXJpZCwgT2lkIHR5cGlkLCBpbnQzMiB0eXBtb2QsIE9pZCBjb2xsaWQs CisJCQkJCQkgY2hhciAqYXR0cm5hbWUsIGludCBsb2NhdGlvbikKK3sKKwlQYXJhbQkgICAqcGFy YW07CisKKwlwYXJhbSA9IG1ha2VOb2RlKFBhcmFtKTsKKworCXBhcmFtLT5wYXJhbWtpbmQgPSBQ QVJBTV9WQVJJQUJMRTsKKwlwYXJhbS0+cGFyYW12YXJpZCA9IHZhcmlkOworCXBhcmFtLT5wYXJh bXR5cGUgPSB0eXBpZDsKKwlwYXJhbS0+cGFyYW10eXBtb2QgPSB0eXBtb2Q7CisJcGFyYW0tPnBh cmFtY29sbGlkID0gY29sbGlkOworCisJcHN0YXRlLT5wX2hhc1Nlc3Npb25WYXJpYWJsZXMgPSB0 cnVlOworCisJaWYgKGF0dHJuYW1lICE9IE5VTEwpCisJeworCQlUdXBsZURlc2MJdHVwZGVzYzsK KwkJaW50CQkJaTsKKworCQl0dXBkZXNjID0gbG9va3VwX3Jvd3R5cGVfdHVwZGVzY19ub2Vycm9y KHR5cGlkLCB0eXBtb2QsIHRydWUpOworCQlpZiAoIXR1cGRlc2MpCisJCQllcmVwb3J0KEVSUk9S LAorCQkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKKwkJCQkJIGVycm1z ZygidmFyaWFibGUgXCIlcy4lc1wiIGlzIG9mIHR5cGUgXCIlc1wiLCB3aGljaCBpcyBub3QgYSBj b21wb3NpdGUgdHlwZSIsCisJCQkJCQkJZ2V0X25hbWVzcGFjZV9uYW1lKGdldF9zZXNzaW9uX3Zh cmlhYmxlX25hbWVzcGFjZSh2YXJpZCkpLAorCQkJCQkJCWdldF9zZXNzaW9uX3ZhcmlhYmxlX25h bWUodmFyaWQpLAorCQkJCQkJCWZvcm1hdF90eXBlX2JlKHR5cGlkKSksCisJCQkJCSBwYXJzZXJf ZXJycG9zaXRpb24ocHN0YXRlLCBsb2NhdGlvbikpKTsKKworCQlmb3IgKGkgPSAwOyBpIDwgdHVw ZGVzYy0+bmF0dHM7IGkrKykKKwkJeworCQkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0ID0gVHVwbGVE ZXNjQXR0cih0dXBkZXNjLCBpKTsKKworCQkJaWYgKHN0cmNtcChhdHRybmFtZSwgTmFtZVN0cihh dHQtPmF0dG5hbWUpKSA9PSAwICYmCisJCQkJIWF0dC0+YXR0aXNkcm9wcGVkKQorCQkJeworCQkJ CS8qIFN1Y2Nlc3MsIHNvIGdlbmVyYXRlIGEgRmllbGRTZWxlY3QgZXhwcmVzc2lvbiAqLworCQkJ CUZpZWxkU2VsZWN0ICpmc2VsZWN0ID0gbWFrZU5vZGUoRmllbGRTZWxlY3QpOworCisJCQkJZnNl bGVjdC0+YXJnID0gKEV4cHIgKikgcGFyYW07CisJCQkJZnNlbGVjdC0+ZmllbGRudW0gPSBpICsg MTsKKwkJCQlmc2VsZWN0LT5yZXN1bHR0eXBlID0gYXR0LT5hdHR0eXBpZDsKKwkJCQlmc2VsZWN0 LT5yZXN1bHR0eXBtb2QgPSBhdHQtPmF0dHR5cG1vZDsKKwkJCQkvKiBzYXZlIGF0dHJpYnV0ZSdz IGNvbGxhdGlvbiBmb3IgcGFyc2VfY29sbGF0ZS5jICovCisJCQkJZnNlbGVjdC0+cmVzdWx0Y29s bGlkID0gYXR0LT5hdHRjb2xsYXRpb247CisKKwkJCQlSZWxlYXNlVHVwbGVEZXNjKHR1cGRlc2Mp OworCQkJCXJldHVybiAoTm9kZSAqKSBmc2VsZWN0OworCQkJfQorCQl9CisKKwkJZXJlcG9ydChF UlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9DT0xVTU4pLAorCQkJCSBlcnJt c2coImNvdWxkIG5vdCBpZGVudGlmeSBjb2x1bW4gXCIlc1wiIGluIHZhcmlhYmxlIiwgYXR0cm5h bWUpLAorCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBsb2NhdGlvbikpKTsKKwl9CisK KwlyZXR1cm4gKE5vZGUgKikgcGFyYW07Cit9CisKIHN0YXRpYyBOb2RlICoKIHRyYW5zZm9ybVBh cmFtUmVmKFBhcnNlU3RhdGUgKnBzdGF0ZSwgUGFyYW1SZWYgKnByZWYpCiB7CkBAIC0xODE2LDYg KzIwMjYsNyBAQCB0cmFuc2Zvcm1TdWJMaW5rKFBhcnNlU3RhdGUgKnBzdGF0ZSwgU3ViTGluayAq c3VibGluaykKIAkJY2FzZSBFWFBSX0tJTkRfVkFMVUVTOgogCQljYXNlIEVYUFJfS0lORF9WQUxV RVNfU0lOR0xFOgogCQljYXNlIEVYUFJfS0lORF9DWUNMRV9NQVJLOgorCQljYXNlIEVYUFJfS0lO RF9MRVRfVEFSR0VUOgogCQkJLyogb2theSAqLwogCQkJYnJlYWs7CiAJCWNhc2UgRVhQUl9LSU5E X0NIRUNLX0NPTlNUUkFJTlQ6CkBAIC0xODU5LDYgKzIwNzAsOSBAQCB0cmFuc2Zvcm1TdWJMaW5r KFBhcnNlU3RhdGUgKnBzdGF0ZSwgU3ViTGluayAqc3VibGluaykKIAkJY2FzZSBFWFBSX0tJTkRf R0VORVJBVEVEX0NPTFVNTjoKIAkJCWVyciA9IF8oImNhbm5vdCB1c2Ugc3VicXVlcnkgaW4gY29s dW1uIGdlbmVyYXRpb24gZXhwcmVzc2lvbiIpOwogCQkJYnJlYWs7CisJCWNhc2UgRVhQUl9LSU5E X0FTU0lHTl9UQVJHRVQ6CisJCQllcnIgPSBfKCJjYW5ub3QgdXNlIHN1YnF1ZXJ5IGFzIHRhcmdl dCBvZiBhc3NpZ24gc3RhdGVtZW50Iik7CisJCQlicmVhazsKIAogCQkJLyoKIAkJCSAqIFRoZXJl IGlzIGludGVudGlvbmFsbHkgbm8gZGVmYXVsdDogY2FzZSBoZXJlLCBzbyB0aGF0IHRoZQpAQCAt MzE5Niw2ICszNDEwLDEwIEBAIFBhcnNlRXhwcktpbmROYW1lKFBhcnNlRXhwcktpbmQgZXhwcktp bmQpCiAJCQlyZXR1cm4gIkdFTkVSQVRFRCBBUyI7CiAJCWNhc2UgRVhQUl9LSU5EX0NZQ0xFX01B Uks6CiAJCQlyZXR1cm4gIkNZQ0xFIjsKKwkJY2FzZSBFWFBSX0tJTkRfQVNTSUdOX1RBUkdFVDoK KwkJCXJldHVybiAiQVNTSUdOIjsKKwkJY2FzZSBFWFBSX0tJTkRfTEVUX1RBUkdFVDoKKwkJCXJl dHVybiAiTEVUIjsKIAogCQkJLyoKIAkJCSAqIFRoZXJlIGlzIGludGVudGlvbmFsbHkgbm8gZGVm YXVsdDogY2FzZSBoZXJlLCBzbyB0aGF0IHRoZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX2Z1bmMuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMKaW5kZXgg OWIyMzM0NGEzYi4uOWFhNGY2MDc2OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX2Z1bmMuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jCkBAIC0yNjU2 LDYgKzI2NTYsOCBAQCBjaGVja19zcmZfY2FsbF9wbGFjZW1lbnQoUGFyc2VTdGF0ZSAqcHN0YXRl LCBOb2RlICpsYXN0X3NyZiwgaW50IGxvY2F0aW9uKQogCQkJZXJyID0gXygic2V0LXJldHVybmlu ZyBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIGNvbHVtbiBnZW5lcmF0aW9uIGV4cHJlc3Np b25zIik7CiAJCQlicmVhazsKIAkJY2FzZSBFWFBSX0tJTkRfQ1lDTEVfTUFSSzoKKwkJY2FzZSBF WFBSX0tJTkRfQVNTSUdOX1RBUkdFVDoKKwkJY2FzZSBFWFBSX0tJTkRfTEVUX1RBUkdFVDoKIAkJ CWVycmtpbmQgPSB0cnVlOwogCQkJYnJlYWs7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rj b3AvZGVzdC5jIGIvc3JjL2JhY2tlbmQvdGNvcC9kZXN0LmMKaW5kZXggOTZmODBiMzA0Ni4uZGFj NzhiYTVjYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9kZXN0LmMKKysrIGIvc3JjL2Jh Y2tlbmQvdGNvcC9kZXN0LmMKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJleGVjdXRvci9m dW5jdGlvbnMuaCIKICNpbmNsdWRlICJleGVjdXRvci90cXVldWUuaCIKICNpbmNsdWRlICJleGVj dXRvci90c3RvcmVSZWNlaXZlci5oIgorI2luY2x1ZGUgImV4ZWN1dG9yL3N2YXJpYWJsZVJlY2Vp dmVyLmgiCiAjaW5jbHVkZSAibGlicHEvbGlicHEuaCIKICNpbmNsdWRlICJsaWJwcS9wcWZvcm1h dC5oIgogCkBAIC0xNTUsNiArMTU2LDkgQEAgQ3JlYXRlRGVzdFJlY2VpdmVyKENvbW1hbmREZXN0 IGRlc3QpCiAKIAkJY2FzZSBEZXN0RXhwbGFpblNlcmlhbGl6ZToKIAkJCXJldHVybiBDcmVhdGVF eHBsYWluU2VyaWFsaXplRGVzdFJlY2VpdmVyKE5VTEwpOworCisJCWNhc2UgRGVzdFZhcmlhYmxl OgorCQkJcmV0dXJuIENyZWF0ZVZhcmlhYmxlRGVzdFJlY2VpdmVyKEludmFsaWRPaWQpOwogCX0K IAogCS8qIHNob3VsZCBuZXZlciBnZXQgaGVyZSAqLwpAQCAtMTkxLDYgKzE5NSw3IEBAIEVuZENv bW1hbmQoY29uc3QgUXVlcnlDb21wbGV0aW9uICpxYywgQ29tbWFuZERlc3QgZGVzdCwgYm9vbCBm b3JjZV91bmRlY29yYXRlZF9vCiAJCWNhc2UgRGVzdFRyYW5zaWVudFJlbDoKIAkJY2FzZSBEZXN0 VHVwbGVRdWV1ZToKIAkJY2FzZSBEZXN0RXhwbGFpblNlcmlhbGl6ZToKKwkJY2FzZSBEZXN0VmFy aWFibGU6CiAJCQlicmVhazsKIAl9CiB9CkBAIC0yMzcsNiArMjQyLDcgQEAgTnVsbENvbW1hbmQo Q29tbWFuZERlc3QgZGVzdCkKIAkJY2FzZSBEZXN0VHJhbnNpZW50UmVsOgogCQljYXNlIERlc3RU dXBsZVF1ZXVlOgogCQljYXNlIERlc3RFeHBsYWluU2VyaWFsaXplOgorCQljYXNlIERlc3RWYXJp YWJsZToKIAkJCWJyZWFrOwogCX0KIH0KQEAgLTI4MSw2ICsyODcsNyBAQCBSZWFkeUZvclF1ZXJ5 KENvbW1hbmREZXN0IGRlc3QpCiAJCWNhc2UgRGVzdFRyYW5zaWVudFJlbDoKIAkJY2FzZSBEZXN0 VHVwbGVRdWV1ZToKIAkJY2FzZSBEZXN0RXhwbGFpblNlcmlhbGl6ZToKKwkJY2FzZSBEZXN0VmFy aWFibGU6CiAJCQlicmVhazsKIAl9CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3Bx dWVyeS5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYwppbmRleCAwYzQ1ZmNmMzE4Li44NWI4 MDljYjA3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jCisrKyBiL3NyYy9i YWNrZW5kL3Rjb3AvcHF1ZXJ5LmMKQEAgLTg2LDYgKzg2LDkgQEAgQ3JlYXRlUXVlcnlEZXNjKFBs YW5uZWRTdG10ICpwbGFubmVkc3RtdCwKIAlxZC0+cXVlcnlFbnYgPSBxdWVyeUVudjsKIAlxZC0+ aW5zdHJ1bWVudF9vcHRpb25zID0gaW5zdHJ1bWVudF9vcHRpb25zOwkvKiBpbnN0cnVtZW50YXRp b24gd2FudGVkPyAqLwogCisJcWQtPm51bV9zZXNzaW9uX3ZhcmlhYmxlcyA9IDA7CisJcWQtPnNl c3Npb25fdmFyaWFibGVzID0gTlVMTDsKKwogCS8qIG51bGwgdGhlc2UgZmllbGRzIHVudGlsIHNl dCBieSBFeGVjdXRvclN0YXJ0ICovCiAJcWQtPnR1cERlc2MgPSBOVUxMOwogCXFkLT5lc3RhdGUg PSBOVUxMOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMgYi9zcmMvYmFj a2VuZC90Y29wL3V0aWxpdHkuYwppbmRleCBjZThkYjdjZGE0Li42NjJkYmNkMWRkIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3V0 aWxpdHkuYwpAQCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUgImNvbW1hbmRzL3NjaGVtYWNtZHMu aCIKICNpbmNsdWRlICJjb21tYW5kcy9zZWNsYWJlbC5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3Nl cXVlbmNlLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvc2Vzc2lvbl92YXJpYWJsZS5oIgogI2luY2x1 ZGUgImNvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuaCIKICNpbmNsdWRlICJjb21tYW5kcy90YWJs ZWNtZHMuaCIKICNpbmNsdWRlICJjb21tYW5kcy90YWJsZXNwYWNlLmgiCkBAIC0yMzUsNiArMjM2 LDcgQEAgQ2xhc3NpZnlVdGlsaXR5Q29tbWFuZEFzUmVhZE9ubHkoTm9kZSAqcGFyc2V0cmVlKQog CiAJCWNhc2UgVF9DYWxsU3RtdDoKIAkJY2FzZSBUX0RvU3RtdDoKKwkJY2FzZSBUX0xldFN0bXQ6 CiAJCQl7CiAJCQkJLyoKIAkJCQkgKiBDb21tYW5kcyBpbnNpZGUgdGhlIERPIGJsb2NrIG9yIHRo ZSBjYWxsZWQgcHJvY2VkdXJlIG1pZ2h0CkBAIC0xMDY0LDYgKzEwNjYsMTEgQEAgc3RhbmRhcmRf UHJvY2Vzc1V0aWxpdHkoUGxhbm5lZFN0bXQgKnBzdG10LAogCQkJCWJyZWFrOwogCQkJfQogCisJ CWNhc2UgVF9MZXRTdG10OgorCQkJRXhlY3V0ZUxldFN0bXQocHN0YXRlLCAoTGV0U3RtdCAqKSBw YXJzZXRyZWUsIHBhcmFtcywKKwkJCQkJCSAgIHF1ZXJ5RW52LCBxYyk7CisJCQlicmVhazsKKwog CQlkZWZhdWx0OgogCQkJLyogQWxsIG90aGVyIHN0YXRlbWVudCB0eXBlcyBoYXZlIGV2ZW50IHRy aWdnZXIgc3VwcG9ydCAqLwogCQkJUHJvY2Vzc1V0aWxpdHlTbG93KHBzdGF0ZSwgcHN0bXQsIHF1 ZXJ5U3RyaW5nLApAQCAtMjIwMyw2ICsyMjEwLDEwIEBAIFV0aWxpdHlDb250YWluc1F1ZXJ5KE5v ZGUgKnBhcnNldHJlZSkKIAkJCQlyZXR1cm4gVXRpbGl0eUNvbnRhaW5zUXVlcnkocXJ5LT51dGls aXR5U3RtdCk7CiAJCQlyZXR1cm4gcXJ5OwogCisJCWNhc2UgVF9MZXRTdG10OgorCQkJcXJ5ID0g Y2FzdE5vZGUoUXVlcnksICgoTGV0U3RtdCAqKSBwYXJzZXRyZWUpLT5xdWVyeSk7CisJCQlyZXR1 cm4gcXJ5OworCiAJCWRlZmF1bHQ6CiAJCQlyZXR1cm4gTlVMTDsKIAl9CkBAIC0yNDAxLDYgKzI0 MTIsMTAgQEAgQ3JlYXRlQ29tbWFuZFRhZyhOb2RlICpwYXJzZXRyZWUpCiAJCQl0YWcgPSBDTURU QUdfU0VMRUNUOwogCQkJYnJlYWs7CiAKKwkJY2FzZSBUX0xldFN0bXQ6CisJCQl0YWcgPSBDTURU QUdfTEVUOworCQkJYnJlYWs7CisKIAkJCS8qIHV0aWxpdHkgc3RhdGVtZW50cyAtLS0gc2FtZSB3 aGV0aGVyIHJhdyBvciBjb29rZWQgKi8KIAkJY2FzZSBUX1RyYW5zYWN0aW9uU3RtdDoKIAkJCXsK QEAgLTMyODYsNiArMzMwMSw3IEBAIEdldENvbW1hbmRMb2dMZXZlbChOb2RlICpwYXJzZXRyZWUp CiAJCQlicmVhazsKIAogCQljYXNlIFRfUExBc3NpZ25TdG10OgorCQljYXNlIFRfTGV0U3RtdDoK IAkJCWxldiA9IExPR1NUTVRfQUxMOwogCQkJYnJlYWs7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRp bHMuYwppbmRleCA2NTM2ODViZmZjLi5hMGVkZDVlMDQ5IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1 dGlscy5jCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zdGF0aXN0aWNf ZXh0LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190cmlnZ2VyLmgiCiAjaW5jbHVkZSAiY2F0YWxv Zy9wZ190eXBlLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ192YXJpYWJsZS5oIgogI2luY2x1ZGUg ImNvbW1hbmRzL2RlZnJlbS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3RhYmxlc3BhY2UuaCIKICNp bmNsdWRlICJjb21tb24va2V5d29yZHMuaCIKQEAgLTUxOSw2ICs1MjAsNyBAQCBzdGF0aWMgY2hh ciAqZ2VuZXJhdGVfZnVuY3Rpb25fbmFtZShPaWQgZnVuY2lkLCBpbnQgbmFyZ3MsCiBzdGF0aWMg Y2hhciAqZ2VuZXJhdGVfb3BlcmF0b3JfbmFtZShPaWQgb3BlcmlkLCBPaWQgYXJnMSwgT2lkIGFy ZzIpOwogc3RhdGljIHZvaWQgYWRkX2Nhc3RfdG8oU3RyaW5nSW5mbyBidWYsIE9pZCB0eXBpZCk7 CiBzdGF0aWMgY2hhciAqZ2VuZXJhdGVfcXVhbGlmaWVkX3R5cGVfbmFtZShPaWQgdHlwaWQpOwor c3RhdGljIGNoYXIgKmdlbmVyYXRlX3Nlc3Npb25fdmFyaWFibGVfbmFtZShPaWQgdmFyaWQpOwog c3RhdGljIHRleHQgKnN0cmluZ190b190ZXh0KGNoYXIgKnN0cik7CiBzdGF0aWMgY2hhciAqZmxh dHRlbl9yZWxvcHRpb25zKE9pZCByZWxpZCk7CiBzdGF0aWMgdm9pZCBnZXRfcmVsb3B0aW9ucyhT dHJpbmdJbmZvIGJ1ZiwgRGF0dW0gcmVsb3B0aW9ucyk7CkBAIC04MzUxLDYgKzgzNTMsMTQgQEAg Z2V0X3BhcmFtZXRlcihQYXJhbSAqcGFyYW0sIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCkKIAkJ cmV0dXJuOwogCX0KIAorCS8qIHRyYW5zbGF0ZSBwYXJhbXZhcmlkIHRvIHNlc3Npb24gdmFyaWFi bGUgbmFtZSAqLworCWlmIChwYXJhbS0+cGFyYW1raW5kID09IFBBUkFNX1ZBUklBQkxFKQorCXsK KwkJYXBwZW5kU3RyaW5nSW5mbyhjb250ZXh0LT5idWYsICIlcyIsCisJCQkJCQkgZ2VuZXJhdGVf c2Vzc2lvbl92YXJpYWJsZV9uYW1lKHBhcmFtLT5wYXJhbXZhcmlkKSk7CisJCXJldHVybjsKKwl9 CisKIAkvKgogCSAqIEFsdGVybmF0aXZlbHksIG1heWJlIGl0J3MgYSBzdWJwbGFuIG91dHB1dCwg d2hpY2ggd2UgcHJpbnQgYXMgYQogCSAqIHJlZmVyZW5jZSB0byB0aGUgc3VicGxhbi4gIChXZSBj b3VsZCBkcmlsbCBkb3duIGludG8gdGhlIHN1YnBsYW4gYW5kCkBAIC0xMzEzMSw2ICsxMzE0MSw0 MiBAQCBnZW5lcmF0ZV9jb2xsYXRpb25fbmFtZShPaWQgY29sbGlkKQogCXJldHVybiByZXN1bHQ7 CiB9CiAKKy8qCisgKiBnZW5lcmF0ZV9zZXNzaW9uX3ZhcmlhYmxlX25hbWUKKyAqCQlDb21wdXRl IHRoZSBuYW1lIHRvIGRpc3BsYXkgZm9yIGEgc2Vzc2lvbiB2YXJpYWJsZSBzcGVjaWZpZWQgYnkg T0lECisgKgorICogVGhlIHJlc3VsdCBpbmNsdWRlcyBhbGwgbmVjZXNzYXJ5IHF1b3RpbmcgYW5k IHNjaGVtYS1wcmVmaXhpbmcuCisgKi8KK3N0YXRpYyBjaGFyICoKK2dlbmVyYXRlX3Nlc3Npb25f dmFyaWFibGVfbmFtZShPaWQgdmFyaWQpCit7CisJSGVhcFR1cGxlCXR1cDsKKwlGb3JtX3BnX3Zh cmlhYmxlIHZhcmZvcm07CisJY2hhcgkgICAqdmFybmFtZTsKKwljaGFyCSAgICpuc3BuYW1lOwor CWNoYXIJICAgKnJlc3VsdDsKKworCXR1cCA9IFNlYXJjaFN5c0NhY2hlMShWQVJJQUJMRU9JRCwg T2JqZWN0SWRHZXREYXR1bSh2YXJpZCkpOworCisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cCkp CisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciB2YXJpYWJsZSAldSIsIHZh cmlkKTsKKworCXZhcmZvcm0gPSAoRm9ybV9wZ192YXJpYWJsZSkgR0VUU1RSVUNUKHR1cCk7CisK Kwl2YXJuYW1lID0gTmFtZVN0cih2YXJmb3JtLT52YXJuYW1lKTsKKworCWlmICghVmFyaWFibGVJ c1Zpc2libGUodmFyaWQpKQorCQluc3BuYW1lID0gZ2V0X25hbWVzcGFjZV9uYW1lX29yX3RlbXAo dmFyZm9ybS0+dmFybmFtZXNwYWNlKTsKKwllbHNlCisJCW5zcG5hbWUgPSBOVUxMOworCisJcmVz dWx0ID0gcXVvdGVfcXVhbGlmaWVkX2lkZW50aWZpZXIobnNwbmFtZSwgdmFybmFtZSk7CisKKwlS ZWxlYXNlU3lzQ2FjaGUodHVwKTsKKworCXJldHVybiByZXN1bHQ7Cit9CisKIC8qCiAgKiBHaXZl biBhIEMgc3RyaW5nLCBwcm9kdWNlIGEgVEVYVCBkYXR1bS4KICAqCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hl L3BsYW5jYWNoZS5jCmluZGV4IDVhZjFhMTY4ZWMuLjdlMWU5ZTI4ZjEgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxz L2NhY2hlL3BsYW5jYWNoZS5jCkBAIC01OCw2ICs1OCw3IEBACiAKICNpbmNsdWRlICJhY2Nlc3Mv dHJhbnNhbS5oIgogI2luY2x1ZGUgImNhdGFsb2cvbmFtZXNwYWNlLmgiCisjaW5jbHVkZSAiY2F0 YWxvZy9wZ192YXJpYWJsZS5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCiAjaW5j bHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCkBAIC0xNjIs NiArMTYzLDcgQEAgSW5pdFBsYW5DYWNoZSh2b2lkKQogCUNhY2hlUmVnaXN0ZXJTeXNjYWNoZUNh bGxiYWNrKEFNT1BPUElELCBQbGFuQ2FjaGVTeXNDYWxsYmFjaywgKERhdHVtKSAwKTsKIAlDYWNo ZVJlZ2lzdGVyU3lzY2FjaGVDYWxsYmFjayhGT1JFSUdOU0VSVkVST0lELCBQbGFuQ2FjaGVTeXND YWxsYmFjaywgKERhdHVtKSAwKTsKIAlDYWNoZVJlZ2lzdGVyU3lzY2FjaGVDYWxsYmFjayhGT1JF SUdOREFUQVdSQVBQRVJPSUQsIFBsYW5DYWNoZVN5c0NhbGxiYWNrLCAoRGF0dW0pIDApOworCUNh Y2hlUmVnaXN0ZXJTeXNjYWNoZUNhbGxiYWNrKFZBUklBQkxFT0lELCBQbGFuQ2FjaGVPYmplY3RD YWxsYmFjaywgKERhdHVtKSAwKTsKIH0KIAogLyoKQEAgLTE5MDMsMTggKzE5MDUsMzMgQEAgU2Nh blF1ZXJ5Rm9yTG9ja3MoUXVlcnkgKnBhcnNldHJlZSwgYm9vbCBhY3F1aXJlKQogCiAJLyoKIAkg KiBSZWN1cnNlIGludG8gc3VibGluayBzdWJxdWVyaWVzLCB0b28uICBCdXQgd2UgYWxyZWFkeSBk aWQgdGhlIG9uZXMgaW4KLQkgKiB0aGUgcnRhYmxlIGFuZCBjdGVMaXN0LgorCSAqIHRoZSBydGFi bGUgYW5kIGN0ZUxpc3QuICBXZSBuZWVkIHRvIGZvcmNlIGEgcmVjdXJzaXZlIGNhbGwgZm9yIHNl c3Npb24KKwkgKiB2YXJpYWJsZXMgdG9vLCB0byBmaW5kIGFuZCBsb2NrIHZhcmlhYmxlcyB1c2Vk IGluIHRoZSBxdWVyeSAoc2VlCisJICogU2NhblF1ZXJ5V2Fsa2VyKS4KIAkgKi8KLQlpZiAocGFy c2V0cmVlLT5oYXNTdWJMaW5rcykKKwlpZiAocGFyc2V0cmVlLT5oYXNTdWJMaW5rcyB8fAorCQlw YXJzZXRyZWUtPmhhc1Nlc3Npb25WYXJpYWJsZXMpCiAJewogCQlxdWVyeV90cmVlX3dhbGtlcihw YXJzZXRyZWUsIFNjYW5RdWVyeVdhbGtlciwKIAkJCQkJCSAgKHZvaWQgKikgJmFjcXVpcmUsCiAJ CQkJCQkgIFFUV19JR05PUkVfUkNfU1VCUVVFUklFUyk7CiAJfQorCisJLyogcHJvY2VzcyBzZXNz aW9uIHZhcmlhYmxlcyAqLworCWlmIChPaWRJc1ZhbGlkKHBhcnNldHJlZS0+cmVzdWx0VmFyaWFi bGUpKQorCXsKKwkJaWYgKGFjcXVpcmUpCisJCQlMb2NrRGF0YWJhc2VPYmplY3QoVmFyaWFibGVS ZWxhdGlvbklkLCBwYXJzZXRyZWUtPnJlc3VsdFZhcmlhYmxlLAorCQkJCQkJCSAgIDAsIEFjY2Vz c1NoYXJlTG9jayk7CisJCWVsc2UKKwkJCVVubG9ja0RhdGFiYXNlT2JqZWN0KFZhcmlhYmxlUmVs YXRpb25JZCwgcGFyc2V0cmVlLT5yZXN1bHRWYXJpYWJsZSwKKwkJCQkJCQkJIDAsIEFjY2Vzc1No YXJlTG9jayk7CisJfQogfQogCiAvKgotICogV2Fsa2VyIHRvIGZpbmQgc3VibGluayBzdWJxdWVy aWVzIGZvciBTY2FuUXVlcnlGb3JMb2NrcworICogV2Fsa2VyIHRvIGZpbmQgc3VibGluayBzdWJx dWVyaWVzIG9yIHJlZmVyZW5jZWQgc2Vzc2lvbiB2YXJpYWJsZXMKKyAqIGZvciBTY2FuUXVlcnlG b3JMb2NrcwogICovCiBzdGF0aWMgYm9vbAogU2NhblF1ZXJ5V2Fsa2VyKE5vZGUgKm5vZGUsIGJv b2wgKmFjcXVpcmUpCkBAIC0xOTI5LDYgKzE5NDYsMjAgQEAgU2NhblF1ZXJ5V2Fsa2VyKE5vZGUg Km5vZGUsIGJvb2wgKmFjcXVpcmUpCiAJCVNjYW5RdWVyeUZvckxvY2tzKGNhc3ROb2RlKFF1ZXJ5 LCBzdWItPnN1YnNlbGVjdCksICphY3F1aXJlKTsKIAkJLyogRmFsbCB0aHJvdWdoIHRvIHByb2Nl c3MgbGVmdGhhbmQgYXJncyBvZiBTdWJMaW5rICovCiAJfQorCWVsc2UgaWYgKElzQShub2RlLCBQ YXJhbSkpCisJeworCQlQYXJhbQkgICAqcCA9IChQYXJhbSAqKSBub2RlOworCisJCWlmIChwLT5w YXJhbWtpbmQgPT0gUEFSQU1fVkFSSUFCTEUpCisJCXsKKwkJCWlmIChhY3F1aXJlKQorCQkJCUxv Y2tEYXRhYmFzZU9iamVjdChWYXJpYWJsZVJlbGF0aW9uSWQsIHAtPnBhcmFtdmFyaWQsCisJCQkJ CQkJCSAgIDAsIEFjY2Vzc1NoYXJlTG9jayk7CisJCQllbHNlCisJCQkJVW5sb2NrRGF0YWJhc2VP YmplY3QoVmFyaWFibGVSZWxhdGlvbklkLCBwLT5wYXJhbXZhcmlkLAorCQkJCQkJCQkJIDAsIEFj Y2Vzc1NoYXJlTG9jayk7CisJCX0KKwl9CiAKIAkvKgogCSAqIERvIE5PVCByZWN1cnNlIGludG8g UXVlcnkgbm9kZXMsIGJlY2F1c2UgU2NhblF1ZXJ5Rm9yTG9ja3MgYWxyZWFkeQpAQCAtMjA2MCw3 ICsyMDkxLDkgQEAgUGxhbkNhY2hlUmVsQ2FsbGJhY2soRGF0dW0gYXJnLCBPaWQgcmVsaWQpCiAK IC8qCiAgKiBQbGFuQ2FjaGVPYmplY3RDYWxsYmFjawotICoJCVN5c2NhY2hlIGludmFsIGNhbGxi YWNrIGZ1bmN0aW9uIGZvciBQUk9DT0lEIGFuZCBUWVBFT0lEIGNhY2hlcworICoJCVN5c2NhY2hl IGludmFsIGNhbGxiYWNrIGZ1bmN0aW9uIGZvciBUWVBFT0lELCBQUk9DT0lELCBOQU1FU1BBQ0VP SUQsCisgKgkJT1BFUk9JRCwgQU1PUE9QSUQsIEZPUkVJR05TRVJWRVJPSUQsIEZPUkVJR05EQVRB V1JBUFBFUk9JRCBhbmQKKyAqCQlWQVJJQUJMRU9JRCBjYWNoZXMuCiAgKgogICogSW52YWxpZGF0 ZSBhbGwgcGxhbnMgbWVudGlvbmluZyB0aGUgb2JqZWN0IHdpdGggdGhlIHNwZWNpZmllZCBoYXNo IHZhbHVlLAogICogb3IgYWxsIHBsYW5zIG1lbnRpb25pbmcgYW55IG1lbWJlciBvZiB0aGlzIGNh Y2hlIGlmIGhhc2h2YWx1ZSA9PSAwLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvZm1n ci9mbWdyLmMgYi9zcmMvYmFja2VuZC91dGlscy9mbWdyL2ZtZ3IuYwppbmRleCBlNDhhODZiZTU0 Li5lYWFlMGM1YTkzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9mbWdyL2ZtZ3IuYwor KysgYi9zcmMvYmFja2VuZC91dGlscy9mbWdyL2ZtZ3IuYwpAQCAtMjAyNiw5ICsyMDI2LDEzIEBA IGdldF9jYWxsX2V4cHJfYXJnX3N0YWJsZShOb2RlICpleHByLCBpbnQgYXJnbnVtKQogCSAqLwog CWlmIChJc0EoYXJnLCBDb25zdCkpCiAJCXJldHVybiB0cnVlOwotCWlmIChJc0EoYXJnLCBQYXJh bSkgJiYKLQkJKChQYXJhbSAqKSBhcmcpLT5wYXJhbWtpbmQgPT0gUEFSQU1fRVhURVJOKQotCQly ZXR1cm4gdHJ1ZTsKKwlpZiAoSXNBKGFyZywgUGFyYW0pKQorCXsKKwkJUGFyYW0JICAgKnAgPSAo UGFyYW0gKikgYXJnOworCisJCWlmIChwLT5wYXJhbWtpbmQgPT0gUEFSQU1fRVhURVJOIHx8IHAt PnBhcmFta2luZCA9PSBQQVJBTV9WQVJJQUJMRSkKKwkJCXJldHVybiB0cnVlOworCX0KIAogCXJl dHVybiBmYWxzZTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYyBi L3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYwppbmRleCA4NzNhODNmYTVhLi5hNjQyOTI2MTgw IDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMKKysrIGIvc3JjL2Jpbi9w c3FsL3RhYi1jb21wbGV0ZS5jCkBAIC0xNzA5LDggKzE3MDksOCBAQCBwc3FsX2NvbXBsZXRpb24o Y29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCQkiQUJPUlQiLCAiQUxURVIi LCAiQU5BTFlaRSIsICJCRUdJTiIsICJDQUxMIiwgIkNIRUNLUE9JTlQiLCAiQ0xPU0UiLCAiQ0xV U1RFUiIsCiAJCSJDT01NRU5UIiwgIkNPTU1JVCIsICJDT1BZIiwgIkNSRUFURSIsICJERUFMTE9D QVRFIiwgIkRFQ0xBUkUiLAogCQkiREVMRVRFIEZST00iLCAiRElTQ0FSRCIsICJETyIsICJEUk9Q IiwgIkVORCIsICJFWEVDVVRFIiwgIkVYUExBSU4iLAotCQkiRkVUQ0giLCAiR1JBTlQiLCAiSU1Q T1JUIEZPUkVJR04gU0NIRU1BIiwgIklOU0VSVCBJTlRPIiwgIkxJU1RFTiIsICJMT0FEIiwgIkxP Q0siLAotCQkiTUVSR0UgSU5UTyIsICJNT1ZFIiwgIk5PVElGWSIsICJQUkVQQVJFIiwKKwkJIkZF VENIIiwgIkdSQU5UIiwgIklNUE9SVCBGT1JFSUdOIFNDSEVNQSIsICJJTlNFUlQgSU5UTyIsICJM RVQiLAorCQkiTElTVEVOIiwgIkxPQUQiLCAiTE9DSyIsICJNRVJHRSBJTlRPIiwgIk1PVkUiLCAi Tk9USUZZIiwgIlBSRVBBUkUiLAogCQkiUkVBU1NJR04iLCAiUkVGUkVTSCBNQVRFUklBTElaRUQg VklFVyIsICJSRUlOREVYIiwgIlJFTEVBU0UiLAogCQkiUkVTRVQiLCAiUkVWT0tFIiwgIlJPTExC QUNLIiwKIAkJIlNBVkVQT0lOVCIsICJTRUNVUklUWSBMQUJFTCIsICJTRUxFQ1QiLCAiU0VUIiwg IlNIT1ciLCAiU1RBUlQiLApAQCAtNDI4Miw2ICs0MjgyLDE0IEBAIHBzcWxfY29tcGxldGlvbihj b25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpCiAJZWxzZSBpZiAoVGFpbE1hdGNo ZXMoIlZBTFVFUyIpICYmICFUYWlsTWF0Y2hlcygiREVGQVVMVCIsICJWQUxVRVMiKSkKIAkJQ09N UExFVEVfV0lUSCgiKCIpOwogCisvKiBMRVQgKi8KKwkvKiBJZiBwcmV2LiB3b3JkIGlzIExFVCBz dWdnZXN0IGEgbGlzdCBvZiB2YXJpYWJsZXMgKi8KKwllbHNlIGlmIChNYXRjaGVzKCJMRVQiKSkK KwkJQ09NUExFVEVfV0lUSF9TQ0hFTUFfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfdmFyaWFibGVz KTsKKwkvKiBDb21wbGV0ZSBMRVQgPHZhcmlhYmxlPiB3aXRoICI9IiAqLworCWVsc2UgaWYgKFRh aWxNYXRjaGVzKCJMRVQiLCBNYXRjaEFueSkpCisJCUNPTVBMRVRFX1dJVEgoIj0iKTsKKwogLyog TE9DSyAqLwogCS8qIENvbXBsZXRlIExPQ0sgW1RBQkxFXSBbT05MWV0gd2l0aCBhIGxpc3Qgb2Yg dGFibGVzICovCiAJZWxzZSBpZiAoTWF0Y2hlcygiTE9DSyIpKQpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9uYW1lc3BhY2UuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvbmFtZXNwYWNl LmgKaW5kZXggMThlYTZhYzgzYS4uZGVmNjkxZGFmYiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv Y2F0YWxvZy9uYW1lc3BhY2UuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL25hbWVzcGFjZS5o CkBAIC0xNzEsNyArMTcxLDkgQEAgZXh0ZXJuIFNlYXJjaFBhdGhNYXRjaGVyICpHZXRTZWFyY2hQ YXRoTWF0Y2hlcihNZW1vcnlDb250ZXh0IGNvbnRleHQpOwogZXh0ZXJuIFNlYXJjaFBhdGhNYXRj aGVyICpDb3B5U2VhcmNoUGF0aE1hdGNoZXIoU2VhcmNoUGF0aE1hdGNoZXIgKnBhdGgpOwogZXh0 ZXJuIGJvb2wgU2VhcmNoUGF0aE1hdGNoZXNDdXJyZW50RW52aXJvbm1lbnQoU2VhcmNoUGF0aE1h dGNoZXIgKnBhdGgpOwogCitleHRlcm4gTGlzdCAqTmFtZXNGcm9tTGlzdChMaXN0ICpuYW1lcyk7 CiBleHRlcm4gT2lkCUxvb2t1cFZhcmlhYmxlKGNvbnN0IGNoYXIgKm5zcG5hbWUsIGNvbnN0IGNo YXIgKnZhcm5hbWUsIGJvb2wgbWlzc2luZ19vayk7CitleHRlcm4gT2lkCUlkZW50aWZ5VmFyaWFi bGUoTGlzdCAqbmFtZXMsIGNoYXIgKiphdHRybmFtZSwgYm9vbCAqbm90X3VuaXF1ZSwgYm9vbCBu b2Vycm9yKTsKIAogZXh0ZXJuIE9pZAlnZXRfY29sbGF0aW9uX29pZChMaXN0ICpjb2xsbmFtZSwg Ym9vbCBtaXNzaW5nX29rKTsKIGV4dGVybiBPaWQJZ2V0X2NvbnZlcnNpb25fb2lkKExpc3QgKmNv bm5hbWUsIGJvb2wgbWlzc2luZ19vayk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3ZhcmlhYmxlLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3ZhcmlhYmxlLmgKaW5kZXgg MzgxMGUwNDBmMi4uZGI1OTNjZDViZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z192YXJpYWJsZS5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfdmFyaWFibGUuaApAQCAt MzUsNiArMzUsMTQgQEAgQ0FUQUxPRyhwZ192YXJpYWJsZSw5MjIyLFZhcmlhYmxlUmVsYXRpb25J ZCkKIAkvKiBPSUQgb2YgZW50cnkgaW4gcGdfdHlwZSBmb3IgdmFyaWFibGUncyB0eXBlICovCiAJ T2lkCQkJdmFydHlwZSBCS0lfTE9PS1VQKHBnX3R5cGUpOwogCisJLyoKKwkgKiBVc2VkIGZvciBp ZGVudGl0eSBjaGVjayBbb2lkLCBjcmVhdGVfbHNuXS4KKwkgKgorCSAqIFRoaXMgY29sdW1uIG9m IHRoZSA4LWJ5dGUgWGxvZ1JlY1B0ciB0eXBlIHNob3VsZCBiZSBhdCBhbiBhZGRyZXNzIHRoYXQK KwkgKiBpcyBkaXZpc2libGUgYnkgOCwgYnV0IGJlZm9yZSBhbnkgY29sdW1uIG9mIHR5cGUgTmFt ZURhdGEuCisJICovCisJWExvZ1JlY1B0cgl2YXJjcmVhdGVfbHNuOworCiAJLyogdmFyaWFibGUg bmFtZSAqLwogCU5hbWVEYXRhCXZhcm5hbWU7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2Nv bW1hbmRzL3Nlc3Npb25fdmFyaWFibGUuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3Nlc3Npb25f dmFyaWFibGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5iM2YwM2M2 NTgyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvc2Vzc2lvbl92YXJp YWJsZS5oCkBAIC0wLDAgKzEsMzIgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHNlc3Np b252YXJpYWJsZS5oCisgKgkgIHByb3RvdHlwZXMgZm9yIHNlc3Npb252YXJpYWJsZS5jLgorICoK KyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyNCwgUG9zdGdyZVNRTCBHbG9i YWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVn ZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCisgKgorICogc3JjL2luY2x1ZGUv Y29tbWFuZHMvc2Vzc2lvbl92YXJpYWJsZS5oCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8K KworI2lmbmRlZiBTRVNTSU9OVkFSSUFCTEVfSAorI2RlZmluZSBTRVNTSU9OVkFSSUFCTEVfSAor CisjaW5jbHVkZSAibm9kZXMvcGFyYW1zLmgiCisjaW5jbHVkZSAibm9kZXMvcGFyc2Vub2Rlcy5o IgorI2luY2x1ZGUgInBhcnNlci9wYXJzZV9ub2RlLmgiCisjaW5jbHVkZSAidGNvcC9jbWR0YWcu aCIKKyNpbmNsdWRlICJ1dGlscy9xdWVyeWVudmlyb25tZW50LmgiCisKK2V4dGVybiB2b2lkIFNl dFNlc3Npb25WYXJpYWJsZShPaWQgdmFyaWQsIERhdHVtIHZhbHVlLCBib29sIGlzTnVsbCk7Citl eHRlcm4gdm9pZCBTZXRTZXNzaW9uVmFyaWFibGVXaXRoU2VjdXJpdHlDaGVjayhPaWQgdmFyaWQs IERhdHVtIHZhbHVlLCBib29sIGlzTnVsbCk7CitleHRlcm4gRGF0dW0gR2V0U2Vzc2lvblZhcmlh YmxlKE9pZCB2YXJpZCwgYm9vbCAqaXNOdWxsLCBPaWQgKnR5cGlkKTsKK2V4dGVybiBEYXR1bSBH ZXRTZXNzaW9uVmFyaWFibGVXaXRoVHlwZUNoZWNrKE9pZCB2YXJpZCwgYm9vbCAqaXNOdWxsLCBP aWQgZXhwZWN0ZWRfdHlwaWQpOworCitleHRlcm4gdm9pZCBFeGVjdXRlTGV0U3RtdChQYXJzZVN0 YXRlICpwc3RhdGUsIExldFN0bXQgKnN0bXQsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAorCQkJCQkJ ICAgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYsIFF1ZXJ5Q29tcGxldGlvbiAqcWMpOworCisj ZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmggYi9zcmMv aW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5oCmluZGV4IDBhNzI3NGUyNmMuLmQxYjJmNTllMGMg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmgKKysrIGIvc3JjL2lu Y2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaApAQCAtNDgsNiArNDgsMTAgQEAgdHlwZWRlZiBzdHJ1 Y3QgUXVlcnlEZXNjCiAJRVN0YXRlCSAgICplc3RhdGU7CQkJLyogZXhlY3V0b3IncyBxdWVyeS13 aWRlIHN0YXRlICovCiAJUGxhblN0YXRlICAqcGxhbnN0YXRlOwkJLyogdHJlZSBvZiBwZXItcGxh bi1ub2RlIHN0YXRlICovCiAKKwkvKiByZWZlcmVuY2UgdG8gc2Vzc2lvbiB2YXJpYWJsZXMgYnVm ZmVyICovCisJaW50CQkJbnVtX3Nlc3Npb25fdmFyaWFibGVzOworCVNlc3Npb25WYXJpYWJsZVZh bHVlICpzZXNzaW9uX3ZhcmlhYmxlczsKKwogCS8qIFRoaXMgZmllbGQgaXMgc2V0IGJ5IEV4ZWN1 dG9yUnVuICovCiAJYm9vbAkJYWxyZWFkeV9leGVjdXRlZDsJLyogdHJ1ZSBpZiBwcmV2aW91c2x5 IGV4ZWN1dGVkICovCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL3N2YXJpYWJs ZVJlY2VpdmVyLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9zdmFyaWFibGVSZWNlaXZlci5oCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmRiNDRkOGI5NGMKLS0tIC9kZXYv bnVsbAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9zdmFyaWFibGVSZWNlaXZlci5oCkBAIC0w LDAgKzEsMjIgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHN2YXJpYWJsZVJlY2VpdmVy LmgKKyAqCSAgcHJvdG90eXBlcyBmb3Igc3ZhcmlhYmxlUmVjZWl2ZXIuYworICoKKyAqCisgKiBQ b3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyNCwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxv cG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0 aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCisgKgorICogc3JjL2luY2x1ZGUvZXhlY3V0b3Iv c3ZhcmlhYmxlUmVjZWl2ZXIuaAorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKyNpZm5k ZWYgU1ZBUklBQkxFX1JFQ0VJVkVSX0gKKyNkZWZpbmUgU1ZBUklBQkxFX1JFQ0VJVkVSX0gKKwor I2luY2x1ZGUgInRjb3AvZGVzdC5oIgorCitleHRlcm4gRGVzdFJlY2VpdmVyICpDcmVhdGVWYXJp YWJsZURlc3RSZWNlaXZlcihPaWQgdmFyaWQpOworCisjZW5kaWYJCQkJCQkJLyogU1ZBUklBQkxF X1JFQ0VJVkVSX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5o IGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5kZXggY2FjNjg0ZDliMy4uNDQ5MDUw ZjdmZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIvc3Jj L2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKQEAgLTYwOSw2ICs2MDksMTggQEAgdHlwZWRlZiBz dHJ1Y3QgQXN5bmNSZXF1ZXN0CiAJCQkJCQkJCSAqIHR1cGxlcykgKi8KIH0gQXN5bmNSZXF1ZXN0 OwogCisvKiAtLS0tLS0tLS0tLS0tLS0tCisgKiBTZXNzaW9uVmFyaWFibGVWYWx1ZQorICogLS0t LS0tLS0tLS0tLS0tLQorICovCit0eXBlZGVmIHN0cnVjdCBTZXNzaW9uVmFyaWFibGVWYWx1ZQor eworCU9pZAkJCXZhcmlkOworCU9pZAkJCXR5cGlkOworCWJvb2wJCWlzbnVsbDsKKwlEYXR1bQkJ dmFsdWU7Cit9IFNlc3Npb25WYXJpYWJsZVZhbHVlOworCiAvKiAtLS0tLS0tLS0tLS0tLS0tCiAg KgkgIEVTdGF0ZSBpbmZvcm1hdGlvbgogICoKQEAgLTY2MSw2ICs2NzMsMTAgQEAgdHlwZWRlZiBz dHJ1Y3QgRVN0YXRlCiAJUGFyYW1MaXN0SW5mbyBlc19wYXJhbV9saXN0X2luZm87CS8qIHZhbHVl cyBvZiBleHRlcm5hbCBwYXJhbXMgKi8KIAlQYXJhbUV4ZWNEYXRhICplc19wYXJhbV9leGVjX3Zh bHM7CS8qIHZhbHVlcyBvZiBpbnRlcm5hbCBwYXJhbXMgKi8KIAorCS8qIFNlc3Npb24gdmFyaWFi bGVzIGluZm86ICovCisJaW50CQkJZXNfbnVtX3Nlc3Npb25fdmFyaWFibGVzOwkJLyogbnVtYmVy IG9mIHVzZWQgdmFyaWFibGVzICovCisJU2Vzc2lvblZhcmlhYmxlVmFsdWUgKmVzX3Nlc3Npb25f dmFyaWFibGVzOwkvKiBhcnJheSBvZiBjb3BpZXMgb2YgdmFsdWVzICovCisKIAlRdWVyeUVudmly b25tZW50ICplc19xdWVyeUVudjsJLyogcXVlcnkgZW52aXJvbm1lbnQgKi8KIAogCS8qIE90aGVy IHdvcmtpbmcgc3RhdGU6ICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5v ZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5kZXggODBlYTU5MjhlZS4u NzRiZjVhZjc3NiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCisr KyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAtMTQyLDYgKzE0Miw5IEBAIHR5 cGVkZWYgc3RydWN0IFF1ZXJ5CiAJICovCiAJaW50CQkJcmVzdWx0UmVsYXRpb24gcGdfbm9kZV9h dHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwogCisJLyogdGFyZ2V0IHZhcmlhYmxlIG9mIExFVCBz dGF0ZW1lbnQgKi8KKwlPaWQJCQlyZXN1bHRWYXJpYWJsZTsKKwogCS8qIGhhcyBhZ2dyZWdhdGVz IGluIHRsaXN0IG9yIGhhdmluZ1F1YWwgKi8KIAlib29sCQloYXNBZ2dzIHBnX25vZGVfYXR0cihx dWVyeV9qdW1ibGVfaWdub3JlKTsKIAkvKiBoYXMgd2luZG93IGZ1bmN0aW9ucyBpbiB0bGlzdCAq LwpAQCAtMTYwLDYgKzE2Myw4IEBAIHR5cGVkZWYgc3RydWN0IFF1ZXJ5CiAJYm9vbAkJaGFzRm9y VXBkYXRlIHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsKIAkvKiByZXdyaXRlciBo YXMgYXBwbGllZCBzb21lIFJMUyBwb2xpY3kgKi8KIAlib29sCQloYXNSb3dTZWN1cml0eSBwZ19u b2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7CisJLyogdXNlcyBzZXNzaW9uIHZhcmlhYmxl cyAqLworCWJvb2wJCWhhc1Nlc3Npb25WYXJpYWJsZXMgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJs ZV9pZ25vcmUpOwogCS8qIGlzIGEgUkVUVVJOIHN0YXRlbWVudCAqLwogCWJvb2wJCWlzUmV0dXJu IHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsKIApAQCAtMjA5NSw2ICsyMTAwLDE4 IEBAIHR5cGVkZWYgc3RydWN0IE1lcmdlU3RtdAogCVdpdGhDbGF1c2UgKndpdGhDbGF1c2U7CQkv KiBXSVRIIGNsYXVzZSAqLwogfSBNZXJnZVN0bXQ7CiAKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAqCQlMZXQgU3RhdGVtZW50CisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KK3R5 cGVkZWYgc3RydWN0IExldFN0bXQKK3sKKwlOb2RlVGFnCQl0eXBlOworCUxpc3QJICAgKnRhcmdl dDsJCQkvKiB0YXJnZXQgdmFyaWFibGUgKi8KKwlOb2RlCSAgICpxdWVyeTsJCQkvKiBzb3VyY2Ug ZXhwcmVzc2lvbiAqLworCWludAkJCWxvY2F0aW9uOworfSBMZXRTdG10OworCiAvKiAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tCiAgKgkJU2VsZWN0IFN0YXRlbWVudAogICoKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVz LmgKaW5kZXggMTRjY2ZjMWFjMS4uYzE2Mzg1NTEyZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv bm9kZXMvcGF0aG5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKQEAg LTE2Myw2ICsxNjMsOSBAQCB0eXBlZGVmIHN0cnVjdCBQbGFubmVyR2xvYmFsCiAKIAkvKiBwYXJ0 aXRpb24gZGVzY3JpcHRvcnMgKi8KIAlQYXJ0aXRpb25EaXJlY3RvcnkgcGFydGl0aW9uX2RpcmVj dG9yeSBwZ19ub2RlX2F0dHIocmVhZF93cml0ZV9pZ25vcmUpOworCisJLyogbGlzdCBvZiB1c2Vk IHNlc3Npb24gdmFyaWFibGVzICovCisJTGlzdAkgICAqc2Vzc2lvblZhcmlhYmxlczsKIH0gUGxh bm5lckdsb2JhbDsKIAogLyogbWFjcm8gZm9yIGZldGNoaW5nIHRoZSBQbGFuIGFzc29jaWF0ZWQg d2l0aCBhIFN1YlBsYW4gbm9kZSAqLwpAQCAtNTA4LDYgKzUxMSw4IEBAIHN0cnVjdCBQbGFubmVy SW5mbwogCWJvb2wJCXBsYWNlaG9sZGVyc0Zyb3plbjsKIAkvKiB0cnVlIGlmIHBsYW5uaW5nIGEg cmVjdXJzaXZlIFdJVEggaXRlbSAqLwogCWJvb2wJCWhhc1JlY3Vyc2lvbjsKKwkvKiB0cnVlIGlm IHNlc3Npb24gdmFyaWFibGVzIHdlcmUgdXNlZCAqLworCWJvb2wJCWhhc1Nlc3Npb25WYXJpYWJs ZXM7CiAKIAkvKgogCSAqIEluZm9ybWF0aW9uIGFib3V0IGFnZ3JlZ2F0ZXMuIEZpbGxlZCBieSBw cmVwcm9jZXNzX2FnZ3JlZnMoKS4KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5u b2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKaW5kZXggMWFlZWFlYzk1ZS4u NmI5Yjk5MDRmZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKKysr IGIvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgdHlwZWRl ZiBzdHJ1Y3QgUGxhbm5lZFN0bXQKIAogCU5vZGVUYWcJCXR5cGU7CiAKLQlDbWRUeXBlCQljb21t YW5kVHlwZTsJLyogc2VsZWN0fGluc2VydHx1cGRhdGV8ZGVsZXRlfG1lcmdlfHV0aWxpdHkgKi8K KwlDbWRUeXBlCQljb21tYW5kVHlwZTsJLyogc2VsZWN0fGxldHxpbnNlcnR8dXBkYXRlfGRlbGV0 ZXxtZXJnZXx1dGlsaXR5ICovCiAKIAl1aW50NjQJCXF1ZXJ5SWQ7CQkvKiBxdWVyeSBpZGVudGlm aWVyIChjb3BpZWQgZnJvbSBRdWVyeSkgKi8KIApAQCAtOTQsNiArOTQsOCBAQCB0eXBlZGVmIHN0 cnVjdCBQbGFubmVkU3RtdAogCiAJTm9kZQkgICAqdXRpbGl0eVN0bXQ7CS8qIG5vbi1udWxsIGlm IHRoaXMgaXMgdXRpbGl0eSBzdG10ICovCiAKKwlMaXN0CSAgICpzZXNzaW9uVmFyaWFibGVzOwkv KiBPSURzIGZvciBQQVJBTV9WQVJJQUJMRSBQYXJhbXMgKi8KKwogCS8qIHN0YXRlbWVudCBsb2Nh dGlvbiBpbiBzb3VyY2Ugc3RyaW5nIChjb3BpZWQgZnJvbSBRdWVyeSkgKi8KIAlQYXJzZUxvYwlz dG10X2xvY2F0aW9uOwkvKiBzdGFydCBsb2NhdGlvbiwgb3IgLTEgaWYgdW5rbm93biAqLwogCVBh cnNlTG9jCXN0bXRfbGVuOwkJLyogbGVuZ3RoIGluIGJ5dGVzOyAwIG1lYW5zICJyZXN0IG9mIHN0 cmluZyIgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oIGIvc3Jj L2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKaW5kZXggZWE0NzY1MmFkYi4uNWY3YjgzZDEzZiAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKKysrIGIvc3JjL2luY2x1 ZGUvbm9kZXMvcHJpbW5vZGVzLmgKQEAgLTM2MSw2ICszNjEsOSBAQCB0eXBlZGVmIHN0cnVjdCBD b25zdAogICoJCQkJb2YgdGhlIGBwYXJhbWlkJyBmaWVsZCBjb250YWluIHRoZSBTdWJMaW5rJ3Mg c3ViTGlua0lkLCBhbmQKICAqCQkJCXRoZSBsb3ctb3JkZXIgMTYgYml0cyBjb250YWluIHRoZSBj b2x1bW4gbnVtYmVyLiAgKFRoaXMgdHlwZQogICoJCQkJb2YgUGFyYW0gaXMgYWxzbyBjb252ZXJ0 ZWQgdG8gUEFSQU1fRVhFQyBkdXJpbmcgcGxhbm5pbmcuKQorICoKKyAqCQlQQVJBTV9WQVJJQUJM RTogIFRoZSBwYXJhbWV0ZXIgaXMgYSByZWZlcmVuY2UgdG8gYSBzZXNzaW9uIHZhcmlhYmxlCisg KgkJCQkocGFyYW1pZCBob2xkcyB0aGUgdmFyaWFibGUncyBPSUQpLgogICovCiB0eXBlZGVmIGVu dW0gUGFyYW1LaW5kCiB7CkBAIC0zNjgsNiArMzcxLDcgQEAgdHlwZWRlZiBlbnVtIFBhcmFtS2lu ZAogCVBBUkFNX0VYRUMsCiAJUEFSQU1fU1VCTElOSywKIAlQQVJBTV9NVUxUSUVYUFIsCisJUEFS QU1fVkFSSUFCTEUsCiB9IFBhcmFtS2luZDsKIAogdHlwZWRlZiBzdHJ1Y3QgUGFyYW0KQEAgLTM4 MCw2ICszODQsOCBAQCB0eXBlZGVmIHN0cnVjdCBQYXJhbQogCWludDMyCQlwYXJhbXR5cG1vZCBw Z19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7CiAJLyogT0lEIG9mIGNvbGxhdGlvbiwg b3IgSW52YWxpZE9pZCBpZiBub25lICovCiAJT2lkCQkJcGFyYW1jb2xsaWQgcGdfbm9kZV9hdHRy KHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOworCS8qIE9JRCBvZiBzZXNzaW9uIHZhcmlhYmxlIGlmIGl0 IGlzIHVzZWQgKi8KKwlPaWQJCQlwYXJhbXZhcmlkOwogCS8qIHRva2VuIGxvY2F0aW9uLCBvciAt MSBpZiB1bmtub3duICovCiAJUGFyc2VMb2MJbG9jYXRpb247CiB9IFBhcmFtOwpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BsYW5tYWluLmggYi9zcmMvaW5jbHVkZS9vcHRpbWl6 ZXIvcGxhbm1haW4uaAppbmRleCBhYWZjMTczNzkyLi5kZTQ3MTY5MmU4IDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGxhbm1haW4uaAorKysgYi9zcmMvaW5jbHVkZS9vcHRpbWl6 ZXIvcGxhbm1haW4uaApAQCAtMTIwLDQgKzEyMCw2IEBAIGV4dGVybiB2b2lkIHJlY29yZF9wbGFu X2Z1bmN0aW9uX2RlcGVuZGVuY3koUGxhbm5lckluZm8gKnJvb3QsIE9pZCBmdW5jaWQpOwogZXh0 ZXJuIHZvaWQgcmVjb3JkX3BsYW5fdHlwZV9kZXBlbmRlbmN5KFBsYW5uZXJJbmZvICpyb290LCBP aWQgdHlwaWQpOwogZXh0ZXJuIGJvb2wgZXh0cmFjdF9xdWVyeV9kZXBlbmRlbmNpZXNfd2Fsa2Vy KE5vZGUgKm5vZGUsIFBsYW5uZXJJbmZvICpjb250ZXh0KTsKIAorZXh0ZXJuIHZvaWQgcHVsbF91 cF9oYXNfc2Vzc2lvbl92YXJpYWJsZXMoUGxhbm5lckluZm8gKnJvb3QpOworCiAjZW5kaWYJCQkJ CQkJLyogUExBTk1BSU5fSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlz dC5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCmluZGV4IGM4ODRjZDVjNDYuLjJlODhk N2Q5NTAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAorKysgYi9zcmMv aW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKQEAgLTI1Niw2ICsyNTYsNyBAQCBQR19LRVlXT1JEKCJs ZWFkaW5nIiwgTEVBRElORywgUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdP UkQoImxlYWtwcm9vZiIsIExFQUtQUk9PRiwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVM KQogUEdfS0VZV09SRCgibGVhc3QiLCBMRUFTVCwgQ09MX05BTUVfS0VZV09SRCwgQkFSRV9MQUJF TCkKIFBHX0tFWVdPUkQoImxlZnQiLCBMRUZULCBUWVBFX0ZVTkNfTkFNRV9LRVlXT1JELCBCQVJF X0xBQkVMKQorUEdfS0VZV09SRCgibGV0IiwgTEVULCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVf TEFCRUwpCiBQR19LRVlXT1JEKCJsZXZlbCIsIExFVkVMLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJB UkVfTEFCRUwpCiBQR19LRVlXT1JEKCJsaWtlIiwgTElLRSwgVFlQRV9GVU5DX05BTUVfS0VZV09S RCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImxpbWl0IiwgTElNSVQsIFJFU0VSVkVEX0tFWVdP UkQsIEFTX0xBQkVMKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUu aCBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmgKaW5kZXggNWI3ODFkODdhOS4uNmQ5 MzY5MTk2NSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaAorKysg Yi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oCkBAIC04Miw2ICs4Miw4IEBAIHR5cGVk ZWYgZW51bSBQYXJzZUV4cHJLaW5kCiAJRVhQUl9LSU5EX0NPUFlfV0hFUkUsCQkvKiBXSEVSRSBj b25kaXRpb24gaW4gQ09QWSBGUk9NICovCiAJRVhQUl9LSU5EX0dFTkVSQVRFRF9DT0xVTU4sIC8q IGdlbmVyYXRpb24gZXhwcmVzc2lvbiBmb3IgYSBjb2x1bW4gKi8KIAlFWFBSX0tJTkRfQ1lDTEVf TUFSSywJCS8qIGN5Y2xlIG1hcmsgdmFsdWUgKi8KKwlFWFBSX0tJTkRfQVNTSUdOX1RBUkdFVCwJ LyogUEwvcGdTUUwgYXNzaWdubWVudCB0YXJnZXQgKi8KKwlFWFBSX0tJTkRfTEVUX1RBUkdFVCwJ CS8qIExFVCB0YXJnZXQgKi8KIH0gUGFyc2VFeHByS2luZDsKIAogCkBAIC0yMjUsNiArMjI3LDcg QEAgc3RydWN0IFBhcnNlU3RhdGUKIAlib29sCQlwX2hhc1RhcmdldFNSRnM7CiAJYm9vbAkJcF9o YXNTdWJMaW5rczsKIAlib29sCQlwX2hhc01vZGlmeWluZ0NURTsKKwlib29sCQlwX2hhc1Nlc3Np b25WYXJpYWJsZXM7CiAKIAlOb2RlCSAgICpwX2xhc3Rfc3JmOwkJLyogbW9zdCByZWNlbnQgc2V0 LXJldHVybmluZyBmdW5jL29wIGZvdW5kICovCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Rj b3AvY21kdGFnbGlzdC5oIGIvc3JjL2luY2x1ZGUvdGNvcC9jbWR0YWdsaXN0LmgKaW5kZXggOTQ2 NWRmN2IyZi4uYTkyMWFmMjQ4NiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdGNvcC9jbWR0YWds aXN0LmgKKysrIGIvc3JjL2luY2x1ZGUvdGNvcC9jbWR0YWdsaXN0LmgKQEAgLTE4Niw2ICsxODYs NyBAQCBQR19DTURUQUcoQ01EVEFHX0dSQU5ULCAiR1JBTlQiLCB0cnVlLCBmYWxzZSwgZmFsc2Up CiBQR19DTURUQUcoQ01EVEFHX0dSQU5UX1JPTEUsICJHUkFOVCBST0xFIiwgZmFsc2UsIGZhbHNl LCBmYWxzZSkKIFBHX0NNRFRBRyhDTURUQUdfSU1QT1JUX0ZPUkVJR05fU0NIRU1BLCAiSU1QT1JU IEZPUkVJR04gU0NIRU1BIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQogUEdfQ01EVEFHKENNRFRBR19J TlNFUlQsICJJTlNFUlQiLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0xF VCwgIkxFVCIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCiBQR19DTURUQUcoQ01EVEFHX0xJU1RFTiwg IkxJU1RFTiIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCiBQR19DTURUQUcoQ01EVEFHX0xPQUQsICJM T0FEIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKIFBHX0NNRFRBRyhDTURUQUdfTE9DS19UQUJMRSwg IkxPQ0sgVEFCTEUiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvdGNvcC9kZXN0LmggYi9zcmMvaW5jbHVkZS90Y29wL2Rlc3QuaAppbmRleCBhM2Q1MjFiNmY5 Li4zOGNjODdmNGU3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS90Y29wL2Rlc3QuaAorKysgYi9z cmMvaW5jbHVkZS90Y29wL2Rlc3QuaApAQCAtOTcsNiArOTcsNyBAQCB0eXBlZGVmIGVudW0KIAlE ZXN0VHJhbnNpZW50UmVsLAkJCS8qIHJlc3VsdHMgc2VudCB0byB0cmFuc2llbnQgcmVsYXRpb24g Ki8KIAlEZXN0VHVwbGVRdWV1ZSwJCQkJLyogcmVzdWx0cyBzZW50IHRvIHR1cGxlIHF1ZXVlICov CiAJRGVzdEV4cGxhaW5TZXJpYWxpemUsCQkvKiByZXN1bHRzIGFyZSBzZXJpYWxpemVkIGFuZCBk aXNjYXJkZWQgKi8KKwlEZXN0VmFyaWFibGUsCQkJCS8qIHJlc3VsdHMgc2VudCB0byBzZXNzaW9u IHZhcmlhYmxlICovCiB9IENvbW1hbmREZXN0OwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tCmRpZmYg LS1naXQgYS9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxfZXhlYy5jIGIvc3JjL3BsL3BscGdzcWwvc3Jj L3BsX2V4ZWMuYwppbmRleCAyMzliMzI1MGE5Li5hOWUxZTMyM2FkIDEwMDY0NAotLS0gYS9zcmMv cGwvcGxwZ3NxbC9zcmMvcGxfZXhlYy5jCisrKyBiL3NyYy9wbC9wbHBnc3FsL3NyYy9wbF9leGVj LmMKQEAgLTgxMDEsNyArODEwMSw4IEBAIGV4ZWNfaXNfc2ltcGxlX3F1ZXJ5KFBMcGdTUUxfZXhw ciAqZXhwcikKIAkJcXVlcnktPnNvcnRDbGF1c2UgfHwKIAkJcXVlcnktPmxpbWl0T2Zmc2V0IHx8 CiAJCXF1ZXJ5LT5saW1pdENvdW50IHx8Ci0JCXF1ZXJ5LT5zZXRPcGVyYXRpb25zKQorCQlxdWVy eS0+c2V0T3BlcmF0aW9ucyB8fAorCQlxdWVyeS0+aGFzU2Vzc2lvblZhcmlhYmxlcykKIAkJcmV0 dXJuIGZhbHNlOwogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv c2Vzc2lvbl92YXJpYWJsZXMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zZXNzaW9u X3ZhcmlhYmxlcy5vdXQKaW5kZXggYWNhNzY2MDQyZC4uMjg3NjI4ZWRlNiAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zZXNzaW9uX3ZhcmlhYmxlcy5vdXQKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zZXNzaW9uX3ZhcmlhYmxlcy5vdXQKQEAgLTU1LDMgKzU1 LDkxNSBAQCBTRVQgUk9MRSBUTyBERUZBVUxUOwogRFJPUCBWQVJJQUJMRSBzdmFydGVzdC52YXIx OwogRFJPUCBTQ0hFTUEgc3ZhcnRlc3Q7CiBEUk9QIFJPTEUgcmVncmVzc192YXJpYWJsZV9vd25l cjsKKy0tIGNoZWNrIGFjY2VzcyByaWdodHMKK0NSRUFURSBST0xFIHJlZ3Jlc3Nfbm9vd25lcjsK K0NSRUFURSBWQVJJQUJMRSB2YXIxIEFTIGludDsKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9O IHNxbGZ4KGludCkKK1JFVFVSTlMgaW50IEFTICQkIFNFTEVDVCAkMSArIHZhcjEgJCQgTEFOR1VB R0Ugc3FsOworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gc3FsZnhfc2QoaW50KQorUkVUVVJO UyBpbnQgQVMgJCQgU0VMRUNUICQxICsgdmFyMSAkJCBMQU5HVUFHRSBzcWwgU0VDVVJJVFkgREVG SU5FUjsKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIHBscGdzcWxmeChpbnQpCitSRVRVUk5T IGludCBBUyAkJCBCRUdJTiBSRVRVUk4gJDEgKyB2YXIxOyBFTkQgJCQgTEFOR1VBR0UgcGxwZ3Nx bDsKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIHBscGdzcWxmeF9zZChpbnQpCitSRVRVUk5T IGludCBBUyAkJCBCRUdJTiBSRVRVUk4gJDEgKyB2YXIxOyBFTkQgJCQgTEFOR1VBR0UgcGxwZ3Nx bCBTRUNVUklUWSBERUZJTkVSOworTEVUIHZhcjEgPSAxMDsKKy0tIHNob3VsZCBiZSBvaworU0VM RUNUIHZhcjE7CisgdmFyMSAKKy0tLS0tLQorICAgMTAKKygxIHJvdykKKworU0VMRUNUIHNxbGZ4 KDIwKTsKKyBzcWxmeCAKKy0tLS0tLS0KKyAgICAzMAorKDEgcm93KQorCitTRUxFQ1Qgc3FsZnhf c2QoMjApOworIHNxbGZ4X3NkIAorLS0tLS0tLS0tLQorICAgICAgIDMwCisoMSByb3cpCisKK1NF TEVDVCBwbHBnc3FsZngoMjApOworIHBscGdzcWxmeCAKKy0tLS0tLS0tLS0tCisgICAgICAgIDMw CisoMSByb3cpCisKK1NFTEVDVCBwbHBnc3FsZnhfc2QoMjApOworIHBscGdzcWxmeF9zZCAKKy0t LS0tLS0tLS0tLS0tCisgICAgICAgICAgIDMwCisoMSByb3cpCisKKy0tIHNob3VsZCBmYWlsCitT RVQgUk9MRSBUTyByZWdyZXNzX25vb3duZXI7CitTRUxFQ1QgdmFyMTsKK0VSUk9SOiAgcGVybWlz c2lvbiBkZW5pZWQgZm9yIHNlc3Npb24gdmFyaWFibGUgdmFyMQorU0VMRUNUIHNxbGZ4KDIwKTsK K0VSUk9SOiAgcGVybWlzc2lvbiBkZW5pZWQgZm9yIHNlc3Npb24gdmFyaWFibGUgdmFyMQorQ09O VEVYVDogIFNRTCBmdW5jdGlvbiAic3FsZngiIHN0YXRlbWVudCAxCitTRUxFQ1QgcGxwZ3NxbGZ4 KDIwKTsKK0VSUk9SOiAgcGVybWlzc2lvbiBkZW5pZWQgZm9yIHNlc3Npb24gdmFyaWFibGUgdmFy MQorQ09OVEVYVDogIFNRTCBleHByZXNzaW9uICIkMSArIHZhcjEiCitQTC9wZ1NRTCBmdW5jdGlv biBwbHBnc3FsZngoaW50ZWdlcikgbGluZSAxIGF0IFJFVFVSTgorLS0gc2hvdWxkIGJlIG9rCitT RUxFQ1Qgc3FsZnhfc2QoMjApOworIHNxbGZ4X3NkIAorLS0tLS0tLS0tLQorICAgICAgIDMwCiso MSByb3cpCisKK1NFTEVDVCBwbHBnc3FsZnhfc2QoMjApOworIHBscGdzcWxmeF9zZCAKKy0tLS0t LS0tLS0tLS0tCisgICAgICAgICAgIDMwCisoMSByb3cpCisKK1NFVCBST0xFIFRPIERFRkFVTFQ7 CitHUkFOVCBTRUxFQ1QgT04gVkFSSUFCTEUgdmFyMSBUTyByZWdyZXNzX25vb3duZXI7CistLSBz aG91bGQgYmUgb2sKK1NFVCBST0xFIFRPIHJlZ3Jlc3Nfbm9vd25lcjsKK1NFTEVDVCB2YXIxOwor IHZhcjEgCistLS0tLS0KKyAgIDEwCisoMSByb3cpCisKK1NFTEVDVCBzcWxmeCgyMCk7Cisgc3Fs ZnggCistLS0tLS0tCisgICAgMzAKKygxIHJvdykKKworU0VMRUNUIHBscGdzcWxmeCgyMCk7Cisg cGxwZ3NxbGZ4IAorLS0tLS0tLS0tLS0KKyAgICAgICAgMzAKKygxIHJvdykKKworU0VUIFJPTEUg VE8gREVGQVVMVDsKK0RST1AgVkFSSUFCTEUgdmFyMTsKK0RST1AgRlVOQ1RJT04gc3FsZngoaW50 KTsKK0RST1AgRlVOQ1RJT04gcGxwZ3NxbGZ4KGludCk7CitEUk9QIEZVTkNUSU9OIHNxbGZ4X3Nk KGludCk7CitEUk9QIEZVTkNUSU9OIHBscGdzcWxmeF9zZChpbnQpOworRFJPUCBST0xFIHJlZ3Jl c3Nfbm9vd25lcjsKKy0tIHVzZSB2YXJpYWJsZXMgaW5zaWRlIHZpZXdzCitDUkVBVEUgVkFSSUFC TEUgdmFyMSBBUyBudW1lcmljOworLS0gdXNlIHZhcmlhYmxlcyBpbiB2aWV3cworQ1JFQVRFIFZJ RVcgdGVzdF92aWV3IEFTIFNFTEVDVCBDT0FMRVNDRSh2YXIxICsgdiwgMCkgQVMgcmVzdWx0IEZS T00gZ2VuZXJhdGVfc2VyaWVzKDEsMikgZyh2KTsKK1NFTEVDVCAqIEZST00gdGVzdF92aWV3Owor IHJlc3VsdCAKKy0tLS0tLS0tCisgICAgICAwCisgICAgICAwCisoMiByb3dzKQorCitMRVQgdmFy MSA9IDMuMTQ7CitTRUxFQ1QgKiBGUk9NIHRlc3RfdmlldzsKKyByZXN1bHQgCistLS0tLS0tLQor ICAgNC4xNAorICAgNS4xNAorKDIgcm93cykKKworLS0gc3RhcnQgYSBuZXcgc2Vzc2lvbgorXGMK K1NFTEVDVCAqIEZST00gdGVzdF92aWV3OworIHJlc3VsdCAKKy0tLS0tLS0tCisgICAgICAwCisg ICAgICAwCisoMiByb3dzKQorCitMRVQgdmFyMSA9IDMuMTQ7CitTRUxFQ1QgKiBGUk9NIHRlc3Rf dmlldzsKKyByZXN1bHQgCistLS0tLS0tLQorICAgNC4xNAorICAgNS4xNAorKDIgcm93cykKKwor LS0gc2hvdWxkIGZhaWwsIGRlcGVuZGVuY3kKK0RST1AgVkFSSUFCTEUgdmFyMTsKK0VSUk9SOiAg Y2Fubm90IGRyb3Agc2Vzc2lvbiB2YXJpYWJsZSB2YXIxIGJlY2F1c2Ugb3RoZXIgb2JqZWN0cyBk ZXBlbmQgb24gaXQKK0RFVEFJTDogIHZpZXcgdGVzdF92aWV3IGRlcGVuZHMgb24gc2Vzc2lvbiB2 YXJpYWJsZSB2YXIxCitISU5UOiAgVXNlIERST1AgLi4uIENBU0NBREUgdG8gZHJvcCB0aGUgZGVw ZW5kZW50IG9iamVjdHMgdG9vLgorLS0gc2hvdWxkIGJlIG9rCitEUk9QIFZBUklBQkxFIHZhcjEg Q0FTQ0FERTsKK05PVElDRTogIGRyb3AgY2FzY2FkZXMgdG8gdmlldyB0ZXN0X3ZpZXcKK0NSRUFU RSBWQVJJQUJMRSB2YXIxIHRleHQ7CitDUkVBVEUgVkFSSUFCTEUgdmFyMiB0ZXh0OworLS0gdXNl IHZhcmlhYmxlcyBpbiBTUUwgZnVuY3Rpb25zCitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBz cWxmeDEodmFyY2hhcikKK1JFVFVSTlMgdmFyY2hhciBBUyAkJCBTRUxFQ1QgdmFyMSB8fCAnLCAn IHx8ICQxICQkIExBTkdVQUdFIHNxbDsKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIHNxbGZ4 MiggdmFyY2hhcikKK1JFVFVSTlMgdmFyY2hhciBBUyAkJCBTRUxFQ1QgdmFyMiB8fCAnLCAnIHx8 ICQxICQkIExBTkdVQUdFIHNxbDsKK0xFVCB2YXIxID0gJ3N0cjEnOworTEVUIHZhcjIgPSAnc3Ry Mic7CitTRUxFQ1Qgc3FsZngxKHNxbGZ4MignSGVsbG8nKSk7CisgICAgICBzcWxmeDEgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tCisgc3RyMSwgc3RyMiwgSGVsbG8KKygxIHJvdykKKworLS0g aW5saW5pbmcgaXMgYmxvY2tlZAorRVhQTEFJTiAoQ09TVFMgT0ZGLCBWRVJCT1NFKSBTRUxFQ1Qg c3FsZngxKHNxbGZ4MignSGVsbG8nKSk7CisgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExB TiAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFJlc3VsdAorICAgT3V0cHV0OiBzcWxmeDEoc3FsZngy KCdIZWxsbyc6OmNoYXJhY3RlciB2YXJ5aW5nKSkKKygyIHJvd3MpCisKK0RST1AgRlVOQ1RJT04g c3FsZngxKHZhcmNoYXIpOworRFJPUCBGVU5DVElPTiBzcWxmeDIodmFyY2hhcik7CitEUk9QIFZB UklBQkxFIHZhcjE7CitEUk9QIFZBUklBQkxFIHZhcjI7CistLSBhY2Nlc3MgZnJvbSBjYWNoZWQg cGxhbnMgc2hvdWxkIHdvcmsKK0NSRUFURSBWQVJJQUJMRSB2YXIxIEFTIG51bWVyaWM7CitDUkVB VEUgT1IgUkVQTEFDRSBGVU5DVElPTiBwbHBnc3FsZngoKQorUkVUVVJOUyBudW1lcmljIEFTICQk IEJFR0lOIFJFVFVSTiB2YXIxOyBFTkQgJCQgTEFOR1VBR0UgcGxwZ3NxbDsKK3NldCBwbGFuX2Nh Y2hlX21vZGUgVE8gZm9yY2VfZ2VuZXJpY19wbGFuOworTEVUIHZhcjEgPSAzLjE0OworU0VMRUNU IHBscGdzcWxmeCgpOworIHBscGdzcWxmeCAKKy0tLS0tLS0tLS0tCisgICAgICAzLjE0CisoMSBy b3cpCisKK0xFVCB2YXIxID0gMy4xNCAqIDI7CitTRUxFQ1QgcGxwZ3NxbGZ4KCk7CisgcGxwZ3Nx bGZ4IAorLS0tLS0tLS0tLS0KKyAgICAgIDYuMjgKKygxIHJvdykKKworRFJPUCBWQVJJQUJMRSB2 YXIxOworLS0gZGVwZW5kZW5jeSAocGxhbiBpbnZhbGlkYXRpb24pIHNob3VsZCB3b3JrCitDUkVB VEUgVkFSSUFCTEUgdmFyMSBBUyBudW1lcmljOworTEVUIHZhcjEgPSAzLjE0ICogMzsKK1NFTEVD VCBwbHBnc3FsZngoKTsKKyBwbHBnc3FsZnggCistLS0tLS0tLS0tLQorICAgICAgOS40MgorKDEg cm93KQorCitMRVQgdmFyMSA9IDMuMTQgKiA0OworU0VMRUNUIHBscGdzcWxmeCgpOworIHBscGdz cWxmeCAKKy0tLS0tLS0tLS0tCisgICAgIDEyLjU2CisoMSByb3cpCisKK0RST1AgVkFSSUFCTEUg dmFyMTsKK0RST1AgRlVOQ1RJT04gcGxwZ3NxbGZ4KCk7CitzZXQgcGxhbl9jYWNoZV9tb2RlIFRP IERFRkFVTFQ7CistLSB1c2FnZSBMRVQgc3RhdGVtZW50IGluIHBscGdzcWwgc2hvdWxkIHdvcmsK K0NSRUFURSBWQVJJQUJMRSB2YXIxIGludDsKK0NSRUFURSBWQVJJQUJMRSB2YXIyIG51bWVyaWNb XTsKK0RPICQkCitCRUdJTgorICBMRVQgdmFyMiA9ICd7fSc6OmludFtdOworICBGT1IgaSBJTiAx Li4xMAorICBMT09QCisgICAgTEVUIHZhcjEgPSBpOworICAgIExFVCB2YXIyW3ZhcjFdID0gaTsK KyAgRU5EIExPT1A7CisgIFJBSVNFIE5PVElDRSAncmVzdWx0IGFycmF5OiAlJywgdmFyMjsKK0VO RDsKKyQkOworTk9USUNFOiAgcmVzdWx0IGFycmF5OiB7MSwyLDMsNCw1LDYsNyw4LDksMTB9CitE Uk9QIFZBUklBQkxFIHZhcjE7CitEUk9QIFZBUklBQkxFIHZhcjI7CistLSBDQUxMIHN0YXRlbWVu dCBpcyBub3Qgc3VwcG9ydGVkIHlldAorLS0gcmVxdWlyZXMgZGlyZWN0IGFjY2VzcyB0byBzZXNz aW9uIHZhcmlhYmxlIGZyb20gZXhwcmVzc2lvbiBleGVjdXRvcgorQ1JFQVRFIFZBUklBQkxFIHYg aW50OworQ1JFQVRFIFBST0NFRFVSRSBwKGFyZyBpbnQpIEFTICQkIEJFR0lOIFJBSVNFIE5PVElD RSAnJScsIGFyZzsgRU5EICQkIExBTkdVQUdFIHBscGdzcWw7CistLSBzaG91bGQgbm90IGNyYXNo IChidXQgaXMgbm90IHN1cHBvcnRlZCB5ZXQpCitDQUxMIHAodik7CitFUlJPUjogIHNlc3Npb24g dmFyaWFibGUgY2Fubm90IGJlIHVzZWQgYXMgYW4gYXJndW1lbnQKK0RPICQkIEJFR0lOIENBTEwg cCh2KTsgRU5EICQkOworRVJST1I6ICBzZXNzaW9uIHZhcmlhYmxlIGNhbm5vdCBiZSB1c2VkIGFz IGFuIGFyZ3VtZW50CitDT05URVhUOiAgU1FMIHN0YXRlbWVudCAiQ0FMTCBwKHYpIgorUEwvcGdT UUwgZnVuY3Rpb24gaW5saW5lX2NvZGVfYmxvY2sgbGluZSAxIGF0IENBTEwKK0RST1AgUFJPQ0VE VVJFIHAoaW50KTsKK0RST1AgVkFSSUFCTEUgdjsKKy0tIHRlc3Qgc2VhcmNoIHBhdGgKK0NSRUFU RSBTQ0hFTUEgc3ZhcnRlc3Q7CitDUkVBVEUgVkFSSUFCTEUgc3ZhcnRlc3QudmFyMSBBUyBudW1l cmljOworLS0gc2hvdWxkIGZhaWwKK0xFVCB2YXIxID0gcGkoKTsKK0VSUk9SOiAgc2Vzc2lvbiB2 YXJpYWJsZSAidmFyMSIgZG9lc24ndCBleGlzdAorTElORSAxOiBMRVQgdmFyMSA9IHBpKCk7Cisg ICAgICAgICAgICBeCitTRUxFQ1QgdmFyMTsKK0VSUk9SOiAgY29sdW1uICJ2YXIxIiBkb2VzIG5v dCBleGlzdAorTElORSAxOiBTRUxFQ1QgdmFyMTsKKyAgICAgICAgICAgICAgIF4KKy0tIHNob3Vs ZCBiZSBvaworTEVUIHN2YXJ0ZXN0LnZhcjEgPSBwaSgpOworU0VMRUNUIHN2YXJ0ZXN0LnZhcjE7 CisgICAgICAgdmFyMSAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLQorIDMuMTQxNTkyNjUzNTg5 NzkKKygxIHJvdykKKworU0VUIHNlYXJjaF9wYXRoIFRPIHN2YXJ0ZXN0OworLS0gc2hvdWxkIGJl IG9rCitMRVQgdmFyMSA9IHBpKCkgKyAxMDsKK1NFTEVDVCB2YXIxOworICAgICAgIHZhcjEgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0KKyAxMy4xNDE1OTI2NTM1ODk4CisoMSByb3cpCisKK1JF U0VUIHNlYXJjaF9wYXRoOworRFJPUCBTQ0hFTUEgc3ZhcnRlc3QgQ0FTQ0FERTsKK05PVElDRTog IGRyb3AgY2FzY2FkZXMgdG8gc2Vzc2lvbiB2YXJpYWJsZSBzdmFydGVzdC52YXIxCitDUkVBVEUg VkFSSUFCTEUgdmFyMSBBUyB0ZXh0OworLS0gdmFyaWFibGVzIGNhbiBiZSB1cGRhdGVkIHVuZGVy IFJPIHRyYW5zYWN0aW9uCitCRUdJTjsKK1NFVCBUUkFOU0FDVElPTiBSRUFEIE9OTFk7CitMRVQg dmFyMSA9ICdoZWxsbyc7CitDT01NSVQ7CitTRUxFQ1QgdmFyMTsKKyB2YXIxICAKKy0tLS0tLS0K KyBoZWxsbworKDEgcm93KQorCitEUk9QIFZBUklBQkxFIHZhcjE7CistLSB0ZXN0IG9mIGRvbWFp bnMKK0NSRUFURSBET01BSU4gaW50X2RvbWFpbiBBUyBpbnQgTk9UIE5VTEwgQ0hFQ0sgKFZBTFVF ID4gMTAwKTsKK0NSRUFURSBWQVJJQUJMRSB2YXIxIEFTIGludF9kb21haW47CistLSBzaG91bGQg ZmFpbAorU0VMRUNUIHZhcjE7CitFUlJPUjogIGRvbWFpbiBpbnRfZG9tYWluIGRvZXMgbm90IGFs bG93IG51bGwgdmFsdWVzCistLSBzaG91bGQgYmUgb2sKK0xFVCB2YXIxID0gMTAwMDsKK1NFTEVD VCB2YXIxOworIHZhcjEgCistLS0tLS0KKyAxMDAwCisoMSByb3cpCisKKy0tIHNob3VsZCBmYWls CitMRVQgdmFyMSA9IDEwOworRVJST1I6ICB2YWx1ZSBmb3IgZG9tYWluIGludF9kb21haW4gdmlv bGF0ZXMgY2hlY2sgY29uc3RyYWludCAiaW50X2RvbWFpbl9jaGVjayIKKy0tIHNob3VsZCBmYWls CitMRVQgdmFyMSA9IE5VTEw7CitFUlJPUjogIGRvbWFpbiBpbnRfZG9tYWluIGRvZXMgbm90IGFs bG93IG51bGwgdmFsdWVzCistLSBub3RlIC0gZG9tYWluIGRlZmF1bHRzIGFyZSBub3Qgc3VwcG9y dGVkIHlldCAobGlrZSBQTHBnU1FMKQorRFJPUCBWQVJJQUJMRSB2YXIxOworRFJPUCBET01BSU4g aW50X2RvbWFpbjsKKy0tIHRoZSBleHByZXNzaW9uIHNob3VsZCByZW1haW4gInVua25vd24iCitD UkVBVEUgVkFSSUFCTEUgdmFyMSBBUyBpbnQ0bXVsdGlyYW5nZVtdOworLS0gc2hvdWxkIGJlIG9r CitMRVQgdmFyMSA9IE5VTEw7CitMRVQgdmFyMSA9ICd7IntbMiw4KSxbMTEsMTQpfSIsIntbNSw4 KSxbMTIsMTQpfSJ9JzsKK0xFVCB2YXIxWzJdID0gJ3tbNSw4KSxbMTIsMTAwKX0nOworU0VMRUNU IHZhcjE7CisgICAgICAgICAgICAgICAgICB2YXIxICAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgeyJ7WzIsOCksWzExLDE0KX0iLCJ7 WzUsOCksWzEyLDEwMCl9In0KKygxIHJvdykKKworLS1JdCBzaG91bGQgd29yayBpbiBwbHBnc3Fs IHRvbworRE8gJCQKK0JFR0lOCisgIExFVCB2YXIxID0gTlVMTDsKKyAgTEVUIHZhcjEgPSAneyJ7 WzIsOCksWzExLDE0KX0iLCJ7WzUsOCksWzEyLDE0KX0ifSc7CisgIExFVCB2YXIxWzJdID0gJ3tb NSw4KSxbMTIsMTAwKX0nOworCisgIFJBSVNFIE5PVElDRSAnJScsIHZhcjE7CitFTkQ7CiskJDsK K05PVElDRTogIHsie1syLDgpLFsxMSwxNCl9Iiwie1s1LDgpLFsxMiwxMDApfSJ9CitEUk9QIFZB UklBQkxFIHZhcjE7CitDUkVBVEUgU0NIRU1BIHN2YXJ0ZXN0IENSRUFURSBWQVJJQUJMRSB2YXIx IEFTIGludCBDUkVBVEUgVEFCTEUgZm9vKGEgaW50KTsKK0xFVCBzdmFydGVzdC52YXIxID0gMTAw OworU0VMRUNUIHN2YXJ0ZXN0LnZhcjE7CisgdmFyMSAKKy0tLS0tLQorICAxMDAKKygxIHJvdykK KworU0VUIHNlYXJjaF9wYXRoIHRvIHB1YmxpYywgc3ZhcnRlc3Q7CitTRUxFQ1QgdmFyMTsKKyB2 YXIxIAorLS0tLS0tCisgIDEwMAorKDEgcm93KQorCitEUk9QIFNDSEVNQSBzdmFydGVzdCBDQVND QURFOworTk9USUNFOiAgZHJvcCBjYXNjYWRlcyB0byAyIG90aGVyIG9iamVjdHMKK0RFVEFJTDog IGRyb3AgY2FzY2FkZXMgdG8gdGFibGUgZm9vCitkcm9wIGNhc2NhZGVzIHRvIHNlc3Npb24gdmFy aWFibGUgdmFyMQorQ1JFQVRFIFZBUklBQkxFIHZhcjEgQVMgaW50OworQ1JFQVRFIFZBUklBQkxF IHZhcjIgQVMgaW50W107CitMRVQgdmFyMSA9IDI7CitMRVQgdmFyMiA9ICd7fSc6OmludFtdOwor TEVUIHZhcjJbdmFyMV0gPSAwOworU0VMRUNUIHZhcjI7CisgICB2YXIyICAgIAorLS0tLS0tLS0t LS0KKyBbMjoyXT17MH0KKygxIHJvdykKKworRFJPUCBWQVJJQUJMRSB2YXIxLCB2YXIyOworQ1JF QVRFIFZBUklBQkxFIHZhcjEgQVMgaW50OworQ1JFQVRFIFZBUklBQkxFIHZhcjIgQVMgaW50W107 CitMRVQgdmFyMSA9IDI7CitMRVQgdmFyMiA9ICd7fSc6OmludFtdOworU0VMRUNUIHZhcjI7Cisg dmFyMiAKKy0tLS0tLQorIHt9CisoMSByb3cpCisKK0RST1AgVkFSSUFCTEUgdmFyMSwgdmFyMjsK Ky0tIHRoZSBMRVQgc3RhdGVtZW50IHNob3VsZCBiZSBkaXNhbGxvd2VkIGluIENURQorQ1JFQVRF IFZBUklBQkxFIHZhcjEgQVMgaW50OworV0lUSCB4IEFTIChMRVQgdmFyMSA9IDEwMCkgU0VMRUNU ICogRlJPTSB4OworRVJST1I6ICBzeW50YXggZXJyb3IgYXQgb3IgbmVhciAiTEVUIgorTElORSAx OiBXSVRIIHggQVMgKExFVCB2YXIxID0gMTAwKSBTRUxFQ1QgKiBGUk9NIHg7CisgICAgICAgICAg ICAgICAgICAgXgorLS0gc2hvdWxkIGJlIG9rCitMRVQgdmFyMSA9IGdlbmVyYXRlX3Nlcmllcygx LCAxKTsKKy0tIHNob3VsZCBmYWlsCitMRVQgdmFyMSA9IGdlbmVyYXRlX3NlcmllcygxLCAyKTsK K0VSUk9SOiAgZXhwcmVzc2lvbiByZXR1cm5lZCBtb3JlIHRoYW4gb25lIHJvdworTEVUIHZhcjEg PSBnZW5lcmF0ZV9zZXJpZXMoMSwgMCk7CitFUlJPUjogIGV4cHJlc3Npb24gcmV0dXJuZWQgbm8g cm93cworRFJPUCBWQVJJQUJMRSB2YXIxOworLS0gY29tcG9zaXRlIHZhcmlhYmxlcworQ1JFQVRF IFRZUEUgc3ZfeHl6IEFTICh4IGludCwgeSBpbnQsIHogbnVtZXJpYygxMCwyKSk7CitDUkVBVEUg VkFSSUFCTEUgdjEgQVMgc3ZfeHl6OworQ1JFQVRFIFZBUklBQkxFIHYyIEFTIHN2X3h5ejsKK0xF VCB2MSA9ICgxLCAyLCAzLjE0KTsKK0xFVCB2MiA9ICgxMCwgMjAsIDMuMTQgKiAxMCk7CistLSBz aG91bGQgd29yayB0b28gLSB0aGVyZSBhcmUgcHJlcGFyZWQgY2FzdHMKK0xFVCB2MSA9ICgxLCAy LCAzKTsKK1NFTEVDVCB2MTsKKyAgICAgdjEgICAgIAorLS0tLS0tLS0tLS0tCisgKDEsMiwzLjAw KQorKDEgcm93KQorCitTRUxFQ1QgdjI7CisgICAgICB2MiAgICAgICAKKy0tLS0tLS0tLS0tLS0t LQorICgxMCwyMCwzMS40MCkKKygxIHJvdykKKworU0VMRUNUICh2MSkuKjsKKyB4IHwgeSB8ICB6 ICAgCistLS0rLS0tKy0tLS0tLQorIDEgfCAyIHwgMy4wMAorKDEgcm93KQorCitTRUxFQ1QgKHYy KS4qOworIHggIHwgeSAgfCAgIHogICAKKy0tLS0rLS0tLSstLS0tLS0tCisgMTAgfCAyMCB8IDMx LjQwCisoMSByb3cpCisKK1NFTEVDVCB2MS54ICsgdjEuejsKKyA/Y29sdW1uPyAKKy0tLS0tLS0t LS0KKyAgICAgNC4wMAorKDEgcm93KQorCitTRUxFQ1QgdjIueCArIHYyLno7CisgP2NvbHVtbj8g CistLS0tLS0tLS0tCisgICAgNDEuNDAKKygxIHJvdykKKworLS0gYWNjZXNzIHRvIGNvbXBvc2l0 ZSBmaWVsZHMgc2hvdWxkIGJlIHNhZmUgdG9vCitDUkVBVEUgUk9MRSByZWdyZXNzX3Zhcl90ZXN0 X3JvbGU7CitTRVQgUk9MRSBUTyByZWdyZXNzX3Zhcl90ZXN0X3JvbGU7CistLSBzaG91bGQgZmFp bAorU0VMRUNUIHYyLng7CitFUlJPUjogIHBlcm1pc3Npb24gZGVuaWVkIGZvciBzZXNzaW9uIHZh cmlhYmxlIHYyCitTRVQgUk9MRSBUTyBERUZBVUxUOworRFJPUCBWQVJJQUJMRSB2MTsKK0RST1Ag VkFSSUFCTEUgdjI7CitEUk9QIFJPTEUgcmVncmVzc192YXJfdGVzdF9yb2xlOworQ1JFQVRFIFRZ UEUgdDEgQVMgKGEgaW50LCBiIG51bWVyaWMsIGMgdGV4dCk7CitDUkVBVEUgVkFSSUFCTEUgdjEg QVMgdDE7CitMRVQgdjEgPSAoMSwgcGkoKSwgJ2hlbGxvJyk7CitTRUxFQ1QgdjE7CisgICAgICAg ICAgICAgdjEgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKDEs My4xNDE1OTI2NTM1ODk3OSxoZWxsbykKKygxIHJvdykKKworTEVUIHYxLmIgPSAxMC4yMjIyOwor U0VMRUNUIHYxOworICAgICAgICB2MSAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLQorICgx LDEwLjIyMjIsaGVsbG8pCisoMSByb3cpCisKKy0tIHNob3VsZCBmYWlsLCBhdHRyaWJ1dGUgZG9l c24ndCBleGlzdAorTEVUIHYxLnggPSAxMDsKK0VSUk9SOiAgY2Fubm90IGFzc2lnbiB0byBmaWVs ZCAieCIgb2YgY29sdW1uICJ2MSIgYmVjYXVzZSB0aGVyZSBpcyBubyBzdWNoIGNvbHVtbiBpbiBk YXRhIHR5cGUgdDEKK0xJTkUgMTogTEVUIHYxLnggPSAxMDsKKyAgICAgICAgICAgIF4KKy0tIHNo b3VsZCBmYWlsLCBkb24ndCBhbGxvdyBtdWx0aSBjb2x1bW4gcXVlcnkKK0xFVCB2MSA9IChOVUxM Ojp0MSkuKjsKK0VSUk9SOiAgYXNzaWdubWVudCBleHByZXNzaW9uIHJldHVybmVkIDMgY29sdW1u cworTElORSAxOiBMRVQgdjEgPSAoTlVMTDo6dDEpLio7CisgICAgICAgICAgICAgICAgICBeCist LSBhbGxvdyBEUk9QIG9yIEFERCBBVFRSSUJVVEUgb24gY29tcG9zaXRlIHR5cGVzCistLSBzaG91 bGQgYmUgb2sKK0FMVEVSIFRZUEUgdDEgRFJPUCBBVFRSSUJVVEUgYzsKK1NFTEVDVCB2MTsKKyAg ICAgdjEgICAgICAKKy0tLS0tLS0tLS0tLS0KKyAoMSwxMC4yMjIyKQorKDEgcm93KQorCistLSBz aG91bGQgYmUgb2sKK0FMVEVSIFRZUEUgdDEgQUREIEFUVFJJQlVURSBjIGludDsKK1NFTEVDVCB2 MTsKKyAgICAgIHYxICAgICAgCistLS0tLS0tLS0tLS0tLQorICgxLDEwLjIyMjIsKQorKDEgcm93 KQorCitMRVQgdjEgPSAoMTAsIDEwLjMsIDIwKTsKK1NFTEVDVCB2MTsKKyAgICAgIHYxICAgICAg CistLS0tLS0tLS0tLS0tLQorICgxMCwxMC4zLDIwKQorKDEgcm93KQorCistLSBzaG91bGQgYmUg b2sKK0FMVEVSIFRZUEUgdDEgRFJPUCBBVFRSSUJVVEUgYjsKK1NFTEVDVCB2MTsKKyAgIHYxICAg IAorLS0tLS0tLS0tCisgKDEwLDIwKQorKDEgcm93KQorCistLSBzaG91bGQgZmFpbCwgZGlzYWxs b3cgZGF0YSB0eXBlIGNoYW5nZQorQUxURVIgVFlQRSB0MSBBTFRFUiBBVFRSSUJVVEUgYyBUWVBF IGludDsKK0VSUk9SOiAgY2Fubm90IGFsdGVyIHR5cGUgInQxIiBiZWNhdXNlIHNlc3Npb24gdmFy aWFibGUgInB1YmxpYy52MSIgdXNlcyBpdAorRFJPUCBWQVJJQUJMRSB2MTsKK0RST1AgVFlQRSB0 MTsKKy0tIHRoZSB0YWJsZSB0eXBlIGNhbiBiZSB1c2VkIGFzIGNvbXBvc2l0ZSB0eXBlIHRvbwor Q1JFQVRFIFRBQkxFIHN2YXJfdGVzdChhIGludCwgYiBudW1lcmljLCBjIGRhdGUpOworQ1JFQVRF IFZBUklBQkxFIHZhcjEgQVMgc3Zhcl90ZXN0OworTEVUIHZhcjEgPSAoMTAsIHBpKCksICcyMDIz LTA1LTI2Jyk7CitTRUxFQ1QgdmFyMTsKKyAgICAgICAgICAgICAgIHZhcjEgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAoMTAsMy4xNDE1OTI2NTM1 ODk3OSwwNS0yNi0yMDIzKQorKDEgcm93KQorCistLSBzaG91bGQgZmFpbCBkdWUgZGVwZW5kZW5j eQorQUxURVIgVEFCTEUgc3Zhcl90ZXN0IEFMVEVSIENPTFVNTiBhIFRZUEUgdGV4dDsKK0VSUk9S OiAgY2Fubm90IGFsdGVyIHRhYmxlICJzdmFyX3Rlc3QiIGJlY2F1c2Ugc2Vzc2lvbiB2YXJpYWJs ZSAicHVibGljLnZhcjEiIHVzZXMgaXQKKy0tIHNob3VsZCBmYWlsCitEUk9QIFRBQkxFIHN2YXJf dGVzdDsKK0VSUk9SOiAgY2Fubm90IGRyb3AgdGFibGUgc3Zhcl90ZXN0IGJlY2F1c2Ugb3RoZXIg b2JqZWN0cyBkZXBlbmQgb24gaXQKK0RFVEFJTDogIHNlc3Npb24gdmFyaWFibGUgdmFyMSBkZXBl bmRzIG9uIHR5cGUgc3Zhcl90ZXN0CitISU5UOiAgVXNlIERST1AgLi4uIENBU0NBREUgdG8gZHJv cCB0aGUgZGVwZW5kZW50IG9iamVjdHMgdG9vLgorRFJPUCBWQVJJQUJMRSB2YXIxOworRFJPUCBU QUJMRSBzdmFyX3Rlc3Q7CistLSBhcnJheXMgYXJlIHN1cHBvcnRlZAorQ1JFQVRFIFZBUklBQkxF IHZhcjEgQVMgbnVtZXJpY1tdOworTEVUIHZhcjEgPSBBUlJBWVsxLjEsMi4xXTsKK0xFVCB2YXIx WzFdID0gMTAuMTsKK1NFTEVDVCB2YXIxOworICAgIHZhcjEgICAgCistLS0tLS0tLS0tLS0KKyB7 MTAuMSwyLjF9CisoMSByb3cpCisKKy0tIExFVCB0YXJnZXQgZG9lc24ndCBhbGxvdyBzcmYsIHNo b3VsZCBmYWlsCitMRVQgdmFyMVtnZW5lcmF0ZV9zZXJpZXMoMSwzKV0gPSAxMDA7CitFUlJPUjog IHNldC1yZXR1cm5pbmcgZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBMRVQKK0xJTkUgMTog TEVUIHZhcjFbZ2VuZXJhdGVfc2VyaWVzKDEsMyldID0gMTAwOworICAgICAgICAgICAgICAgICBe CitEUk9QIFZBUklBQkxFIHZhcjE7CistLSBhcnJheXMgaW5zaWRlIGNvbXBvc2l0ZQorQ1JFQVRF IFRZUEUgdDEgQVMgKGEgbnVtZXJpYywgYiBudW1lcmljW10pOworQ1JFQVRFIFZBUklBQkxFIHZh cjEgQVMgdDE7CitMRVQgdmFyMSA9ICgxMC4xLCBBUlJBWVswLjAsIDAuMF0pOworTEVUIHZhcjEu YSA9IDEwLjI7CitTRUxFQ1QgdmFyMTsKKyAgICAgICAgdmFyMSAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLQorICgxMC4yLCJ7MC4wLDAuMH0iKQorKDEgcm93KQorCitMRVQgdmFyMS5iWzFd ID0gMTAuMzsKK1NFTEVDVCB2YXIxOworICAgICAgICB2YXIxICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAoMTAuMiwiezEwLjMsMC4wfSIpCisoMSByb3cpCisKK0RST1AgVkFSSUFC TEUgdmFyMTsKK0RST1AgVFlQRSB0MTsKKy0tIEVuY291cmFnZSB1c2Ugb2YgcGFyYWxsZWwgcGxh bnMKK1NFVCBwYXJhbGxlbF9zZXR1cF9jb3N0ID0gMDsKK1NFVCBwYXJhbGxlbF90dXBsZV9jb3N0 ID0gMDsKK1NFVCBtaW5fcGFyYWxsZWxfdGFibGVfc2Nhbl9zaXplID0gMDsKK1NFVCBtYXhfcGFy YWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMjsKKy0tIHRlc3Qgb24gcXVlcnkgd2l0aCB3b3Jr ZXJzCitDUkVBVEUgVEFCTEUgc3Zhcl90ZXN0KGEgaW50KTsKK0lOU0VSVCBJTlRPIHN2YXJfdGVz dCBTRUxFQ1QgKiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwMDApOworQU5BTFlaRSBzdmFyX3Rl c3Q7CitDUkVBVEUgVkFSSUFCTEUgemVybyBpbnQ7CitMRVQgemVybyA9IDA7CistLSByZXN1bHQg c2hvdWxkIGJlIDEwMAorU0VMRUNUIGNvdW50KCopIEZST00gc3Zhcl90ZXN0IFdIRVJFIGElMTAg PSB6ZXJvOworIGNvdW50IAorLS0tLS0tLQorICAgMTAwCisoMSByb3cpCisKKy0tIHBhcmFsbGVs IGV4ZWN1dGlvbiBpcyBub3Qgc3VwcG9ydGVkIHlldAorRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxF Q1QgY291bnQoKikgRlJPTSBzdmFyX3Rlc3QgV0hFUkUgYSUxMCA9IHplcm87CisgICAgICAgICAg ICBRVUVSWSBQTEFOICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBTZXEgU2NhbiBvbiBzdmFyX3Rlc3QKKyAgICAgICAg IEZpbHRlcjogKChhICUgMTApID0gemVybykKKygzIHJvd3MpCisKK0xFVCB6ZXJvID0gKFNFTEVD VCBjb3VudCgqKSBGUk9NIHN2YXJfdGVzdCk7CistLSByZXN1bHQgc2hvdWxkIGJlIDEwMDAKK1NF TEVDVCB6ZXJvOworIHplcm8gCistLS0tLS0KKyAxMDAwCisoMSByb3cpCisKK0RST1AgVkFSSUFC TEUgemVybzsKK0RST1AgVEFCTEUgc3Zhcl90ZXN0OworUkVTRVQgcGFyYWxsZWxfc2V0dXBfY29z dDsKK1JFU0VUIHBhcmFsbGVsX3R1cGxlX2Nvc3Q7CitSRVNFVCBtaW5fcGFyYWxsZWxfdGFibGVf c2Nhbl9zaXplOworUkVTRVQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlcjsKKy0tIHRo ZSByZXN1bHQgb2YgdmlldyBzaG91bGQgYmUgc2FtZSBpbiBwYXJhbGxlbCBtb2RlIHRvbworQ1JF QVRFIFZBUklBQkxFIHZhcjEgQVMgaW50OworTEVUIHZhcjEgPSAxMDsKK0NSRUFURSBWSUVXIHZh cjF2aWV3IEFTIFNFTEVDVCBDT0FMRVNDRSh2YXIxLCAwKSBBUyByZXN1bHQ7CitTRUxFQ1QgKiBG Uk9NIHZhcjF2aWV3OworIHJlc3VsdCAKKy0tLS0tLS0tCisgICAgIDEwCisoMSByb3cpCisKK1NF VCBkZWJ1Z19wYXJhbGxlbF9xdWVyeSBUTyBvbjsKK1NFTEVDVCAqIEZST00gdmFyMXZpZXc7Cisg cmVzdWx0IAorLS0tLS0tLS0KKyAgICAgMTAKKygxIHJvdykKKworU0VUIGRlYnVnX3BhcmFsbGVs X3F1ZXJ5IFRPIG9mZjsKK0RST1AgVklFVyB2YXIxdmlldzsKK0RST1AgVkFSSUFCTEUgdmFyMTsK K0NSRUFURSBWQVJJQUJMRSB2YXJpZCBpbnQ7CitDUkVBVEUgVEFCTEUgc3Zhcl90ZXN0KGlkIGlu dCwgdiBpbnQpOworTEVUIHZhcmlkID0gMTsKK0lOU0VSVCBJTlRPIHN2YXJfdGVzdCBWQUxVRVMo dmFyaWQsIDEwMCk7CitTRUxFQ1QgKiBGUk9NIHN2YXJfdGVzdDsKKyBpZCB8ICB2ICAKKy0tLS0r LS0tLS0KKyAgMSB8IDEwMAorKDEgcm93KQorCitVUERBVEUgc3Zhcl90ZXN0IFNFVCB2ID0gMjAw IFdIRVJFIGlkID0gdmFyaWQ7CitTRUxFQ1QgKiBGUk9NIHN2YXJfdGVzdDsKKyBpZCB8ICB2ICAK Ky0tLS0rLS0tLS0KKyAgMSB8IDIwMAorKDEgcm93KQorCitERUxFVEUgRlJPTSBzdmFyX3Rlc3Qg V0hFUkUgaWQgPSB2YXJpZDsKK1NFTEVDVCAqIEZST00gc3Zhcl90ZXN0OworIGlkIHwgdiAKKy0t LS0rLS0tCisoMCByb3dzKQorCitEUk9QIFRBQkxFIHN2YXJfdGVzdDsKK0RST1AgVkFSSUFCTEUg dmFyaWQ7CistLSB2aXNpYmlsaXR5IGNoZWNrCistLSB2YXJpYWJsZXMgc2hvdWxkIGJlIHNoYWRv d2VkIGFsd2F5cworQ1JFQVRFIFZBUklBQkxFIHZhcjEgQVMgdGV4dDsKK1NFTEVDVCB2YXIxLnJl bG5hbWUgRlJPTSBwZ19jbGFzcyB2YXIxIFdIRVJFIHZhcjEucmVsbmFtZSA9ICdwZ19jbGFzcyc7 CisgcmVsbmFtZSAgCistLS0tLS0tLS0tCisgcGdfY2xhc3MKKygxIHJvdykKKworRFJPUCBWQVJJ QUJMRSB2YXIxOworQ1JFQVRFIFRBQkxFIHh4dGFiKGF2YXIgaW50KTsKK0lOU0VSVCBJTlRPIHh4 dGFiIFZBTFVFUygzMzMpOworQ1JFQVRFIFRZUEUgeHh0eXBlIEFTIChhdmFyIGludCk7CitDUkVB VEUgVkFSSUFCTEUgeHh0YWIgQVMgeHh0eXBlOworSU5TRVJUIElOVE8geHh0YWIgVkFMVUVTKDEw KTsKKy0tIGl0IGlzIGFtYmlndW91cywgYnV0IGNvbHVtbnMgYXJlIHByZWZlcnJlZAorU0VMRUNU IHh4dGFiLmF2YXIgRlJPTSB4eHRhYjsKKyBhdmFyIAorLS0tLS0tCisgIDMzMworICAgMTAKKygy IHJvd3MpCisKKy0tIHNob3VsZCBiZSBvaworU0VMRUNUIGF2YXIgRlJPTSB4eHRhYjsKKyBhdmFy IAorLS0tLS0tCisgIDMzMworICAgMTAKKygyIHJvd3MpCisKK0NSRUFURSBWQVJJQUJMRSBwdWJs aWMuYXZhciBBUyBpbnQ7CistLSBzaG91bGQgYmUgb2ssIHNlZSB0aGUgdGFibGUKK1NFTEVDVCBh dmFyIEZST00geHh0YWI7CisgYXZhciAKKy0tLS0tLQorICAzMzMKKyAgIDEwCisoMiByb3dzKQor CistLSBzaG91bGQgYmUgb2sKK1NFTEVDVCBwdWJsaWMuYXZhciBGUk9NIHh4dGFiOworIGF2YXIg CistLS0tLS0KKyAgICAgCisgICAgIAorKDIgcm93cykKKworRFJPUCBWQVJJQUJMRSB4eHRhYjsK K1NFTEVDVCB4eHRhYi5hdmFyIEZST00geHh0YWI7CisgYXZhciAKKy0tLS0tLQorICAzMzMKKyAg IDEwCisoMiByb3dzKQorCitEUk9QIFZBUklBQkxFIHB1YmxpYy5hdmFyOworRFJPUCBUWVBFIHh4 dHlwZTsKK0RST1AgVEFCTEUgeHh0YWI7CistLSBUaGUgdmFyaWFibGUgY2FuIGJlIHNoYWRvd2Vk IGJ5IHRhYmxlIG9yIGJ5IGFsaWFzCitDUkVBVEUgVFlQRSBwdWJsaWMuc3Zhcl90eXBlIEFTIChh IGludCwgYiBpbnQsIGMgaW50KTsKK0NSRUFURSBWQVJJQUJMRSBwdWJsaWMuc3ZhciBBUyBwdWJs aWMuc3Zhcl90eXBlOworQ1JFQVRFIFRBQkxFIHB1YmxpYy5zdmFyKGEgaW50LCBiIGludCk7CitJ TlNFUlQgSU5UTyBwdWJsaWMuc3ZhciBWQUxVRVMoMTAsIDIwKTsKK0xFVCBwdWJsaWMuc3ZhciA9 ICgxMDAsIDIwMCwgMzAwKTsKKy0tIHNob3VsZCBiZSBvaworLS0gc2hvdyB0YWJsZQorU0VMRUNU ICogRlJPTSBwdWJsaWMuc3ZhcjsKKyBhICB8IGIgIAorLS0tLSstLS0tCisgMTAgfCAyMAorKDEg cm93KQorCitTRUxFQ1Qgc3Zhci5hIEZST00gcHVibGljLnN2YXI7CisgYSAgCistLS0tCisgMTAK KygxIHJvdykKKworU0VMRUNUIHN2YXIuKiBGUk9NIHB1YmxpYy5zdmFyOworIGEgIHwgYiAgCist LS0tKy0tLS0KKyAxMCB8IDIwCisoMSByb3cpCisKKy0tIHNob3cgdmFyaWFibGUKK1NFTEVDVCBw dWJsaWMuc3ZhcjsKKyAgICAgc3ZhciAgICAgIAorLS0tLS0tLS0tLS0tLS0tCisgKDEwMCwyMDAs MzAwKQorKDEgcm93KQorCitTRUxFQ1QgcHVibGljLnN2YXIuYzsKKyAgYyAgCistLS0tLQorIDMw MAorKDEgcm93KQorCitTRUxFQ1QgKHB1YmxpYy5zdmFyKS4qOworICBhICB8ICBiICB8ICBjICAK Ky0tLS0tKy0tLS0tKy0tLS0tCisgMTAwIHwgMjAwIHwgMzAwCisoMSByb3cpCisKKy0tIHRoZSB2 YXJpYWJsZSBpcyBzaGFkb3dlZCwgcmFpc2UgZXJyb3IKK1NFTEVDVCBwdWJsaWMuc3Zhci5jIEZS T00gcHVibGljLnN2YXI7CitFUlJPUjogIGNvbHVtbiBzdmFyLmMgZG9lcyBub3QgZXhpc3QKK0xJ TkUgMTogU0VMRUNUIHB1YmxpYy5zdmFyLmMgRlJPTSBwdWJsaWMuc3ZhcjsKKyAgICAgICAgICAg ICAgIF4KKy0tIGNhbiBiZSBmaXhlZCBieSBhbGlhcworU0VMRUNUIHB1YmxpYy5zdmFyLmMgRlJP TSBwdWJsaWMuc3ZhciB4OworICBjICAKKy0tLS0tCisgMzAwCisoMSByb3cpCisKK1NFTEVDVCBz dmFyLmEgRlJPTSBwdWJsaWMuc3ZhcjsKKyBhICAKKy0tLS0KKyAxMAorKDEgcm93KQorCitTRUxF Q1Qgc3Zhci4qIEZST00gcHVibGljLnN2YXI7CisgYSAgfCBiICAKKy0tLS0rLS0tLQorIDEwIHwg MjAKKygxIHJvdykKKworLS0gc2hvdyB2YXJpYWJsZQorU0VMRUNUIHB1YmxpYy5zdmFyOworICAg ICBzdmFyICAgICAgCistLS0tLS0tLS0tLS0tLS0KKyAoMTAwLDIwMCwzMDApCisoMSByb3cpCisK K1NFTEVDVCBwdWJsaWMuc3Zhci5jOworICBjICAKKy0tLS0tCisgMzAwCisoMSByb3cpCisKK1NF TEVDVCAocHVibGljLnN2YXIpLio7CisgIGEgIHwgIGIgIHwgIGMgIAorLS0tLS0rLS0tLS0rLS0t LS0KKyAxMDAgfCAyMDAgfCAzMDAKKygxIHJvdykKKworLS0gdGhlIHZhcmlhYmxlIGlzIHNoYWRv d2VkLCByYWlzZSBlcnJvcgorU0VMRUNUIHB1YmxpYy5zdmFyLmMgRlJPTSBwdWJsaWMuc3ZhcjsK K0VSUk9SOiAgY29sdW1uIHN2YXIuYyBkb2VzIG5vdCBleGlzdAorTElORSAxOiBTRUxFQ1QgcHVi bGljLnN2YXIuYyBGUk9NIHB1YmxpYy5zdmFyOworICAgICAgICAgICAgICAgXgorLS0gY2FuIGJl IGZpeGVkIGJ5IGFsaWFzCitTRUxFQ1QgcHVibGljLnN2YXIuYyBGUk9NIHB1YmxpYy5zdmFyIHg7 CisgIGMgIAorLS0tLS0KKyAzMDAKKygxIHJvdykKKworRFJPUCBWQVJJQUJMRSBwdWJsaWMuc3Zh cjsKK0RST1AgVEFCTEUgcHVibGljLnN2YXI7CitEUk9QIFRZUEUgcHVibGljLnN2YXJfdHlwZTsK K0NSRUFURSBUWVBFIGFiIEFTIChhIGludGVnZXIsIGIgaW50ZWdlcik7CitDUkVBVEUgVkFSSUFC TEUgdl9hYiBBUyBhYjsKK0NSRUFURSBUQUJMRSB2X2FiIChhIGludGVnZXIsIGIgaW50ZWdlcik7 CitJTlNFUlQgSU5UTyB2X2FiIFZBTFVFUygxMCwyMCk7CistLSB3ZSBzaG91bGQgc2VlIHRhYmxl CitTRUxFQ1Qgdl9hYi5hIEZST00gdl9hYjsKKyBhICAKKy0tLS0KKyAxMAorKDEgcm93KQorCitD UkVBVEUgU0NIRU1BIHZfYWI7CitDUkVBVEUgVkFSSUFCTEUgdl9hYi5hIEFTIGludGVnZXI7Cist LSB3ZSBzaG91bGQgc2VlIHRhYmxlCitTRUxFQ1Qgdl9hYi5hIEZST00gdl9hYjsKKyBhICAKKy0t LS0KKyAxMAorKDEgcm93KQorCitEUk9QIFZBUklBQkxFIHZfYWI7CitEUk9QIFRBQkxFIHZfYWI7 CitEUk9QIFRZUEUgYWI7CitDUkVBVEUgVFlQRSB0X2FtX3R5cGUgQVMgKGIgaW50KTsKK0NSRUFU RSBTQ0hFTUEgeHh4X2FtOworU0VUIHNlYXJjaF9wYXRoIFRPIHB1YmxpYzsKK0NSRUFURSBWQVJJ QUJMRSB4eHhfYW0gQVMgdF9hbV90eXBlOworTEVUIHh4eF9hbSA9IFJPVygxMCk7CistLSBzaG91 bGQgYmUgb2sKK1NFTEVDVCB4eHhfYW07CisgeHh4X2FtIAorLS0tLS0tLS0KKyAoMTApCisoMSBy b3cpCisKK0NSRUFURSBWQVJJQUJMRSB4eHhfYW0uYiBBUyBpbnQ7CitMRVQgOiJEQk5BTUUiLnh4 eF9hbS5iID0gMjA7CistLSBzaG91bGQgYmUgc3RpbGwgb2sKK1NFTEVDVCB4eHhfYW07CisgeHh4 X2FtIAorLS0tLS0tLS0KKyAoMTApCisoMSByb3cpCisKKy0tIHNob3VsZCBmYWlsLCB0aGUgcmVm ZXJlbmNlIHNob3VsZCBiZSBhbWJpZ3VvdXMKK1NFTEVDVCB4eHhfYW0uYjsKK0VSUk9SOiAgc2Vz c2lvbiB2YXJpYWJsZSByZWZlcmVuY2UgInh4eF9hbS5iIiBpcyBhbWJpZ3VvdXMKK0xJTkUgMTog U0VMRUNUIHh4eF9hbS5iOworICAgICAgICAgICAgICAgXgorLS0gZW5oYW5jZWQgcmVmZXJlbmNl cyBzaG91bGQgYmUgb2sKK1NFTEVDVCBwdWJsaWMueHh4X2FtLmI7CisgYiAgCistLS0tCisgMTAK KygxIHJvdykKKworU0VMRUNUIDoiREJOQU1FIi54eHhfYW0uYjsKKyBiICAKKy0tLS0KKyAyMAor KDEgcm93KQorCitDUkVBVEUgVEFCTEUgeHh4X2FtKGIgIGludCk7CitJTlNFUlQgSU5UTyB4eHhf YW0gVkFMVUVTKDEwKTsKKy0tIHdlIHNob3VsZCBzZWUgdGFibGUKK1NFTEVDVCB4eHhfYW0uYiBG Uk9NIHh4eF9hbTsKKyBiICAKKy0tLS0KKyAxMAorKDEgcm93KQorCitTRUxFQ1QgeC5iIEZST00g eHh4X2FtIHg7CisgYiAgCistLS0tCisgMTAKKygxIHJvdykKKworRFJPUCBUQUJMRSB4eHhfYW07 CitEUk9QIFZBUklBQkxFIHB1YmxpYy54eHhfYW07CitEUk9QIFZBUklBQkxFIHh4eF9hbS5iOwor RFJPUCBTQ0hFTUEgeHh4X2FtOworQ1JFQVRFIFNDSEVNQSA6IkRCTkFNRSI7CitDUkVBVEUgVkFS SUFCTEUgOiJEQk5BTUUiLjoiREJOQU1FIi46IkRCTkFNRSIgQVMgdF9hbV90eXBlOworQ1JFQVRF IFZBUklBQkxFIDoiREJOQU1FIi46IkRCTkFNRSIuYiBBUyBpbnQ7CitTRVQgc2VhcmNoX3BhdGgg VE8gOiJEQk5BTUUiOworLS0gc2hvdWxkIGJlIGFtYmlndW91cworU0VMRUNUIDoiREJOQU1FIi5i OworRVJST1I6ICBzZXNzaW9uIHZhcmlhYmxlIHJlZmVyZW5jZSAicmVncmVzc2lvbi5iIiBpcyBh bWJpZ3VvdXMKK0xJTkUgMTogU0VMRUNUICJyZWdyZXNzaW9uIi5iOworICAgICAgICAgICAgICAg XgorLS0gc2hvdWxkIGJlIGFtYmlndW91cyB0b28KK1NFTEVDVCA6IkRCTkFNRSIuOiJEQk5BTUUi LmI7CitFUlJPUjogIHNlc3Npb24gdmFyaWFibGUgcmVmZXJlbmNlICJyZWdyZXNzaW9uLnJlZ3Jl c3Npb24uYiIgaXMgYW1iaWd1b3VzCitMSU5FIDE6IFNFTEVDVCAicmVncmVzc2lvbiIuInJlZ3Jl c3Npb24iLmI7CisgICAgICAgICAgICAgICBeCitDUkVBVEUgVEFCTEUgOiJEQk5BTUUiKGIgaW50 KTsKKy0tIHNob3VsZCBiZSBvaworU0VMRUNUIDoiREJOQU1FIi5iIEZST00gOiJEQk5BTUUiOwor IGIgCistLS0KKygwIHJvd3MpCisKK0RST1AgVEFCTEUgOiJEQk5BTUUiOworRFJPUCBWQVJJQUJM RSA6IkRCTkFNRSIuOiJEQk5BTUUiLmI7CitEUk9QIFZBUklBQkxFIDoiREJOQU1FIi46IkRCTkFN RSIuOiJEQk5BTUUiOworRFJPUCBTQ0hFTUEgOiJEQk5BTUUiOworUkVTRVQgc2VhcmNoX3BhdGg7 CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zZXNzaW9uX3ZhcmlhYmxlcy5zcWwg Yi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zZXNzaW9uX3ZhcmlhYmxlcy5zcWwKaW5kZXggNDJkZmI5 NWEwMi4uZGI1YmExNzZkYiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc2Vzc2lv bl92YXJpYWJsZXMuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Nlc3Npb25fdmFyaWFi bGVzLnNxbApAQCAtNTksMyArNTksNjI4IEBAIERST1AgVkFSSUFCTEUgc3ZhcnRlc3QudmFyMTsK IERST1AgU0NIRU1BIHN2YXJ0ZXN0OwogCiBEUk9QIFJPTEUgcmVncmVzc192YXJpYWJsZV9vd25l cjsKKworLS0gY2hlY2sgYWNjZXNzIHJpZ2h0cworQ1JFQVRFIFJPTEUgcmVncmVzc19ub293bmVy OworCitDUkVBVEUgVkFSSUFCTEUgdmFyMSBBUyBpbnQ7CisKK0NSRUFURSBPUiBSRVBMQUNFIEZV TkNUSU9OIHNxbGZ4KGludCkKK1JFVFVSTlMgaW50IEFTICQkIFNFTEVDVCAkMSArIHZhcjEgJCQg TEFOR1VBR0Ugc3FsOworCitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBzcWxmeF9zZChpbnQp CitSRVRVUk5TIGludCBBUyAkJCBTRUxFQ1QgJDEgKyB2YXIxICQkIExBTkdVQUdFIHNxbCBTRUNV UklUWSBERUZJTkVSOworCitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBwbHBnc3FsZngoaW50 KQorUkVUVVJOUyBpbnQgQVMgJCQgQkVHSU4gUkVUVVJOICQxICsgdmFyMTsgRU5EICQkIExBTkdV QUdFIHBscGdzcWw7CisKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIHBscGdzcWxmeF9zZChp bnQpCitSRVRVUk5TIGludCBBUyAkJCBCRUdJTiBSRVRVUk4gJDEgKyB2YXIxOyBFTkQgJCQgTEFO R1VBR0UgcGxwZ3NxbCBTRUNVUklUWSBERUZJTkVSOworCitMRVQgdmFyMSA9IDEwOworLS0gc2hv dWxkIGJlIG9rCitTRUxFQ1QgdmFyMTsKK1NFTEVDVCBzcWxmeCgyMCk7CitTRUxFQ1Qgc3FsZnhf c2QoMjApOworU0VMRUNUIHBscGdzcWxmeCgyMCk7CitTRUxFQ1QgcGxwZ3NxbGZ4X3NkKDIwKTsK KworLS0gc2hvdWxkIGZhaWwKK1NFVCBST0xFIFRPIHJlZ3Jlc3Nfbm9vd25lcjsKKworU0VMRUNU IHZhcjE7CitTRUxFQ1Qgc3FsZngoMjApOworU0VMRUNUIHBscGdzcWxmeCgyMCk7CisKKy0tIHNo b3VsZCBiZSBvaworU0VMRUNUIHNxbGZ4X3NkKDIwKTsKK1NFTEVDVCBwbHBnc3FsZnhfc2QoMjAp OworCitTRVQgUk9MRSBUTyBERUZBVUxUOworR1JBTlQgU0VMRUNUIE9OIFZBUklBQkxFIHZhcjEg VE8gcmVncmVzc19ub293bmVyOworCistLSBzaG91bGQgYmUgb2sKK1NFVCBST0xFIFRPIHJlZ3Jl c3Nfbm9vd25lcjsKKworU0VMRUNUIHZhcjE7CitTRUxFQ1Qgc3FsZngoMjApOworU0VMRUNUIHBs cGdzcWxmeCgyMCk7CisKK1NFVCBST0xFIFRPIERFRkFVTFQ7CitEUk9QIFZBUklBQkxFIHZhcjE7 CitEUk9QIEZVTkNUSU9OIHNxbGZ4KGludCk7CitEUk9QIEZVTkNUSU9OIHBscGdzcWxmeChpbnQp OworRFJPUCBGVU5DVElPTiBzcWxmeF9zZChpbnQpOworRFJPUCBGVU5DVElPTiBwbHBnc3FsZnhf c2QoaW50KTsKKworRFJPUCBST0xFIHJlZ3Jlc3Nfbm9vd25lcjsKKworLS0gdXNlIHZhcmlhYmxl cyBpbnNpZGUgdmlld3MKK0NSRUFURSBWQVJJQUJMRSB2YXIxIEFTIG51bWVyaWM7CisKKy0tIHVz ZSB2YXJpYWJsZXMgaW4gdmlld3MKK0NSRUFURSBWSUVXIHRlc3RfdmlldyBBUyBTRUxFQ1QgQ09B TEVTQ0UodmFyMSArIHYsIDApIEFTIHJlc3VsdCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDIpIGco dik7CitTRUxFQ1QgKiBGUk9NIHRlc3RfdmlldzsKK0xFVCB2YXIxID0gMy4xNDsKK1NFTEVDVCAq IEZST00gdGVzdF92aWV3OworCistLSBzdGFydCBhIG5ldyBzZXNzaW9uCitcYworCitTRUxFQ1Qg KiBGUk9NIHRlc3RfdmlldzsKK0xFVCB2YXIxID0gMy4xNDsKK1NFTEVDVCAqIEZST00gdGVzdF92 aWV3OworCistLSBzaG91bGQgZmFpbCwgZGVwZW5kZW5jeQorRFJPUCBWQVJJQUJMRSB2YXIxOwor CistLSBzaG91bGQgYmUgb2sKK0RST1AgVkFSSUFCTEUgdmFyMSBDQVNDQURFOworCitDUkVBVEUg VkFSSUFCTEUgdmFyMSB0ZXh0OworQ1JFQVRFIFZBUklBQkxFIHZhcjIgdGV4dDsKKworLS0gdXNl IHZhcmlhYmxlcyBpbiBTUUwgZnVuY3Rpb25zCitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBz cWxmeDEodmFyY2hhcikKK1JFVFVSTlMgdmFyY2hhciBBUyAkJCBTRUxFQ1QgdmFyMSB8fCAnLCAn IHx8ICQxICQkIExBTkdVQUdFIHNxbDsKKworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gc3Fs ZngyKCB2YXJjaGFyKQorUkVUVVJOUyB2YXJjaGFyIEFTICQkIFNFTEVDVCB2YXIyIHx8ICcsICcg fHwgJDEgJCQgTEFOR1VBR0Ugc3FsOworCitMRVQgdmFyMSA9ICdzdHIxJzsKK0xFVCB2YXIyID0g J3N0cjInOworCitTRUxFQ1Qgc3FsZngxKHNxbGZ4MignSGVsbG8nKSk7CisKKy0tIGlubGluaW5n IGlzIGJsb2NrZWQKK0VYUExBSU4gKENPU1RTIE9GRiwgVkVSQk9TRSkgU0VMRUNUIHNxbGZ4MShz cWxmeDIoJ0hlbGxvJykpOworCitEUk9QIEZVTkNUSU9OIHNxbGZ4MSh2YXJjaGFyKTsKK0RST1Ag RlVOQ1RJT04gc3FsZngyKHZhcmNoYXIpOworRFJPUCBWQVJJQUJMRSB2YXIxOworRFJPUCBWQVJJ QUJMRSB2YXIyOworCistLSBhY2Nlc3MgZnJvbSBjYWNoZWQgcGxhbnMgc2hvdWxkIHdvcmsKK0NS RUFURSBWQVJJQUJMRSB2YXIxIEFTIG51bWVyaWM7CisKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNU SU9OIHBscGdzcWxmeCgpCitSRVRVUk5TIG51bWVyaWMgQVMgJCQgQkVHSU4gUkVUVVJOIHZhcjE7 IEVORCAkJCBMQU5HVUFHRSBwbHBnc3FsOworCitzZXQgcGxhbl9jYWNoZV9tb2RlIFRPIGZvcmNl X2dlbmVyaWNfcGxhbjsKKworTEVUIHZhcjEgPSAzLjE0OworU0VMRUNUIHBscGdzcWxmeCgpOwor TEVUIHZhcjEgPSAzLjE0ICogMjsKK1NFTEVDVCBwbHBnc3FsZngoKTsKKworRFJPUCBWQVJJQUJM RSB2YXIxOworCistLSBkZXBlbmRlbmN5IChwbGFuIGludmFsaWRhdGlvbikgc2hvdWxkIHdvcmsK K0NSRUFURSBWQVJJQUJMRSB2YXIxIEFTIG51bWVyaWM7CisKK0xFVCB2YXIxID0gMy4xNCAqIDM7 CitTRUxFQ1QgcGxwZ3NxbGZ4KCk7CitMRVQgdmFyMSA9IDMuMTQgKiA0OworU0VMRUNUIHBscGdz cWxmeCgpOworCitEUk9QIFZBUklBQkxFIHZhcjE7CitEUk9QIEZVTkNUSU9OIHBscGdzcWxmeCgp OworCitzZXQgcGxhbl9jYWNoZV9tb2RlIFRPIERFRkFVTFQ7CisKKy0tIHVzYWdlIExFVCBzdGF0 ZW1lbnQgaW4gcGxwZ3NxbCBzaG91bGQgd29yaworQ1JFQVRFIFZBUklBQkxFIHZhcjEgaW50Owor Q1JFQVRFIFZBUklBQkxFIHZhcjIgbnVtZXJpY1tdOworCitETyAkJAorQkVHSU4KKyAgTEVUIHZh cjIgPSAne30nOjppbnRbXTsKKyAgRk9SIGkgSU4gMS4uMTAKKyAgTE9PUAorICAgIExFVCB2YXIx ID0gaTsKKyAgICBMRVQgdmFyMlt2YXIxXSA9IGk7CisgIEVORCBMT09QOworICBSQUlTRSBOT1RJ Q0UgJ3Jlc3VsdCBhcnJheTogJScsIHZhcjI7CitFTkQ7CiskJDsKKworRFJPUCBWQVJJQUJMRSB2 YXIxOworRFJPUCBWQVJJQUJMRSB2YXIyOworCistLSBDQUxMIHN0YXRlbWVudCBpcyBub3Qgc3Vw cG9ydGVkIHlldAorLS0gcmVxdWlyZXMgZGlyZWN0IGFjY2VzcyB0byBzZXNzaW9uIHZhcmlhYmxl IGZyb20gZXhwcmVzc2lvbiBleGVjdXRvcgorQ1JFQVRFIFZBUklBQkxFIHYgaW50OworCitDUkVB VEUgUFJPQ0VEVVJFIHAoYXJnIGludCkgQVMgJCQgQkVHSU4gUkFJU0UgTk9USUNFICclJywgYXJn OyBFTkQgJCQgTEFOR1VBR0UgcGxwZ3NxbDsKKworLS0gc2hvdWxkIG5vdCBjcmFzaCAoYnV0IGlz IG5vdCBzdXBwb3J0ZWQgeWV0KQorQ0FMTCBwKHYpOworCitETyAkJCBCRUdJTiBDQUxMIHAodik7 IEVORCAkJDsKKworRFJPUCBQUk9DRURVUkUgcChpbnQpOworRFJPUCBWQVJJQUJMRSB2OworCist LSB0ZXN0IHNlYXJjaCBwYXRoCitDUkVBVEUgU0NIRU1BIHN2YXJ0ZXN0OworQ1JFQVRFIFZBUklB QkxFIHN2YXJ0ZXN0LnZhcjEgQVMgbnVtZXJpYzsKKworLS0gc2hvdWxkIGZhaWwKK0xFVCB2YXIx ID0gcGkoKTsKK1NFTEVDVCB2YXIxOworCistLSBzaG91bGQgYmUgb2sKK0xFVCBzdmFydGVzdC52 YXIxID0gcGkoKTsKK1NFTEVDVCBzdmFydGVzdC52YXIxOworCitTRVQgc2VhcmNoX3BhdGggVE8g c3ZhcnRlc3Q7CisKKy0tIHNob3VsZCBiZSBvaworTEVUIHZhcjEgPSBwaSgpICsgMTA7CitTRUxF Q1QgdmFyMTsKKworUkVTRVQgc2VhcmNoX3BhdGg7CitEUk9QIFNDSEVNQSBzdmFydGVzdCBDQVND QURFOworCitDUkVBVEUgVkFSSUFCTEUgdmFyMSBBUyB0ZXh0OworCistLSB2YXJpYWJsZXMgY2Fu IGJlIHVwZGF0ZWQgdW5kZXIgUk8gdHJhbnNhY3Rpb24KK0JFR0lOOworU0VUIFRSQU5TQUNUSU9O IFJFQUQgT05MWTsKK0xFVCB2YXIxID0gJ2hlbGxvJzsKK0NPTU1JVDsKKworU0VMRUNUIHZhcjE7 CisKK0RST1AgVkFSSUFCTEUgdmFyMTsKKworLS0gdGVzdCBvZiBkb21haW5zCitDUkVBVEUgRE9N QUlOIGludF9kb21haW4gQVMgaW50IE5PVCBOVUxMIENIRUNLIChWQUxVRSA+IDEwMCk7CitDUkVB VEUgVkFSSUFCTEUgdmFyMSBBUyBpbnRfZG9tYWluOworCistLSBzaG91bGQgZmFpbAorU0VMRUNU IHZhcjE7CisKKy0tIHNob3VsZCBiZSBvaworTEVUIHZhcjEgPSAxMDAwOworU0VMRUNUIHZhcjE7 CisKKy0tIHNob3VsZCBmYWlsCitMRVQgdmFyMSA9IDEwOworCistLSBzaG91bGQgZmFpbAorTEVU IHZhcjEgPSBOVUxMOworCistLSBub3RlIC0gZG9tYWluIGRlZmF1bHRzIGFyZSBub3Qgc3VwcG9y dGVkIHlldCAobGlrZSBQTHBnU1FMKQorCitEUk9QIFZBUklBQkxFIHZhcjE7CitEUk9QIERPTUFJ TiBpbnRfZG9tYWluOworCistLSB0aGUgZXhwcmVzc2lvbiBzaG91bGQgcmVtYWluICJ1bmtub3du IgorQ1JFQVRFIFZBUklBQkxFIHZhcjEgQVMgaW50NG11bHRpcmFuZ2VbXTsKKy0tIHNob3VsZCBi ZSBvaworTEVUIHZhcjEgPSBOVUxMOworTEVUIHZhcjEgPSAneyJ7WzIsOCksWzExLDE0KX0iLCJ7 WzUsOCksWzEyLDE0KX0ifSc7CitMRVQgdmFyMVsyXSA9ICd7WzUsOCksWzEyLDEwMCl9JzsKK1NF TEVDVCB2YXIxOworCistLUl0IHNob3VsZCB3b3JrIGluIHBscGdzcWwgdG9vCitETyAkJAorQkVH SU4KKyAgTEVUIHZhcjEgPSBOVUxMOworICBMRVQgdmFyMSA9ICd7IntbMiw4KSxbMTEsMTQpfSIs IntbNSw4KSxbMTIsMTQpfSJ9JzsKKyAgTEVUIHZhcjFbMl0gPSAne1s1LDgpLFsxMiwxMDApfSc7 CisKKyAgUkFJU0UgTk9USUNFICclJywgdmFyMTsKK0VORDsKKyQkOworCitEUk9QIFZBUklBQkxF IHZhcjE7CisKK0NSRUFURSBTQ0hFTUEgc3ZhcnRlc3QgQ1JFQVRFIFZBUklBQkxFIHZhcjEgQVMg aW50IENSRUFURSBUQUJMRSBmb28oYSBpbnQpOworTEVUIHN2YXJ0ZXN0LnZhcjEgPSAxMDA7CitT RUxFQ1Qgc3ZhcnRlc3QudmFyMTsKKworU0VUIHNlYXJjaF9wYXRoIHRvIHB1YmxpYywgc3ZhcnRl c3Q7CisKK1NFTEVDVCB2YXIxOworCitEUk9QIFNDSEVNQSBzdmFydGVzdCBDQVNDQURFOworCitD UkVBVEUgVkFSSUFCTEUgdmFyMSBBUyBpbnQ7CitDUkVBVEUgVkFSSUFCTEUgdmFyMiBBUyBpbnRb XTsKKworTEVUIHZhcjEgPSAyOworTEVUIHZhcjIgPSAne30nOjppbnRbXTsKKworTEVUIHZhcjJb dmFyMV0gPSAwOworCitTRUxFQ1QgdmFyMjsKKworRFJPUCBWQVJJQUJMRSB2YXIxLCB2YXIyOwor CitDUkVBVEUgVkFSSUFCTEUgdmFyMSBBUyBpbnQ7CitDUkVBVEUgVkFSSUFCTEUgdmFyMiBBUyBp bnRbXTsKKworTEVUIHZhcjEgPSAyOworTEVUIHZhcjIgPSAne30nOjppbnRbXTsKKworU0VMRUNU IHZhcjI7CisKK0RST1AgVkFSSUFCTEUgdmFyMSwgdmFyMjsKKworLS0gdGhlIExFVCBzdGF0ZW1l bnQgc2hvdWxkIGJlIGRpc2FsbG93ZWQgaW4gQ1RFCitDUkVBVEUgVkFSSUFCTEUgdmFyMSBBUyBp bnQ7CitXSVRIIHggQVMgKExFVCB2YXIxID0gMTAwKSBTRUxFQ1QgKiBGUk9NIHg7CisKKy0tIHNo b3VsZCBiZSBvaworTEVUIHZhcjEgPSBnZW5lcmF0ZV9zZXJpZXMoMSwgMSk7CisKKy0tIHNob3Vs ZCBmYWlsCitMRVQgdmFyMSA9IGdlbmVyYXRlX3NlcmllcygxLCAyKTsKK0xFVCB2YXIxID0gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDApOworCitEUk9QIFZBUklBQkxFIHZhcjE7CisKKy0tIGNvbXBvc2l0 ZSB2YXJpYWJsZXMKK0NSRUFURSBUWVBFIHN2X3h5eiBBUyAoeCBpbnQsIHkgaW50LCB6IG51bWVy aWMoMTAsMikpOworCitDUkVBVEUgVkFSSUFCTEUgdjEgQVMgc3ZfeHl6OworQ1JFQVRFIFZBUklB QkxFIHYyIEFTIHN2X3h5ejsKKworTEVUIHYxID0gKDEsIDIsIDMuMTQpOworTEVUIHYyID0gKDEw LCAyMCwgMy4xNCAqIDEwKTsKKworLS0gc2hvdWxkIHdvcmsgdG9vIC0gdGhlcmUgYXJlIHByZXBh cmVkIGNhc3RzCitMRVQgdjEgPSAoMSwgMiwgMyk7CisKK1NFTEVDVCB2MTsKK1NFTEVDVCB2MjsK K1NFTEVDVCAodjEpLio7CitTRUxFQ1QgKHYyKS4qOworCitTRUxFQ1QgdjEueCArIHYxLno7CitT RUxFQ1QgdjIueCArIHYyLno7CisKKy0tIGFjY2VzcyB0byBjb21wb3NpdGUgZmllbGRzIHNob3Vs ZCBiZSBzYWZlIHRvbworQ1JFQVRFIFJPTEUgcmVncmVzc192YXJfdGVzdF9yb2xlOworCitTRVQg Uk9MRSBUTyByZWdyZXNzX3Zhcl90ZXN0X3JvbGU7CisKKy0tIHNob3VsZCBmYWlsCitTRUxFQ1Qg djIueDsKKworU0VUIFJPTEUgVE8gREVGQVVMVDsKKworRFJPUCBWQVJJQUJMRSB2MTsKK0RST1Ag VkFSSUFCTEUgdjI7CisKK0RST1AgUk9MRSByZWdyZXNzX3Zhcl90ZXN0X3JvbGU7CisKK0NSRUFU RSBUWVBFIHQxIEFTIChhIGludCwgYiBudW1lcmljLCBjIHRleHQpOworCitDUkVBVEUgVkFSSUFC TEUgdjEgQVMgdDE7CitMRVQgdjEgPSAoMSwgcGkoKSwgJ2hlbGxvJyk7CitTRUxFQ1QgdjE7CitM RVQgdjEuYiA9IDEwLjIyMjI7CitTRUxFQ1QgdjE7CisKKy0tIHNob3VsZCBmYWlsLCBhdHRyaWJ1 dGUgZG9lc24ndCBleGlzdAorTEVUIHYxLnggPSAxMDsKKworLS0gc2hvdWxkIGZhaWwsIGRvbid0 IGFsbG93IG11bHRpIGNvbHVtbiBxdWVyeQorTEVUIHYxID0gKE5VTEw6OnQxKS4qOworCistLSBh bGxvdyBEUk9QIG9yIEFERCBBVFRSSUJVVEUgb24gY29tcG9zaXRlIHR5cGVzCistLSBzaG91bGQg YmUgb2sKK0FMVEVSIFRZUEUgdDEgRFJPUCBBVFRSSUJVVEUgYzsKK1NFTEVDVCB2MTsKKworLS0g c2hvdWxkIGJlIG9rCitBTFRFUiBUWVBFIHQxIEFERCBBVFRSSUJVVEUgYyBpbnQ7CitTRUxFQ1Qg djE7CisKK0xFVCB2MSA9ICgxMCwgMTAuMywgMjApOworU0VMRUNUIHYxOworCistLSBzaG91bGQg YmUgb2sKK0FMVEVSIFRZUEUgdDEgRFJPUCBBVFRSSUJVVEUgYjsKK1NFTEVDVCB2MTsKKworLS0g c2hvdWxkIGZhaWwsIGRpc2FsbG93IGRhdGEgdHlwZSBjaGFuZ2UKK0FMVEVSIFRZUEUgdDEgQUxU RVIgQVRUUklCVVRFIGMgVFlQRSBpbnQ7CisKK0RST1AgVkFSSUFCTEUgdjE7CitEUk9QIFRZUEUg dDE7CisKKy0tIHRoZSB0YWJsZSB0eXBlIGNhbiBiZSB1c2VkIGFzIGNvbXBvc2l0ZSB0eXBlIHRv bworQ1JFQVRFIFRBQkxFIHN2YXJfdGVzdChhIGludCwgYiBudW1lcmljLCBjIGRhdGUpOworQ1JF QVRFIFZBUklBQkxFIHZhcjEgQVMgc3Zhcl90ZXN0OworCitMRVQgdmFyMSA9ICgxMCwgcGkoKSwg JzIwMjMtMDUtMjYnKTsKK1NFTEVDVCB2YXIxOworCistLSBzaG91bGQgZmFpbCBkdWUgZGVwZW5k ZW5jeQorQUxURVIgVEFCTEUgc3Zhcl90ZXN0IEFMVEVSIENPTFVNTiBhIFRZUEUgdGV4dDsKKwor LS0gc2hvdWxkIGZhaWwKK0RST1AgVEFCTEUgc3Zhcl90ZXN0OworCitEUk9QIFZBUklBQkxFIHZh cjE7CitEUk9QIFRBQkxFIHN2YXJfdGVzdDsKKworLS0gYXJyYXlzIGFyZSBzdXBwb3J0ZWQKK0NS RUFURSBWQVJJQUJMRSB2YXIxIEFTIG51bWVyaWNbXTsKK0xFVCB2YXIxID0gQVJSQVlbMS4xLDIu MV07CitMRVQgdmFyMVsxXSA9IDEwLjE7CitTRUxFQ1QgdmFyMTsKKworLS0gTEVUIHRhcmdldCBk b2Vzbid0IGFsbG93IHNyZiwgc2hvdWxkIGZhaWwKK0xFVCB2YXIxW2dlbmVyYXRlX3Nlcmllcygx LDMpXSA9IDEwMDsKKworRFJPUCBWQVJJQUJMRSB2YXIxOworCistLSBhcnJheXMgaW5zaWRlIGNv bXBvc2l0ZQorQ1JFQVRFIFRZUEUgdDEgQVMgKGEgbnVtZXJpYywgYiBudW1lcmljW10pOworQ1JF QVRFIFZBUklBQkxFIHZhcjEgQVMgdDE7CitMRVQgdmFyMSA9ICgxMC4xLCBBUlJBWVswLjAsIDAu MF0pOworTEVUIHZhcjEuYSA9IDEwLjI7CitTRUxFQ1QgdmFyMTsKK0xFVCB2YXIxLmJbMV0gPSAx MC4zOworU0VMRUNUIHZhcjE7CisKK0RST1AgVkFSSUFCTEUgdmFyMTsKK0RST1AgVFlQRSB0MTsK KworLS0gRW5jb3VyYWdlIHVzZSBvZiBwYXJhbGxlbCBwbGFucworU0VUIHBhcmFsbGVsX3NldHVw X2Nvc3QgPSAwOworU0VUIHBhcmFsbGVsX3R1cGxlX2Nvc3QgPSAwOworU0VUIG1pbl9wYXJhbGxl bF90YWJsZV9zY2FuX3NpemUgPSAwOworU0VUIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRo ZXIgPSAyOworCistLSB0ZXN0IG9uIHF1ZXJ5IHdpdGggd29ya2VycworQ1JFQVRFIFRBQkxFIHN2 YXJfdGVzdChhIGludCk7CitJTlNFUlQgSU5UTyBzdmFyX3Rlc3QgU0VMRUNUICogRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSwxMDAwKTsKK0FOQUxZWkUgc3Zhcl90ZXN0OworQ1JFQVRFIFZBUklBQkxF IHplcm8gaW50OworTEVUIHplcm8gPSAwOworCistLSByZXN1bHQgc2hvdWxkIGJlIDEwMAorU0VM RUNUIGNvdW50KCopIEZST00gc3Zhcl90ZXN0IFdIRVJFIGElMTAgPSB6ZXJvOworCistLSBwYXJh bGxlbCBleGVjdXRpb24gaXMgbm90IHN1cHBvcnRlZCB5ZXQKK0VYUExBSU4gKENPU1RTIE9GRikg U0VMRUNUIGNvdW50KCopIEZST00gc3Zhcl90ZXN0IFdIRVJFIGElMTAgPSB6ZXJvOworCitMRVQg emVybyA9IChTRUxFQ1QgY291bnQoKikgRlJPTSBzdmFyX3Rlc3QpOworCistLSByZXN1bHQgc2hv dWxkIGJlIDEwMDAKK1NFTEVDVCB6ZXJvOworCitEUk9QIFZBUklBQkxFIHplcm87CitEUk9QIFRB QkxFIHN2YXJfdGVzdDsKKworUkVTRVQgcGFyYWxsZWxfc2V0dXBfY29zdDsKK1JFU0VUIHBhcmFs bGVsX3R1cGxlX2Nvc3Q7CitSRVNFVCBtaW5fcGFyYWxsZWxfdGFibGVfc2Nhbl9zaXplOworUkVT RVQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlcjsKKworLS0gdGhlIHJlc3VsdCBvZiB2 aWV3IHNob3VsZCBiZSBzYW1lIGluIHBhcmFsbGVsIG1vZGUgdG9vCitDUkVBVEUgVkFSSUFCTEUg dmFyMSBBUyBpbnQ7CitMRVQgdmFyMSA9IDEwOworCitDUkVBVEUgVklFVyB2YXIxdmlldyBBUyBT RUxFQ1QgQ09BTEVTQ0UodmFyMSwgMCkgQVMgcmVzdWx0OworCitTRUxFQ1QgKiBGUk9NIHZhcjF2 aWV3OworCitTRVQgZGVidWdfcGFyYWxsZWxfcXVlcnkgVE8gb247CisKK1NFTEVDVCAqIEZST00g dmFyMXZpZXc7CisKK1NFVCBkZWJ1Z19wYXJhbGxlbF9xdWVyeSBUTyBvZmY7CisKK0RST1AgVklF VyB2YXIxdmlldzsKK0RST1AgVkFSSUFCTEUgdmFyMTsKKworQ1JFQVRFIFZBUklBQkxFIHZhcmlk IGludDsKK0NSRUFURSBUQUJMRSBzdmFyX3Rlc3QoaWQgaW50LCB2IGludCk7CisKK0xFVCB2YXJp ZCA9IDE7CitJTlNFUlQgSU5UTyBzdmFyX3Rlc3QgVkFMVUVTKHZhcmlkLCAxMDApOworU0VMRUNU ICogRlJPTSBzdmFyX3Rlc3Q7CitVUERBVEUgc3Zhcl90ZXN0IFNFVCB2ID0gMjAwIFdIRVJFIGlk ID0gdmFyaWQ7CitTRUxFQ1QgKiBGUk9NIHN2YXJfdGVzdDsKK0RFTEVURSBGUk9NIHN2YXJfdGVz dCBXSEVSRSBpZCA9IHZhcmlkOworU0VMRUNUICogRlJPTSBzdmFyX3Rlc3Q7CisKK0RST1AgVEFC TEUgc3Zhcl90ZXN0OworRFJPUCBWQVJJQUJMRSB2YXJpZDsKKworCistLSB2aXNpYmlsaXR5IGNo ZWNrCistLSB2YXJpYWJsZXMgc2hvdWxkIGJlIHNoYWRvd2VkIGFsd2F5cworQ1JFQVRFIFZBUklB QkxFIHZhcjEgQVMgdGV4dDsKK1NFTEVDVCB2YXIxLnJlbG5hbWUgRlJPTSBwZ19jbGFzcyB2YXIx IFdIRVJFIHZhcjEucmVsbmFtZSA9ICdwZ19jbGFzcyc7CisKK0RST1AgVkFSSUFCTEUgdmFyMTsK KworQ1JFQVRFIFRBQkxFIHh4dGFiKGF2YXIgaW50KTsKKworSU5TRVJUIElOVE8geHh0YWIgVkFM VUVTKDMzMyk7CisKK0NSRUFURSBUWVBFIHh4dHlwZSBBUyAoYXZhciBpbnQpOworCitDUkVBVEUg VkFSSUFCTEUgeHh0YWIgQVMgeHh0eXBlOworCitJTlNFUlQgSU5UTyB4eHRhYiBWQUxVRVMoMTAp OworCistLSBpdCBpcyBhbWJpZ3VvdXMsIGJ1dCBjb2x1bW5zIGFyZSBwcmVmZXJyZWQKK1NFTEVD VCB4eHRhYi5hdmFyIEZST00geHh0YWI7CisKKy0tIHNob3VsZCBiZSBvaworU0VMRUNUIGF2YXIg RlJPTSB4eHRhYjsKKworQ1JFQVRFIFZBUklBQkxFIHB1YmxpYy5hdmFyIEFTIGludDsKKworLS0g c2hvdWxkIGJlIG9rLCBzZWUgdGhlIHRhYmxlCitTRUxFQ1QgYXZhciBGUk9NIHh4dGFiOworCist LSBzaG91bGQgYmUgb2sKK1NFTEVDVCBwdWJsaWMuYXZhciBGUk9NIHh4dGFiOworCitEUk9QIFZB UklBQkxFIHh4dGFiOworCitTRUxFQ1QgeHh0YWIuYXZhciBGUk9NIHh4dGFiOworCitEUk9QIFZB UklBQkxFIHB1YmxpYy5hdmFyOworCitEUk9QIFRZUEUgeHh0eXBlOworCitEUk9QIFRBQkxFIHh4 dGFiOworCistLSBUaGUgdmFyaWFibGUgY2FuIGJlIHNoYWRvd2VkIGJ5IHRhYmxlIG9yIGJ5IGFs aWFzCitDUkVBVEUgVFlQRSBwdWJsaWMuc3Zhcl90eXBlIEFTIChhIGludCwgYiBpbnQsIGMgaW50 KTsKK0NSRUFURSBWQVJJQUJMRSBwdWJsaWMuc3ZhciBBUyBwdWJsaWMuc3Zhcl90eXBlOworCitD UkVBVEUgVEFCTEUgcHVibGljLnN2YXIoYSBpbnQsIGIgaW50KTsKKworSU5TRVJUIElOVE8gcHVi bGljLnN2YXIgVkFMVUVTKDEwLCAyMCk7CisKK0xFVCBwdWJsaWMuc3ZhciA9ICgxMDAsIDIwMCwg MzAwKTsKKworLS0gc2hvdWxkIGJlIG9rCistLSBzaG93IHRhYmxlCitTRUxFQ1QgKiBGUk9NIHB1 YmxpYy5zdmFyOworU0VMRUNUIHN2YXIuYSBGUk9NIHB1YmxpYy5zdmFyOworU0VMRUNUIHN2YXIu KiBGUk9NIHB1YmxpYy5zdmFyOworCistLSBzaG93IHZhcmlhYmxlCitTRUxFQ1QgcHVibGljLnN2 YXI7CitTRUxFQ1QgcHVibGljLnN2YXIuYzsKK1NFTEVDVCAocHVibGljLnN2YXIpLio7CisKKy0t IHRoZSB2YXJpYWJsZSBpcyBzaGFkb3dlZCwgcmFpc2UgZXJyb3IKK1NFTEVDVCBwdWJsaWMuc3Zh ci5jIEZST00gcHVibGljLnN2YXI7CisKKy0tIGNhbiBiZSBmaXhlZCBieSBhbGlhcworU0VMRUNU IHB1YmxpYy5zdmFyLmMgRlJPTSBwdWJsaWMuc3ZhciB4OworCitTRUxFQ1Qgc3Zhci5hIEZST00g cHVibGljLnN2YXI7CitTRUxFQ1Qgc3Zhci4qIEZST00gcHVibGljLnN2YXI7CisKKy0tIHNob3cg dmFyaWFibGUKK1NFTEVDVCBwdWJsaWMuc3ZhcjsKK1NFTEVDVCBwdWJsaWMuc3Zhci5jOworU0VM RUNUIChwdWJsaWMuc3ZhcikuKjsKKworLS0gdGhlIHZhcmlhYmxlIGlzIHNoYWRvd2VkLCByYWlz ZSBlcnJvcgorU0VMRUNUIHB1YmxpYy5zdmFyLmMgRlJPTSBwdWJsaWMuc3ZhcjsKKworLS0gY2Fu IGJlIGZpeGVkIGJ5IGFsaWFzCitTRUxFQ1QgcHVibGljLnN2YXIuYyBGUk9NIHB1YmxpYy5zdmFy IHg7CisKK0RST1AgVkFSSUFCTEUgcHVibGljLnN2YXI7CitEUk9QIFRBQkxFIHB1YmxpYy5zdmFy OworRFJPUCBUWVBFIHB1YmxpYy5zdmFyX3R5cGU7CisKK0NSRUFURSBUWVBFIGFiIEFTIChhIGlu dGVnZXIsIGIgaW50ZWdlcik7CisKK0NSRUFURSBWQVJJQUJMRSB2X2FiIEFTIGFiOworCitDUkVB VEUgVEFCTEUgdl9hYiAoYSBpbnRlZ2VyLCBiIGludGVnZXIpOworSU5TRVJUIElOVE8gdl9hYiBW QUxVRVMoMTAsMjApOworCistLSB3ZSBzaG91bGQgc2VlIHRhYmxlCitTRUxFQ1Qgdl9hYi5hIEZS T00gdl9hYjsKKworQ1JFQVRFIFNDSEVNQSB2X2FiOworCitDUkVBVEUgVkFSSUFCTEUgdl9hYi5h IEFTIGludGVnZXI7CisKKy0tIHdlIHNob3VsZCBzZWUgdGFibGUKK1NFTEVDVCB2X2FiLmEgRlJP TSB2X2FiOworCitEUk9QIFZBUklBQkxFIHZfYWI7CitEUk9QIFRBQkxFIHZfYWI7CitEUk9QIFRZ UEUgYWI7CisKK0NSRUFURSBUWVBFIHRfYW1fdHlwZSBBUyAoYiBpbnQpOworQ1JFQVRFIFNDSEVN QSB4eHhfYW07CisKK1NFVCBzZWFyY2hfcGF0aCBUTyBwdWJsaWM7CisKK0NSRUFURSBWQVJJQUJM RSB4eHhfYW0gQVMgdF9hbV90eXBlOworTEVUIHh4eF9hbSA9IFJPVygxMCk7CisKKy0tIHNob3Vs ZCBiZSBvaworU0VMRUNUIHh4eF9hbTsKKworQ1JFQVRFIFZBUklBQkxFIHh4eF9hbS5iIEFTIGlu dDsKK0xFVCA6IkRCTkFNRSIueHh4X2FtLmIgPSAyMDsKKworLS0gc2hvdWxkIGJlIHN0aWxsIG9r CitTRUxFQ1QgeHh4X2FtOworCistLSBzaG91bGQgZmFpbCwgdGhlIHJlZmVyZW5jZSBzaG91bGQg YmUgYW1iaWd1b3VzCitTRUxFQ1QgeHh4X2FtLmI7CisKKy0tIGVuaGFuY2VkIHJlZmVyZW5jZXMg c2hvdWxkIGJlIG9rCitTRUxFQ1QgcHVibGljLnh4eF9hbS5iOworU0VMRUNUIDoiREJOQU1FIi54 eHhfYW0uYjsKKworQ1JFQVRFIFRBQkxFIHh4eF9hbShiICBpbnQpOworSU5TRVJUIElOVE8geHh4 X2FtIFZBTFVFUygxMCk7CisKKy0tIHdlIHNob3VsZCBzZWUgdGFibGUKK1NFTEVDVCB4eHhfYW0u YiBGUk9NIHh4eF9hbTsKK1NFTEVDVCB4LmIgRlJPTSB4eHhfYW0geDsKKworRFJPUCBUQUJMRSB4 eHhfYW07CitEUk9QIFZBUklBQkxFIHB1YmxpYy54eHhfYW07CitEUk9QIFZBUklBQkxFIHh4eF9h bS5iOworRFJPUCBTQ0hFTUEgeHh4X2FtOworCitDUkVBVEUgU0NIRU1BIDoiREJOQU1FIjsKKwor Q1JFQVRFIFZBUklBQkxFIDoiREJOQU1FIi46IkRCTkFNRSIuOiJEQk5BTUUiIEFTIHRfYW1fdHlw ZTsKK0NSRUFURSBWQVJJQUJMRSA6IkRCTkFNRSIuOiJEQk5BTUUiLmIgQVMgaW50OworCitTRVQg c2VhcmNoX3BhdGggVE8gOiJEQk5BTUUiOworCistLSBzaG91bGQgYmUgYW1iaWd1b3VzCitTRUxF Q1QgOiJEQk5BTUUiLmI7CisKKy0tIHNob3VsZCBiZSBhbWJpZ3VvdXMgdG9vCitTRUxFQ1QgOiJE Qk5BTUUiLjoiREJOQU1FIi5iOworCitDUkVBVEUgVEFCTEUgOiJEQk5BTUUiKGIgaW50KTsKKwor LS0gc2hvdWxkIGJlIG9rCitTRUxFQ1QgOiJEQk5BTUUiLmIgRlJPTSA6IkRCTkFNRSI7CisKK0RS T1AgVEFCTEUgOiJEQk5BTUUiOworCitEUk9QIFZBUklBQkxFIDoiREJOQU1FIi46IkRCTkFNRSIu YjsKK0RST1AgVkFSSUFCTEUgOiJEQk5BTUUiLjoiREJOQU1FIi46IkRCTkFNRSI7CitEUk9QIFND SEVNQSA6IkRCTkFNRSI7CisKK1JFU0VUIHNlYXJjaF9wYXRoOwpkaWZmIC0tZ2l0IGEvc3JjL3Rv b2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMu bGlzdAppbmRleCA4MzdlNWI4M2EzLi5iYzNkYmQ3MjYwIDEwMDY0NAotLS0gYS9zcmMvdG9vbHMv cGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMu bGlzdApAQCAtMTQ5NCw2ICsxNDk0LDcgQEAgTGFyZ2VPYmplY3REZXNjCiBMYXRjaAogTGF1bmNo ZXJMYXN0U3RhcnRUaW1lc0VudHJ5CiBMZXJwRnVuYworTGV0U3RtdAogTGV4RGVzY3IKIExleGVt ZUVudHJ5CiBMZXhlbWVIYXNoS2V5CkBAIC0yNTkwLDYgKzI1OTEsNyBAQCBTZXJpYWxpemVkVHJh bnNhY3Rpb25TdGF0ZQogU2Vzc2lvbgogU2Vzc2lvbkJhY2t1cFN0YXRlCiBTZXNzaW9uRW5kVHlw ZQorU2Vzc2lvblZhcmlhYmxlVmFsdWUKIFNldENvbnN0cmFpbnRTdGF0ZQogU2V0Q29uc3RyYWlu dFN0YXRlRGF0YQogU2V0Q29uc3RyYWludFRyaWdnZXJEYXRhCkBAIC0yNzgyLDYgKzI3ODQsOSBA QCBTdXBwb3J0UmVxdWVzdFJvd3MKIFN1cHBvcnRSZXF1ZXN0U2VsZWN0aXZpdHkKIFN1cHBvcnRS ZXF1ZXN0U2ltcGxpZnkKIFN1cHBvcnRSZXF1ZXN0V0Z1bmNNb25vdG9uaWMKK1NWYXJpYWJsZQor U1ZhcmlhYmxlRGF0YQorU1ZhcmlhYmxlU3RhdGUKIFN5bgogU3luY09wcwogU3luY1JlcENvbmZp Z0RhdGEKLS0gCjIuNDUuMgoK --=-ck/4UnhDo36KLHDuWECU--