From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Andrushchenko Subject: [PATCH v6 1/1] cameraif: add ABI for para-virtual camera Date: Fri, 22 Mar 2019 09:37:42 +0200 Message-ID: <20190322073742.14639-2-andr2000@gmail.com> References: <20190322073742.14639-1-andr2000@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1h7EkY-0002cm-A1 for xen-devel@lists.xenproject.org; Fri, 22 Mar 2019 07:37:58 +0000 Received: by mail-lf1-x141.google.com with SMTP id 5so676528lft.12 for ; Fri, 22 Mar 2019 00:37:54 -0700 (PDT) In-Reply-To: <20190322073742.14639-1-andr2000@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org, konrad.wilk@oracle.com, jgross@suse.com, boris.ostrovsky@oracle.com, mchehab@kernel.org, linux-media@vger.kernel.org, sakari.ailus@linux.intel.com, koji.matsuoka.xm@renesas.com, hverkuil@xs4all.nl Cc: Oleksandr Andrushchenko List-Id: xen-devel@lists.xenproject.org RnJvbTogT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gPG9sZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVw YW0uY29tPgoKVGhpcyBpcyB0aGUgQUJJIGZvciB0aGUgdHdvIGhhbHZlcyBvZiBhIHBhcmEtdmly dHVhbGl6ZWQKY2FtZXJhIGRyaXZlciB3aGljaCBleHRlbmRzIFhlbidzIHJlYWNoIG11bHRpbWVk aWEgY2FwYWJpbGl0aWVzIGV2ZW4KZmFydGhlciBlbmFibGluZyBpdCBmb3IgdmlkZW8gY29uZmVy ZW5jaW5nLCBJbi1WZWhpY2xlIEluZm90YWlubWVudCwKaGlnaCBkZWZpbml0aW9uIG1hcHMgZXRj LgoKVGhlIGluaXRpYWwgZ29hbCBpcyB0byBzdXBwb3J0IG1vc3QgbmVlZGVkIGZ1bmN0aW9uYWxp dHkgd2l0aCB0aGUKZmluYWwgaWRlYSB0byBtYWtlIGl0IHBvc3NpYmxlIHRvIGV4dGVuZCB0aGUg cHJvdG9jb2wgaWYgbmVlZCBiZToKCjEuIFByb3ZpZGUgbWVhbnMgZm9yIGJhc2UgdmlydHVhbCBk ZXZpY2UgY29uZmlndXJhdGlvbjoKIC0gcGl4ZWwgZm9ybWF0cwogLSByZXNvbHV0aW9ucwogLSBm cmFtZSByYXRlcwoyLiBTdXBwb3J0IGJhc2ljIGNhbWVyYSBjb250cm9sczoKIC0gY29udHJhc3QK IC0gYnJpZ2h0bmVzcwogLSBodWUKIC0gc2F0dXJhdGlvbgozLiBTdXBwb3J0IHN0cmVhbWluZyBj b250cm9sCgpTaWduZWQtb2ZmLWJ5OiBPbGVrc2FuZHIgQW5kcnVzaGNoZW5rbyA8b2xla3NhbmRy X2FuZHJ1c2hjaGVua29AZXBhbS5jb20+Ci0tLQogeGVuL2luY2x1ZGUvcHVibGljL2lvL2NhbWVy YWlmLmggfCAxMzc0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5n ZWQsIDEzNzQgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9pbmNsdWRlL3B1 YmxpYy9pby9jYW1lcmFpZi5oCgpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvcHVibGljL2lvL2Nh bWVyYWlmLmggYi94ZW4vaW5jbHVkZS9wdWJsaWMvaW8vY2FtZXJhaWYuaApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmFjYmNiZjNiZDQxMQotLS0gL2Rldi9udWxsCisr KyBiL3hlbi9pbmNsdWRlL3B1YmxpYy9pby9jYW1lcmFpZi5oCkBAIC0wLDAgKzEsMTM3NCBAQAor LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKgorICogY2FtZXJhaWYuaAorICoKKyAqIFVuaWZpZWQgY2Ft ZXJhIGRldmljZSBJL08gaW50ZXJmYWNlIGZvciBYZW4gZ3Vlc3QgT1Nlcy4KKyAqCisgKiBQZXJt aXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBv YnRhaW5pbmcgYSBjb3B5CisgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3Vt ZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KKyAqIGRlYWwgaW4gdGhlIFNvZnR3 YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhl CisgKiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmli dXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKKyAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwg YW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgKiBmdXJuaXNo ZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAq IFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNo YWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25z IG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElT IiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwg SU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC SUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklO R0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhP TERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJ TElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNF LCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZU V0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCisgKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisg KgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgRVBBTSBTeXN0ZW1zIEluYy4KKyAqCisgKiBB dXRob3I6IE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIDxvbGVrc2FuZHJfYW5kcnVzaGNoZW5rb0Bl cGFtLmNvbT4KKyAqLworCisjaWZuZGVmIF9fWEVOX1BVQkxJQ19JT19DQU1FUkFJRl9IX18KKyNk ZWZpbmUgX19YRU5fUFVCTElDX0lPX0NBTUVSQUlGX0hfXworCisjaW5jbHVkZSAicmluZy5oIgor I2luY2x1ZGUgIi4uL2dyYW50X3RhYmxlLmgiCisKKy8qCisgKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb3RvY29sIHZlcnNpb24KKyAqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioKKyAqLworI2RlZmluZSBYRU5DQU1FUkFfUFJPVE9DT0xfVkVSU0lPTiAg ICAgIjEiCisKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAgICAgICAg IEZlYXR1cmUgYW5kIFBhcmFtZXRlciBOZWdvdGlhdGlvbgorICoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KgorICoKKyAqIEZyb250LT5iYWNrIG5vdGlmaWNhdGlvbnM6IHdoZW4gZW5xdWV1aW5nIGEgbmV3 IHJlcXVlc3QsIHNlbmRpbmcgYQorICogbm90aWZpY2F0aW9uIGNhbiBiZSBtYWRlIGNvbmRpdGlv bmFsIG9uIHhlbmNhbWVyYV9yZXEgKGkuZS4sIHRoZSBnZW5lcmljCisgKiBob2xkLW9mZiBtZWNo YW5pc20gcHJvdmlkZWQgYnkgdGhlIHJpbmcgbWFjcm9zKS4gQmFja2VuZHMgbXVzdCBzZXQKKyAq IHhlbmNhbWVyYV9yZXEgYXBwcm9wcmlhdGVseSAoZS5nLiwgdXNpbmcgUklOR19GSU5BTF9DSEVD S19GT1JfUkVRVUVTVFMoKSkuCisgKgorICogQmFjay0+ZnJvbnQgbm90aWZpY2F0aW9uczogd2hl biBlbnF1ZXVpbmcgYSBuZXcgcmVzcG9uc2UsIHNlbmRpbmcgYQorICogbm90aWZpY2F0aW9uIGNh biBiZSBtYWRlIGNvbmRpdGlvbmFsIG9uIHhlbmNhbWVyYV9yZXNwIChpLmUuLCB0aGUgZ2VuZXJp YworICogaG9sZC1vZmYgbWVjaGFuaXNtIHByb3ZpZGVkIGJ5IHRoZSByaW5nIG1hY3JvcykuIEZy b250ZW5kcyBtdXN0IHNldAorICogeGVuY2FtZXJhX3Jlc3AgYXBwcm9wcmlhdGVseSAoZS5nLiwg dXNpbmcgUklOR19GSU5BTF9DSEVDS19GT1JfUkVTUE9OU0VTKCkpLgorICoKKyAqIFRoZSB0d28g aGFsdmVzIG9mIGEgcGFyYS12aXJ0dWFsIGNhbWVyYSBkcml2ZXIgdXRpbGl6ZSBub2RlcyB3aXRo aW4KKyAqIFhlblN0b3JlIHRvIGNvbW11bmljYXRlIGNhcGFiaWxpdGllcyBhbmQgdG8gbmVnb3Rp YXRlIG9wZXJhdGluZyBwYXJhbWV0ZXJzLgorICogVGhpcyBzZWN0aW9uIGVudW1lcmF0ZXMgdGhl c2Ugbm9kZXMgd2hpY2ggcmVzaWRlIGluIHRoZSByZXNwZWN0aXZlIGZyb250IGFuZAorICogYmFj a2VuZCBwb3J0aW9ucyBvZiBYZW5TdG9yZSwgZm9sbG93aW5nIHRoZSBYZW5CdXMgY29udmVudGlv bi4KKyAqCisgKiBBbGwgZGF0YSBpbiBYZW5TdG9yZSBpcyBzdG9yZWQgYXMgc3RyaW5ncy4gTm9k ZXMgc3BlY2lmeWluZyBudW1lcmljCisgKiB2YWx1ZXMgYXJlIGVuY29kZWQgaW4gZGVjaW1hbC4g SW50ZWdlciB2YWx1ZSByYW5nZXMgbGlzdGVkIGJlbG93IGFyZQorICogZXhwcmVzc2VkIGFzIGZp eGVkIHNpemVkIGludGVnZXIgdHlwZXMgY2FwYWJsZSBvZiBzdG9yaW5nIHRoZSBjb252ZXJzaW9u CisgKiBvZiBhIHByb3Blcmx5IGZvcm1hdHRlZCBub2RlIHN0cmluZywgd2l0aG91dCBsb3NzIG9m IGluZm9ybWF0aW9uLgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgICAgICAg ICAgICAgICAgICAgRXhhbXBsZSBjb25maWd1cmF0aW9uCisgKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq CisgKgorICogVGhpcyBpcyBhbiBleGFtcGxlIG9mIGJhY2tlbmQgYW5kIGZyb250ZW5kIGNvbmZp Z3VyYXRpb246CisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQmFja2Vu ZCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIC9sb2NhbC9kb21h aW4vMC9iYWNrZW5kL3ZjYW1lcmEvMS8wL2Zyb250ZW5kLWlkID0gIjEiCisgKiAvbG9jYWwvZG9t YWluLzAvYmFja2VuZC92Y2FtZXJhLzEvMC9mcm9udGVuZCA9ICIvbG9jYWwvZG9tYWluLzEvZGV2 aWNlL3ZjYW1lcmEvMCIKKyAqIC9sb2NhbC9kb21haW4vMC9iYWNrZW5kL3ZjYW1lcmEvMS8wL3N0 YXRlID0gIjQiCisgKiAvbG9jYWwvZG9tYWluLzAvYmFja2VuZC92Y2FtZXJhLzEvMC92ZXJzaW9u cyA9ICIxLDIiCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnJvbnRl bmQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIC9sb2NhbC9kb21h aW4vMS9kZXZpY2UvdmNhbWVyYS8wL2JhY2tlbmQtaWQgPSAiMCIKKyAqIC9sb2NhbC9kb21haW4v MS9kZXZpY2UvdmNhbWVyYS8wL2JhY2tlbmQgPSAiL2xvY2FsL2RvbWFpbi8wL2JhY2tlbmQvdmNh bWVyYS8xIgorICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92Y2FtZXJhLzAvc3RhdGUgPSAiNCIK KyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmNhbWVyYS8wL3ZlcnNpb24gPSAiMSIKKyAqIC9s b2NhbC9kb21haW4vMS9kZXZpY2UvdmNhbWVyYS8wL2JlLWFsbG9jID0gIjEiCisgKgorICotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIERldmljZSAwIGNvbmZpZ3VyYXRpb24gLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmNhbWVyYS8w L21heC1idWZmZXJzID0gIjMiCisgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZjYW1lcmEvMC9j b250cm9scyA9ICJjb250cmFzdCxodWUiCisgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZjYW1l cmEvMC9mb3JtYXRzL1lVWVYvNjQweDQ4MC9mcmFtZS1yYXRlcyA9ICIzMC8xLDE1LzEiCisgKiAv bG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZjYW1lcmEvMC9mb3JtYXRzL1lVWVYvMTkyMHgxMDgwL2Zy YW1lLXJhdGVzID0gIjE1LzIiCisgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZjYW1lcmEvMC9m b3JtYXRzL0JHUkEvNjQweDQ4MC9mcmFtZS1yYXRlcyA9ICIxNS8xLDE1LzIiCisgKiAvbG9jYWwv ZG9tYWluLzEvZGV2aWNlL3ZjYW1lcmEvMC9mb3JtYXRzL0JHUkEvMTIwMHg3MjAvZnJhbWUtcmF0 ZXMgPSAiMTUvMiIKKyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmNhbWVyYS8wL3VuaXF1ZS1p ZCA9ICIwIgorICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92Y2FtZXJhLzAvcmVxLXJpbmctcmVm ID0gIjI4MzIiCisgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZjYW1lcmEvMC9yZXEtZXZlbnQt Y2hhbm5lbCA9ICIxNSIKKyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmNhbWVyYS8wL2V2dC1y aW5nLXJlZiA9ICIzODciCisgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZjYW1lcmEvMC9ldnQt ZXZlbnQtY2hhbm5lbCA9ICIxNiIKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g RGV2aWNlIDEgY29uZmlndXJhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICog L2xvY2FsL2RvbWFpbi8xL2RldmljZS92Y2FtZXJhLzEvbWF4LWJ1ZmZlcnMgPSAiOCIKKyAqIC9s b2NhbC9kb21haW4vMS9kZXZpY2UvdmNhbWVyYS8xL2NvbnRyb2xzID0gImJyaWdodG5lc3Msc2F0 dXJhdGlvbixodWUiCisgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZjYW1lcmEvMS9mb3JtYXRz L1lVWVYvNjQweDQ4MC9mcmFtZS1yYXRlcyA9ICIzMC8xLDE1LzIiCisgKiAvbG9jYWwvZG9tYWlu LzEvZGV2aWNlL3ZjYW1lcmEvMS9mb3JtYXRzL1lVWVYvMTkyMHgxMDgwL2ZyYW1lLXJhdGVzID0g IjE1LzIiCisgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZjYW1lcmEvMS91bmlxdWUtaWQgPSAi MSIKKyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmNhbWVyYS8xL3JlcS1yaW5nLXJlZiA9ICIy ODMzIgorICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92Y2FtZXJhLzEvcmVxLWV2ZW50LWNoYW5u ZWwgPSAiMTciCisgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZjYW1lcmEvMS9ldnQtcmluZy1y ZWYgPSAiMzg4IgorICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92Y2FtZXJhLzEvZXZ0LWV2ZW50 LWNoYW5uZWwgPSAiMTgiCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgICAgICAg ICAgICAgICAgICAgICAgICAgQmFja2VuZCBYZW5CdXMgTm9kZXMKKyAqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByb3RvY29sIHZlcnNp b24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogdmVyc2lvbnMKKyAqICAg ICAgVmFsdWVzOiAgICAgICAgIDxzdHJpbmc+CisgKgorICogICAgICBMaXN0IG9mIFhFTkNBTUVS QV9MSVNUX1NFUEFSQVRPUiBzZXBhcmF0ZWQgcHJvdG9jb2wgdmVyc2lvbnMgc3VwcG9ydGVkCisg KiAgICAgIGJ5IHRoZSBiYWNrZW5kLiBGb3IgZXhhbXBsZSAiMSwyLDMiLgorICoKKyAqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyb250ZW5kIFhl bkJ1cyBOb2RlcworICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0gQWRkcmVzc2luZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAqCisgKiBkb20taWQKKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDx1aW50MTZfdD4K KyAqCisgKiAgICAgIERvbWFpbiBpZGVudGlmaWVyLgorICoKKyAqIGRldi1pZAorICogICAgICBW YWx1ZXM6ICAgICAgICAgPHVpbnQxNl90PgorICoKKyAqICAgICAgRGV2aWNlIGlkZW50aWZpZXIu CisgKgorICogICAgICAvbG9jYWwvZG9tYWluLzxkb20taWQ+L2RldmljZS92Y2FtZXJhLzxkZXYt aWQ+Ly4uLgorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJvdG9jb2wgdmVy c2lvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiB2ZXJzaW9uCisgKiAg ICAgIFZhbHVlczogICAgICAgICA8c3RyaW5nPgorICoKKyAqICAgICAgUHJvdG9jb2wgdmVyc2lv biwgY2hvc2VuIGFtb25nIHRoZSBvbmVzIHN1cHBvcnRlZCBieSB0aGUgYmFja2VuZC4KKyAqCisg Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQmFja2VuZCBidWZmZXIgYWxsb2NhdGlvbiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogYmUtYWxsb2MKKyAqICAgICAgVmFsdWVzOiAg ICAgICAgICIwIiwgIjEiCisgKgorICogICAgICBJZiB2YWx1ZSBpcyBzZXQgdG8gIjEiLCB0aGVu IGJhY2tlbmQgd2lsbCBiZSB0aGUgYnVmZmVyCisgKiAgICAgIHByb3ZpZGVyL2FsbG9jYXRvciBm b3IgdGhpcyBkb21haW4gZHVyaW5nIFhFTkNBTUVSQV9PUF9CVUZfQ1JFQVRFCisgKiAgICAgIG9w ZXJhdGlvbi4KKyAqICAgICAgSWYgdmFsdWUgaXMgbm90ICIxIiBvciBvbWl0dGVkIGZyb250ZW5k IG11c3QgYWxsb2NhdGUgYnVmZmVycyBpdHNlbGYuCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tIENhbWVyYSBzZXR0aW5ncyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICoKKyAqIHVuaXF1ZS1pZAorICogICAgICBWYWx1ZXM6ICAgICAgICAgPHN0cmluZz4KKyAq CisgKiAgICAgIEFmdGVyIGRldmljZSBpbnN0YW5jZSBpbml0aWFsaXphdGlvbiBlYWNoIGNhbWVy YSBpcyBhc3NpZ25lZCBhCisgKiAgICAgIHVuaXF1ZSBJRCwgc28gaXQgY2FuIGJlIGlkZW50aWZp ZWQgYnkgdGhlIGJhY2tlbmQgYnkgdGhpcyBJRC4KKyAqICAgICAgVGhpcyBjYW4gYmUgVVVJRCBv ciBzdWNoLgorICoKKyAqIG1heC1idWZmZXJzCisgKiAgICAgIFZhbHVlczogICAgICAgICA8dWlu dDhfdD4KKyAqCisgKiAgICAgIE1heGltdW0gbnVtYmVyIG9mIGNhbWVyYSBidWZmZXJzIHRoaXMg ZnJvbnRlbmQgbWF5IHVzZS4KKyAqCisgKiBjb250cm9scworICogICAgICBWYWx1ZXM6ICAgICAg ICAgPGxpc3Qgb2Ygc3RyaW5nPgorICoKKyAqICAgICAgTGlzdCBvZiBzdXBwb3J0ZWQgY2FtZXJh IGNvbnRyb2xzIHNlcGFyYXRlZCBieSBYRU5DQU1FUkFfTElTVF9TRVBBUkFUT1IuCisgKiAgICAg IENhbWVyYSBjb250cm9scyBhcmUgZXhwcmVzc2VkIGFzIGEgbGlzdCBvZiBzdHJpbmcgdmFsdWVz IHcvbyBhbnkKKyAqICAgICAgb3JkZXJpbmcgcmVxdWlyZW1lbnQuCisgKgorICogZm9ybWF0cwor ICogICAgICBWYWx1ZXM6ICAgICAgICAgPGZvcm1hdCwgY2hhcls3XT4KKyAqCisgKiAgICAgIEZv cm1hdHMgYXJlIG9yZ2FuaXplZCBhcyBhIHNldCBvZiBkaXJlY3RvcmllcyBvbmUgcGVyIGVhY2gK KyAqICAgICAgc3VwcG9ydGVkIHBpeGVsIGZvcm1hdC4gVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9y eSBpcyB0aGUKKyAqICAgICAgY29ycmVzcG9uZGluZyBGT1VSQ0Mgc3RyaW5nIGxhYmVsLiBUaGUg bmV4dCBsZXZlbCBvZgorICogICAgICB0aGUgZGlyZWN0b3J5IHVuZGVyIDxmb3JtYXRzPiByZXBy ZXNlbnRzIHN1cHBvcnRlZCByZXNvbHV0aW9ucy4KKyAqICAgICAgSWYgdGhlIGZvcm1hdCByZXBy ZXNlbnRzIGEgYmlnLWVuZGlhbiB2YXJpYW50IG9mIGEgbGl0dGxlCisgKiAgICAgIGVuZGlhbiBm b3JtYXQsIHRoZW4gdGhlICItQkUiIHN1ZmZpeCBtdXN0IGJlIGFkZGVkLiBFLmcuICdBUjE1JyB2 cworICogICAgICAnQVIxNS1CRScuCisgKiAgICAgIElmIEZPVVJDQyBzdHJpbmcgbGFiZWwgaGFz IHNwYWNlcyB0aGVuIHRob3NlIGFyZSBvbmx5IGFsbG93ZWQgdG8KKyAqICAgICAgYmUgYXQgdGhl IGVuZCBvZiB0aGUgbGFiZWwgYW5kIG11c3QgYmUgdHJpbW1lZCwgZm9yIGV4YW1wbGUKKyAqICAg ICAgJ1kxNicgYW5kICdZMTYtQkUnIHdpbGwgYmUgdHJpbW1lZC4KKyAqCisgKiByZXNvbHV0aW9u CisgKiAgICAgIFZhbHVlczogICAgICAgICA8d2lkdGgsIHVpbnQzMl90Png8aGVpZ2h0LCB1aW50 MzJfdD4KKyAqCisgKiAgICAgIFJlc29sdXRpb25zIGFyZSBvcmdhbml6ZWQgYXMgYSBzZXQgb2Yg ZGlyZWN0b3JpZXMgb25lIHBlciBlYWNoCisgKiAgICAgIHN1cHBvcnRlZCByZXNvbHV0aW9uIHVu ZGVyIGNvcnJlc3BvbmRpbmcgPGZvcm1hdHM+IGRpcmVjdG9yeS4KKyAqICAgICAgVGhlIG5hbWUg b2YgdGhlIGRpcmVjdG9yeSBpcyB0aGUgc3VwcG9ydGVkIHdpZHRoIGFuZCBoZWlnaHQKKyAqICAg ICAgb2YgdGhlIGNhbWVyYSByZXNvbHV0aW9uIGluIHBpeGVscy4KKyAqCisgKiBmcmFtZS1yYXRl cworICogICAgICBWYWx1ZXM6ICAgICAgICAgPG51bWVyYXRvciwgdWludDMyX3Q+LzxkZW5vbWlu YXRvciwgdWludDMyX3Q+CisgKgorICogICAgICBMaXN0IG9mIFhFTkNBTUVSQV9GUkFNRV9SQVRF X1NFUEFSQVRPUiBzZXBhcmF0ZWQgc3VwcG9ydGVkIGZyYW1lIHJhdGVzCisgKiAgICAgIG9mIHRo ZSBjYW1lcmEgZXhwcmVzc2VkIGFzIG51bWVyYXRvciBhbmQgZGVub21pbmF0b3Igb2YgdGhlCisg KiAgICAgIGNvcnJlc3BvbmRpbmcgZnJhbWUgcmF0ZS4KKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0t LS0gQ2FtZXJhIFJlcXVlc3QgVHJhbnNwb3J0IFBhcmFtZXRlcnMgLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgKgorICogVGhpcyBjb21tdW5pY2F0aW9uIHBhdGggaXMgdXNlZCB0byBkZWxpdmVyIHJl cXVlc3RzIGZyb20gZnJvbnRlbmQgdG8gYmFja2VuZAorICogYW5kIGdldCB0aGUgY29ycmVzcG9u ZGluZyByZXNwb25zZXMgZnJvbSBiYWNrZW5kIHRvIGZyb250ZW5kLAorICogc2V0IHVwIHBlciB2 aXJ0dWFsIGNhbWVyYSBkZXZpY2UuCisgKgorICogcmVxLWV2ZW50LWNoYW5uZWwKKyAqICAgICAg VmFsdWVzOiAgICAgICAgIDx1aW50MzJfdD4KKyAqCisgKiAgICAgIFRoZSBpZGVudGlmaWVyIG9m IHRoZSBYZW4gY2FtZXJhJ3MgY29udHJvbCBldmVudCBjaGFubmVsCisgKiAgICAgIHVzZWQgdG8g c2lnbmFsIGFjdGl2aXR5IGluIHRoZSByaW5nIGJ1ZmZlci4KKyAqCisgKiByZXEtcmluZy1yZWYK KyAqICAgICAgVmFsdWVzOiAgICAgICAgIDx1aW50MzJfdD4KKyAqCisgKiAgICAgIFRoZSBYZW4g Z3JhbnQgcmVmZXJlbmNlIGdyYW50aW5nIHBlcm1pc3Npb24gZm9yIHRoZSBiYWNrZW5kIHRvIG1h cAorICogICAgICBhIHNvbGUgcGFnZSBvZiBjYW1lcmEncyBjb250cm9sIHJpbmcgYnVmZmVyLgor ICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ2FtZXJhIEV2ZW50IFRyYW5zcG9ydCBQYXJhbWV0 ZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBUaGlzIGNvbW11bmljYXRpb24gcGF0 aCBpcyB1c2VkIHRvIGRlbGl2ZXIgYXN5bmNocm9ub3VzIGV2ZW50cyBmcm9tIGJhY2tlbmQKKyAq IHRvIGZyb250ZW5kLCBzZXQgdXAgcGVyIHZpcnR1YWwgY2FtZXJhIGRldmljZS4KKyAqCisgKiBl dnQtZXZlbnQtY2hhbm5lbAorICogICAgICBWYWx1ZXM6ICAgICAgICAgPHVpbnQzMl90PgorICoK KyAqICAgICAgVGhlIGlkZW50aWZpZXIgb2YgdGhlIFhlbiBjYW1lcmEncyBldmVudCBjaGFubmVs CisgKiAgICAgIHVzZWQgdG8gc2lnbmFsIGFjdGl2aXR5IGluIHRoZSByaW5nIGJ1ZmZlci4KKyAq CisgKiBldnQtcmluZy1yZWYKKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDx1aW50MzJfdD4KKyAq CisgKiAgICAgIFRoZSBYZW4gZ3JhbnQgcmVmZXJlbmNlIGdyYW50aW5nIHBlcm1pc3Npb24gZm9y IHRoZSBiYWNrZW5kIHRvIG1hcAorICogICAgICBhIHNvbGUgcGFnZSBvZiBjYW1lcmEncyBldmVu dCByaW5nIGJ1ZmZlci4KKyAqLworCisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgU1RBVEUgRElBR1JBTVMKKyAqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKKyAqCisgKiBUb29sIHN0YWNrIGNyZWF0ZXMgZnJvbnQgYW5kIGJhY2sgc3RhdGUg bm9kZXMgd2l0aCBpbml0aWFsIHN0YXRlCisgKiBYZW5idXNTdGF0ZUluaXRpYWxpc2luZy4KKyAq IFRvb2wgc3RhY2sgY3JlYXRlcyBhbmQgc2V0cyB1cCBmcm9udGVuZCBjYW1lcmEgY29uZmlndXJh dGlvbgorICogbm9kZXMgcGVyIGRvbWFpbi4KKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tIE5vcm1hbCBmbG93IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg KgorICogRnJvbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhY2sKKyAqID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgICA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CisgKiBYZW5idXNTdGF0ZUluaXRpYWxpc2luZyAgICAgICAgICAgICAgWGVu YnVzU3RhdGVJbml0aWFsaXNpbmcKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbyBRdWVyeSBiYWNrZW5kIGRldmljZSBpZGVudGlmaWNhdGlvbgorICogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuCisgKiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG8gT3BlbiBhbmQgdmFsaWRhdGUgYmFja2VuZCBkZXZpY2Uu CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAq ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWCisgKiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWGVuYnVzU3RhdGVJbml0V2FpdAorICoKKyAq IG8gUXVlcnkgZnJvbnRlbmQgY29uZmlndXJhdGlvbgorICogbyBBbGxvY2F0ZSBhbmQgaW5pdGlh bGl6ZQorICogICBldmVudCBjaGFubmVscyBwZXIgY29uZmlndXJlZAorICogICBjYW1lcmEuCisg KiBvIFB1Ymxpc2ggdHJhbnNwb3J0IHBhcmFtZXRlcnMKKyAqICAgdGhhdCB3aWxsIGJlIGluIGVm ZmVjdCBkdXJpbmcKKyAqICAgdGhpcyBjb25uZWN0aW9uLgorICogICAgICAgICAgICAgIHwKKyAq ICAgICAgICAgICAgICB8CisgKiAgICAgICAgICAgICAgVgorICogWGVuYnVzU3RhdGVJbml0aWFs aXNlZAorICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyBRdWVy eSBmcm9udGVuZCB0cmFuc3BvcnQgcGFyYW1ldGVycy4KKyAqICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbyBDb25uZWN0IHRvIHRoZSBldmVudCBjaGFubmVscy4KKyAqICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgKiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFYKKyAqICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBYZW5idXNTdGF0ZUNvbm5lY3RlZAorICoKKyAqICBvIENy ZWF0ZSBhbmQgaW5pdGlhbGl6ZSBPUworICogICAgdmlydHVhbCBjYW1lcmEgYXMgcGVyCisgKiAg ICBjb25maWd1cmF0aW9uLgorICogICAgICAgICAgICAgIHwKKyAqICAgICAgICAgICAgICB8Cisg KiAgICAgICAgICAgICAgVgorICogWGVuYnVzU3RhdGVDb25uZWN0ZWQKKyAqCisgKiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWGVuYnVzU3RhdGVVbmtub3duCisgKiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWGVuYnVzU3RhdGVDbG9zZWQKKyAqICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYZW5idXNTdGF0ZUNsb3NpbmcKKyAq IG8gUmVtb3ZlIHZpcnR1YWwgY2FtZXJhIGRldmljZQorICogbyBSZW1vdmUgZXZlbnQgY2hhbm5l bHMKKyAqICAgICAgICAgICAgICB8CisgKiAgICAgICAgICAgICAgfAorICogICAgICAgICAgICAg IFYKKyAqIFhlbmJ1c1N0YXRlQ2xvc2VkCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tIFJlY292ZXJ5IGZsb3cgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoK KyAqIEluIGNhc2Ugb2YgZnJvbnRlbmQgdW5yZWNvdmVyYWJsZSBlcnJvcnMgYmFja2VuZCBoYW5k bGVzIHRoYXQgYXMKKyAqIGlmIGZyb250ZW5kIGdvZXMgaW50byB0aGUgWGVuYnVzU3RhdGVDbG9z ZWQgc3RhdGUuCisgKgorICogSW4gY2FzZSBvZiBiYWNrZW5kIHVucmVjb3ZlcmFibGUgZXJyb3Jz IGZyb250ZW5kIHRyaWVzIHJlbW92aW5nCisgKiB0aGUgdmlydHVhbGl6ZWQgZGV2aWNlLiBJZiB0 aGlzIGlzIHBvc3NpYmxlIGF0IHRoZSBtb21lbnQgb2YgZXJyb3IsCisgKiB0aGVuIGZyb250ZW5k IGdvZXMgaW50byB0aGUgWGVuYnVzU3RhdGVJbml0aWFsaXNpbmcgc3RhdGUgYW5kIGlzIHJlYWR5 IGZvcgorICogbmV3IGNvbm5lY3Rpb24gd2l0aCBiYWNrZW5kLiBJZiB0aGUgdmlydHVhbGl6ZWQg ZGV2aWNlIGlzIHN0aWxsIGluIHVzZSBhbmQKKyAqIGNhbm5vdCBiZSByZW1vdmVkLCB0aGVuIGZy b250ZW5kIGdvZXMgaW50byB0aGUgWGVuYnVzU3RhdGVSZWNvbmZpZ3VyaW5nIHN0YXRlCisgKiB1 bnRpbCBlaXRoZXIgdGhlIHZpcnR1YWxpemVkIGRldmljZSBpcyByZW1vdmVkIG9yIGJhY2tlbmQg aW5pdGlhdGVzIGEgbmV3CisgKiBjb25uZWN0aW9uLiBPbiB0aGUgdmlydHVhbGl6ZWQgZGV2aWNl IHJlbW92YWwgZnJvbnRlbmQgZ29lcyBpbnRvIHRoZQorICogWGVuYnVzU3RhdGVJbml0aWFsaXNp bmcgc3RhdGUuCisgKgorICogTm90ZSBvbiBYZW5idXNTdGF0ZVJlY29uZmlndXJpbmcgc3RhdGUg b2YgdGhlIGZyb250ZW5kOiBpZiBiYWNrZW5kIGhhcworICogdW5yZWNvdmVyYWJsZSBlcnJvcnMg dGhlbiBmcm9udGVuZCBjYW5ub3Qgc2VuZCByZXF1ZXN0cyB0byB0aGUgYmFja2VuZAorICogYW5k IHRodXMgY2Fubm90IHByb3ZpZGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgdmlydHVhbGl6ZWQgZGV2 aWNlIGFueW1vcmUuCisgKiBBZnRlciBiYWNrZW5kIGlzIGJhY2sgdG8gbm9ybWFsIHRoZSB2aXJ0 dWFsaXplZCBkZXZpY2UgbWF5IHN0aWxsIGhvbGQgc29tZQorICogc3RhdGU6IGNvbmZpZ3VyYXRp b24gaW4gdXNlLCBhbGxvY2F0ZWQgYnVmZmVycywgY2xpZW50IGFwcGxpY2F0aW9uIHN0YXRlIGV0 Yy4KKyAqIEluIG1vc3QgY2FzZXMsIHRoaXMgd2lsbCByZXF1aXJlIGZyb250ZW5kIHRvIGltcGxl bWVudCBjb21wbGV4IHJlY292ZXJ5CisgKiByZWNvbm5lY3QgbG9naWMuIEluc3RlYWQsIGJ5IGdv aW5nIGludG8gWGVuYnVzU3RhdGVSZWNvbmZpZ3VyaW5nIHN0YXRlLAorICogZnJvbnRlbmQgd2ls bCBtYWtlIHN1cmUgbm8gbmV3IGNsaWVudHMgb2YgdGhlIHZpcnR1YWxpemVkIGRldmljZSBhcmUK KyAqIGFjY2VwdGVkLCBhbGxvdyBleGlzdGluZyBjbGllbnQocykgdG8gZXhpdCBncmFjZWZ1bGx5 IGJ5IHNpZ25hbGluZyBlcnJvcgorICogc3RhdGUgZXRjLgorICogT25jZSBhbGwgdGhlIGNsaWVu dHMgYXJlIGdvbmUgZnJvbnRlbmQgY2FuIHJlaW5pdGlhbGl6ZSB0aGUgdmlydHVhbGl6ZWQKKyAq IGRldmljZSBhbmQgZ2V0IGludG8gWGVuYnVzU3RhdGVJbml0aWFsaXNpbmcgc3RhdGUgYWdhaW4g c2lnbmFsaW5nIHRoZQorICogYmFja2VuZCB0aGF0IGEgbmV3IGNvbm5lY3Rpb24gY2FuIGJlIG1h ZGUuCisgKgorICogVGhlcmUgYXJlIG11bHRpcGxlIGNvbmRpdGlvbnMgcG9zc2libGUgdW5kZXIg d2hpY2ggZnJvbnRlbmQgd2lsbCBnbyBmcm9tCisgKiBYZW5idXNTdGF0ZVJlY29uZmlndXJpbmcg aW50byBYZW5idXNTdGF0ZUluaXRpYWxpc2luZywgc29tZSBvZiB0aGVtIGFyZSBPUworICogc3Bl Y2lmaWMuIEZvciBleGFtcGxlOgorICogMS4gVGhlIHVuZGVybHlpbmcgT1MgZnJhbWV3b3JrIG1h eSBwcm92aWRlIGNhbGxiYWNrcyB0byBzaWduYWwgdGhhdCB0aGUgbGFzdAorICogICAgY2xpZW50 IG9mIHRoZSB2aXJ0dWFsaXplZCBkZXZpY2UgaGFzIGdvbmUgYW5kIHRoZSBkZXZpY2UgY2FuIGJl IHJlbW92ZWQKKyAqIDIuIEZyb250ZW5kIGNhbiBzY2hlZHVsZSBhIGRlZmVycmVkIHdvcmsgKHRp bWVyL3Rhc2tsZXQvd29ya3F1ZXVlKQorICogICAgdG8gcGVyaW9kaWNhbGx5IGNoZWNrIGlmIHRo aXMgaXMgdGhlIHJpZ2h0IHRpbWUgdG8gcmUtdHJ5IHJlbW92YWwgb2YKKyAqICAgIHRoZSB2aXJ0 dWFsaXplZCBkZXZpY2UuCisgKiAzLiBCeSBhbnkgb3RoZXIgbWVhbnMuCisgKgorICoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJFUVVFU1QgQ09E RVMKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworI2RlZmluZSBYRU5DQU1FUkFfT1BfQ09O RklHX1NFVCAgICAgICAgMHgwMAorI2RlZmluZSBYRU5DQU1FUkFfT1BfQ09ORklHX0dFVCAgICAg ICAgMHgwMQorI2RlZmluZSBYRU5DQU1FUkFfT1BfQ09ORklHX1ZBTElEQVRFICAgMHgwMgorI2Rl ZmluZSBYRU5DQU1FUkFfT1BfRlJBTUVfUkFURV9TRVQgICAgMHgwMworI2RlZmluZSBYRU5DQU1F UkFfT1BfQlVGX0dFVF9MQVlPVVQgICAgMHgwNAorI2RlZmluZSBYRU5DQU1FUkFfT1BfQlVGX1JF UVVFU1QgICAgICAgMHgwNQorI2RlZmluZSBYRU5DQU1FUkFfT1BfQlVGX0NSRUFURSAgICAgICAg MHgwNgorI2RlZmluZSBYRU5DQU1FUkFfT1BfQlVGX0RFU1RST1kgICAgICAgMHgwNworI2RlZmlu ZSBYRU5DQU1FUkFfT1BfQlVGX1FVRVVFICAgICAgICAgMHgwOAorI2RlZmluZSBYRU5DQU1FUkFf T1BfQlVGX0RFUVVFVUUgICAgICAgMHgwOQorI2RlZmluZSBYRU5DQU1FUkFfT1BfQ1RSTF9FTlVN ICAgICAgICAgMHgwYQorI2RlZmluZSBYRU5DQU1FUkFfT1BfQ1RSTF9TRVQgICAgICAgICAgMHgw YgorI2RlZmluZSBYRU5DQU1FUkFfT1BfQ1RSTF9HRVQgICAgICAgICAgMHgwYworI2RlZmluZSBY RU5DQU1FUkFfT1BfU1RSRUFNX1NUQVJUICAgICAgMHgwZAorI2RlZmluZSBYRU5DQU1FUkFfT1Bf U1RSRUFNX1NUT1AgICAgICAgMHgwZQorCisjZGVmaW5lIFhFTkNBTUVSQV9DVFJMX0JSSUdIVE5F U1MgICAgICAwCisjZGVmaW5lIFhFTkNBTUVSQV9DVFJMX0NPTlRSQVNUICAgICAgICAxCisjZGVm aW5lIFhFTkNBTUVSQV9DVFJMX1NBVFVSQVRJT04gICAgICAyCisjZGVmaW5lIFhFTkNBTUVSQV9D VFJMX0hVRSAgICAgICAgICAgICAzCisKKy8qIE51bWJlciBvZiBzdXBwb3J0ZWQgY29udHJvbHMu ICovCisjZGVmaW5lIFhFTkNBTUVSQV9NQVhfQ1RSTCAgICAgICAgICAgICA0CisKKy8qIENvbnRy b2wgaXMgcmVhZC1vbmx5LiAqLworI2RlZmluZSBYRU5DQU1FUkFfQ1RSTF9GTEdfUk8gICAgICAg ICAgKDEgPDwgMCkKKy8qIENvbnRyb2wgaXMgd3JpdGUtb25seS4gKi8KKyNkZWZpbmUgWEVOQ0FN RVJBX0NUUkxfRkxHX1dPICAgICAgICAgICgxIDw8IDEpCisvKiBDb250cm9sJ3MgdmFsdWUgaXMg dm9sYXRpbGUuICovCisjZGVmaW5lIFhFTkNBTUVSQV9DVFJMX0ZMR19WT0xBVElMRSAgICAoMSA8 PCAyKQorCisvKiBTdXBwb3J0ZWQgY29sb3Igc3BhY2VzLiAqLworI2RlZmluZSBYRU5DQU1FUkFf Q09MT1JTUEFDRV9ERUZBVUxUICAgMAorI2RlZmluZSBYRU5DQU1FUkFfQ09MT1JTUEFDRV9TTVBU RTE3ME0gMQorI2RlZmluZSBYRU5DQU1FUkFfQ09MT1JTUEFDRV9SRUM3MDkgICAgMgorI2RlZmlu ZSBYRU5DQU1FUkFfQ09MT1JTUEFDRV9TUkdCICAgICAgMworI2RlZmluZSBYRU5DQU1FUkFfQ09M T1JTUEFDRV9PUFJHQiAgICAgNAorI2RlZmluZSBYRU5DQU1FUkFfQ09MT1JTUEFDRV9CVDIwMjAg ICAgNQorI2RlZmluZSBYRU5DQU1FUkFfQ09MT1JTUEFDRV9EQ0lfUDMgICAgNgorCisvKiBDb2xv ciBzcGFjZSB0cmFuc2ZlciBmdW5jdGlvbi4gKi8KKyNkZWZpbmUgWEVOQ0FNRVJBX1hGRVJfRlVO Q19ERUZBVUxUICAgIDAKKyNkZWZpbmUgWEVOQ0FNRVJBX1hGRVJfRlVOQ183MDkgICAgICAgIDEK KyNkZWZpbmUgWEVOQ0FNRVJBX1hGRVJfRlVOQ19TUkdCICAgICAgIDIKKyNkZWZpbmUgWEVOQ0FN RVJBX1hGRVJfRlVOQ19PUFJHQiAgICAgIDMKKyNkZWZpbmUgWEVOQ0FNRVJBX1hGRVJfRlVOQ19O T05FICAgICAgIDQKKyNkZWZpbmUgWEVOQ0FNRVJBX1hGRVJfRlVOQ19EQ0lfUDMgICAgIDUKKyNk ZWZpbmUgWEVOQ0FNRVJBX1hGRVJfRlVOQ19TTVBURTIwODQgIDYKKworLyogQ29sb3Igc3BhY2Ug WeKAmUNiQ3IgZW5jb2RpbmcuICovCisjZGVmaW5lIFhFTkNBTUVSQV9ZQ0JDUl9FTkNfSUdOT1JF ICAgICAgICAgICAwCisjZGVmaW5lIFhFTkNBTUVSQV9ZQ0JDUl9FTkNfNjAxICAgICAgICAgICAg ICAxCisjZGVmaW5lIFhFTkNBTUVSQV9ZQ0JDUl9FTkNfNzA5ICAgICAgICAgICAgICAyCisjZGVm aW5lIFhFTkNBTUVSQV9ZQ0JDUl9FTkNfWFY2MDEgICAgICAgICAgICAzCisjZGVmaW5lIFhFTkNB TUVSQV9ZQ0JDUl9FTkNfWFY3MDkgICAgICAgICAgICA0CisjZGVmaW5lIFhFTkNBTUVSQV9ZQ0JD Ul9FTkNfQlQyMDIwICAgICAgICAgICA1CisjZGVmaW5lIFhFTkNBTUVSQV9ZQ0JDUl9FTkNfQlQy MDIwX0NPTlNUX0xVTSA2CisKKy8qIFF1YW50aXphdGlvbiByYW5nZS4gKi8KKyNkZWZpbmUgWEVO Q0FNRVJBX1FVQU5USVpBVElPTl9ERUZBVUxUICAgICAgIDAKKyNkZWZpbmUgWEVOQ0FNRVJBX1FV QU5USVpBVElPTl9GVUxMX1JBTkdFICAgIDEKKyNkZWZpbmUgWEVOQ0FNRVJBX1FVQU5USVpBVElP Tl9MSU1fUkFOR0UgICAgIDIKKworLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgRVZFTlQgQ09ERVMKKyAqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioKKyAqLworI2RlZmluZSBYRU5DQU1FUkFfRVZUX0ZSQU1FX0FWQUlMICAgICAgMHgwMAor I2RlZmluZSBYRU5DQU1FUkFfRVZUX0NUUkxfQ0hBTkdFICAgICAgMHgwMQorCisvKgorICoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKgorICogICAgICAgICAgICAgICBYRU5TVE9SRSBGSUVMRCBBTkQgUEFU SCBOQU1FIFNUUklOR1MsIEhFTFBFUlMKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworI2Rl ZmluZSBYRU5DQU1FUkFfRFJJVkVSX05BTUUgICAgICAgICAgInZjYW1lcmEiCisKKyNkZWZpbmUg WEVOQ0FNRVJBX0xJU1RfU0VQQVJBVE9SICAgICAgICIsIgorI2RlZmluZSBYRU5DQU1FUkFfUkVT T0xVVElPTl9TRVBBUkFUT1IgIngiCisjZGVmaW5lIFhFTkNBTUVSQV9GUkFDVElPTl9TRVBBUkFU T1IgICAiLyIKKworI2RlZmluZSBYRU5DQU1FUkFfRklFTERfQkVfVkVSU0lPTlMgICAgInZlcnNp b25zIgorI2RlZmluZSBYRU5DQU1FUkFfRklFTERfRkVfVkVSU0lPTiAgICAgInZlcnNpb24iCisj ZGVmaW5lIFhFTkNBTUVSQV9GSUVMRF9SRVFfUklOR19SRUYgICAicmVxLXJpbmctcmVmIgorI2Rl ZmluZSBYRU5DQU1FUkFfRklFTERfUkVRX0NIQU5ORUwgICAgInJlcS1ldmVudC1jaGFubmVsIgor I2RlZmluZSBYRU5DQU1FUkFfRklFTERfRVZUX1JJTkdfUkVGICAgImV2dC1yaW5nLXJlZiIKKyNk ZWZpbmUgWEVOQ0FNRVJBX0ZJRUxEX0VWVF9DSEFOTkVMICAgICJldnQtZXZlbnQtY2hhbm5lbCIK KyNkZWZpbmUgWEVOQ0FNRVJBX0ZJRUxEX01BWF9CVUZGRVJTICAgICJtYXgtYnVmZmVycyIKKyNk ZWZpbmUgWEVOQ0FNRVJBX0ZJRUxEX0NPTlRST0xTICAgICAgICJjb250cm9scyIKKyNkZWZpbmUg WEVOQ0FNRVJBX0ZJRUxEX0ZPUk1BVFMgICAgICAgICJmb3JtYXRzIgorI2RlZmluZSBYRU5DQU1F UkFfRklFTERfRlJBTUVfUkFURVMgICAgImZyYW1lLXJhdGVzIgorI2RlZmluZSBYRU5DQU1FUkFf RklFTERfQkVfQUxMT0MgICAgICAgImJlLWFsbG9jIgorI2RlZmluZSBYRU5DQU1FUkFfRklFTERf VU5JUVVFX0lEICAgICAgInVuaXF1ZS1pZCIKKworI2RlZmluZSBYRU5DQU1FUkFfQ1RSTF9CUklH SFRORVNTX1NUUiAgImJyaWdodG5lc3MiCisjZGVmaW5lIFhFTkNBTUVSQV9DVFJMX0NPTlRSQVNU X1NUUiAgICAiY29udHJhc3QiCisjZGVmaW5lIFhFTkNBTUVSQV9DVFJMX1NBVFVSQVRJT05fU1RS ICAic2F0dXJhdGlvbiIKKyNkZWZpbmUgWEVOQ0FNRVJBX0NUUkxfSFVFX1NUUiAgICAgICAgICJo dWUiCisKKyNkZWZpbmUgWEVOQ0FNRVJBX0ZPVVJDQ19CSUdFTkRJQU5fU1RSICItQkUiCisKKy8q IE1heGltdW0gbnVtYmVyIG9mIGJ1ZmZlciBwbGFuZXMgc3VwcG9ydGVkLiAqLworI2RlZmluZSBY RU5DQU1FUkFfTUFYX1BMQU5FICAgICAgICAgICAgNAorCisvKgorICoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKgorICogICAgICAgICAgICAgICAgICAgICAgICAgIFNUQVRVUyBSRVRVUk4gQ09ERVMKKyAq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBTdGF0dXMgcmV0dXJuIGNvZGUgaXMgemVybyBv biBzdWNjZXNzIGFuZCAtWEVOX0VYWCBvbiBmYWlsdXJlLgorICoKKyAqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXNzdW1wdGlvbnMKKyAqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioKKyAqCisgKiAtIHVzYWdlIG9mIGdyYW50IHJlZmVyZW5jZSAwIGFz IGludmFsaWQgZ3JhbnQgcmVmZXJlbmNlOgorICogICBncmFudCByZWZlcmVuY2UgMCBpcyB2YWxp ZCwgYnV0IG5ldmVyIGV4cG9zZWQgdG8gYSBQViBkcml2ZXIsCisgKiAgIGJlY2F1c2Ugb2YgdGhl IGZhY3QgaXQgaXMgYWxyZWFkeSBpbiB1c2UvcmVzZXJ2ZWQgYnkgdGhlIFBWIGNvbnNvbGUuCisg KiAtIGFsbCByZWZlcmVuY2VzIGluIHRoaXMgZG9jdW1lbnQgdG8gcGFnZSBzaXplcyBtdXN0IGJl IHRyZWF0ZWQKKyAqICAgYXMgcGFnZXMgb2Ygc2l6ZSBYRU5fUEFHRV9TSVpFIHVubGVzcyBvdGhl cndpc2Ugbm90ZWQuCisgKiAtIGFsbCBGT1VSQ0MgbWFwcGluZ3MgdXNlZCBmb3IgY29uZmlndXJh dGlvbiBhbmQgbWVzc2FnaW5nIGFyZQorICogICBMaW51eCBWNEwyIG9uZXM6IGh0dHBzOi8vZ2l0 Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L3RvcnZhbGRzL2xpbnV4LmdpdC90 cmVlL2luY2x1ZGUvdWFwaS9saW51eC92aWRlb2RldjIuaAorICogICB3aXRoIHRoZSBmb2xsb3dp bmcgZXhjZXB0aW9uczoKKyAqICAgICAtIGNoYXJhY3RlcnMgYXJlIGFsbG93ZWQgaW4gWzB4MjA7 IDB4N2ZdIHJhbmdlCisgKiAgICAgLSB3aGVuIHVzZWQgZm9yIFhlblN0b3JlIGNvbmZpZ3VyYXRp b24gZW50cmllcyB0aGUgZm9sbG93aW5nCisgKiAgICAgICBhcmUgbm90IGFsbG93ZWQ6CisgKiAg ICAgICAtICcvJywgJ1wnLCAnICcgKHNwYWNlKSwgJzwnLCAnPicsICc6JywgJyInLCAnfCcsICc/ JywgJyonCisgKiAgICAgICAtIGlmIHRyYWlsaW5nIHNwYWNlcyBhcmUgcGFydCBvZiB0aGUgRk9V UkNDIGNvZGUgdGhlbiB0aG9zZSBtdXN0IGJlCisgKiAgICAgICAgIHRyaW1tZWQKKyAqCisgKgor ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKgorICogICAgICAgRGVzY3JpcHRpb24gb2YgdGhlIHByb3Rv Y29sIGJldHdlZW4gZnJvbnRlbmQgYW5kIGJhY2tlbmQgZHJpdmVyCisgKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqCisgKgorICogVGhlIHR3byBoYWx2ZXMgb2YgYSBQYXJhLXZpcnR1YWwgY2FtZXJhIGRy aXZlciBjb21tdW5pY2F0ZSB3aXRoCisgKiBlYWNoIG90aGVyIHVzaW5nIHNoYXJlZCBwYWdlcyBh bmQgZXZlbnQgY2hhbm5lbHMuCisgKiBTaGFyZWQgcGFnZSBjb250YWlucyBhIHJpbmcgd2l0aCBy ZXF1ZXN0L3Jlc3BvbnNlIHBhY2tldHMuCisgKgorICogQWxsIHJlc2VydmVkIGZpZWxkcyBpbiB0 aGUgc3RydWN0dXJlcyBiZWxvdyBtdXN0IGJlIDAuCisgKgorICogRm9yIGFsbCByZXF1ZXN0L3Jl c3BvbnNlL2V2ZW50IHBhY2tldHM6CisgKiAgIC0gZnJhbWUgcmF0ZSBwYXJhbWV0ZXIgaXMgcmVw cmVzZW50ZWQgYXMgYSBwYWlyIG9mIDQgb2N0ZXQgbG9uZworICogICAgIG51bWVyYXRvciBhbmQg ZGVub21pbmF0b3I6CisgKiAgICAgICAtIGZyYW1lX3JhdGVfbnVtZXIgLSB1aW50MzJfdCwgbnVt ZXJhdG9yIG9mIHRoZSBmcmFtZSByYXRlCisgKiAgICAgICAtIGZyYW1lX3JhdGVfZGVub20gLSB1 aW50MzJfdCwgZGVub21pbmF0b3Igb2YgdGhlIGZyYW1lIHJhdGUKKyAqICAgICBUaGUgY29ycmVz cG9uZGluZyBmcmFtZSByYXRlIChIeikgaXMgY2FsY3VsYXRlZCBhczoKKyAqICAgICAgIGZyYW1l X3JhdGUgPSBmcmFtZV9yYXRlX251bWVyIC8gZnJhbWVfcmF0ZV9kZW5vbQorICogICAtIGJ1ZmZl ciBpbmRleCBpcyBhIHplcm8gYmFzZWQgaW5kZXggb2YgdGhlIGJ1ZmZlci4gTXVzdCBiZSBsZXNz IHRoYW4KKyAqICAgICB0aGUgdmFsdWUgb2YgWEVOQ0FNRVJBX09QX0NPTkZJR19TRVQubnVtX2J1 ZnMgcmVzcG9uc2U6CisgKiAgICAgICAtIGluZGV4IC0gdWludDhfdCwgaW5kZXggb2YgdGhlIGJ1 ZmZlci4KKyAqCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFJlcXVl c3RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIEFsbCByZXF1ZXN0 IHBhY2tldHMgaGF2ZSB0aGUgc2FtZSBsZW5ndGggKDY0IG9jdGV0cykuCisgKiBBbGwgcmVxdWVz dCBwYWNrZXRzIGhhdmUgY29tbW9uIGhlYWRlcjoKKyAqICAgICAgICAgMCAgICAgICAgICAgICAg ICAxICAgICAgICAgICAgICAgICAyICAgICAgICAgICAgICAgMyAgICAgICAgb2N0ZXQKKyAqICst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgIGlkICAgICAgICAgICAgICAgIHwgICAgb3Bl cmF0aW9uICAgfCAgIHJlc2VydmVkICAgICB8IDQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8IDgKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogICBpZCAtIHVpbnQxNl90LCBwcml2YXRlIGd1 ZXN0IHZhbHVlLCBlY2hvZWQgaW4gcmVzcG9uc2UuCisgKiAgIG9wZXJhdGlvbiAtIHVpbnQ4X3Qs IG9wZXJhdGlvbiBjb2RlLCBYRU5DQU1FUkFfT1BfWFhYLgorICoKKyAqCisgKiBSZXF1ZXN0IHRv IHNldC92YWxpZGF0ZSB0aGUgY29uZmlndXJhdGlvbiAtIHJlcXVlc3QgdG8gc2V0IHRoZQorICog Y29uZmlndXJhdGlvbi9tb2RlIG9mIHRoZSBjYW1lcmEgKFhFTkNBTUVSQV9PUF9DT05GSUdfU0VU KSBvciB0bworICogY2hlY2sgaWYgdGhlIGNvbmZpZ3VyYXRpb24gaXMgdmFsaWQgYW5kIGNhbiBi ZSB1c2VkCisgKiAoWEVOQ0FNRVJBX09QX0NPTkZJR19WQUxJREFURSk6CisgKiAgICAgICAgIDAg ICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAgMiAgICAgICAgICAgICAgIDMgICAgICAg IG9jdGV0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICBpZCAgICAgICAgICAg ICAgICB8IF9PUF9DT05GSUdfWFhYIHwgICByZXNlcnZlZCAgICAgfCA0CisgKiArLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCA4CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcGl4ZWwgZm9ybWF0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAx MgorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdp ZHRoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTYKKyAqICstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwor ICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IDIwCisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyNAor ICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rCisgKiB8L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL3wKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8IDY0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqCisgKiBwaXhlbF9mb3JtYXQgLSB1aW50 MzJfdCwgcGl4ZWwgZm9ybWF0IHRvIGJlIHVzZWQsIEZPVVJDQyBjb2RlLgorICogd2lkdGggLSB1 aW50MzJfdCwgd2lkdGggaW4gcGl4ZWxzLgorICogaGVpZ2h0IC0gdWludDMyX3QsIGhlaWdodCBp biBwaXhlbHMuCisgKgorICogU2VlIHJlc3BvbnNlIGZvcm1hdCBmb3IgdGhpcyByZXF1ZXN0Lgor ICoKKyAqIE5vdGVzOgorICogIC0gdGhlIG9ubHkgZGlmZmVyZW5jZSBiZXR3ZWVuIFhFTkNBTUVS QV9PUF9DT05GSUdfVkFMSURBVEUgYW5kCisgKiAgICBYRU5DQU1FUkFfT1BfQ09ORklHX1NFVCBp cyB0aGF0IHRoZSBmb3JtZXIgZG9lc24ndCBhY3R1YWxseSBjaGFuZ2UKKyAqICAgIGNhbWVyYSBj b25maWd1cmF0aW9uLCBidXQgcXVlcmllcyBpZiB0aGUgY29uZmlndXJhdGlvbiBpcyB2YWxpZC4K KyAqICAgIFRoaXMgY2FuIGJlIHVzZWQgd2hpbGUgc3RyZWFtIGlzIGFjdGl2ZSBhbmQvb3IgYnVm ZmVycyBhbGxvY2F0ZWQuCisgKiAgLSBmcm9udGVuZCBtdXN0IGNoZWNrIHRoZSBjb3JyZXNwb25k aW5nIHJlc3BvbnNlIGluIG9yZGVyIHRvIHNlZQorICogICAgaWYgdGhlIHZhbHVlcyByZXBvcnRl ZCBiYWNrIGJ5IHRoZSBiYWNrZW5kIGRvIG1hdGNoIHRoZSBkZXNpcmVkIG9uZXMKKyAqICAgIGFu ZCBjYW4gYmUgYWNjZXB0ZWQuCisgKiAgLSBmcm9udGVuZCBtYXkgc2VuZCBtdWx0aXBsZSBYRU5D QU1FUkFfT1BfQ09ORklHX1NFVCByZXF1ZXN0cyBiZWZvcmUKKyAqICAgIHNlbmRpbmcgWEVOQ0FN RVJBX09QX1NUUkVBTV9TVEFSVCByZXF1ZXN0IHRvIHVwZGF0ZSBvciB0dW5lIHRoZQorICogICAg ZmluYWwgc3RyZWFtIGNvbmZpZ3VyYXRpb24uCisgKiAgLSBjb25maWd1cmF0aW9uIGNhbm5vdCBi ZSBjaGFuZ2VkIGR1cmluZyBhY3RpdmUgc3RyZWFtaW5nLCBlLmcuCisgKiAgICBhZnRlciBYRU5D QU1FUkFfT1BfU1RSRUFNX1NUQVJUIGFuZCBiZWZvcmUgWEVOQ0FNRVJBX09QX1NUUkVBTV9TVE9Q CisgKiAgICByZXF1ZXN0cy4KKyAqLworc3RydWN0IHhlbmNhbWVyYV9jb25maWdfcmVxIHsKKyAg ICB1aW50MzJfdCBwaXhlbF9mb3JtYXQ7CisgICAgdWludDMyX3Qgd2lkdGg7CisgICAgdWludDMy X3QgaGVpZ2h0OworfTsKKworLyoKKyAqIFJlcXVlc3QgY3VycmVudCBjb25maWd1cmF0aW9uIG9m IHRoZSBjYW1lcmE6CisgKiAgICAgICAgIDAgICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAg ICAgMiAgICAgICAgICAgICAgIDMgICAgICAgIG9jdGV0CisgKiArLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwg ICAgICAgICAgICAgICBpZCAgICAgICAgICAgICAgICB8IF9PUF9DT05GSUdfR0VUIHwgICByZXNl cnZlZCAgICAgfCA0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA4CisgKiArLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSsKKyAqIHwvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvfAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgNjQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKworICoKKyAqIFNlZSByZXNwb25zZSBmb3JtYXQgZm9yIHRo aXMgcmVxdWVzdC4KKyAqCisgKgorICogUmVxdWVzdCB0byBzZXQgdGhlIGZyYW1lIHJhdGUgb2Yg dGhlIHN0cmVhbToKKyAqICAgICAgICAgMCAgICAgICAgICAgICAgICAxICAgICAgICAgICAgICAg ICAyICAgICAgICAgICAgICAgMyAgICAgICAgb2N0ZXQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAg ICAgICAgICAgICAgIGlkICAgICAgICAgICAgICAgIHwgX0ZSQU1FX1JBVEVfU0VUfCAgIHJlc2Vy dmVkICAgICB8IDQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDgKKyAqICstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVfcmF0ZV9udW1lciAg ICAgICAgICAgICAgICAgICAgICAgICB8IDEyCisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAg ICAgICAgICAgICAgICAgICAgIGZyYW1lX3JhdGVfZGVub20gICAgICAgICAgICAgICAgICAgICAg ICAgfCAxNgorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjAKKyAqICstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKworICogfC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC98CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA2 NAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rCisgKgorICogZnJhbWVfcmF0ZV9udW1lciAtIHVpbnQzMl90LCBu dW1lcmF0b3Igb2YgdGhlIGZyYW1lIHJhdGUuCisgKiBmcmFtZV9yYXRlX2Rlbm9tIC0gdWludDMy X3QsIGRlbm9taW5hdG9yIG9mIHRoZSBmcmFtZSByYXRlLgorICoKKyAqIE5vdGVzOgorICogIC0g dG8gcXVlcnkgdGhlIGN1cnJlbnQgKGFjdHVhbCkgZnJhbWUgcmF0ZSB1c2UgWEVOQ0FNRVJBX09Q X0NPTkZJR19HRVQKKyAqICAgIHJlcXVlc3QuCisgKiAgLSB0aGlzIHJlcXVlc3QgY2FuIGJlIHVz ZWQgd2l0aCBjYW1lcmEgYnVmZmVycyBhbGxvY2F0ZWQsIGJ1dCBzdHJlYW0KKyAqICAgIHN0b3Bw ZWQsIGUuZy4gZnJvbnRlbmQgaXMgYWxsb3dlZCB0byBzdG9wIHRoZSBzdHJlYW0gd2l0aAorICog ICAgWEVOQ0FNRVJBX09QX1NUUkVBTV9TVE9QLCBob2xkIHRoZSBidWZmZXJzIGFsbG9jYXRlZCAo ZS5nLiBrZWVwIHRoZQorICogICAgY29uZmlndXJhdGlvbiBzZXQgd2l0aCBYRU5DQU1FUkFfT1Bf Q09ORklHX1NFVCksIGNoYW5nZSB0aGUKKyAqICAgIGZyYW1lIHJhdGUgb2YgdGhlIHN0cmVhbSBh bmQgKHJlKXN0YXJ0IHRoZSBzdHJlYW0gYWdhaW4gd2l0aAorICogICAgWEVOQ0FNRVJBX09QX1NU UkVBTV9TVEFSVC4KKyAqICAtIGZyYW1lIHJhdGUgY2Fubm90IGJlIGNoYW5nZWQgZHVyaW5nIGFj dGl2ZSBzdHJlYW1pbmcsIGUuZy4KKyAqICAgIGFmdGVyIFhFTkNBTUVSQV9PUF9TVFJFQU1fU1RB UlQgYW5kIGJlZm9yZSBYRU5DQU1FUkFfT1BfU1RSRUFNX1NUT1AKKyAqICAgIGNvbW1hbmRzLgor ICovCitzdHJ1Y3QgeGVuY2FtZXJhX2ZyYW1lX3JhdGVfcmVxIHsKKyAgICB1aW50MzJfdCBmcmFt ZV9yYXRlX251bWVyOworICAgIHVpbnQzMl90IGZyYW1lX3JhdGVfZGVub207Cit9OworCisvKgor ICogUmVxdWVzdCBjYW1lcmEgYnVmZmVyJ3MgbGF5b3V0OgorICogICAgICAgICAwICAgICAgICAg ICAgICAgIDEgICAgICAgICAgICAgICAgIDIgICAgICAgICAgICAgICAzICAgICAgICBvY3RldAor ICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgaWQgICAgICAgICAgICAgICAgfCBf QlVGX0dFVF9MQVlPVVR8ICAgcmVzZXJ2ZWQgICAgIHwgNAorICogKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgOAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8L1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL3wKKyAqICstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8IDY0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqCisgKiBTZWUg cmVzcG9uc2UgZm9ybWF0IGZvciB0aGlzIHJlcXVlc3QuCisgKgorICoKKyAqIFJlcXVlc3QgbnVt YmVyIG9mIGJ1ZmZlcnMgdG8gYmUgdXNlZDoKKyAqICAgICAgICAgMCAgICAgICAgICAgICAgICAx ICAgICAgICAgICAgICAgICAyICAgICAgICAgICAgICAgMyAgICAgICAgb2N0ZXQKKyAqICstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKworICogfCAgICAgICAgICAgICAgIGlkICAgICAgICAgICAgICAgIHwgX09QX0JVRl9S RVFVRVNUfCAgIHJlc2VydmVkICAgICB8IDQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8IDgKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICBudW1fYnVmcyAgICB8ICAgICAgICAgICAg ICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICB8IDEyCisgKiArLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAxNgorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8L1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL3wK KyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2 ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDY0CisgKiArLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAq CisgKiBudW1fYnVmcyAtIHVpbnQ4X3QsIGRlc2lyZWQgbnVtYmVyIG9mIGJ1ZmZlcnMgdG8gYmUg dXNlZC4KKyAqCisgKiBJZiBudW1fYnVmcyBpcyBub3QgemVybyB0aGVuIHRoZSBiYWNrZW5kIHZh bGlkYXRlcyB0aGUgcmVxdWVzdGVkIG51bWJlciBvZgorICogYnVmZmVycyBhbmQgcmVzcG9uZHMg d2l0aCB0aGUgbnVtYmVyIG9mIGJ1ZmZlcnMgYWxsb3dlZCBmb3IgdGhpcyBmcm9udGVuZC4KKyAq IEZyb250ZW5kIGlzIHJlc3BvbnNpYmxlIGZvciBjaGVja2luZyB0aGUgY29ycmVzcG9uZGluZyBy ZXNwb25zZSBpbiBvcmRlciB0bworICogc2VlIGlmIHRoZSB2YWx1ZXMgcmVwb3J0ZWQgYmFjayBi eSB0aGUgYmFja2VuZCBkbyBtYXRjaCB0aGUgZGVzaXJlZCBvbmVzCisgKiBhbmQgY2FuIGJlIGFj Y2VwdGVkLgorICogRnJvbnRlbmQgaXMgYWxsb3dlZCB0byBzZW5kIG11bHRpcGxlIFhFTkNBTUVS QV9PUF9CVUZfUkVRVUVTVCByZXF1ZXN0cworICogYmVmb3JlIHNlbmRpbmcgWEVOQ0FNRVJBX09Q X1NUUkVBTV9TVEFSVCByZXF1ZXN0IHRvIHVwZGF0ZSBvciB0dW5lIHRoZQorICogZmluYWwgY29u ZmlndXJhdGlvbi4KKyAqIEZyb250ZW5kIGlzIG5vdCBhbGxvd2VkIHRvIGNoYW5nZSB0aGUgY2Ft ZXJhIGNvbmZpZ3VyYXRpb24gYWZ0ZXIgdGhpcyBjYWxsCisgKiB3aXRoIGEgbm9uLXplcm8gdmFs dWUgb2YgbnVtX2J1ZnMuIElmIGNhbWVyYSByZWNvbmZpZ3VyYXRpb24gaXMgcmVxdWlyZWQKKyAq IHRoZW4gdGhpcyByZXF1ZXN0IG11c3QgYmUgc2VudCB3aXRoIG51bV9idWZzIHNldCB0byB6ZXJv IGFuZCBhbnkgY3JlYXRlZAorICogYnVmZmVycyBtdXN0IGJlIGRlc3Ryb3llZCBmaXJzdC4KKyAq IEZyb250ZW5kIGlzIG5vdCBhbGxvd2VkIHRvIGNoYW5nZSB0aGUgbnVtYmVyIG9mIGJ1ZmZlcnMg YWZ0ZXIgdGhlCisgKiBzdHJlYW1pbmcgaGFzIHN0YXJ0ZWQuCisgKgorICogSWYgbnVtX2J1ZnMg aXMgMCBhbmQgc3RyZWFtaW5nIGhhcyBub3Qgc3RhcnRlZCB5ZXQsIHRoZW4gdGhlIGJhY2tlbmQg d2lsbAorICogZnJlZSBhbGwgcHJldmlvdXNseSBhbGxvY2F0ZWQgYnVmZmVycyAoaWYgYW55KS4K KyAqIFRyeWluZyB0byBjYWxsIHRoaXMgaWYgc3RyZWFtaW5nIGlzIGluIHByb2dyZXNzIHdpbGwg cmVzdWx0IGluIGFuIGVycm9yLgorICoKKyAqIElmIGNhbWVyYSByZWNvbmZpZ3VyYXRpb24gaXMg cmVxdWlyZWQgdGhlbiB0aGUgc3RyZWFtaW5nIG11c3QgYmUgc3RvcHBlZAorICogYW5kIHRoaXMg cmVxdWVzdCBtdXN0IGJlIHNlbnQgd2l0aCBudW1fYnVmcyBzZXQgdG8gemVybyBhbmQgYW55Cisg KiBjcmVhdGVkIGJ1ZmZlcnMgbXVzdCBiZSBkZXN0cm95ZWQuCisgKgorICogUGxlYXNlIG5vdGUs IHRoYXQgdGhlIG51bWJlciBvZiBidWZmZXJzIGluIHRoaXMgcmVxdWVzdCBtdXN0IG5vdCBleGNl ZWQKKyAqIHRoZSB2YWx1ZSBjb25maWd1cmVkIGluIFhlblN0b3JlLm1heC1idWZmZXJzLgorICoK KyAqIFNlZSByZXNwb25zZSBmb3JtYXQgZm9yIHRoaXMgcmVxdWVzdC4KKyAqLworc3RydWN0IHhl bmNhbWVyYV9idWZfcmVxdWVzdCB7CisgICAgdWludDhfdCBudW1fYnVmczsKK307CisKKy8qCisg KiBSZXF1ZXN0IGNhbWVyYSBidWZmZXIgY3JlYXRpb246CisgKiAgICAgICAgIDAgICAgICAgICAg ICAgICAgMSAgICAgICAgICAgICAgICAgMiAgICAgICAgICAgICAgIDMgICAgICAgIG9jdGV0Cisg KiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICBpZCAgICAgICAgICAgICAgICB8IF9P UF9CVUZfQ1JFQVRFIHwgICByZXNlcnZlZCAgICAgfCA0CisgKiArLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCA4CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICBpbmRleCAgICAgfCAgICAg ICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgfCAxMgorICogKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhbmVfb2Zmc2V0WzBd ICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTYKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAg ICAgICAgICAgICAgICAgICAgICAgIHBsYW5lX29mZnNldFsxXSAgICAgICAgICAgICAgICAgICAg ICAgICB8IDIwCisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAg ICBwbGFuZV9vZmZzZXRbMl0gICAgICAgICAgICAgICAgICAgICAgICAgfCAyNAorICogKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhbmVfb2Zmc2V0WzNdICAg ICAgICAgICAgICAgICAgICAgICAgIHwgMjgKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAg ICAgICAgICAgICAgICAgICAgIGdyZWZfZGlyZWN0b3J5ICAgICAgICAgICAgICAgICAgICAgICAg ICB8IDMyCisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAzNgorICogKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rCisgKiB8L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL3wKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDY0 CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSsKKyAqCisgKiBBbiBhdHRlbXB0IHRvIGNyZWF0ZSBtdWx0aXBsZSBi dWZmZXJzIHdpdGggdGhlIHNhbWUgaW5kZXggaXMgYW4gZXJyb3IuCisgKiBpbmRleCBjYW4gYmUg cmUtdXNlZCBhZnRlciBkZXN0cm95aW5nIHRoZSBjb3JyZXNwb25kaW5nIGNhbWVyYSBidWZmZXIu CisgKgorICogaW5kZXggLSB1aW50OF90LCBpbmRleCBvZiB0aGUgYnVmZmVyIHRvIGJlIGNyZWF0 ZWQgaW4gdGhlIHJhbmdlCisgKiAgIGZyb20gMCB0byB0aGUgbnVtX2J1ZnMgZmllbGQgcmV0dXJu ZWQgaW4gcmVzcG9uc2UgZm9yCisgKiAgIFhFTkNBTUVSQV9PUF9CVUZfUkVRVUVTVCByZXF1ZXN0 CisgKiBwbGFuZV9vZmZzZXQgLSBhcnJheSBvZiB1aW50MzJfdCwgb2Zmc2V0IG9mIHRoZSBjb3Jy ZXNwb25kaW5nIHBsYW5lCisgKiAgIGluIG9jdGV0cyBmcm9tIHRoZSBidWZmZXIgc3RhcnQuIE51 bWJlciBvZiBvZmZzZXRzIHJldHVybmVkIGlzCisgKiAgIGVxdWFsIHRvIHRoZSB2YWx1ZSByZXR1 cm5lZCBpbiBYRU5DQU1FUkFfT1BfQlVGX0dFVF9MQVlPVVQubnVtX3BsYW5lcy4KKyAqIGdyZWZf ZGlyZWN0b3J5IC0gZ3JhbnRfcmVmX3QsIGEgcmVmZXJlbmNlIHRvIHRoZSBmaXJzdCBzaGFyZWQg cGFnZQorICogICBkZXNjcmliaW5nIHNoYXJlZCBidWZmZXIgcmVmZXJlbmNlcy4gVGhlIHNpemUg b2YgdGhlIGJ1ZmZlciBpcyBlcXVhbCB0bworICogICBYRU5DQU1FUkFfT1BfQlVGX0dFVF9MQVlP VVQuc2l6ZSByZXNwb25zZS4gQXQgbGVhc3Qgb25lIHBhZ2UgZXhpc3RzLiBJZgorICogICBzaGFy ZWQgYnVmZmVyIHNpemUgZXhjZWVkcyB3aGF0IGNhbiBiZSBhZGRyZXNzZWQgYnkgdGhpcyBzaW5n bGUgcGFnZSwKKyAqICAgdGhlbiByZWZlcmVuY2UgdG8gdGhlIG5leHQgc2hhcmVkIHBhZ2UgbXVz dCBiZSBzdXBwbGllZCAoc2VlCisgKiAgIGdyZWZfZGlyX25leHRfcGFnZSBiZWxvdykuCisgKgor ICogSWYgWEVOQ0FNRVJBX0ZJRUxEX0JFX0FMTE9DIGNvbmZpZ3VyYXRpb24gZW50cnkgaXMgc2V0 LCB0aGVuIGJhY2tlbmQgd2lsbAorICogYWxsb2NhdGUgdGhlIGJ1ZmZlciB3aXRoIHRoZSBwYXJh bWV0ZXJzIHByb3ZpZGVkIGluIHRoaXMgcmVxdWVzdCBhbmQgcGFnZQorICogZGlyZWN0b3J5IGlz IGhhbmRsZWQgYXMgZm9sbG93czoKKyAqICAgRnJvbnRlbmQgb24gcmVxdWVzdDoKKyAqICAgICAt IGFsbG9jYXRlcyBwYWdlcyBmb3IgdGhlIGRpcmVjdG9yeSAoZ3JlZl9kaXJlY3RvcnksCisgKiAg ICAgICBncmVmX2Rpcl9uZXh0X3BhZ2UocykKKyAqICAgICAtIGdyYW50cyBwZXJtaXNzaW9ucyBm b3IgdGhlIHBhZ2VzIG9mIHRoZSBkaXJlY3RvcnkgdG8gdGhlIGJhY2tlbmQKKyAqICAgICAtIHNl dHMgZ3JlZl9kaXJfbmV4dF9wYWdlIGZpZWxkcworICogICBCYWNrZW5kIG9uIHJlc3BvbnNlOgor ICogICAgIC0gZ3JhbnRzIHBlcm1pc3Npb25zIGZvciB0aGUgcGFnZXMgb2YgdGhlIGJ1ZmZlciBh bGxvY2F0ZWQgdG8KKyAqICAgICAgIHRoZSBmcm9udGVuZAorICogICAgIC0gZmlsbHMgaW4gcGFn ZSBkaXJlY3Rvcnkgd2l0aCBncmFudCByZWZlcmVuY2VzCisgKiAgICAgICAoZ3JlZltdIGluIHN0 cnVjdCB4ZW5jYW1lcmFfcGFnZV9kaXJlY3RvcnkpCisgKi8KK3N0cnVjdCB4ZW5jYW1lcmFfYnVm X2NyZWF0ZV9yZXEgeworICAgIHVpbnQ4X3QgaW5kZXg7CisgICAgdWludDhfdCByZXNlcnZlZFsz XTsKKyAgICB1aW50MzJfdCBwbGFuZV9vZmZzZXRbWEVOQ0FNRVJBX01BWF9QTEFORV07CisgICAg Z3JhbnRfcmVmX3QgZ3JlZl9kaXJlY3Rvcnk7Cit9OworCisvKgorICogU2hhcmVkIHBhZ2UgZm9y IFhFTkNBTUVSQV9PUF9CVUZfQ1JFQVRFIGJ1ZmZlciBkZXNjcmlwdG9yIChncmVmX2RpcmVjdG9y eSBpbgorICogdGhlIHJlcXVlc3QpIGVtcGxveXMgYSBsaXN0IG9mIHBhZ2VzLCBkZXNjcmliaW5n IGFsbCBwYWdlcyBvZiB0aGUgc2hhcmVkCisgKiBkYXRhIGJ1ZmZlcjoKKyAqICAgICAgICAgMCAg ICAgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAyICAgICAgICAgICAgICAgMyAgICAgICAg b2N0ZXQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgIGdyZWZf ZGlyX25leHRfcGFnZSAgICAgICAgICAgICAgICAgICAgICAgICB8IDQKKyAqICstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t KworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyZWZbMF0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8IDgKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC98Cisg KiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmVmW2ld ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpKjQrOAorICogKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisg KiB8L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL3wKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZ3JlZltOIC0gMV0gICAgICAgICAgICAgICAgICAgICAgICAgICB8IE4qNCs4Cisg KiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSsKKyAqCisgKiBncmVmX2Rpcl9uZXh0X3BhZ2UgLSBncmFudF9yZWZfdCwg cmVmZXJlbmNlIHRvIHRoZSBuZXh0IHBhZ2UgZGVzY3JpYmluZworICogICBwYWdlIGRpcmVjdG9y eS4gTXVzdCBiZSAwIGlmIHRoZXJlIGFyZSBubyBtb3JlIHBhZ2VzIGluIHRoZSBsaXN0LgorICog Z3JlZltpXSAtIGdyYW50X3JlZl90LCByZWZlcmVuY2UgdG8gYSBzaGFyZWQgcGFnZSBvZiB0aGUg YnVmZmVyCisgKiAgIGFsbG9jYXRlZCBhdCBYRU5DQU1FUkFfT1BfQlVGX0NSRUFURS4KKyAqCisg KiBOdW1iZXIgb2YgZ3JhbnRfcmVmX3QgZW50cmllcyBpbiB0aGUgd2hvbGUgcGFnZSBkaXJlY3Rv cnkgaXMgbm90CisgKiBwYXNzZWQsIGJ1dCBpbnN0ZWFkIGNhbiBiZSBjYWxjdWxhdGVkIGFzOgor ICogICBudW1fZ3JlZnNfdG90YWwgPSAoWEVOQ0FNRVJBX09QX0JVRl9SRVFVRVNULnNpemUgKyBY RU5fUEFHRV9TSVpFIC0gMSkgLworICogICAgICAgWEVOX1BBR0VfU0laRQorICovCitzdHJ1Y3Qg eGVuY2FtZXJhX3BhZ2VfZGlyZWN0b3J5IHsKKyAgICBncmFudF9yZWZfdCBncmVmX2Rpcl9uZXh0 X3BhZ2U7CisgICAgZ3JhbnRfcmVmX3QgZ3JlZlsxXTsgLyogVmFyaWFibGUgbGVuZ3RoICovCit9 OworCisvKgorICogUmVxdWVzdCBidWZmZXIgZGVzdHJ1Y3Rpb24gLSBkZXN0cm95IGEgcHJldmlv dXNseSBhbGxvY2F0ZWQgY2FtZXJhIGJ1ZmZlcjoKKyAqICAgICAgICAgMCAgICAgICAgICAgICAg ICAxICAgICAgICAgICAgICAgICAyICAgICAgICAgICAgICAgMyAgICAgICAgb2N0ZXQKKyAqICst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgIGlkICAgICAgICAgICAgICAgIHwgX09QX0JV Rl9ERVNUUk9ZfCAgIHJlc2VydmVkICAgICB8IDQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8IDgKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgIGluZGV4ICAgICB8ICAgICAgICAg ICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICB8IDEyCisgKiArLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAxNgorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8L1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L3wKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVz ZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDY0CisgKiArLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsK KyAqCisgKiBpbmRleCAtIHVpbnQ4X3QsIGluZGV4IG9mIHRoZSBidWZmZXIgdG8gYmUgZGVzdHJv eWVkLgorICoKKyAqCisgKiBSZXF1ZXN0IHF1ZXVlaW5nIG9mIHRoZSBidWZmZXIgZm9yIGJhY2tl bmQgdXNlOgorICogICAgICAgICAwICAgICAgICAgICAgICAgIDEgICAgICAgICAgICAgICAgIDIg ICAgICAgICAgICAgICAzICAgICAgICBvY3RldAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAg ICAgICAgICAgaWQgICAgICAgICAgICAgICAgfCBfT1BfQlVGX1FVRVVFICB8ICAgcmVzZXJ2ZWQg ICAgIHwgNAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOAorICogKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rCisgKiB8ICAgICAgaW5kZXggICAgIHwgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAg ICAgICAgICAgICAgICAgICAgIHwgMTIKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 IDE2CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvfAorICogKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisg KiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgNjQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICoKKyAqIE5vdGVzOgorICogIC0g ZnJvbnRlbmRzIG11c3Qgbm90IGFjY2VzcyB0aGUgYnVmZmVyIGNvbnRlbnQgYWZ0ZXIgdGhpcyBy ZXF1ZXN0IHVudGlsCisgKiAgICByZXNwb25zZSB0byBYRU5DQU1FUkFfT1BfQlVGX0RFUVVFVUUg aGFzIGJlZW4gcmVjZWl2ZWQuCisgKiAgLSBidWZmZXJzIG11c3QgYmUgcXVldWVkIHRvIHRoZSBi YWNrZW5kIGJlZm9yZSBkZXN0cm95aW5nIHRoZW0gd2l0aAorICogICAgWEVOQ0FNRVJBX09QX0JV Rl9ERVNUUk9ZLgorICoKKyAqIGluZGV4IC0gdWludDhfdCwgaW5kZXggb2YgdGhlIGJ1ZmZlciB0 byBiZSBxdWV1ZWQuCisgKgorICoKKyAqIFJlcXVlc3QgZGVxdWV1ZWluZyBvZiB0aGUgYnVmZmVy IGZvciBmcm9udGVuZCB1c2U6CisgKiAgICAgICAgIDAgICAgICAgICAgICAgICAgMSAgICAgICAg ICAgICAgICAgMiAgICAgICAgICAgICAgIDMgICAgICAgIG9jdGV0CisgKiArLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsK KyAqIHwgICAgICAgICAgICAgICBpZCAgICAgICAgICAgICAgICB8X09QX0JVRl9ERVFVRVVFIHwg ICByZXNlcnZlZCAgICAgfCA0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA4Cisg KiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICBpbmRleCAgICAgfCAgICAgICAgICAgICAgICAgICAg IHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgfCAxMgorICogKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgMTYKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC98CisgKiArLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCA2NAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKgorICogTm90 ZXM6CisgKiAgLSBmcm9udGVuZCBpcyBhbGxvd2VkIHRvIGFjY2VzcyB0aGUgYnVmZmVyIGNvbnRl bnQgYWZ0ZXIgdGhlIGNvcnJlc3BvbmRpbmcKKyAqICAgIHJlc3BvbnNlIHRvIHRoaXMgcmVxdWVz dC4KKyAqCisgKiBpbmRleCAtIHVpbnQ4X3QsIGluZGV4IG9mIHRoZSBidWZmZXIgdG8gYmUgcXVl dWVkLgorICoKKyAqCisgKiBSZXF1ZXN0IGNhbWVyYSBjb250cm9sIGRldGFpbHM6CisgKiAgICAg ICAgIDAgICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAgMiAgICAgICAgICAgICAgIDMg ICAgICAgIG9jdGV0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICBpZCAgICAg ICAgICAgICAgICB8IF9PUF9DVFJMX0VOVU0gIHwgICByZXNlcnZlZCAgICAgfCA0CisgKiArLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSsKKyAqIHwgICAgICBpbmRleCAgICAgfCAgICAgICAgICAgICAgICAgICAgIHJlc2Vy dmVkICAgICAgICAgICAgICAgICAgICAgfCA4CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAxMgorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL3wKKyAqICstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t KworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8IDY0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqCisgKiBTZWUgcmVzcG9u c2UgZm9ybWF0IGZvciB0aGlzIHJlcXVlc3QuCisgKgorICogaW5kZXggLSB1aW50OF90LCBpbmRl eCBvZiB0aGUgY29udHJvbCB0byBiZSBxdWVyaWVkLgorICovCitzdHJ1Y3QgeGVuY2FtZXJhX2lu ZGV4IHsKKyAgICB1aW50OF90IGluZGV4OworfTsKKworLyoKKyAqIFJlcXVlc3QgY2FtZXJhIGNv bnRyb2wgY2hhbmdlOgorICogICAgICAgICAwICAgICAgICAgICAgICAgIDEgICAgICAgICAgICAg ICAgIDIgICAgICAgICAgICAgICAzICAgICAgICBvY3RldAorICogKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8 ICAgICAgICAgICAgICAgaWQgICAgICAgICAgICAgICAgfCAgX09QX1NFVF9DVFJMICB8ICAgcmVz ZXJ2ZWQgICAgIHwgNAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgIHR5cGUgICAgIHwgICAg ICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgIHwgOAorICogKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTIKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8IDE2CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAg IHZhbHVlIGxvdyAzMi1iaXQgICAgICAgICAgICAgICAgICAgICAgICAgfCAyMAorICogKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSBoaWdoIDMyLWJpdCAg ICAgICAgICAgICAgICAgICAgICAgIHwgMjQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8IDI4CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvfAorICogKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r CisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgNjQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICoKKyAqIHR5cGUgLSB1aW50 OF90LCB0eXBlIG9mIHRoZSBjb250cm9sLCBvbmUgb2YgdGhlIFhFTkNBTUVSQV9DVFJMX1hYWC4K KyAqIHZhbHVlIC0gaW50NjRfdCwgbmV3IHZhbHVlIG9mIHRoZSBjb250cm9sLgorICovCitzdHJ1 Y3QgeGVuY2FtZXJhX2N0cmxfdmFsdWUgeworICAgIHVpbnQ4X3QgdHlwZTsKKyAgICB1aW50OF90 IHJlc2VydmVkWzddOworICAgIGludDY0X3QgdmFsdWU7Cit9OworCisvKgorICogUmVxdWVzdCBj YW1lcmEgY29udHJvbCBzdGF0ZToKKyAqICAgICAgICAgMCAgICAgICAgICAgICAgICAxICAgICAg ICAgICAgICAgICAyICAgICAgICAgICAgICAgMyAgICAgICAgb2N0ZXQKKyAqICstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t KworICogfCAgICAgICAgICAgICAgIGlkICAgICAgICAgICAgICAgIHwgIF9PUF9HRVRfQ1RSTCAg fCAgIHJlc2VydmVkICAgICB8IDQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICB0eXBlICAg ICB8ICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICB8IDgK KyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2 ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEyCisgKiArLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAq IHwvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvfAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNjQKKyAqICst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKworICoKKyAqIFNlZSByZXNwb25zZSBmb3JtYXQgZm9yIHRoaXMgcmVxdWVzdC4K KyAqCisgKiB0eXBlIC0gdWludDhfdCwgdHlwZSBvZiB0aGUgY29udHJvbCwgb25lIG9mIHRoZSBY RU5DQU1FUkFfQ1RSTF9YWFguCisgKi8KK3N0cnVjdCB4ZW5jYW1lcmFfZ2V0X2N0cmxfcmVxIHsK KyAgICB1aW50OF90IHR5cGU7Cit9OworCisvKgorICogUmVxdWVzdCBjYW1lcmEgY2FwdHVyZSBz dHJlYW0gc3RhcnQ6CisgKiAgICAgICAgIDAgICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAg ICAgMiAgICAgICAgICAgICAgIDMgICAgICAgIG9jdGV0CisgKiArLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwg ICAgICAgICAgICAgICBpZCAgICAgICAgICAgICAgICB8X09QX1NUUkVBTV9TVEFSVHwgICByZXNl cnZlZCAgICAgfCA0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA4CisgKiArLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSsKKyAqIHwvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvfAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgNjQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKworICoKKyAqCisgKiBSZXF1ZXN0IGNhbWVyYSBjYXB0dXJl IHN0cmVhbSBzdG9wOgorICogICAgICAgICAwICAgICAgICAgICAgICAgIDEgICAgICAgICAgICAg ICAgIDIgICAgICAgICAgICAgICAzICAgICAgICBvY3RldAorICogKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8 ICAgICAgICAgICAgICAgaWQgICAgICAgICAgICAgICAgfF9PUF9TVFJFQU1fU1RPUCB8ICAgcmVz ZXJ2ZWQgICAgIHwgNAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOAorICogKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rCisgKiB8L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL3wKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8IDY0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tIFJlc3BvbnNlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICoKKyAqIEFsbCByZXNwb25zZSBwYWNrZXRzIGhhdmUgdGhlIHNhbWUgbGVuZ3RoICg2NCBvY3Rl dHMpLgorICoKKyAqIEFsbCByZXNwb25zZSBwYWNrZXRzIGhhdmUgY29tbW9uIGhlYWRlcjoKKyAq ICAgICAgICAgMCAgICAgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAyICAgICAgICAgICAg ICAgMyAgICAgICAgb2N0ZXQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgIGlk ICAgICAgICAgICAgICAgIHwgICAgb3BlcmF0aW9uICAgfCAgICByZXNlcnZlZCAgICB8IDQKKyAq ICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDgKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICoKKyAq IGlkIC0gdWludDE2X3QsIGNvcGllZCBmcm9tIHRoZSByZXF1ZXN0LgorICogb3BlcmF0aW9uIC0g dWludDhfdCwgWEVOQ0FNRVJBX09QXyogLSBjb3BpZWQgZnJvbSByZXF1ZXN0LgorICogc3RhdHVz IC0gaW50MzJfdCwgcmVzcG9uc2Ugc3RhdHVzLCB6ZXJvIG9uIHN1Y2Nlc3MgYW5kIC1YRU5fRVhY IG9uIGZhaWx1cmUuCisgKgorICoKKyAqIENvbmZpZ3VyYXRpb24gcmVzcG9uc2UgLSByZXNwb25z ZSBmb3IgWEVOQ0FNRVJBX09QX0NPTkZJR19TRVQsCisgKiBYRU5DQU1FUkFfT1BfQ09ORklHX0dF VCBhbmQgWEVOQ0FNRVJBX09QX0NPTkZJR19WQUxJREFURSByZXF1ZXN0czoKKyAqICAgICAgICAg MCAgICAgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAyICAgICAgICAgICAgICAgMyAgICAg ICAgb2N0ZXQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgIGlkICAgICAgICAg ICAgICAgIHwgX09QX0NPTkZJR19YWFggfCAgICByZXNlcnZlZCAgICB8IDQKKyAqICstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8IDgKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwaXhlbCBmb3JtYXQgICAgICAgICAgICAgICAgICAgICAgICAgICB8 IDEyCisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg d2lkdGggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNgorICogKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r CisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgMjAKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29sb3JzcGFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDI0 CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhmZXJf ZnVuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyOAorICogKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisg KiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5Y2Jjcl9lbmMgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgMzIKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAg ICAgICAgICAgICBxdWFudGl6YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICB8IDM2Cisg KiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsX2FzcF9yYXRp b19udW1lciAgICAgICAgICAgICAgICAgICAgICAgfCA0MAorICogKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8 ICAgICAgICAgICAgICAgICAgICAgICBkaXNwbF9hc3BfcmF0aW9fZGVub20gICAgICAgICAgICAg ICAgICAgICAgIHwgNDQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAg ICAgICAgZnJhbWVfcmF0ZV9udW1lciAgICAgICAgICAgICAgICAgICAgICAgICB8IDQ4CisgKiAr LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lX3JhdGVfZGVu b20gICAgICAgICAgICAgICAgICAgICAgICAgfCA1MgorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgNTYKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC98CisgKiArLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCA2NAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKgorICogTWVhbmlu ZyBvZiB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZXMgaW4gdGhpcyByZXNwb25zZSBpcyB0aGUgc2Ft ZSBhcyBmb3IKKyAqIFhFTkNBTUVSQV9PUF9DT05GSUdfU0VUIGFuZCBYRU5DQU1FUkFfT1BfRlJB TUVfUkFURV9TRVQgcmVxdWVzdHMuCisgKgorICogY29sb3JzcGFjZSAtIHVpbnQzMl90LCB0aGlz IHN1cHBsZW1lbnRzIHBpeGVsX2Zvcm1hdCBwYXJhbWV0ZXIsCisgKiAgIG9uZSBvZiB0aGUgWEVO Q0FNRVJBX0NPTE9SU1BBQ0VfWFhYLgorICogeGZlcl9mdW5jIC0gdWludDMyX3QsIHRoaXMgc3Vw cGxlbWVudHMgY29sb3JzcGFjZSBwYXJhbWV0ZXIsCisgKiAgIG9uZSBvZiB0aGUgWEVOQ0FNRVJB X1hGRVJfRlVOQ19YWFguCisgKiB5Y2Jjcl9lbmMgLSB1aW50MzJfdCwgdGhpcyBzdXBwbGVtZW50 cyBjb2xvcnNwYWNlIHBhcmFtZXRlciwKKyAqICAgb25lIG9mIHRoZSBYRU5DQU1FUkFfWUNCQ1Jf RU5DX1hYWC4gUGxlYXNlIG5vdGUsIHRoYXQgeWNiY3JfZW5jIGlzIG9ubHkKKyAqICAgdmFsaWQg Zm9yIFlDYkNyIHBpeGVsZm9ybWF0cyBhbmQgc2hvdWxkIGJlIGlnbm9yZWQgb3RoZXJ3aXNlLgor ICogcXVhbnRpemF0aW9uIC0gdWludDMyX3QsIHRoaXMgc3VwcGxlbWVudHMgY29sb3JzcGFjZSBw YXJhbWV0ZXIsCisgKiAgIG9uZSBvZiB0aGUgWEVOQ0FNRVJBX1FVQU5USVpBVElPTl9YWFguCisg KiBkaXNwbF9hc3BfcmF0aW9fbnVtZXIgLSB1aW50MzJfdCwgbnVtZXJhdG9yIG9mIHRoZSBkaXNw bGF5IGFzcGVjdCByYXRpby4KKyAqIGRpc3BsX2FzcF9yYXRpb19kZW5vbSAtIHVpbnQzMl90LCBk ZW5vbWluYXRvciBvZiB0aGUgZGlzcGxheSBhc3BlY3QgcmF0aW8uCisgKi8KK3N0cnVjdCB4ZW5j YW1lcmFfY29uZmlnX3Jlc3AgeworICAgIHVpbnQzMl90IHBpeGVsX2Zvcm1hdDsKKyAgICB1aW50 MzJfdCB3aWR0aDsKKyAgICB1aW50MzJfdCBoZWlnaHQ7CisgICAgdWludDMyX3QgY29sb3JzcGFj ZTsKKyAgICB1aW50MzJfdCB4ZmVyX2Z1bmM7CisgICAgdWludDMyX3QgeWNiY3JfZW5jOworICAg IHVpbnQzMl90IHF1YW50aXphdGlvbjsKKyAgICB1aW50MzJfdCBkaXNwbF9hc3BfcmF0aW9fbnVt ZXI7CisgICAgdWludDMyX3QgZGlzcGxfYXNwX3JhdGlvX2Rlbm9tOworICAgIHVpbnQzMl90IGZy YW1lX3JhdGVfbnVtZXI7CisgICAgdWludDMyX3QgZnJhbWVfcmF0ZV9kZW5vbTsKK307CisKKy8q CisgKiBSZXF1ZXN0IGJ1ZmZlciByZXNwb25zZSAtIHJlc3BvbnNlIGZvciBYRU5DQU1FUkFfT1Bf QlVGX0dFVF9MQVlPVVQKKyAqIHJlcXVlc3Q6CisgKiAgICAgICAgIDAgICAgICAgICAgICAgICAg MSAgICAgICAgICAgICAgICAgMiAgICAgICAgICAgICAgIDMgICAgICAgIG9jdGV0CisgKiArLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICBpZCAgICAgICAgICAgICAgICB8X0JVRl9HRVRf TEFZT1VUIHwgICAgcmVzZXJ2ZWQgICAgfCA0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCA4CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICBudW1fcGxhbmVzICAgfCAgICAgICAgICAg ICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgfCAxMgorICogKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgMTYKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAg ICAgICAgICAgICAgICAgIHBsYW5lX3NpemVbMF0gICAgICAgICAgICAgICAgICAgICAgICAgICB8 IDIwCisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFu ZV9zaXplWzFdICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyNAorICogKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r CisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhbmVfc2l6ZVsyXSAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgMjgKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAg ICAgICAgICAgICAgIHBsYW5lX3NpemVbM10gICAgICAgICAgICAgICAgICAgICAgICAgICB8IDMy CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYW5lX3N0 cmlkZVswXSAgICAgICAgICAgICAgICAgICAgICAgICAgfCAzNgorICogKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisg KiB8ICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFuZV9zdHJpZGVbMV0gICAgICAgICAgICAg ICAgICAgICAgICAgIHwgNDAKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAg ICAgICAgICAgcGxhbmVfc3RyaWRlWzJdICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQ0Cisg KiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYW5lX3N0cmlk ZVszXSAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0OAorICogKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8 L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL3wKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDY0CisgKiArLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSsKKyAqCisgKiBudW1fcGxhbmVzIC0gdWludDhfdCwgbnVtYmVyIG9mIHBsYW5lcyBv ZiB0aGUgYnVmZmVyLgorICogc2l6ZSAtIHVpbnQzMl90LCBvdmVyYWxsIHNpemUgb2YgdGhlIGJ1 ZmZlciBpbmNsdWRpbmcgc2l6ZXMgb2YgdGhlCisgKiAgIGluZGl2aWR1YWwgcGxhbmVzIGFuZCBw YWRkaW5nIGlmIGFwcGxpY2FibGUuCisgKiBwbGFuZV9zaXplIC0gYXJyYXkgb2YgdWludDMyX3Qs IHNpemUgaW4gb2N0ZXRzIG9mIHRoZSBjb3JyZXNwb25kaW5nIHBsYW5lCisgKiAgIGluY2x1ZGlu ZyBwYWRkaW5nLgorICogcGxhbmVfc3RyaWRlIC0gYXJyYXkgb2YgdWludDMyX3QsIHNpemUgaW4g b2N0ZXRzIG9jY3VwaWVkIGJ5IHRoZQorICogICBjb3JyZXNwb25kaW5nIHNpbmdsZSBpbWFnZSBs aW5lIGluY2x1ZGluZyBwYWRkaW5nIGlmIGFwcGxpY2FibGUuCisgKgorICogTm90ZSEgVGhlIHNp emVzIGFuZCBzdHJpZGVzIGluIHRoaXMgcmVzcG9uc2UgYXBwbHkgdG8gYWxsIGJ1ZmZlcnMgY3Jl YXRlZAorICogd2l0aCBYRU5DQU1FUkFfT1BfQlVGX0NSRUFURSBjb21tYW5kLCBidXQgaW5kaXZp ZHVhbCBidWZmZXJzIG1heSBoYXZlCisgKiBkaWZmZXJlbnQgcGxhbmUgb2Zmc2V0cywgc2VlIFhF TkNBTUVSQV9PUF9CVUZfUkVRVUVTVC5wbGFuZV9vZmZzZXQuCisgKi8KK3N0cnVjdCB4ZW5jYW1l cmFfYnVmX2dldF9sYXlvdXRfcmVzcCB7CisgICAgdWludDhfdCBudW1fcGxhbmVzOworICAgIHVp bnQ4X3QgcmVzZXJ2ZWRbM107CisgICAgdWludDMyX3Qgc2l6ZTsKKyAgICB1aW50MzJfdCBwbGFu ZV9zaXplW1hFTkNBTUVSQV9NQVhfUExBTkVdOworICAgIHVpbnQzMl90IHBsYW5lX3N0cmlkZVtY RU5DQU1FUkFfTUFYX1BMQU5FXTsKK307CisKKy8qCisgKiBSZXF1ZXN0IGJ1ZmZlciByZXNwb25z ZSAtIHJlc3BvbnNlIGZvciBYRU5DQU1FUkFfT1BfQlVGX1JFUVVFU1QKKyAqIHJlcXVlc3Q6Cisg KiAgICAgICAgIDAgICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAgMiAgICAgICAgICAg ICAgIDMgICAgICAgIG9jdGV0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICBp ZCAgICAgICAgICAgICAgICB8X09QX0JVRl9SRVFVRVNUIHwgICAgcmVzZXJ2ZWQgICAgfCA0Cisg KiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVz ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA4CisgKiArLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwg ICBudW1fYnVmZmVycyAgfCAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAg ICAgICAgICAgfCAxMgorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTYKKyAqICst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKworICogfC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC98CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCA2NAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKgorICogbnVtX2J1ZmZlcnMgLSB1aW50OF90LCBu dW1iZXIgb2YgYnVmZmVycyB0byBiZSB1c2VkLgorICoKKyAqCisgKiBDb250cm9sIGVudW1lcmF0 ZSByZXNwb25zZSAtIHJlc3BvbnNlIGZvciBYRU5DQU1FUkFfT1BfQ1RSTF9FTlVNOgorICogICAg ICAgICAwICAgICAgICAgICAgICAgIDEgICAgICAgICAgICAgICAgIDIgICAgICAgICAgICAgICAz ICAgICAgICBvY3RldAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgaWQgICAg ICAgICAgICAgICAgfCBfT1BfQ1RSTF9FTlVNICB8ICAgIHJlc2VydmVkICAgIHwgNAorICogKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgOAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICBp bmRleCAgICAgIHwgICAgICB0eXBlICAgICAgfCAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAg ICAgIHwgMTIKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBmbGFncyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE2CisgKiArLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbiBsb3cgMzItYml0cyAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAyMAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAg ICAgICAgICAgICAgICAgICBtaW4gaGlnaCAzMi1iaXRzICAgICAgICAgICAgICAgICAgICAgICAg IHwgMjQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4 IGxvdyAzMi1iaXRzICAgICAgICAgICAgICAgICAgICAgICAgICB8IDI4CisgKiArLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgIG1heCBoaWdoIDMyLWJpdHMgICAgICAg ICAgICAgICAgICAgICAgICAgfCAzMgorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAg ICAgICAgICAgICAgIHN0ZXAgbG93IDMyLWJpdHMgICAgICAgICAgICAgICAgICAgICAgICAgIHwg MzYKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICBzdGVwIGhp Z2ggMzItYml0cyAgICAgICAgICAgICAgICAgICAgICAgICB8IDQwCisgKiArLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsK KyAqIHwgICAgICAgICAgICAgICAgICAgICAgICBkZWZfdmFsIGxvdyAzMi1iaXRzICAgICAgICAg ICAgICAgICAgICAgICAgfCA0NAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAg ICAgICAgICAgZGVmX3ZhbCBoaWdoIDMyLWJpdHMgICAgICAgICAgICAgICAgICAgICAgIHwgNDgK KyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2 ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDUyCisgKiArLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAq IHwvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvfAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNjQKKyAqICst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKworICoKKyAqIGluZGV4IC0gdWludDhfdCwgaW5kZXggb2YgdGhlIGNhbWVyYSBj b250cm9sIGluIHJlc3BvbnNlLgorICogdHlwZSAtIHVpbnQ4X3QsIHR5cGUgb2YgdGhlIGNvbnRy b2wsIG9uZSBvZiB0aGUgWEVOQ0FNRVJBX0NUUkxfWFhYLgorICogZmxhZ3MgLSB1aW50MzJfdCwg ZmxhZ3Mgb2YgdGhlIGNvbnRyb2wsIG9uZSBvZiB0aGUgWEVOQ0FNRVJBX0NUUkxfRkxHX1hYWC4K KyAqIG1pbiAtIGludDY0X3QsIG1pbmltdW0gdmFsdWUgb2YgdGhlIGNvbnRyb2wuCisgKiBtYXgg LSBpbnQ2NF90LCBtYXhpbXVtIHZhbHVlIG9mIHRoZSBjb250cm9sLgorICogc3RlcCAtIGludDY0 X3QsIG1pbmltdW0gc2l6ZSBpbiB3aGljaCBjb250cm9sIHZhbHVlIGNhbiBiZSBjaGFuZ2VkLgor ICogZGVmX3ZhbCAtIGludDY0X3QsIGRlZmF1bHQgdmFsdWUgb2YgdGhlIGNvbnRyb2wuCisgKi8K K3N0cnVjdCB4ZW5jYW1lcmFfY3RybF9lbnVtX3Jlc3AgeworICAgIHVpbnQ4X3QgaW5kZXg7Cisg ICAgdWludDhfdCB0eXBlOworICAgIHVpbnQ4X3QgcmVzZXJ2ZWRbMl07CisgICAgdWludDMyX3Qg ZmxhZ3M7CisgICAgaW50NjRfdCBtaW47CisgICAgaW50NjRfdCBtYXg7CisgICAgaW50NjRfdCBz dGVwOworICAgIGludDY0X3QgZGVmX3ZhbDsKK307CisKKy8qCisgKiBHZXQgY29udHJvbCByZXNw b25zZSAtIHJlc3BvbnNlIGZvciBYRU5DQU1FUkFfT1BfQ1RSTF9HRVQ6CisgKiAgICAgICAgIDAg ICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAgMiAgICAgICAgICAgICAgIDMgICAgICAg IG9jdGV0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICBpZCAgICAgICAgICAg ICAgICB8IF9PUF9DVFJMX0dFVCAgIHwgICAgcmVzZXJ2ZWQgICAgfCA0CisgKiArLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCA4CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgdHlwZSAg ICAgfCAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgfCAx MgorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNl cnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTYKKyAqICstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwor ICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IDIwCisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAg ICAgICAgICAgIHZhbHVlIGxvdyAzMi1iaXQgICAgICAgICAgICAgICAgICAgICAgICAgfCAyNAor ICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSBoaWdo IDMyLWJpdCAgICAgICAgICAgICAgICAgICAgICAgIHwgMjgKKyAqICstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICog fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8IDMyCisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvfAorICogKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgNjQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICoKKyAqIHR5 cGUgLSB1aW50OF90LCB0eXBlIG9mIHRoZSBjb250cm9sLCBvbmUgb2YgdGhlIFhFTkNBTUVSQV9D VFJMX1hYWC4KKyAqIHZhbHVlIC0gaW50NjRfdCwgbmV3IHZhbHVlIG9mIHRoZSBjb250cm9sLgor ICovCisKKy8qCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEV2ZW50cyAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogRXZlbnRzIGFyZSBzZW50 IHZpYSBhIHNoYXJlZCBwYWdlIGFsbG9jYXRlZCBieSB0aGUgZnJvbnQgYW5kIHByb3BhZ2F0ZWQg YnkKKyAqICAgZXZ0LWV2ZW50LWNoYW5uZWwvZXZ0LXJpbmctcmVmIFhlblN0b3JlIGVudHJpZXMu CisgKgorICogQWxsIGV2ZW50IHBhY2tldHMgaGF2ZSB0aGUgc2FtZSBsZW5ndGggKDY0IG9jdGV0 cykuCisgKiBBbGwgZXZlbnQgcGFja2V0cyBoYXZlIGNvbW1vbiBoZWFkZXI6CisgKiAgICAgICAg IDAgICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAgMiAgICAgICAgICAgICAgIDMgICAg ICAgIG9jdGV0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICBpZCAgICAgICAg ICAgICAgICB8ICAgICAgdHlwZSAgICAgIHwgICByZXNlcnZlZCAgICAgfCA0CisgKiArLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCA4CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqCisgKiBpZCAtIHVp bnQxNl90LCBldmVudCBpZCwgbWF5IGJlIHVzZWQgYnkgZnJvbnQuCisgKiB0eXBlIC0gdWludDhf dCwgdHlwZSBvZiB0aGUgZXZlbnQuCisgKgorICoKKyAqIEZyYW1lIGNhcHR1cmVkIGV2ZW50IC0g ZXZlbnQgZnJvbSBiYWNrIHRvIGZyb250IHdoZW4gYSBuZXcgY2FwdHVyZWQKKyAqIGZyYW1lIGlz IGF2YWlsYWJsZToKKyAqICAgICAgICAgMCAgICAgICAgICAgICAgICAxICAgICAgICAgICAgICAg ICAyICAgICAgICAgICAgICAgMyAgICAgICAgb2N0ZXQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAg ICAgICAgICAgICAgIGlkICAgICAgICAgICAgICAgIHxfRVZUX0ZSQU1FX0FWQUlMfCAgIHJlc2Vy dmVkICAgICB8IDQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDgKKyAqICstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKworICogfCAgICAgIGluZGV4ICAgICB8ICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2 ZWQgICAgICAgICAgICAgICAgICAgICB8IDEyCisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1c2VkX3N6ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAxNgorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2VxX251bSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjAKKyAqICstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8IDI0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv fAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNl cnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNjQKKyAqICstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwor ICoKKyAqIGluZGV4IC0gdWludDhfdCwgaW5kZXggb2YgdGhlIGJ1ZmZlciB0aGF0IGNvbnRhaW5z IG5ldyBjYXB0dXJlZCBmcmFtZSwKKyAqICAgc2VlIFhFTkNBTUVSQV9PUF9CVUZfQ1JFQVRFIGRl c2NyaXB0aW9uIG9uIHRoZSByYW5nZQorICogdXNlZF9zeiAtIHVpbnQzMl90LCBudW1iZXIgb2Yg b2N0ZXRzIHRoaXMgZnJhbWUgaGFzLiBUaGlzIGNhbiBiZSBsZXNzCisgKiB0aGFuIHRoZSBYRU5D QU1FUkFfT1BfQlVGX1JFUVVFU1Quc2l6ZSAocmVzcG9uc2UpIGZvciBjb21wcmVzc2VkIGZvcm1h dHMuCisgKiBzZXFfbnVtIC0gdWludDMyX3QsIHNlcXVlbnRpYWwgbnVtYmVyIG9mIHRoZSBmcmFt ZS4gTXVzdCBiZQorICogICBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcuIElmIHNraXBzIGFyZSBk ZXRlY3RlZCBpbiBzZXFfbnVtIHRoZW4gdGhhdAorICogICBtZWFucyB0aGF0IHRoZSBmcmFtZXMg aW4tYmV0d2VlbiB3ZXJlIGRyb3BwZWQuIE5vdGUgaG93ZXZlciB0aGF0IG5vdAorICogICBhbGwg dmlkZW8gY2FwdHVyZSBoYXJkd2FyZSBpcyBjYXBhYmxlIG9mIGRldGVjdGluZyBkcm9wcGVkIGZy YW1lcy4KKyAqICAgSW4gdGhhdCBjYXNlIHRoZXJlIHdpbGwgYmUgbm8gc2tpcHMgaW4gdGhlIHNl cXVlbmNlIGNvdW50ZXIuCisgKi8KK3N0cnVjdCB4ZW5jYW1lcmFfZnJhbWVfYXZhaWxfZXZ0IHsK KyAgICB1aW50OF90IGluZGV4OworICAgIHVpbnQ4X3QgcmVzZXJ2ZWRbM107CisgICAgdWludDMy X3QgdXNlZF9zejsKKyAgICB1aW50MzJfdCBzZXFfbnVtOworfTsKKworLyoKKyAqIENvbnRyb2wg Y2hhbmdlIGV2ZW50LSBldmVudCBmcm9tIGJhY2sgdG8gZnJvbnQgd2hlbiBjYW1lcmEgY29udHJv bAorICogaGFzIGNoYW5nZWQ6CisgKiAgICAgICAgIDAgICAgICAgICAgICAgICAgMSAgICAgICAg ICAgICAgICAgMiAgICAgICAgICAgICAgIDMgICAgICAgIG9jdGV0CisgKiArLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsK KyAqIHwgICAgICAgICAgICAgICBpZCAgICAgICAgICAgICAgICB8X0VWVF9DVFJMX0NIQU5HRXwg ICByZXNlcnZlZCAgICAgfCA0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgdHlwZSAgICAg fCAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgfCA4Cisg KiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVk ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMgorICogKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgMTYKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAg ICAgICAgdmFsdWUgbG93IDMyLWJpdCAgICAgICAgICAgICAgICAgICAgICAgICB8IDIwCisgKiAr LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlIGhpZ2ggMzIt Yml0ICAgICAgICAgICAgICAgICAgICAgICAgfCAyNAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgMjgKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC98CisgKiArLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCA2NAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKgorICogdHlwZSAt IHVpbnQ4X3QsIHR5cGUgb2YgdGhlIGNvbnRyb2wsIG9uZSBvZiB0aGUgWEVOQ0FNRVJBX0NUUkxf WFhYLgorICogdmFsdWUgLSBpbnQ2NF90LCBuZXcgdmFsdWUgb2YgdGhlIGNvbnRyb2wuCisgKgor ICogTm90ZXM6CisgKiAgLSB0aGlzIGV2ZW50IGlzIG5vdCBzZW50IGZvciB3cml0ZS1vbmx5IGNv bnRyb2xzCisgKiAgLSB0aGlzIGV2ZW50IGlzIG5vdCBzZW50IHRvIHRoZSBvcmlnaW5hdG9yIG9m IHRoZSBjb250cm9sIGNoYW5nZQorICogIC0gdGhpcyBldmVudCBpcyBub3Qgc2VudCB3aGVuIGZy b250ZW5kIGZpcnN0IGNvbm5lY3RzLCBlLmcuIGluaXRpYWwKKyAqICAgIGNvbnRyb2wgc3RhdGUg bXVzdCBiZSBleHBsaWNpdGx5IHF1ZXJpZWQKKyAqLworCitzdHJ1Y3QgeGVuY2FtZXJhX3JlcSB7 CisgICAgdWludDE2X3QgaWQ7CisgICAgdWludDhfdCBvcGVyYXRpb247CisgICAgdWludDhfdCBy ZXNlcnZlZFs1XTsKKyAgICB1bmlvbiB7CisgICAgICAgIHN0cnVjdCB4ZW5jYW1lcmFfY29uZmln X3JlcSBjb25maWc7CisgICAgICAgIHN0cnVjdCB4ZW5jYW1lcmFfZnJhbWVfcmF0ZV9yZXEgZnJh bWVfcmF0ZTsKKyAgICAgICAgc3RydWN0IHhlbmNhbWVyYV9idWZfcmVxdWVzdCBidWZfcmVxdWVz dDsKKyAgICAgICAgc3RydWN0IHhlbmNhbWVyYV9idWZfY3JlYXRlX3JlcSBidWZfY3JlYXRlOwor ICAgICAgICBzdHJ1Y3QgeGVuY2FtZXJhX2luZGV4IGluZGV4OworICAgICAgICBzdHJ1Y3QgeGVu Y2FtZXJhX2N0cmxfdmFsdWUgY3RybF92YWx1ZTsKKyAgICAgICAgc3RydWN0IHhlbmNhbWVyYV9n ZXRfY3RybF9yZXEgZ2V0X2N0cmw7CisgICAgICAgIHVpbnQ4X3QgcmVzZXJ2ZWRbNTZdOworICAg IH0gcmVxOworfTsKKworc3RydWN0IHhlbmNhbWVyYV9yZXNwIHsKKyAgICB1aW50MTZfdCBpZDsK KyAgICB1aW50OF90IG9wZXJhdGlvbjsKKyAgICB1aW50OF90IHJlc2VydmVkOworICAgIGludDMy X3Qgc3RhdHVzOworICAgIHVuaW9uIHsKKyAgICAgICAgc3RydWN0IHhlbmNhbWVyYV9jb25maWdf cmVzcCBjb25maWc7CisgICAgICAgIHN0cnVjdCB4ZW5jYW1lcmFfYnVmX2dldF9sYXlvdXRfcmVz cCBidWZfbGF5b3V0OworICAgICAgICBzdHJ1Y3QgeGVuY2FtZXJhX2J1Zl9yZXF1ZXN0IGJ1Zl9y ZXF1ZXN0OworICAgICAgICBzdHJ1Y3QgeGVuY2FtZXJhX2N0cmxfZW51bV9yZXNwIGN0cmxfZW51 bTsKKyAgICAgICAgc3RydWN0IHhlbmNhbWVyYV9jdHJsX3ZhbHVlIGN0cmxfdmFsdWU7CisgICAg ICAgIHVpbnQ4X3QgcmVzZXJ2ZWQxWzU2XTsKKyAgICB9IHJlc3A7Cit9OworCitzdHJ1Y3QgeGVu Y2FtZXJhX2V2dCB7CisgICAgdWludDE2X3QgaWQ7CisgICAgdWludDhfdCB0eXBlOworICAgIHVp bnQ4X3QgcmVzZXJ2ZWRbNV07CisgICAgdW5pb24geworICAgICAgICBzdHJ1Y3QgeGVuY2FtZXJh X2ZyYW1lX2F2YWlsX2V2dCBmcmFtZV9hdmFpbDsKKyAgICAgICAgc3RydWN0IHhlbmNhbWVyYV9j dHJsX3ZhbHVlIGN0cmxfdmFsdWU7CisgICAgICAgIHVpbnQ4X3QgcmVzZXJ2ZWRbNTZdOworICAg IH0gZXZ0OworfTsKKworREVGSU5FX1JJTkdfVFlQRVMoeGVuX2NhbWVyYWlmLCBzdHJ1Y3QgeGVu Y2FtZXJhX3JlcSwgc3RydWN0IHhlbmNhbWVyYV9yZXNwKTsKKworLyoKKyAqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKKyAqICAgICAgICAgICAgICAgICAgICAgICAgQmFjayB0byBmcm9udCBldmVudHMg ZGVsaXZlcnkKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEluIG9yZGVyIHRvIGRlbGl2ZXIg YXN5bmNocm9ub3VzIGV2ZW50cyBmcm9tIGJhY2sgdG8gZnJvbnQgYSBzaGFyZWQgcGFnZSBpcwor ICogYWxsb2NhdGVkIGJ5IGZyb250IGFuZCBpdHMgZ3JhbnRlZCByZWZlcmVuY2UgcHJvcGFnYXRl ZCB0byBiYWNrIHZpYQorICogWGVuU3RvcmUgZW50cmllcyAoZXZ0LXJpbmctcmVmL2V2dC1ldmVu dC1jaGFubmVsKS4KKyAqIFRoaXMgcGFnZSBoYXMgYSBjb21tb24gaGVhZGVyIHVzZWQgYnkgYm90 aCBmcm9udCBhbmQgYmFjayB0byBzeW5jaHJvbml6ZQorICogYWNjZXNzIGFuZCBjb250cm9sIGV2 ZW50J3MgcmluZyBidWZmZXIsIHdoaWxlIGJhY2sgYmVpbmcgYSBwcm9kdWNlciBvZiB0aGUKKyAq IGV2ZW50cyBhbmQgZnJvbnQgYmVpbmcgYSBjb25zdW1lci4gVGhlIHJlc3Qgb2YgdGhlIHBhZ2Ug YWZ0ZXIgdGhlIGhlYWRlcgorICogaXMgdXNlZCBmb3IgZXZlbnQgcGFja2V0cy4KKyAqCisgKiBV cG9uIHJlY2VwdGlvbiBvZiBhbiBldmVudChzKSBmcm9udCBtYXkgY29uZmlybSBpdHMgcmVjZXB0 aW9uCisgKiBmb3IgZWl0aGVyIGVhY2ggZXZlbnQsIGdyb3VwIG9mIGV2ZW50cyBvciBub25lLgor ICovCisKK3N0cnVjdCB4ZW5jYW1lcmFfZXZlbnRfcGFnZSB7CisgICAgdWludDMyX3QgaW5fY29u czsKKyAgICB1aW50MzJfdCBpbl9wcm9kOworICAgIHVpbnQ4X3QgcmVzZXJ2ZWRbNTZdOworfTsK KworI2RlZmluZSBYRU5DQU1FUkFfRVZFTlRfUEFHRV9TSVpFIDQwOTYKKyNkZWZpbmUgWEVOQ0FN RVJBX0lOX1JJTkdfT0ZGUyAoc2l6ZW9mKHN0cnVjdCB4ZW5jYW1lcmFfZXZlbnRfcGFnZSkpCisj ZGVmaW5lIFhFTkNBTUVSQV9JTl9SSU5HX1NJWkUgKFhFTkNBTUVSQV9FVkVOVF9QQUdFX1NJWkUg LSBYRU5DQU1FUkFfSU5fUklOR19PRkZTKQorI2RlZmluZSBYRU5DQU1FUkFfSU5fUklOR19MRU4g KFhFTkNBTUVSQV9JTl9SSU5HX1NJWkUgLyBzaXplb2Yoc3RydWN0IHhlbmNhbWVyYV9ldnQpKQor I2RlZmluZSBYRU5DQU1FUkFfSU5fUklORyhwYWdlKSBcCisgICAgKChzdHJ1Y3QgeGVuY2FtZXJh X2V2dCAqKSgoY2hhciAqKShwYWdlKSArIFhFTkNBTUVSQV9JTl9SSU5HX09GRlMpKQorI2RlZmlu ZSBYRU5DQU1FUkFfSU5fUklOR19SRUYocGFnZSwgaWR4KSBcCisgICAgKFhFTkNBTUVSQV9JTl9S SU5HKChwYWdlKSlbKGlkeCkgJSBYRU5DQU1FUkFfSU5fUklOR19MRU5dKQorCisjZW5kaWYgLyog X19YRU5fUFVCTElDX0lPX0NBTUVSQUlGX0hfXyAqLworCisvKgorICogTG9jYWwgdmFyaWFibGVz OgorICogbW9kZTogQworICogYy1maWxlLXN0eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6 IDQKKyAqIHRhYi13aWR0aDogNAorICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6Cisg Ki8KLS0gCjIuMjEuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qu b3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2 ZWw=