Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nVccP-0001ca-6o for pgsql-hackers@arkaria.postgresql.org; Sat, 19 Mar 2022 17:11:58 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nVccM-0008EZ-Hq for pgsql-hackers@arkaria.postgresql.org; Sat, 19 Mar 2022 17:11:54 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nVccL-0008EO-4f for pgsql-hackers@lists.postgresql.org; Sat, 19 Mar 2022 17:11:54 +0000 Received: from mail-lj1-x229.google.com ([2a00:1450:4864:20::229]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1nVccB-0007zq-HU for pgsql-hackers@postgresql.org; Sat, 19 Mar 2022 17:11:51 +0000 Received: by mail-lj1-x229.google.com with SMTP id c15so14940480ljr.9 for ; Sat, 19 Mar 2022 10:11:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb.com; s=google; h=message-id:date:mime-version:user-agent:subject:content-language :from:to:cc:references:in-reply-to; bh=1p/vGwlaj5pcwdwfBYFkjByVEFpyjtoEIsqpoRUfHew=; b=O0TaUgLlFFNTav+lLgGrDh8l4M7ArS9O3WjiBSaKPH0kZIhmoQETRR2ps28KkVC6mc 9x5WAISDBt9BNUcTOyZ+919Vvs/VY7rIb/U3uU57NgynZvGvxrB5tgfAOcM8ABCsOkTv pxYr06Rkrm2AJi5gxaqdPcglru5IZg+z6M6BudlSDdQm8x3hfBaIA57cekSd9KZIUOUk uEAFk7rfpUUoMmmfMCemnqu89MqmpOZc4vlgOkiXFbHabHGmlvuyz/jZdmFxpqLWA3Kr YckjWNuh78OkTrrZ+ZaVgIgtRVqPaO1+D18LkuYr6HNJ+q6cmKQ+8W0M/JrY0cjYpXdX qGQw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:date:mime-version:user-agent:subject :content-language:from:to:cc:references:in-reply-to; bh=1p/vGwlaj5pcwdwfBYFkjByVEFpyjtoEIsqpoRUfHew=; b=NEyPp9bnxzRlKnCcXUYtqY2CV5xVw+L2OdynRMvrwaBqoAkKPkYbPJXiGLJpeS1xAs Y29R58RO7qHOLuz6nEzYTt16mG8sVbMDjkR+/yiQENis4z/wpHzHlXL5IH6aUdHhIy4h 70wXdWWFtjwYBEN++uxEwHdd0gELBnOntzica0ypuS1d61KK5UenJTLPd7uvM45gZZ1X MqOa9tKX+QQNi2GigYz8x2zGlfXHTa/RiHudcuL/emfYKIMwpIq9RzqkV3OceKnNUqmo vC4VbrXa6DL9Y0hjifz7DucjijC2lvFb0ihyttzbLAQs2K5/++66Zdsmsb0f8Eh+pqtX C3PQ== X-Gm-Message-State: AOAM533qtY6Kj05Oq5HkaPF9pqp4Ac4hftMVKZyX6j9GlL2jgzA75hJ4 0T8g5mcximfxXPXfByluWqbjF2P/OFkrgjUp+AjauL+jPT3telAxBoGSxPg7Vdu6EyJyz1HLSid RM98lTeSHa8NCI6RUtbhKMjN7VSTf2LwM4Y4/eoynkWAD8TnPWfEQ/+DjDTBu7d2YEbV+TbjGec uPnUELeyAsCUbG0uPj/axMjqVvP9hHJ6FfyVmE X-Google-Smtp-Source: ABdhPJw3hg8daXTtej5p8FEkt5Ornl1efO1LZ4xMQJL2y0/sGZCjxhu7rioUuD164SulEGs05HEwbA== X-Received: by 2002:a2e:b8d6:0:b0:248:c07:37b5 with SMTP id s22-20020a2eb8d6000000b002480c0737b5mr9558362ljp.466.1647709900852; Sat, 19 Mar 2022 10:11:40 -0700 (PDT) Received: from [10.137.0.17] (37-247-27-82.customers.ownit.se. [37.247.27.82]) by smtp.gmail.com with ESMTPSA id a10-20020ac2504a000000b00448bcec87e9sm1240944lfm.121.2022.03.19.10.11.39 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 19 Mar 2022 10:11:40 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------C62tn8qm0F0948cak4yW07iB" Message-ID: <9f551740-1395-f73d-a792-9d487f8074db@enterprisedb.com> Date: Sat, 19 Mar 2022 18:11:38 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.6.2 Subject: Re: Column Filtering in Logical Replication Content-Language: en-US From: Tomas Vondra To: Amit Kapila Cc: "houzj.fnst@fujitsu.com" , Peter Eisentraut , Alvaro Herrera , Justin Pryzby , Rahila Syed , Peter Smith , pgsql-hackers , "shiy.fnst@fujitsu.com" References: <202201120041.p24wvsfcsope@alvherre.pgsql> <78b8d385-57cb-9a3f-cfe5-9f300f15eced@enterprisedb.com> <822a8e40-287c-59ff-0ea9-35eb759f4fe6@enterprisedb.com> <2b8471f9-3849-c91f-ef82-9181d4bca0a7@enterprisedb.com> <16e83ce3-8415-b732-37b2-c3329a2c13a1@enterprisedb.com> <3162f7f0-86ac-e3a9-dc55-0a660cb9bab1@enterprisedb.com> In-Reply-To: X-CLOUD-SEC-AV-Info: enterprisedb,google_mail,monitor X-CLOUD-SEC-AV-Sent: true X-Gm-Spam: 0 X-Gm-Phishy: 0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------C62tn8qm0F0948cak4yW07iB Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Fix a compiler warning reported by cfbot. -- Tomas Vondra EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company --------------C62tn8qm0F0948cak4yW07iB Content-Type: text/x-patch; charset=UTF-8; name="0001-Allow-specifying-column-lists-for-logical--20220318b.patch" Content-Disposition: attachment; filename*0="0001-Allow-specifying-column-lists-for-logical--20220318b.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBlN2MzNTdlYTQzODY4ZTJjZTk4M2MyNDNjOThiODNiMTEyMWE1ZTZhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogVGh1LCAxNyBNYXIgMjAyMiAxOToxNjozOSArMDEwMApTdWJq ZWN0OiBbUEFUQ0hdIEFsbG93IHNwZWNpZnlpbmcgY29sdW1uIGxpc3RzIGZvciBsb2dpY2Fs IHJlcGxpY2F0aW9uCgpUaGlzIGFsbG93cyBzcGVjaWZ5aW5nIGFuIG9wdGlvbmFsIGNvbHVt biBsaXN0IHdoZW4gYWRkaW5nIGEgdGFibGUgdG8KbG9naWNhbCByZXBsaWNhdGlvbi4gQ29s dW1ucyBub3QgaW5jbHVkZWQgb24gdGhpcyBsaXN0IGFyZSBub3Qgc2VudCB0bwp0aGUgc3Vi c2NyaWJlci4gVGhlIGxpc3QgaXMgc3BlY2lmaWVkIGFmdGVyIHRoZSB0YWJsZSBuYW1lLCBl bmNsb3NlZAppbiBwYXJlbnRoZXNlcy4KCkZvciBVUERBVEUvREVMRVRFIHB1YmxpY2F0aW9u cywgdGhlIGNvbHVtbiBsaXN0IG5lZWRzIHRvIGNvdmVyIGFsbApSRVBMSUNBIElERU5USVRZ IGNvbHVtbnMuIEZvciBJTlNFUlQgcHVibGljYXRpb25zLCB0aGUgY29sdW1uIGxpc3QgaXMK YXJiaXRyYXJ5IGFuZCBtYXkgb21pdCBzb21lIFJFUExJQ0EgSURFTlRJVFkgY29sdW1ucy4g RnVydGhlcm1vcmUsIGlmCnRoZSB0YWJsZSB1c2VzIFJFUExJQ0EgSURFTlRJVFkgRlVMTCwg Y29sdW1uIGxpc3QgaXMgbm90IGFsbG93ZWQuCgpUaGUgY29sdW1uIGxpc3QgY2FuIGNvbnRh aW4gb25seSBzaW1wbGUgY29sdW1uIHJlZmVyZW5jZXMuIENvbXBsZXgKZXhwcmVzc2lvbnMs IGZ1bmN0aW9uIGNhbGxzIGV0Yy4gYXJlIG5vdCBhbGxvd2VkLiBUaGlzIHJlc3RyaWN0aW9u IGNvdWxkCmJlIHJlbGF4ZWQgaW4gdGhlIGZ1dHVyZS4KCkR1cmluZyB0aGUgaW5pdGlhbCB0 YWJsZSBzeW5jaHJvbml6YXRpb24sIG9ubHkgY29sdW1ucyBzcGVjaWZpZWQgaW4gdGhlCmNv bHVtbiBsaXN0IGFyZSBjb3BpZWQgdG8gdGhlIHN1YnNjcmliZXIuIElmIHRoZSBzdWJzY3Jp cHRpb24gaGFzCnNldmVyYWwgcHVibGljYXRpb25zLCBjb250YWluaW5nIHRoZSBzYW1lIHRh YmxlIHdpdGggZGlmZmVyZW50IGNvbHVtbgpsaXN0cywgY29sdW1ucyBzcGVjaWZpZWQgaW4g YW55IG9mIHRoZSBsaXN0cyB3aWxsIGJlIGNvcGllZC4gVGhpcwptZWFucyBhbGwgY29sdW1u cyBhcmUgcmVwbGljYXRlZCBpZiB0aGUgdGFibGUgaGFzIG5vIGNvbHVtbiBsaXN0IGF0CmFs bCAod2hpY2ggaXMgdHJlYXRlZCBhcyBjb2x1bW4gbGlzdCB3aXRoIGFsbCBjb2x1bW5zKSwg b2Ygd2hlbiBvZiB0aGUKcHVibGljYXRpb25zIGlzIGRlZmluZWQgYXMgRk9SIEFMTCBUQUJM RVMgKHBvc3NpYmx5IElOIFNDSEVNQSBmb3IgdGhlCnNjaGVtYSBvZiB0aGUgdGFibGUpLgoK Rm9yIHBhcnRpdGlvbmVkIHRhYmxlcywgcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgZGV0 ZXJtaW5lcyB3aGV0aGVyCnRoZSBjb2x1bW4gbGlzdCBmb3IgdGhlIHJvb3Qgb3IgbGVhZiBy ZWxhdGlvbiB3aWxsIGJlIHVzZWQuIElmIHRoZQpwYXJhbWV0ZXIgaXMgJ2ZhbHNlJyAodGhl IGRlZmF1bHQpLCB0aGUgbGlzdCBkZWZpbmVkIGZvciB0aGUgbGVhZgpyZWxhdGlvbiBpcyB1 c2VkLiBPdGhlcndpc2UsIHRoZSBjb2x1bW4gbGlzdCBmb3IgdGhlIHJvb3QgcGFydGl0aW9u CndpbGwgYmUgdXNlZC4KClBzcWwgY29tbWFuZHMgXGRScCsgYW5kIFxkIDx0YWJsZS1uYW1l PiBub3cgZGlzcGxheSBhbnkgY29sdW1uIGxpc3RzLgoKQXV0aG9yOiBUb21hcyBWb25kcmEs IFJhaGlsYSBTeWVkClJldmlld2VkLWJ5OiBQZXRlciBFaXNlbnRyYXV0LCBBbHZhcm8gSGVy cmVyYSwgVmlnbmVzaCBDLCBJYnJhciBBaG1lZCwKQW1pdCBLYXBpbGEsIEhvdSB6aiwgUGV0 ZXIgU21pdGgsIFdhbmcgd2VpLCBUYW5nLCBTaGkgeXUKRGlzY3Vzc2lvbjogaHR0cHM6Ly9w b3N0Z3IuZXMvbS9DQUgyTDI4dmRkQl9ORmRSVnB1eVJCSkVCV2p6NEJTeVRCPV9la3ROUkg4 TkoxamY5NWdAbWFpbC5nbWFpbC5jb20KLS0tCiBkb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dt bCAgICAgICAgICAgICAgICAgIHwgICAxNSArLQogZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNn bWwgICAgICAgICAgICAgICAgICB8ICAgIDMgKy0KIGRvYy9zcmMvc2dtbC9yZWYvYWx0ZXJf cHVibGljYXRpb24uc2dtbCAgICAgfCAgIDE4ICstCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0 ZV9wdWJsaWNhdGlvbi5zZ21sICAgIHwgICAxNyArLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9w Z19wdWJsaWNhdGlvbi5jICAgICAgICB8ICAyMjEgKysrKwogc3JjL2JhY2tlbmQvY29tbWFu ZHMvcHVibGljYXRpb25jbWRzLmMgICAgICB8ICAyNzIgKysrKy0KIHNyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNSZXBsaWNhdGlvbi5jICAgICAgfCAgIDE5ICstCiBzcmMvYmFja2VuZC9u b2Rlcy9jb3B5ZnVuY3MuYyAgICAgICAgICAgICAgIHwgICAgMSArCiBzcmMvYmFja2VuZC9u b2Rlcy9lcXVhbGZ1bmNzLmMgICAgICAgICAgICAgIHwgICAgMSArCiBzcmMvYmFja2VuZC9w YXJzZXIvZ3JhbS55ICAgICAgICAgICAgICAgICAgIHwgICAzMyArLQogc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jICAgICB8ICAgNjEgKy0KIHNyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMgfCAgMTU2ICsrLQogc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyB8ICAyMDIgKysrLQogc3JjL2Jh Y2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYyAgICAgICAgICB8ICAgMzMgKy0KIHNyYy9i aW4vcGdfZHVtcC9wZ19kdW1wLmMgICAgICAgICAgICAgICAgICAgfCAgIDQ3ICstCiBzcmMv YmluL3BnX2R1bXAvcGdfZHVtcC5oICAgICAgICAgICAgICAgICAgIHwgICAgMSArCiBzcmMv YmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbCAgICAgICAgICAgIHwgICA2MCArCiBzcmMv YmluL3BzcWwvZGVzY3JpYmUuYyAgICAgICAgICAgICAgICAgICAgIHwgICA0MCArLQogc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oICAgICAgICB8ICAgMTQgKwogc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbl9yZWwuaCAgICB8ICAgIDEgKwogc3Jj L2luY2x1ZGUvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmggICAgICB8ICAgIDQgKy0KIHNy Yy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAgICAgICAgICAgfCAgICAxICsKIHNy Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oICAgICAgfCAgICA2ICstCiBz cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dCAgIHwgIDM3MiArKysr KysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbCAgICAgICAgfCAgMjg3 ICsrKysrCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzBfY29sdW1uX2xpc3QucGwgIHwg MTEyNCArKysrKysrKysrKysrKysrKysrCiAyNiBmaWxlcyBjaGFuZ2VkLCAyOTE1IGluc2Vy dGlvbnMoKyksIDk0IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0 L3N1YnNjcmlwdGlvbi90LzAzMF9jb2x1bW5fbGlzdC5wbAoKZGlmZiAtLWdpdCBhL2RvYy9z cmMvc2dtbC9jYXRhbG9ncy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKaW5k ZXggNGRjNWIzNGQyMWMuLjg5ODI3YzM3M2JkIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwv Y2F0YWxvZ3Muc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbApAQCAtNDQx MCw3ICs0NDEwLDcgQEAgU0NSQU0tU0hBLTI1NiQ8cmVwbGFjZWFibGU+Jmx0O2l0ZXJhdGlv biBjb3VudCZndDs8L3JlcGxhY2VhYmxlPjo8cmVwbGFjZWFibGU+JmwKICAgICAgIDwvcGFy YT4KICAgICAgIDxwYXJhPgogICAgICAgIFRoaXMgaXMgYW4gYXJyYXkgb2YgPHN0cnVjdGZp ZWxkPmluZG5hdHRzPC9zdHJ1Y3RmaWVsZD4gdmFsdWVzIHRoYXQKLSAgICAgICBpbmRpY2F0 ZSB3aGljaCB0YWJsZSBjb2x1bW5zIHRoaXMgaW5kZXggaW5kZXhlcy4gIEZvciBleGFtcGxl IGEgdmFsdWUKKyAgICAgICBpbmRpY2F0ZSB3aGljaCB0YWJsZSBjb2x1bW5zIHRoaXMgaW5k ZXggaW5kZXhlcy4gIEZvciBleGFtcGxlLCBhIHZhbHVlCiAgICAgICAgb2YgPGxpdGVyYWw+ MSAzPC9saXRlcmFsPiB3b3VsZCBtZWFuIHRoYXQgdGhlIGZpcnN0IGFuZCB0aGUgdGhpcmQg dGFibGUKICAgICAgICBjb2x1bW5zIG1ha2UgdXAgdGhlIGluZGV4IGVudHJpZXMuICBLZXkg Y29sdW1ucyBjb21lIGJlZm9yZSBub24ta2V5CiAgICAgICAgKGluY2x1ZGVkKSBjb2x1bW5z LiAgQSB6ZXJvIGluIHRoaXMgYXJyYXkgaW5kaWNhdGVzIHRoYXQgdGhlCkBAIC02MjgxLDYg KzYyODEsMTkgQEAgU0NSQU0tU0hBLTI1NiQ8cmVwbGFjZWFibGU+Jmx0O2l0ZXJhdGlvbiBj b3VudCZndDs8L3JlcGxhY2VhYmxlPjo8cmVwbGFjZWFibGU+JmwKICAgICAgICBSZWZlcmVu Y2UgdG8gc2NoZW1hCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CisKKyAg ICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFy YSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnByYXR0 cnM8L3N0cnVjdGZpZWxkPiA8dHlwZT5pbnQydmVjdG9yPC90eXBlPgorICAgICAgIChyZWZl cmVuY2VzIDxsaW5rIGxpbmtlbmQ9ImNhdGFsb2ctcGctYXR0cmlidXRlIj48c3RydWN0bmFt ZT5wZ19hdHRyaWJ1dGU8L3N0cnVjdG5hbWU+PC9saW5rPi48c3RydWN0ZmllbGQ+YXR0bnVt PC9zdHJ1Y3RmaWVsZD4pCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBU aGlzIGlzIGFuIGFycmF5IG9mIHZhbHVlcyB0aGF0IGluZGljYXRlcyB3aGljaCB0YWJsZSBj b2x1bW5zIGFyZQorICAgICAgIHBhcnQgb2YgdGhlIHB1YmxpY2F0aW9uLiAgRm9yIGV4YW1w bGUsIGEgdmFsdWUgb2YgPGxpdGVyYWw+MSAzPC9saXRlcmFsPgorICAgICAgIHdvdWxkIG1l YW4gdGhhdCB0aGUgZmlyc3QgYW5kIHRoZSB0aGlyZCB0YWJsZSBjb2x1bW5zIGFyZSBwdWJs aXNoZWQuCisgICAgICAgQSBudWxsIHZhbHVlIGluZGljYXRlcyB0aGF0IGFsbCBjb2x1bW5z IGFyZSBwdWJsaXNoZWQuCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CiAg ICAgPC90Ym9keT4KICAgIDwvdGdyb3VwPgogICA8L3RhYmxlPgpkaWZmIC0tZ2l0IGEvZG9j L3NyYy9zZ21sL3Byb3RvY29sLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcHJvdG9jb2wuc2dtbApp bmRleCA5MTc4Yzc3OWJhOS4uZmI0OTFlOWViZWUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dt bC9wcm90b2NvbC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21sCkBAIC03 MDA2LDcgKzcwMDYsOCBAQCBSZWxhdGlvbgogPC9saXN0aXRlbT4KIDwvdmFybGlzdGVudHJ5 PgogPC92YXJpYWJsZWxpc3Q+Ci0gICAgICAgIE5leHQsIHRoZSBmb2xsb3dpbmcgbWVzc2Fn ZSBwYXJ0IGFwcGVhcnMgZm9yIGVhY2ggY29sdW1uIChleGNlcHQgZ2VuZXJhdGVkIGNvbHVt bnMpOgorICAgICAgICBOZXh0LCB0aGUgZm9sbG93aW5nIG1lc3NhZ2UgcGFydCBhcHBlYXJz IGZvciBlYWNoIGNvbHVtbiBpbmNsdWRlZCBpbgorICAgICAgICB0aGUgcHVibGljYXRpb24g KGV4Y2VwdCBnZW5lcmF0ZWQgY29sdW1ucyk6CiA8dmFyaWFibGVsaXN0PgogPHZhcmxpc3Rl bnRyeT4KIDx0ZXJtPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9wdWJs aWNhdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9wdWJsaWNhdGlvbi5zZ21s CmluZGV4IDMyYjc1ZjZjNzhlLi45ZTlmYzE5ZGY3MSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL3JlZi9hbHRlcl9wdWJsaWNhdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYv YWx0ZXJfcHVibGljYXRpb24uc2dtbApAQCAtMzAsNyArMzAsNyBAQCBBTFRFUiBQVUJMSUNB VElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+ IFJFTkFNRSBUTyA8cgogCiA8cGhyYXNlPndoZXJlIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5wdWJsaWNhdGlvbl9vYmplY3Q8L3JlcGxhY2VhYmxlPiBpcyBvbmUgb2Y6PC9w aHJhc2U+CiAKLSAgICBUQUJMRSBbIE9OTFkgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKiBdIFsgV0hFUkUgKCA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+ICkgXSBb LCAuLi4gXQorICAgIFRBQkxFIFsgT05MWSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAqIF0gWyAoIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkg XSBbIFdIRVJFICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4cHJlc3Npb248 L3JlcGxhY2VhYmxlPiApIF0gWywgLi4uIF0KICAgICBBTEwgVEFCTEVTIElOIFNDSEVNQSB7 IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zY2hlbWFfbmFtZTwvcmVwbGFjZWFi bGU+IHwgQ1VSUkVOVF9TQ0hFTUEgfSBbLCAuLi4gXQogPC9zeW5vcHNpcz4KICA8L3JlZnN5 bm9wc2lzZGl2PgpAQCAtMTEyLDYgKzExMiwxNCBAQCBBTFRFUiBQVUJMSUNBVElPTiA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFJFTkFNRSBU TyA8cgogICAgICAgc3BlY2lmaWVkLCB0aGUgdGFibGUgYW5kIGFsbCBpdHMgZGVzY2VuZGFu dCB0YWJsZXMgKGlmIGFueSkgYXJlCiAgICAgICBhZmZlY3RlZC4gIE9wdGlvbmFsbHksIDxs aXRlcmFsPio8L2xpdGVyYWw+IGNhbiBiZSBzcGVjaWZpZWQgYWZ0ZXIgdGhlIHRhYmxlCiAg ICAgICBuYW1lIHRvIGV4cGxpY2l0bHkgaW5kaWNhdGUgdGhhdCBkZXNjZW5kYW50IHRhYmxl cyBhcmUgaW5jbHVkZWQuCisgICAgIDwvcGFyYT4KKworICAgICA8cGFyYT4KKyAgICAgIE9w dGlvbmFsbHksIGEgY29sdW1uIGxpc3QgY2FuIGJlIHNwZWNpZmllZC4gIFNlZSA8eHJlZgor ICAgICAgbGlua2VuZD0ic3FsLWNyZWF0ZXB1YmxpY2F0aW9uIi8+IGZvciBkZXRhaWxzLgor ICAgICA8L3BhcmE+CisKKyAgICAgPHBhcmE+CiAgICAgICBJZiB0aGUgb3B0aW9uYWwgPGxp dGVyYWw+V0hFUkU8L2xpdGVyYWw+IGNsYXVzZSBpcyBzcGVjaWZpZWQsIHJvd3MgZm9yCiAg ICAgICB3aGljaCB0aGUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4cHJlc3Np b248L3JlcGxhY2VhYmxlPgogICAgICAgZXZhbHVhdGVzIHRvIGZhbHNlIG9yIG51bGwgd2ls bCBub3QgYmUgcHVibGlzaGVkLiBOb3RlIHRoYXQgcGFyZW50aGVzZXMKQEAgLTE3NCw3ICsx ODIsMTMgQEAgQUxURVIgUFVCTElDQVRJT04gbm9pbnNlcnQgU0VUIChwdWJsaXNoID0gJ3Vw ZGF0ZSwgZGVsZXRlJyk7CiAgIDxwYXJhPgogICAgQWRkIHNvbWUgdGFibGVzIHRvIHRoZSBw dWJsaWNhdGlvbjoKIDxwcm9ncmFtbGlzdGluZz4KLUFMVEVSIFBVQkxJQ0FUSU9OIG15cHVi bGljYXRpb24gQUREIFRBQkxFIHVzZXJzLCBkZXBhcnRtZW50czsKK0FMVEVSIFBVQkxJQ0FU SU9OIG15cHVibGljYXRpb24gQUREIFRBQkxFIHVzZXJzICh1c2VyX2lkLCBmaXJzdG5hbWUp LCBkZXBhcnRtZW50czsKKzwvcHJvZ3JhbWxpc3Rpbmc+PC9wYXJhPgorCisgIDxwYXJhPgor ICAgQ2hhbmdlIHRoZSBzZXQgb2YgY29sdW1ucyBwdWJsaXNoZWQgZm9yIGEgdGFibGU6Cis8 cHJvZ3JhbWxpc3Rpbmc+CitBTFRFUiBQVUJMSUNBVElPTiBteXB1YmxpY2F0aW9uIFNFVCBU QUJMRSB1c2VycyAodXNlcl9pZCwgZmlyc3RuYW1lLCBsYXN0bmFtZSksIFRBQkxFIGRlcGFy dG1lbnRzOwogPC9wcm9ncmFtbGlzdGluZz48L3BhcmE+CiAKICAgPHBhcmE+CmRpZmYgLS1n aXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9wdWJsaWNhdGlvbi5zZ21sIGIvZG9jL3Ny Yy9zZ21sL3JlZi9jcmVhdGVfcHVibGljYXRpb24uc2dtbAppbmRleCA0OTc5YjliNjQ2ZC4u ZmIyZDAxMzM5M2IgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3B1Ymxp Y2F0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfcHVibGljYXRpb24u c2dtbApAQCAtMjgsNyArMjgsNyBAQCBDUkVBVEUgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgogCiA8cGhyYXNlPndoZXJl IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJsaWNhdGlvbl9vYmplY3Q8L3Jl cGxhY2VhYmxlPiBpcyBvbmUgb2Y6PC9waHJhc2U+CiAKLSAgICBUQUJMRSBbIE9OTFkgXSA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+ IFsgKiBdIFsgV0hFUkUgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhwcmVz c2lvbjwvcmVwbGFjZWFibGU+ICkgXSBbLCAuLi4gXQorICAgIFRBQkxFIFsgT05MWSBdIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4g WyAqIF0gWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwv cmVwbGFjZWFibGU+IFssIC4uLiBdICkgXSBbIFdIRVJFICggPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiApIF0gWywgLi4uIF0KICAg ICBBTEwgVEFCTEVTIElOIFNDSEVNQSB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5zY2hlbWFfbmFtZTwvcmVwbGFjZWFibGU+IHwgQ1VSUkVOVF9TQ0hFTUEgfSBbLCAuLi4g XQogPC9zeW5vcHNpcz4KICA8L3JlZnN5bm9wc2lzZGl2PgpAQCAtODYsNiArODYsMTMgQEAg Q1JFQVRFIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1l PC9yZXBsYWNlYWJsZT4KICAgICAgIDxsaXRlcmFsPlRSVU5DQVRFPC9saXRlcmFsPiBjb21t YW5kcy4KICAgICAgPC9wYXJhPgogCisgICAgIDxwYXJhPgorICAgICAgV2hlbiBhIGNvbHVt biBsaXN0IGlzIHNwZWNpZmllZCwgb25seSB0aGUgbmFtZWQgY29sdW1ucyBhcmUgcmVwbGlj YXRlZC4KKyAgICAgIElmIG5vIGNvbHVtbiBsaXN0IGlzIHNwZWNpZmllZCwgYWxsIGNvbHVt bnMgb2YgdGhlIHRhYmxlIGFyZSByZXBsaWNhdGVkCisgICAgICB0aHJvdWdoIHRoaXMgcHVi bGljYXRpb24sIGluY2x1ZGluZyBhbnkgY29sdW1ucyBhZGRlZCBsYXRlci4gIElmIGEgY29s dW1uCisgICAgICBsaXN0IGlzIHNwZWNpZmllZCwgaXQgbXVzdCBpbmNsdWRlIHRoZSByZXBs aWNhIGlkZW50aXR5IGNvbHVtbnMuCisgICAgIDwvcGFyYT4KKwogICAgICA8cGFyYT4KICAg ICAgIE9ubHkgcGVyc2lzdGVudCBiYXNlIHRhYmxlcyBhbmQgcGFydGl0aW9uZWQgdGFibGVz IGNhbiBiZSBwYXJ0IG9mIGEKICAgICAgIHB1YmxpY2F0aW9uLiAgVGVtcG9yYXJ5IHRhYmxl cywgdW5sb2dnZWQgdGFibGVzLCBmb3JlaWduIHRhYmxlcywKQEAgLTMyNyw2ICszMzQsMTQg QEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIHByb2R1Y3Rpb25fcHVibGljYXRpb24gRk9SIFRBQkxF IHVzZXJzLCBkZXBhcnRtZW50cywgQUxMIFRBQkwKICAgIDxzdHJ1Y3RuYW1lPnNhbGVzPC9z dHJ1Y3RuYW1lPjoKIDxwcm9ncmFtbGlzdGluZz4KIENSRUFURSBQVUJMSUNBVElPTiBzYWxl c19wdWJsaWNhdGlvbiBGT1IgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgbWFya2V0aW5nLCBzYWxl czsKKzwvcHJvZ3JhbWxpc3Rpbmc+PC9wYXJhPgorCisgIDxwYXJhPgorICAgQ3JlYXRlIGEg cHVibGljYXRpb24gdGhhdCBwdWJsaXNoZXMgYWxsIGNoYW5nZXMgZm9yIHRhYmxlIDxzdHJ1 Y3RuYW1lPnVzZXJzPC9zdHJ1Y3RuYW1lPiwKKyAgIGJ1dCByZXBsaWNhdGVzIG9ubHkgY29s dW1ucyA8c3RydWN0bmFtZT51c2VyX2lkPC9zdHJ1Y3RuYW1lPiBhbmQKKyAgIDxzdHJ1Y3Ru YW1lPmZpcnN0bmFtZTwvc3RydWN0bmFtZT46Cis8cHJvZ3JhbWxpc3Rpbmc+CitDUkVBVEUg UFVCTElDQVRJT04gdXNlcnNfZmlsdGVyZWQgRk9SIFRBQkxFIHVzZXJzICh1c2VyX2lkLCBm aXJzdG5hbWUpOwogPC9wcm9ncmFtbGlzdGluZz48L3BhcmE+CiAgPC9yZWZzZWN0MT4KIApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jIGIvc3Jj L2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCmluZGV4IDc4OWI4OTVkYjg5Li41 NGVhOGE0Y2NjYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNh dGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYwpAQCAt NDUsNiArNDUsOSBAQAogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgogI2luY2x1ZGUgInV0aWxz L3N5c2NhY2hlLmgiCiAKK3N0YXRpYyB2b2lkIHB1YmxpY2F0aW9uX3RyYW5zbGF0ZV9jb2x1 bW5zKFJlbGF0aW9uIHRhcmdldHJlbCwgTGlzdCAqY29sdW1ucywKKwkJCQkJCQkJCQkgIGlu dCAqbmF0dHMsIEF0dHJOdW1iZXIgKiphdHRycyk7CisKIC8qCiAgKiBDaGVjayBpZiByZWxh dGlvbiBjYW4gYmUgaW4gZ2l2ZW4gcHVibGljYXRpb24gYW5kIHRocm93cyBhcHByb3ByaWF0 ZQogICogZXJyb3IgaWYgbm90LgpAQCAtMzQ1LDYgKzM0OCw4IEBAIHB1YmxpY2F0aW9uX2Fk ZF9yZWxhdGlvbihPaWQgcHViaWQsIFB1YmxpY2F0aW9uUmVsSW5mbyAqcHJpLAogCU9pZAkJ CXJlbGlkID0gUmVsYXRpb25HZXRSZWxpZCh0YXJnZXRyZWwpOwogCU9pZAkJCXB1YnJlbG9p ZDsKIAlQdWJsaWNhdGlvbiAqcHViID0gR2V0UHVibGljYXRpb24ocHViaWQpOworCUF0dHJO dW1iZXIgKmF0dGFycmF5OworCWludAkJCW5hdHRzID0gMDsKIAlPYmplY3RBZGRyZXNzIG15 c2VsZiwKIAkJCQlyZWZlcmVuY2VkOwogCUxpc3QJICAgKnJlbGlkcyA9IE5JTDsKQEAgLTM3 Miw2ICszNzcsMTQgQEAgcHVibGljYXRpb25fYWRkX3JlbGF0aW9uKE9pZCBwdWJpZCwgUHVi bGljYXRpb25SZWxJbmZvICpwcmksCiAKIAljaGVja19wdWJsaWNhdGlvbl9hZGRfcmVsYXRp b24odGFyZ2V0cmVsKTsKIAorCS8qCisJICogVHJhbnNsYXRlIGNvbHVtbiBuYW1lcyB0byBh dHRudW1zIGFuZCBtYWtlIHN1cmUgdGhlIGNvbHVtbiBsaXN0IGNvbnRhaW5zCisJICogb25s eSBhbGxvd2VkIGVsZW1lbnRzIChubyBzeXN0ZW0gb3IgZ2VuZXJhdGVkIGNvbHVtbnMgZXRj LikuIEFsc28gYnVpbGQKKwkgKiBhbiBhcnJheSBvZiBhdHRudW1zLCBmb3Igc3RvcmluZyBp biB0aGUgY2F0YWxvZy4KKwkgKi8KKwlwdWJsaWNhdGlvbl90cmFuc2xhdGVfY29sdW1ucyhw cmktPnJlbGF0aW9uLCBwcmktPmNvbHVtbnMsCisJCQkJCQkJCSAgJm5hdHRzLCAmYXR0YXJy YXkpOworCiAJLyogRm9ybSBhIHR1cGxlLiAqLwogCW1lbXNldCh2YWx1ZXMsIDAsIHNpemVv Zih2YWx1ZXMpKTsKIAltZW1zZXQobnVsbHMsIGZhbHNlLCBzaXplb2YobnVsbHMpKTsKQEAg LTM5MCw2ICs0MDMsMTIgQEAgcHVibGljYXRpb25fYWRkX3JlbGF0aW9uKE9pZCBwdWJpZCwg UHVibGljYXRpb25SZWxJbmZvICpwcmksCiAJZWxzZQogCQludWxsc1tBbnVtX3BnX3B1Ymxp Y2F0aW9uX3JlbF9wcnF1YWwgLSAxXSA9IHRydWU7CiAKKwkvKiBBZGQgY29sdW1uIGxpc3Qs IGlmIGF2YWlsYWJsZSAqLworCWlmIChwcmktPmNvbHVtbnMpCisJCXZhbHVlc1tBbnVtX3Bn X3B1YmxpY2F0aW9uX3JlbF9wcmF0dHJzIC0gMV0gPSBQb2ludGVyR2V0RGF0dW0oYnVpbGRp bnQydmVjdG9yKGF0dGFycmF5LCBuYXR0cykpOworCWVsc2UKKwkJbnVsbHNbQW51bV9wZ19w dWJsaWNhdGlvbl9yZWxfcHJhdHRycyAtIDFdID0gdHJ1ZTsKKwogCXR1cCA9IGhlYXBfZm9y bV90dXBsZShSZWxhdGlvbkdldERlc2NyKHJlbCksIHZhbHVlcywgbnVsbHMpOwogCiAJLyog SW5zZXJ0IHR1cGxlIGludG8gY2F0YWxvZy4gKi8KQEAgLTQxMyw2ICs0MzIsMTMgQEAgcHVi bGljYXRpb25fYWRkX3JlbGF0aW9uKE9pZCBwdWJpZCwgUHVibGljYXRpb25SZWxJbmZvICpw cmksCiAJCQkJCQkJCQkJREVQRU5ERU5DWV9OT1JNQUwsIERFUEVOREVOQ1lfTk9STUFMLAog CQkJCQkJCQkJCWZhbHNlKTsKIAorCS8qIEFkZCBkZXBlbmRlbmN5IG9uIHRoZSBjb2x1bW5z LCBpZiBhbnkgYXJlIGxpc3RlZCAqLworCWZvciAoaW50IGkgPSAwOyBpIDwgbmF0dHM7IGkr KykKKwl7CisJCU9iamVjdEFkZHJlc3NTdWJTZXQocmVmZXJlbmNlZCwgUmVsYXRpb25SZWxh dGlvbklkLCByZWxpZCwgYXR0YXJyYXlbaV0pOworCQlyZWNvcmREZXBlbmRlbmN5T24oJm15 c2VsZiwgJnJlZmVyZW5jZWQsIERFUEVOREVOQ1lfTk9STUFMKTsKKwl9CisKIAkvKiBDbG9z ZSB0aGUgdGFibGUuICovCiAJdGFibGVfY2xvc2UocmVsLCBSb3dFeGNsdXNpdmVMb2NrKTsK IApAQCAtNDMyLDYgKzQ1OCwxMjUgQEAgcHVibGljYXRpb25fYWRkX3JlbGF0aW9uKE9pZCBw dWJpZCwgUHVibGljYXRpb25SZWxJbmZvICpwcmksCiAJcmV0dXJuIG15c2VsZjsKIH0KIAor LyogcXNvcnQgY29tcGFyYXRvciBmb3IgYXR0bnVtcyAqLworc3RhdGljIGludAorY29tcGFy ZV9pbnQxNihjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQoreworCWludAkJCWF2ID0g Kihjb25zdCBpbnQxNiAqKSBhOworCWludAkJCWJ2ID0gKihjb25zdCBpbnQxNiAqKSBiOwor CisJLyogdGhpcyBjYW4ndCBvdmVyZmxvdyBpZiBpbnQgaXMgd2lkZXIgdGhhbiBpbnQxNiAq LworCXJldHVybiAoYXYgLSBidik7Cit9CisKKy8qCisgKiBUcmFuc2xhdGUgYSBsaXN0IG9m IGNvbHVtbiBuYW1lcyB0byBhbiBhcnJheSBvZiBhdHRyaWJ1dGUgbnVtYmVycworICogYW5k IGEgQml0bWFwc2V0IHdpdGggdGhlbTsgdmVyaWZ5IHRoYXQgZWFjaCBhdHRyaWJ1dGUgaXMg YXBwcm9wcmlhdGUKKyAqIHRvIGhhdmUgaW4gYSBwdWJsaWNhdGlvbiBjb2x1bW4gbGlzdCAo bm8gc3lzdGVtIG9yIGdlbmVyYXRlZCBhdHRyaWJ1dGVzLAorICogbm8gZHVwbGljYXRlcyku ICBBZGRpdGlvbmFsIGNoZWNrcyB3aXRoIHJlcGxpY2EgaWRlbnRpdHkgYXJlIGRvbmUgbGF0 ZXI7CisgKiBzZWUgY2hlY2tfcHVibGljYXRpb25fY29sdW1ucy4KKyAqCisgKiBOb3RlIHRo YXQgdGhlIGF0dHJpYnV0ZSBudW1iZXJzIGFyZSAqbm90KiBvZmZzZXQgYnkKKyAqIEZpcnN0 TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXI7IHN5c3RlbSBjb2x1bW5zIGFyZSBmb3Ji aWRkZW4gc28gdGhpcworICogaXMgb2theS4KKyAqLworc3RhdGljIHZvaWQKK3B1YmxpY2F0 aW9uX3RyYW5zbGF0ZV9jb2x1bW5zKFJlbGF0aW9uIHRhcmdldHJlbCwgTGlzdCAqY29sdW1u cywKKwkJCQkJCQkgIGludCAqbmF0dHMsIEF0dHJOdW1iZXIgKiphdHRycykKK3sKKwlBdHRy TnVtYmVyICphdHRhcnJheSA9IE5VTEw7CisJQml0bWFwc2V0ICAqc2V0ID0gTlVMTDsKKwlM aXN0Q2VsbCAgICpsYzsKKwlpbnQJCQluID0gMDsKKwlUdXBsZURlc2MJdHVwZGVzYyA9IFJl bGF0aW9uR2V0RGVzY3IodGFyZ2V0cmVsKTsKKworCS8qIEJhaWwgb3V0IHdoZW4gbm8gY29s dW1uIGxpc3QgZGVmaW5lZC4gKi8KKwlpZiAoIWNvbHVtbnMpCisJCXJldHVybjsKKworCS8q CisJICogVHJhbnNsYXRlIGxpc3Qgb2YgY29sdW1ucyB0byBhdHRudW1zLiBXZSBwcm9oaWJp dCBzeXN0ZW0gYXR0cmlidXRlcyBhbmQKKwkgKiBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIGR1 cGxpY2F0ZSBjb2x1bW5zLgorCSAqLworCWF0dGFycmF5ID0gcGFsbG9jKHNpemVvZihBdHRy TnVtYmVyKSAqIGxpc3RfbGVuZ3RoKGNvbHVtbnMpKTsKKwlmb3JlYWNoKGxjLCBjb2x1bW5z KQorCXsKKwkJY2hhcgkgICAqY29sbmFtZSA9IHN0clZhbChsZmlyc3QobGMpKTsKKwkJQXR0 ck51bWJlcglhdHRudW0gPSBnZXRfYXR0bnVtKFJlbGF0aW9uR2V0UmVsaWQodGFyZ2V0cmVs KSwgY29sbmFtZSk7CisKKwkJaWYgKGF0dG51bSA9PSBJbnZhbGlkQXR0ck51bWJlcikKKwkJ CWVyZXBvcnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfQ09MVU1O KSwKKwkJCQkJZXJybXNnKCJjb2x1bW4gXCIlc1wiIG9mIHJlbGF0aW9uIFwiJXNcIiBkb2Vz IG5vdCBleGlzdCIsCisJCQkJCQkgICBjb2xuYW1lLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFt ZSh0YXJnZXRyZWwpKSk7CisKKwkJaWYgKCFBdHRyTnVtYmVySXNGb3JVc2VyRGVmaW5lZEF0 dHIoYXR0bnVtKSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9J TlZBTElEX0NPTFVNTl9SRUZFUkVOQ0UpLAorCQkJCQllcnJtc2coImNhbm5vdCByZWZlcmVu Y2Ugc3lzdGVtIGNvbHVtbiBcIiVzXCIgaW4gcHVibGljYXRpb24gY29sdW1uIGxpc3QiLAor CQkJCQkJICAgY29sbmFtZSkpOworCisJCWlmIChUdXBsZURlc2NBdHRyKHR1cGRlc2MsIGF0 dG51bSAtIDEpLT5hdHRnZW5lcmF0ZWQpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJj b2RlKEVSUkNPREVfSU5WQUxJRF9DT0xVTU5fUkVGRVJFTkNFKSwKKwkJCQkJZXJybXNnKCJj YW5ub3QgcmVmZXJlbmNlIGdlbmVyYXRlZCBjb2x1bW4gXCIlc1wiIGluIHB1YmxpY2F0aW9u IGNvbHVtbiBsaXN0IiwKKwkJCQkJCSAgIGNvbG5hbWUpKTsKKworCQlpZiAoYm1zX2lzX21l bWJlcihhdHRudW0sIHNldCkpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVS UkNPREVfRFVQTElDQVRFX09CSkVDVCksCisJCQkJCWVycm1zZygiZHVwbGljYXRlIGNvbHVt biBcIiVzXCIgaW4gcHVibGljYXRpb24gY29sdW1uIGxpc3QiLAorCQkJCQkJICAgY29sbmFt ZSkpOworCisJCXNldCA9IGJtc19hZGRfbWVtYmVyKHNldCwgYXR0bnVtKTsKKwkJYXR0YXJy YXlbbisrXSA9IGF0dG51bTsKKwl9CisKKwkvKiBCZSB0aWR5LCBzbyB0aGF0IHRoZSBjYXRh bG9nIHJlcHJlc2VudGF0aW9uIGlzIGFsd2F5cyBzb3J0ZWQgKi8KKwlxc29ydChhdHRhcnJh eSwgbiwgc2l6ZW9mKEF0dHJOdW1iZXIpLCBjb21wYXJlX2ludDE2KTsKKworCSpuYXR0cyA9 IG47CisJKmF0dHJzID0gYXR0YXJyYXk7CisKKwlibXNfZnJlZShzZXQpOworfQorCisvKgor ICogVHJhbnNmb3JtIHRoZSBjb2x1bW4gbGlzdCAocmVwcmVzZW50ZWQgYnkgYW4gYXJyYXkp IHRvIGEgYml0bWFwc2V0LgorICovCitCaXRtYXBzZXQgKgorcHViX2NvbGxpc3RfdG9fYml0 bWFwc2V0KEJpdG1hcHNldCAqY29sdW1ucywgRGF0dW0gcHViY29scywgTWVtb3J5Q29udGV4 dCBtY3h0KQoreworCUJpdG1hcHNldCAgKnJlc3VsdCA9IE5VTEw7CisJQXJyYXlUeXBlICAq YXJyOworCWludAkJCW5lbGVtczsKKwlpbnQxNgkgICAqZWxlbXM7CisJTWVtb3J5Q29udGV4 dAlvbGRjeHQ7CisKKwkvKgorCSAqIElmIGFuIGV4aXN0aW5nIGJpdG1hcCB3YXMgcHJvdmlk ZWQsIHVzZSBpdC4gT3RoZXJ3aXNlIGp1c3QgdXNlIE5VTEwKKwkgKiBhbmQgYnVpbGQgYSBu ZXcgYml0bWFwLgorCSAqLworCWlmIChjb2x1bW5zKQorCQlyZXN1bHQgPSBjb2x1bW5zOwor CisJYXJyID0gRGF0dW1HZXRBcnJheVR5cGVQKHB1YmNvbHMpOworCW5lbGVtcyA9IEFSUl9E SU1TKGFycilbMF07CisJZWxlbXMgPSAoaW50MTYgKikgQVJSX0RBVEFfUFRSKGFycik7CisK KwkvKiBJZiBhIG1lbW9yeSBjb250ZXh0IHdhcyBzcGVjaWZpZWQsIHN3aXRjaCB0byBpdC4g Ki8KKwlpZiAobWN4dCkKKwkJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKG1jeHQp OworCisJZm9yIChpbnQgaSA9IDA7IGkgPCBuZWxlbXM7IGkrKykKKwkJcmVzdWx0ID0gYm1z X2FkZF9tZW1iZXIocmVzdWx0LCBlbGVtc1tpXSk7CisKKwlpZiAobWN4dCkKKwkJTWVtb3J5 Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7CisKKwlyZXR1cm4gcmVzdWx0OworfQorCiAvKgog ICogSW5zZXJ0IG5ldyBwdWJsaWNhdGlvbiAvIHNjaGVtYSBtYXBwaW5nLgogICovCkBAIC01 MzksNiArNjg0LDgyIEBAIEdldFJlbGF0aW9uUHVibGljYXRpb25zKE9pZCByZWxpZCkKIAly ZXR1cm4gcmVzdWx0OwogfQogCisvKgorICogR2V0cyBhIGxpc3Qgb2YgT0lEcyBvZiBhbGwg cGFydGlhbC1jb2x1bW4gcHVibGljYXRpb25zIG9mIHRoZSBnaXZlbgorICogcmVsYXRpb24s IHRoYXQgaXMsIHRob3NlIHRoYXQgc3BlY2lmeSBhIGNvbHVtbiBsaXN0LgorICovCitMaXN0 ICoKK0dldFJlbGF0aW9uQ29sdW1uUGFydGlhbFB1YmxpY2F0aW9ucyhPaWQgcmVsaWQpCit7 CisJQ2F0Q0xpc3QgICAqcHVicmVsbGlzdDsKKwlMaXN0CSAgICpwdWJzID0gTklMOworCisJ cHVicmVsbGlzdCA9IFNlYXJjaFN5c0NhY2hlTGlzdDEoUFVCTElDQVRJT05SRUxNQVAsCisJ CQkJCQkJCQkgT2JqZWN0SWRHZXREYXR1bShyZWxpZCkpOworCWZvciAoaW50IGkgPSAwOyBp IDwgcHVicmVsbGlzdC0+bl9tZW1iZXJzOyBpKyspCisJeworCQlIZWFwVHVwbGUJdHVwID0g JnB1YnJlbGxpc3QtPm1lbWJlcnNbaV0tPnR1cGxlOworCQlib29sCQlpc251bGw7CisJCUZv cm1fcGdfcHVibGljYXRpb25fcmVsCXB1YnJlbDsKKworCQkodm9pZCkgU3lzQ2FjaGVHZXRB dHRyKFBVQkxJQ0FUSU9OUkVMTUFQLCB0dXAsCisJCQkJCQkJICAgQW51bV9wZ19wdWJsaWNh dGlvbl9yZWxfcHJhdHRycywKKwkJCQkJCQkgICAmaXNudWxsKTsKKworCQkvKiBubyBjb2x1 bW4gbGlzdCBmb3IgdGhpcyBwdWJsaWNhdGlvbnMvcmVsYXRpb24gKi8KKwkJaWYgKGlzbnVs bCkKKwkJCWNvbnRpbnVlOworCisJCXB1YnJlbCA9IChGb3JtX3BnX3B1YmxpY2F0aW9uX3Jl bCkgR0VUU1RSVUNUKHR1cCk7CisKKwkJcHVicyA9IGxhcHBlbmRfb2lkKHB1YnMsIHB1YnJl bC0+cHJwdWJpZCk7CisJfQorCisJUmVsZWFzZVN5c0NhY2hlTGlzdChwdWJyZWxsaXN0KTsK KworCXJldHVybiBwdWJzOworfQorCisKKy8qCisgKiBGb3IgYSByZWxhdGlvbiBpbiBhIHB1 YmxpY2F0aW9uIHRoYXQgaXMga25vd24gdG8gaGF2ZSBhIG5vbi1udWxsIGNvbHVtbgorICog bGlzdCwgcmV0dXJuIHRoZSBsaXN0IG9mIGF0dHJpYnV0ZSBudW1iZXJzIHRoYXQgYXJlIGlu IGl0LgorICovCitMaXN0ICoKK0dldFJlbGF0aW9uQ29sdW1uTGlzdEluUHVibGljYXRpb24o T2lkIHJlbGlkLCBPaWQgcHViaWQpCit7CisJSGVhcFR1cGxlCXR1cDsKKwlEYXR1bQkJYWRh dHVtOworCWJvb2wJCWlzbnVsbDsKKwlBcnJheVR5cGUgICphcnI7CisJaW50CQkJbmVsZW1z OworCWludDE2CSAgICplbGVtczsKKwlMaXN0CSAgICphdHRub3MgPSBOSUw7CisKKwl0dXAg PSBTZWFyY2hTeXNDYWNoZTIoUFVCTElDQVRJT05SRUxNQVAsCisJCQkJCQkgIE9iamVjdElk R2V0RGF0dW0ocmVsaWQpLAorCQkJCQkJICBPYmplY3RJZEdldERhdHVtKHB1YmlkKSk7CisK KwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxv b2t1cCBmYWlsZWQgZm9yIHJlbCAldSBvZiBwdWJsaWNhdGlvbiAldSIsIHJlbGlkLCBwdWJp ZCk7CisKKwlhZGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoUFVCTElDQVRJT05SRUxNQVAsIHR1 cCwKKwkJCQkJCQkgQW51bV9wZ19wdWJsaWNhdGlvbl9yZWxfcHJhdHRycywgJmlzbnVsbCk7 CisJaWYgKGlzbnVsbCkKKwkJZWxvZyhFUlJPUiwgImZvdW5kIHVuZXhwZWN0ZWQgbnVsbCBp biBwZ19wdWJsaWNhdGlvbl9yZWwucHJhdHRycyIpOworCisJYXJyID0gRGF0dW1HZXRBcnJh eVR5cGVQKGFkYXR1bSk7CisJbmVsZW1zID0gQVJSX0RJTVMoYXJyKVswXTsKKwllbGVtcyA9 IChpbnQxNiAqKSBBUlJfREFUQV9QVFIoYXJyKTsKKworCWZvciAoaW50IGkgPSAwOyBpIDwg bmVsZW1zOyBpKyspCisJCWF0dG5vcyA9IGxhcHBlbmRfb2lkKGF0dG5vcywgZWxlbXNbaV0p OworCisJUmVsZWFzZVN5c0NhY2hlKHR1cCk7CisKKwlyZXR1cm4gYXR0bm9zOworfQorCiAv KgogICogR2V0cyBsaXN0IG9mIHJlbGF0aW9uIG9pZHMgZm9yIGEgcHVibGljYXRpb24uCiAg KgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYwppbmRleCAxYWFkMmU3 NjljYi4uMGM5OTkzYTE1NWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1 YmxpY2F0aW9uY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9u Y21kcy5jCkBAIC0yOTYsNyArMjk2LDcgQEAgY29udGFpbl9pbnZhbGlkX3JmY29sdW1uX3dh bGtlcihOb2RlICpub2RlLCByZl9jb250ZXh0ICpjb250ZXh0KQogICogUmV0dXJucyB0cnVl IGlmIGFueSBpbnZhbGlkIGNvbHVtbiBpcyBmb3VuZC4KICAqLwogYm9vbAotY29udGFpbl9p bnZhbGlkX3JmY29sdW1uKE9pZCBwdWJpZCwgUmVsYXRpb24gcmVsYXRpb24sIExpc3QgKmFu Y2VzdG9ycywKK3B1Yl9yZl9jb250YWluc19pbnZhbGlkX2NvbHVtbihPaWQgcHViaWQsIFJl bGF0aW9uIHJlbGF0aW9uLCBMaXN0ICphbmNlc3RvcnMsCiAJCQkJCQkgYm9vbCBwdWJ2aWFy b290KQogewogCUhlYXBUdXBsZQlyZnR1cGxlOwpAQCAtMzY4LDYgKzM2OCwxMTQgQEAgY29u dGFpbl9pbnZhbGlkX3JmY29sdW1uKE9pZCBwdWJpZCwgUmVsYXRpb24gcmVsYXRpb24sIExp c3QgKmFuY2VzdG9ycywKIAlyZXR1cm4gcmVzdWx0OwogfQogCisvKgorICogQ2hlY2sgaWYg YWxsIGNvbHVtbnMgcmVmZXJlbmNlZCBpbiB0aGUgUkVQTElDQSBJREVOVElUWSBhcmUgY292 ZXJlZCBieQorICogdGhlIGNvbHVtbiBsaXN0LgorICoKKyAqIFJldHVybnMgdHJ1ZSBpZiBh bnkgcmVwbGljYSBpZGVudGl0eSBjb2x1bW4gaXMgbm90IGNvdmVyZWQgYnkgY29sdW1uIGxp c3QuCisgKi8KK2Jvb2wKK3B1Yl9jb2xsaXN0X2NvbnRhaW5zX2ludmFsaWRfY29sdW1uKE9p ZCBwdWJpZCwgUmVsYXRpb24gcmVsYXRpb24sIExpc3QgKmFuY2VzdG9ycywKKwkJCQkJCSBi b29sIHB1YnZpYXJvb3QpCit7CisJSGVhcFR1cGxlCXR1cGxlOworCU9pZAkJCXJlbGlkID0g UmVsYXRpb25HZXRSZWxpZChyZWxhdGlvbik7CisJT2lkCQkJcHVibGlzaF9hc19yZWxpZCA9 IFJlbGF0aW9uR2V0UmVsaWQocmVsYXRpb24pOworCWJvb2wJCXJlc3VsdCA9IGZhbHNlOwor CURhdHVtCQlkYXR1bTsKKwlib29sCQlpc251bGw7CisKKwkvKgorCSAqIEZvciBhIHBhcnRp dGlvbiwgaWYgcHVidmlhcm9vdCBpcyB0cnVlLCBmaW5kIHRoZSB0b3Btb3N0IGFuY2VzdG9y IHRoYXQKKwkgKiBpcyBwdWJsaXNoZWQgdmlhIHRoaXMgcHVibGljYXRpb24gYXMgd2UgbmVl ZCB0byB1c2UgaXRzIGNvbHVtbiBsaXN0CisJICogZm9yIHRoZSBjaGFuZ2VzLgorCSAqCisJ ICogTm90ZSB0aGF0IGV2ZW4gdGhvdWdoIHRoZSBjb2x1bW4gbGlzdCB1c2VkIGlzIGZvciBh biBhbmNlc3RvciwgdGhlCisJICogUkVQTElDQSBJREVOVElUWSB1c2VkIHdpbGwgYmUgZm9y IHRoZSBhY3R1YWwgY2hpbGQgdGFibGUuCisJICovCisJaWYgKHB1YnZpYXJvb3QgJiYgcmVs YXRpb24tPnJkX3JlbC0+cmVsaXNwYXJ0aXRpb24pCisJeworCQlwdWJsaXNoX2FzX3JlbGlk ID0gR2V0VG9wTW9zdEFuY2VzdG9ySW5QdWJsaWNhdGlvbihwdWJpZCwgYW5jZXN0b3JzLCBO VUxMKTsKKworCQlpZiAoIU9pZElzVmFsaWQocHVibGlzaF9hc19yZWxpZCkpCisJCQlwdWJs aXNoX2FzX3JlbGlkID0gcmVsaWQ7CisJfQorCisJdHVwbGUgPSBTZWFyY2hTeXNDYWNoZTIo UFVCTElDQVRJT05SRUxNQVAsCisJCQkJCQkJICBPYmplY3RJZEdldERhdHVtKHB1Ymxpc2hf YXNfcmVsaWQpLAorCQkJCQkJCSAgT2JqZWN0SWRHZXREYXR1bShwdWJpZCkpOworCisJaWYg KCFIZWFwVHVwbGVJc1ZhbGlkKHR1cGxlKSkKKwkJcmV0dXJuIGZhbHNlOworCisJZGF0dW0g PSBTeXNDYWNoZUdldEF0dHIoUFVCTElDQVRJT05SRUxNQVAsIHR1cGxlLAorCQkJCQkJCSAg QW51bV9wZ19wdWJsaWNhdGlvbl9yZWxfcHJhdHRycywKKwkJCQkJCQkgICZpc251bGwpOwor CisJaWYgKCFpc251bGwpCisJeworCQlpbnQJeDsKKwkJQml0bWFwc2V0ICAqaWRhdHRyczsK KwkJQml0bWFwc2V0ICAqY29sdW1ucyA9IE5VTEw7CisKKwkJLyogV2l0aCBSRVBMSUNBIElE RU5USVRZIEZVTEwsIG5vIGNvbHVtbiBsaXN0IGlzIGFsbG93ZWQuICovCisJCWlmIChyZWxh dGlvbi0+cmRfcmVsLT5yZWxyZXBsaWRlbnQgPT0gUkVQTElDQV9JREVOVElUWV9GVUxMKQor CQkJcmVzdWx0ID0gdHJ1ZTsKKworCQkvKiBUcmFuc2Zvcm0gdGhlIGNvbHVtbiBsaXN0IGRh dHVtIHRvIGEgYml0bWFwc2V0LiAqLworCQljb2x1bW5zID0gcHViX2NvbGxpc3RfdG9fYml0 bWFwc2V0KE5VTEwsIGRhdHVtLCBOVUxMKTsKKworCQkvKiBSZW1lbWJlciBjb2x1bW5zIHRo YXQgYXJlIHBhcnQgb2YgdGhlIFJFUExJQ0EgSURFTlRJVFkgKi8KKwkJaWRhdHRycyA9IFJl bGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKHJlbGF0aW9uLAorCQkJCQkJCQkJCQkgSU5ERVhf QVRUUl9CSVRNQVBfSURFTlRJVFlfS0VZKTsKKworCQkvKgorCQkgKiBBdHRudW1zIGluIHRo ZSBiaXRtYXAgcmV0dXJuZWQgYnkgUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAgYXJlCisJ CSAqIG9mZnNldCAodG8gaGFuZGxlIHN5c3RlbSBjb2x1bW5zIHRoZSB1c3VhbCB3YXkpLCB3 aGlsZSBjb2x1bW4gbGlzdAorCQkgKiBkb2VzIG5vdCB1c2Ugb2Zmc2V0LCBzbyB3ZSBjYW4n dCBkbyBibXNfaXNfc3Vic2V0KCkuIEluc3RlYWQsIHdlIGhhdmUKKwkJICogdG8gbG9vcCBv dmVyIHRoZSBpZGF0dHJzIGFuZCBjaGVjayBhbGwgb2YgdGhlbSBhcmUgaW4gdGhlIGxpc3Qu CisJCSAqLworCQl4ID0gLTE7CisJCXdoaWxlICgoeCA9IGJtc19uZXh0X21lbWJlcihpZGF0 dHJzLCB4KSkgPj0gMCkKKwkJeworCQkJQXR0ck51bWJlcglhdHRudW0gPSAoeCArIEZpcnN0 TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIpOworCisJCQkvKgorCQkJICogSWYgcHVi dmlhcm9vdCBpcyB0cnVlLCB3ZSBhcmUgdmFsaWRhdGluZyB0aGUgY29sdW1uIGxpc3Qgb2Yg dGhlCisJCQkgKiBwYXJlbnQgdGFibGUsIGJ1dCB0aGUgYml0bWFwIGNvbnRhaW5zIHRoZSBy ZXBsaWNhIGlkZW50aXR5CisJCQkgKiBpbmZvcm1hdGlvbiBvZiB0aGUgY2hpbGQgdGFibGUu IFRoZSBwYXJlbnQvY2hpbGQgYXR0bnVtcyBtYXkgbm90CisJCQkgKiBtYXRjaCwgc28gdHJh bnNsYXRlIHRoZW0gdG8gdGhlIHBhcmVudCAtIGdldCB0aGUgYXR0bmFtZSBmcm9tCisJCQkg KiB0aGUgY2hpbGQsIGFuZCBsb29rIGl0IHVwIGluIHRoZSBwYXJlbnQuCisJCQkgKi8KKwkJ CWlmIChwdWJ2aWFyb290KQorCQkJeworCQkJCS8qIGF0dHJpYnV0ZSBuYW1lIGluIHRoZSBj aGlsZCB0YWJsZSAqLworCQkJCWNoYXIgICAqY29sbmFtZSA9IGdldF9hdHRuYW1lKHJlbGlk LCBhdHRudW0sIGZhbHNlKTsKKworCQkJCS8qCisJCQkJICogRGV0ZXJtaW5lIHRoZSBhdHRu dW0gZm9yIHRoZSBhdHRyaWJ1dGUgbmFtZSBpbiBwYXJlbnQgKHdlCisJCQkJICogYXJlIHVz aW5nIHRoZSBjb2x1bW4gbGlzdCBkZWZpbmVkIG9uIHRoZSBwYXJlbnQpLgorCQkJCSAqLwor CQkJCWF0dG51bSA9IGdldF9hdHRudW0ocHVibGlzaF9hc19yZWxpZCwgY29sbmFtZSk7CisJ CQl9CisKKwkJCS8qIHJlcGxpY2EgaWRlbnRpdHkgY29sdW1uLCBub3QgY292ZXJlZCBieSB0 aGUgY29sdW1uIGxpc3QgKi8KKwkJCWlmICghYm1zX2lzX21lbWJlcihhdHRudW0sIGNvbHVt bnMpKQorCQkJeworCQkJCXJlc3VsdCA9IHRydWU7CisJCQkJYnJlYWs7CisJCQl9CisJCX0K KworCQlibXNfZnJlZShpZGF0dHJzKTsKKwkJYm1zX2ZyZWUoY29sdW1ucyk7CisJfQorCisJ UmVsZWFzZVN5c0NhY2hlKHR1cGxlKTsKKworCXJldHVybiByZXN1bHQ7Cit9CisKIC8qIGNo ZWNrX2Z1bmN0aW9uc19pbl9ub2RlIGNhbGxiYWNrICovCiBzdGF0aWMgYm9vbAogY29udGFp bl9tdXRhYmxlX29yX3VzZXJfZnVuY3Rpb25zX2NoZWNrZXIoT2lkIGZ1bmNfaWQsIHZvaWQg KmNvbnRleHQpCkBAIC02MDksNiArNzE3LDQ1IEBAIFRyYW5zZm9ybVB1YldoZXJlQ2xhdXNl cyhMaXN0ICp0YWJsZXMsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLAogCX0KIH0KIAorCisv KgorICogVHJhbnNmb3JtIHRoZSBwdWJsaWNhdGlvbiBjb2x1bW4gbGlzdHMgZXhwcmVzc2lv biBmb3IgYWxsIHRoZSByZWxhdGlvbnMKKyAqIGluIHRoZSBsaXN0LgorICoKKyAqIFhYWCBU aGUgbmFtZSBpcyBhIGJpdCBtaXNsZWFkaW5nLCBiZWNhdXNlIHdlIGRvbid0IHJlYWxseSB0 cmFuc2Zvcm0KKyAqIGFueXRoaW5nIGhlcmUgLSB3ZSBtZXJlbHkgY2hlY2sgdGhlIGNvbHVt biBsaXN0IGlzIGNvbXBhdGlibGUgd2l0aCB0aGUKKyAqIGRlZmluaXRpb24gb2YgdGhlIHB1 YmxpY2F0aW9uICh3aXRoIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290PWZhbHNlKQorICog d2Ugb25seSBhbGxvdyBjb2x1bW4gbGlzdHMgb24gdGhlIGxlYWYgcmVsYXRpb25zLiBTbyBt YXliZSByZW5hbWUgaXQ/CisgKi8KK3N0YXRpYyB2b2lkCitUcmFuc2Zvcm1QdWJDb2x1bW5M aXN0KExpc3QgKnRhYmxlcywgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcsCisJCQkJCSAgIGJv b2wgcHVidmlhcm9vdCkKK3sKKwlMaXN0Q2VsbCAgICpsYzsKKworCWZvcmVhY2gobGMsIHRh YmxlcykKKwl7CisJCVB1YmxpY2F0aW9uUmVsSW5mbyAqcHJpID0gKFB1YmxpY2F0aW9uUmVs SW5mbyAqKSBsZmlyc3QobGMpOworCisJCWlmIChwcmktPmNvbHVtbnMgPT0gTklMKQorCQkJ Y29udGludWU7CisKKwkJLyoKKwkJICogSWYgdGhlIHB1YmxpY2F0aW9uIGRvZXNuJ3QgcHVi bGlzaCBjaGFuZ2VzIHZpYSB0aGUgcm9vdCBwYXJ0aXRpb25lZAorCQkgKiB0YWJsZSwgdGhl IHBhcnRpdGlvbidzIGNvbHVtbiBsaXN0IHdpbGwgYmUgdXNlZC4gU28gZGlzYWxsb3cgdXNp bmcKKwkJICogdGhlIGNvbHVtbiBsaXN0IG9uIHBhcnRpdGlvbmVkIHRhYmxlIGluIHRoaXMg Y2FzZS4KKwkJICovCisJCWlmICghcHVidmlhcm9vdCAmJgorCQkJcHJpLT5yZWxhdGlvbi0+ cmRfcmVsLT5yZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpCisJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZB TFVFKSwKKwkJCQkJIGVycm1zZygiY2Fubm90IHVzZSBwdWJsaWNhdGlvbiBjb2x1bW4gbGlz dCBmb3IgcmVsYXRpb24gXCIlc1wiIiwKKwkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFt ZShwcmktPnJlbGF0aW9uKSksCisJCQkJCSBlcnJkZXRhaWwoImNvbHVtbiBsaXN0IGNhbm5v dCBiZSB1c2VkIGZvciBhIHBhcnRpdGlvbmVkIHRhYmxlIHdoZW4gJXMgaXMgZmFsc2UuIiwK KwkJCQkJCQkgICAicHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QiKSkpOworCX0KK30KKwog LyoKICAqIENyZWF0ZSBuZXcgcHVibGljYXRpb24uCiAgKi8KQEAgLTcyNSw2ICs4NzIsOSBA QCBDcmVhdGVQdWJsaWNhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVB1YmxpY2F0 aW9uU3RtdCAqc3RtdCkKIAkJCVRyYW5zZm9ybVB1YldoZXJlQ2xhdXNlcyhyZWxzLCBwc3Rh dGUtPnBfc291cmNldGV4dCwKIAkJCQkJCQkJCSBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9v dCk7CiAKKwkJCVRyYW5zZm9ybVB1YkNvbHVtbkxpc3QocmVscywgcHN0YXRlLT5wX3NvdXJj ZXRleHQsCisJCQkJCQkJCSAgIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290KTsKKwogCQkJ UHVibGljYXRpb25BZGRUYWJsZXMocHVib2lkLCByZWxzLCB0cnVlLCBOVUxMKTsKIAkJCUNs b3NlVGFibGVMaXN0KHJlbHMpOwogCQl9CkBAIC03ODQsOCArOTM0LDggQEAgQWx0ZXJQdWJs aWNhdGlvbk9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclB1YmxpY2F0aW9uU3Rt dCAqc3RtdCwKIAogCS8qCiAJICogSWYgdGhlIHB1YmxpY2F0aW9uIGRvZXNuJ3QgcHVibGlz aCBjaGFuZ2VzIHZpYSB0aGUgcm9vdCBwYXJ0aXRpb25lZAotCSAqIHRhYmxlLCB0aGUgcGFy dGl0aW9uJ3Mgcm93IGZpbHRlciB3aWxsIGJlIHVzZWQuIFNvIGRpc2FsbG93IHVzaW5nIFdI RVJFCi0JICogY2xhdXNlIG9uIHBhcnRpdGlvbmVkIHRhYmxlIGluIHRoaXMgY2FzZS4KKwkg KiB0YWJsZSwgdGhlIHBhcnRpdGlvbidzIHJvdyBmaWx0ZXIgYW5kIGNvbHVtbiBsaXN0IHdp bGwgYmUgdXNlZC4gU28gZGlzYWxsb3cKKwkgKiB1c2luZyBXSEVSRSBjbGF1c2UgYW5kIGNv bHVtbiBsaXN0cyBvbiBwYXJ0aXRpb25lZCB0YWJsZSBpbiB0aGlzIGNhc2UuCiAJICovCiAJ aWYgKCFwdWJmb3JtLT5wdWJhbGx0YWJsZXMgJiYgcHVibGlzaF92aWFfcGFydGl0aW9uX3Jv b3RfZ2l2ZW4gJiYKIAkJIXB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290KQpAQCAtNzkzLDcg Kzk0Myw4IEBAIEFsdGVyUHVibGljYXRpb25PcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwg QWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsCiAJCS8qCiAJCSAqIExvY2sgdGhlIHB1Ymxp Y2F0aW9uIHNvIG5vYm9keSBlbHNlIGNhbiBkbyBhbnl0aGluZyB3aXRoIGl0LiBUaGlzCiAJ CSAqIHByZXZlbnRzIGNvbmN1cnJlbnQgYWx0ZXIgdG8gYWRkIHBhcnRpdGlvbmVkIHRhYmxl KHMpIHdpdGggV0hFUkUKLQkJICogY2xhdXNlKHMpIHdoaWNoIHdlIGRvbid0IGFsbG93IHdo ZW4gbm90IHB1Ymxpc2hpbmcgdmlhIHJvb3QuCisJCSAqIGNsYXVzZShzKSBhbmQvb3IgY29s dW1uIGxpc3RzIHdoaWNoIHdlIGRvbid0IGFsbG93IHdoZW4gbm90CisJCSAqIHB1Ymxpc2hp bmcgdmlhIHJvb3QuCiAJCSAqLwogCQlMb2NrRGF0YWJhc2VPYmplY3QoUHVibGljYXRpb25S ZWxhdGlvbklkLCBwdWJmb3JtLT5vaWQsIDAsCiAJCQkJCQkgICBBY2Nlc3NTaGFyZUxvY2sp OwpAQCAtODA1LDEzICs5NTYsMjEgQEAgQWx0ZXJQdWJsaWNhdGlvbk9wdGlvbnMoUGFyc2VT dGF0ZSAqcHN0YXRlLCBBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwKIAkJewogCQkJSGVh cFR1cGxlCXJmdHVwbGU7CiAJCQlPaWQJCQlyZWxpZCA9IGxmaXJzdF9vaWQobGMpOworCQkJ Ym9vbAkJaGFzX2NvbHVtbl9saXN0OworCQkJYm9vbAkJaGFzX3Jvd19maWx0ZXI7CiAKIAkJ CXJmdHVwbGUgPSBTZWFyY2hTeXNDYWNoZTIoUFVCTElDQVRJT05SRUxNQVAsCiAJCQkJCQkJ CQkgIE9iamVjdElkR2V0RGF0dW0ocmVsaWQpLAogCQkJCQkJCQkJICBPYmplY3RJZEdldERh dHVtKHB1YmZvcm0tPm9pZCkpOwogCisJCQloYXNfcm93X2ZpbHRlcgorCQkJCT0gIWhlYXBf YXR0aXNudWxsKHJmdHVwbGUsIEFudW1fcGdfcHVibGljYXRpb25fcmVsX3BycXVhbCwgTlVM TCk7CisKKwkJCWhhc19jb2x1bW5fbGlzdAorCQkJCT0gIWhlYXBfYXR0aXNudWxsKHJmdHVw bGUsIEFudW1fcGdfcHVibGljYXRpb25fcmVsX3ByYXR0cnMsIE5VTEwpOworCiAJCQlpZiAo SGVhcFR1cGxlSXNWYWxpZChyZnR1cGxlKSAmJgotCQkJCSFoZWFwX2F0dGlzbnVsbChyZnR1 cGxlLCBBbnVtX3BnX3B1YmxpY2F0aW9uX3JlbF9wcnF1YWwsIE5VTEwpKQorCQkJCShoYXNf cm93X2ZpbHRlciB8fCBoYXNfY29sdW1uX2xpc3QpKQogCQkJewogCQkJCUhlYXBUdXBsZQl0 dXBsZTsKIApAQCAtODIwLDcgKzk3OSw4IEBAIEFsdGVyUHVibGljYXRpb25PcHRpb25zKFBh cnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsCiAJCQkJewog CQkJCQlGb3JtX3BnX2NsYXNzIHJlbGZvcm0gPSAoRm9ybV9wZ19jbGFzcykgR0VUU1RSVUNU KHR1cGxlKTsKIAotCQkJCQlpZiAocmVsZm9ybS0+cmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJ VElPTkVEX1RBQkxFKQorCQkJCQlpZiAoKHJlbGZvcm0tPnJlbGtpbmQgPT0gUkVMS0lORF9Q QVJUSVRJT05FRF9UQUJMRSkgJiYKKwkJCQkJCWhhc19yb3dfZmlsdGVyKQogCQkJCQkJZXJl cG9ydChFUlJPUiwKIAkJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRF Ul9WQUxVRSksCiAJCQkJCQkJCSBlcnJtc2coImNhbm5vdCBzZXQgJXMgZm9yIHB1YmxpY2F0 aW9uIFwiJXNcIiIsCkBAIC04MzEsNiArOTkxLDE4IEBAIEFsdGVyUHVibGljYXRpb25PcHRp b25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsCiAJ CQkJCQkJCQkJICAgTmFtZVN0cihyZWxmb3JtLT5yZWxuYW1lKSwKIAkJCQkJCQkJCQkgICAi cHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QiKSkpOwogCisJCQkJCWlmICgocmVsZm9ybS0+ cmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKSAmJgorCQkJCQkJaGFzX2Nv bHVtbl9saXN0KQorCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJKGVycmNvZGUoRVJS Q09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJCQkJCSBlcnJtc2coImNhbm5v dCBzZXQgJXMgZm9yIHB1YmxpY2F0aW9uIFwiJXNcIiIsCisJCQkJCQkJCQkJInB1Ymxpc2hf dmlhX3BhcnRpdGlvbl9yb290ID0gZmFsc2UiLAorCQkJCQkJCQkJCXN0bXQtPnB1Ym5hbWUp LAorCQkJCQkJCQkgZXJyZGV0YWlsKCJUaGUgcHVibGljYXRpb24gY29udGFpbnMgYSBjb2x1 bW4gbGlzdCBmb3IgYSBwYXJ0aXRpb25lZCB0YWJsZSBcIiVzXCIgIgorCQkJCQkJCQkJCSAg ICJ3aGljaCBpcyBub3QgYWxsb3dlZCB3aGVuICVzIGlzIGZhbHNlLiIsCisJCQkJCQkJCQkJ ICAgTmFtZVN0cihyZWxmb3JtLT5yZWxuYW1lKSwKKwkJCQkJCQkJCQkgICAicHVibGlzaF92 aWFfcGFydGl0aW9uX3Jvb3QiKSkpOworCiAJCQkJCVJlbGVhc2VTeXNDYWNoZSh0dXBsZSk7 CiAJCQkJfQogCkBAIC05NzYsNiArMTE0OCw4IEBAIEFsdGVyUHVibGljYXRpb25UYWJsZXMo QWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsIEhlYXBUdXBsZSB0dXAsCiAKIAkJVHJhbnNm b3JtUHViV2hlcmVDbGF1c2VzKHJlbHMsIHF1ZXJ5U3RyaW5nLCBwdWJmb3JtLT5wdWJ2aWFy b290KTsKIAorCQlUcmFuc2Zvcm1QdWJDb2x1bW5MaXN0KHJlbHMsIHF1ZXJ5U3RyaW5nLCBw dWJmb3JtLT5wdWJ2aWFyb290KTsKKwogCQlQdWJsaWNhdGlvbkFkZFRhYmxlcyhwdWJpZCwg cmVscywgZmFsc2UsIHN0bXQpOwogCX0KIAllbHNlIGlmIChzdG10LT5hY3Rpb24gPT0gQVBf RHJvcE9iamVjdHMpCkBAIC05OTIsNiArMTE2Niw4IEBAIEFsdGVyUHVibGljYXRpb25UYWJs ZXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsIEhlYXBUdXBsZSB0dXAsCiAKIAkJVHJh bnNmb3JtUHViV2hlcmVDbGF1c2VzKHJlbHMsIHF1ZXJ5U3RyaW5nLCBwdWJmb3JtLT5wdWJ2 aWFyb290KTsKIAorCQlUcmFuc2Zvcm1QdWJDb2x1bW5MaXN0KHJlbHMsIHF1ZXJ5U3RyaW5n LCBwdWJmb3JtLT5wdWJ2aWFyb290KTsKKwogCQkvKgogCQkgKiBUbyByZWNyZWF0ZSB0aGUg cmVsYXRpb24gbGlzdCBmb3IgdGhlIHB1YmxpY2F0aW9uLCBsb29rIGZvcgogCQkgKiBleGlz dGluZyByZWxhdGlvbnMgdGhhdCBkbyBub3QgbmVlZCB0byBiZSBkcm9wcGVkLgpAQCAtMTAw Myw0MiArMTE3OSw3OSBAQCBBbHRlclB1YmxpY2F0aW9uVGFibGVzKEFsdGVyUHVibGljYXRp b25TdG10ICpzdG10LCBIZWFwVHVwbGUgdHVwLAogCQkJUHVibGljYXRpb25SZWxJbmZvICpv bGRyZWw7CiAJCQlib29sCQlmb3VuZCA9IGZhbHNlOwogCQkJSGVhcFR1cGxlCXJmdHVwbGU7 Ci0JCQlib29sCQlyZmlzbnVsbCA9IHRydWU7CiAJCQlOb2RlCSAgICpvbGRyZWx3aGVyZWNs YXVzZSA9IE5VTEw7CisJCQlCaXRtYXBzZXQgICpvbGRjb2x1bW5zID0gTlVMTDsKIAogCQkJ LyogbG9vayB1cCB0aGUgY2FjaGUgZm9yIHRoZSBvbGQgcmVsbWFwICovCiAJCQlyZnR1cGxl ID0gU2VhcmNoU3lzQ2FjaGUyKFBVQkxJQ0FUSU9OUkVMTUFQLAogCQkJCQkJCQkJICBPYmpl Y3RJZEdldERhdHVtKG9sZHJlbGlkKSwKIAkJCQkJCQkJCSAgT2JqZWN0SWRHZXREYXR1bShw dWJpZCkpOwogCisJCQkvKgorCQkJICogU2VlIGlmIHRoZSBleGlzdGluZyByZWxhdGlvbiBj dXJyZW50bHkgaGFzIGEgV0hFUkUgY2xhdXNlIG9yIGEKKwkJCSAqIGNvbHVtbiBsaXN0LiBX ZSBuZWVkIHRvIGNvbXBhcmUgdGhvc2UgdG9vLgorCQkJICovCiAJCQlpZiAoSGVhcFR1cGxl SXNWYWxpZChyZnR1cGxlKSkKIAkJCXsKKwkJCQlib29sCQlpc251bGwgPSB0cnVlOwogCQkJ CURhdHVtCQl3aGVyZUNsYXVzZURhdHVtOworCQkJCURhdHVtCQljb2x1bW5MaXN0RGF0dW07 CiAKKwkJCQkvKiBMb2FkIHRoZSBXSEVSRSBjbGF1c2UgZm9yIHRoaXMgdGFibGUuICovCiAJ CQkJd2hlcmVDbGF1c2VEYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihQVUJMSUNBVElPTlJFTE1B UCwgcmZ0dXBsZSwKIAkJCQkJCQkJCQkJCSAgIEFudW1fcGdfcHVibGljYXRpb25fcmVsX3By cXVhbCwKLQkJCQkJCQkJCQkJCSAgICZyZmlzbnVsbCk7Ci0JCQkJaWYgKCFyZmlzbnVsbCkK KwkJCQkJCQkJCQkJCSAgICZpc251bGwpOworCQkJCWlmICghaXNudWxsKQogCQkJCQlvbGRy ZWx3aGVyZWNsYXVzZSA9IHN0cmluZ1RvTm9kZShUZXh0RGF0dW1HZXRDU3RyaW5nKHdoZXJl Q2xhdXNlRGF0dW0pKTsKIAorCQkJCS8qIFRyYW5zZm9ybSB0aGUgaW50MnZlY3RvciBjb2x1 bW4gbGlzdCB0byBhIGJpdG1hcC4gKi8KKwkJCQljb2x1bW5MaXN0RGF0dW0gPSBTeXNDYWNo ZUdldEF0dHIoUFVCTElDQVRJT05SRUxNQVAsIHJmdHVwbGUsCisJCQkJCQkJCQkJCQkgICBB bnVtX3BnX3B1YmxpY2F0aW9uX3JlbF9wcmF0dHJzLAorCQkJCQkJCQkJCQkJICAgJmlzbnVs bCk7CisKKwkJCQlpZiAoIWlzbnVsbCkKKwkJCQkJb2xkY29sdW1ucyA9IHB1Yl9jb2xsaXN0 X3RvX2JpdG1hcHNldChOVUxMLCBjb2x1bW5MaXN0RGF0dW0sIE5VTEwpOworCiAJCQkJUmVs ZWFzZVN5c0NhY2hlKHJmdHVwbGUpOwogCQkJfQogCiAJCQlmb3JlYWNoKG5ld2xjLCByZWxz KQogCQkJewogCQkJCVB1YmxpY2F0aW9uUmVsSW5mbyAqbmV3cHVicmVsOworCQkJCU9pZAkJ CQkJbmV3cmVsaWQ7CisJCQkJQml0bWFwc2V0CQkgICAqbmV3Y29sdW1ucyA9IE5VTEw7CiAK IAkJCQluZXdwdWJyZWwgPSAoUHVibGljYXRpb25SZWxJbmZvICopIGxmaXJzdChuZXdsYyk7 CisJCQkJbmV3cmVsaWQgPSBSZWxhdGlvbkdldFJlbGlkKG5ld3B1YnJlbC0+cmVsYXRpb24p OworCisJCQkJLyoKKwkJCQkgKiBJZiB0aGUgbmV3IHB1YmxpY2F0aW9uIGhhcyBjb2x1bW4g bGlzdCwgdHJhbnNmb3JtIGl0IHRvCisJCQkJICogYSBiaXRtYXAgdG9vLgorCQkJCSAqLwor CQkJCWlmIChuZXdwdWJyZWwtPmNvbHVtbnMpCisJCQkJeworCQkJCQlMaXN0Q2VsbCAgICps YzsKKworCQkJCQlmb3JlYWNoKGxjLCBuZXdwdWJyZWwtPmNvbHVtbnMpCisJCQkJCXsKKwkJ CQkJCWNoYXIJICAgKmNvbG5hbWUgPSBzdHJWYWwobGZpcnN0KGxjKSk7CisJCQkJCQlBdHRy TnVtYmVyCWF0dG51bSA9IGdldF9hdHRudW0obmV3cmVsaWQsIGNvbG5hbWUpOworCisJCQkJ CQluZXdjb2x1bW5zID0gYm1zX2FkZF9tZW1iZXIobmV3Y29sdW1ucywgYXR0bnVtKTsKKwkJ CQkJfQorCQkJCX0KIAogCQkJCS8qCiAJCQkJICogQ2hlY2sgaWYgYW55IG9mIHRoZSBuZXcg c2V0IG9mIHJlbGF0aW9ucyBtYXRjaGVzIHdpdGggdGhlCiAJCQkJICogZXhpc3RpbmcgcmVs YXRpb25zIGluIHRoZSBwdWJsaWNhdGlvbi4gQWRkaXRpb25hbGx5LCBpZiB0aGUKIAkJCQkg KiByZWxhdGlvbiBoYXMgYW4gYXNzb2NpYXRlZCBXSEVSRSBjbGF1c2UsIGNoZWNrIHRoZSBX SEVSRQotCQkJCSAqIGV4cHJlc3Npb25zIGFsc28gbWF0Y2guIERyb3AgdGhlIHJlc3QuCisJ CQkJICogZXhwcmVzc2lvbnMgYWxzbyBtYXRjaC4gU2FtZSBmb3IgdGhlIGNvbHVtbiBsaXN0 LiBEcm9wIHRoZQorCQkJCSAqIHJlc3QuCiAJCQkJICovCiAJCQkJaWYgKFJlbGF0aW9uR2V0 UmVsaWQobmV3cHVicmVsLT5yZWxhdGlvbikgPT0gb2xkcmVsaWQpCiAJCQkJewotCQkJCQlp ZiAoZXF1YWwob2xkcmVsd2hlcmVjbGF1c2UsIG5ld3B1YnJlbC0+d2hlcmVDbGF1c2UpKQor CQkJCQlpZiAoZXF1YWwob2xkcmVsd2hlcmVjbGF1c2UsIG5ld3B1YnJlbC0+d2hlcmVDbGF1 c2UpICYmCisJCQkJCQlibXNfZXF1YWwob2xkY29sdW1ucywgbmV3Y29sdW1ucykpCiAJCQkJ CXsKIAkJCQkJCWZvdW5kID0gdHJ1ZTsKIAkJCQkJCWJyZWFrOwpAQCAtMTA1Nyw2ICsxMjcw LDcgQEAgQWx0ZXJQdWJsaWNhdGlvblRhYmxlcyhBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3Rt dCwgSGVhcFR1cGxlIHR1cCwKIAkJCXsKIAkJCQlvbGRyZWwgPSBwYWxsb2Moc2l6ZW9mKFB1 YmxpY2F0aW9uUmVsSW5mbykpOwogCQkJCW9sZHJlbC0+d2hlcmVDbGF1c2UgPSBOVUxMOwor CQkJCW9sZHJlbC0+Y29sdW1ucyA9IE5JTDsKIAkJCQlvbGRyZWwtPnJlbGF0aW9uID0gdGFi bGVfb3BlbihvbGRyZWxpZCwKIAkJCQkJCQkJCQkJICBTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxv Y2spOwogCQkJCWRlbHJlbHMgPSBsYXBwZW5kKGRlbHJlbHMsIG9sZHJlbCk7CkBAIC0xMTE4 LDcgKzEzMzIsNyBAQCBBbHRlclB1YmxpY2F0aW9uU2NoZW1hcyhBbHRlclB1YmxpY2F0aW9u U3RtdCAqc3RtdCwKIAl9CiAJZWxzZSBpZiAoc3RtdC0+YWN0aW9uID09IEFQX0Ryb3BPYmpl Y3RzKQogCQlQdWJsaWNhdGlvbkRyb3BTY2hlbWFzKHB1YmZvcm0tPm9pZCwgc2NoZW1haWRs aXN0LCBmYWxzZSk7Ci0JZWxzZQkJCQkJCS8qIEFQX1NldE9iamVjdHMgKi8KKwllbHNlIGlm IChzdG10LT5hY3Rpb24gPT0gQVBfU2V0T2JqZWN0cykKIAl7CiAJCUxpc3QJICAgKm9sZHNj aGVtYWlkcyA9IEdldFB1YmxpY2F0aW9uU2NoZW1hcyhwdWJmb3JtLT5vaWQpOwogCQlMaXN0 CSAgICpkZWxzY2hlbWFzID0gTklMOwpAQCAtMTQwMyw2ICsxNjE3LDcgQEAgT3BlblRhYmxl TGlzdChMaXN0ICp0YWJsZXMpCiAJTGlzdAkgICAqcmVscyA9IE5JTDsKIAlMaXN0Q2VsbCAg ICpsYzsKIAlMaXN0CSAgICpyZWxpZHNfd2l0aF9yZiA9IE5JTDsKKwlMaXN0CSAgICpyZWxp ZHNfd2l0aF9jb2xsaXN0ID0gTklMOwogCiAJLyoKIAkgKiBPcGVuLCBzaGFyZS1sb2NrLCBh bmQgY2hlY2sgYWxsIHRoZSBleHBsaWNpdGx5LXNwZWNpZmllZCByZWxhdGlvbnMKQEAgLTE0 MzcsNiArMTY1MiwxMyBAQCBPcGVuVGFibGVMaXN0KExpc3QgKnRhYmxlcykKIAkJCQkJCSBl cnJtc2coImNvbmZsaWN0aW5nIG9yIHJlZHVuZGFudCBXSEVSRSBjbGF1c2VzIGZvciB0YWJs ZSBcIiVzXCIiLAogCQkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSkpOwog CisJCQkvKiBEaXNhbGxvdyBkdXBsaWNhdGUgdGFibGVzIGlmIHRoZXJlIGFyZSBhbnkgd2l0 aCBjb2x1bW4gbGlzdHMuICovCisJCQlpZiAodC0+Y29sdW1ucyB8fCBsaXN0X21lbWJlcl9v aWQocmVsaWRzX3dpdGhfY29sbGlzdCwgbXlyZWxpZCkpCisJCQkJZXJlcG9ydChFUlJPUiwK KwkJCQkJCShlcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX09CSkVDVCksCisJCQkJCQkgZXJy bXNnKCJjb25mbGljdGluZyBvciByZWR1bmRhbnQgY29sdW1uIGxpc3RzIGZvciB0YWJsZSBc IiVzXCIiLAorCQkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSkpOworCiAJ CQl0YWJsZV9jbG9zZShyZWwsIFNoYXJlVXBkYXRlRXhjbHVzaXZlTG9jayk7CiAJCQljb250 aW51ZTsKIAkJfQpAQCAtMTQ0NCwxMiArMTY2NiwxNiBAQCBPcGVuVGFibGVMaXN0KExpc3Qg KnRhYmxlcykKIAkJcHViX3JlbCA9IHBhbGxvYyhzaXplb2YoUHVibGljYXRpb25SZWxJbmZv KSk7CiAJCXB1Yl9yZWwtPnJlbGF0aW9uID0gcmVsOwogCQlwdWJfcmVsLT53aGVyZUNsYXVz ZSA9IHQtPndoZXJlQ2xhdXNlOworCQlwdWJfcmVsLT5jb2x1bW5zID0gdC0+Y29sdW1uczsK IAkJcmVscyA9IGxhcHBlbmQocmVscywgcHViX3JlbCk7CiAJCXJlbGlkcyA9IGxhcHBlbmRf b2lkKHJlbGlkcywgbXlyZWxpZCk7CiAKIAkJaWYgKHQtPndoZXJlQ2xhdXNlKQogCQkJcmVs aWRzX3dpdGhfcmYgPSBsYXBwZW5kX29pZChyZWxpZHNfd2l0aF9yZiwgbXlyZWxpZCk7CiAK KwkJaWYgKHQtPmNvbHVtbnMpCisJCQlyZWxpZHNfd2l0aF9jb2xsaXN0ID0gbGFwcGVuZF9v aWQocmVsaWRzX3dpdGhfY29sbGlzdCwgbXlyZWxpZCk7CisKIAkJLyoKIAkJICogQWRkIGNo aWxkcmVuIG9mIHRoaXMgcmVsLCBpZiByZXF1ZXN0ZWQsIHNvIHRoYXQgdGhleSB0b28gYXJl IGFkZGVkCiAJCSAqIHRvIHRoZSBwdWJsaWNhdGlvbi4gIEEgcGFydGl0aW9uZWQgdGFibGUg Y2FuJ3QgaGF2ZSBhbnkgaW5oZXJpdGFuY2UKQEAgLTE0ODksNiArMTcxNSwxOCBAQCBPcGVu VGFibGVMaXN0KExpc3QgKnRhYmxlcykKIAkJCQkJCQkJIGVycm1zZygiY29uZmxpY3Rpbmcg b3IgcmVkdW5kYW50IFdIRVJFIGNsYXVzZXMgZm9yIHRhYmxlIFwiJXNcIiIsCiAJCQkJCQkJ CQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSkpKTsKIAorCQkJCQkvKgorCQkJCQkg KiBXZSBkb24ndCBhbGxvdyB0byBzcGVjaWZ5IGNvbHVtbiBsaXN0IGZvciBib3RoIHBhcmVu dAorCQkJCQkgKiBhbmQgY2hpbGQgdGFibGUgYXQgdGhlIHNhbWUgdGltZSBhcyBpdCBpcyBu b3QgdmVyeQorCQkJCQkgKiBjbGVhciB3aGljaCBvbmUgc2hvdWxkIGJlIGdpdmVuIHByZWZl cmVuY2UuCisJCQkJCSAqLworCQkJCQlpZiAoY2hpbGRyZWxpZCAhPSBteXJlbGlkICYmCisJ CQkJCQkodC0+Y29sdW1ucyB8fCBsaXN0X21lbWJlcl9vaWQocmVsaWRzX3dpdGhfY29sbGlz dCwgY2hpbGRyZWxpZCkpKQorCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJKGVycmNv ZGUoRVJSQ09ERV9EVVBMSUNBVEVfT0JKRUNUKSwKKwkJCQkJCQkJIGVycm1zZygiY29uZmxp Y3Rpbmcgb3IgcmVkdW5kYW50IGNvbHVtbiBsaXN0cyBmb3IgdGFibGUgXCIlc1wiIiwKKwkJ CQkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSkpOworCiAJCQkJCWNvbnRp bnVlOwogCQkJCX0KIApAQCAtMTQ5OCwxMSArMTczNiwxNiBAQCBPcGVuVGFibGVMaXN0KExp c3QgKnRhYmxlcykKIAkJCQlwdWJfcmVsLT5yZWxhdGlvbiA9IHJlbDsKIAkJCQkvKiBjaGls ZCBpbmhlcml0cyBXSEVSRSBjbGF1c2UgZnJvbSBwYXJlbnQgKi8KIAkJCQlwdWJfcmVsLT53 aGVyZUNsYXVzZSA9IHQtPndoZXJlQ2xhdXNlOworCQkJCS8qIGNoaWxkIGluaGVyaXRzIGNv bHVtbiBsaXN0IGZyb20gcGFyZW50ICovCisJCQkJcHViX3JlbC0+Y29sdW1ucyA9IHQtPmNv bHVtbnM7CiAJCQkJcmVscyA9IGxhcHBlbmQocmVscywgcHViX3JlbCk7CiAJCQkJcmVsaWRz ID0gbGFwcGVuZF9vaWQocmVsaWRzLCBjaGlsZHJlbGlkKTsKIAogCQkJCWlmICh0LT53aGVy ZUNsYXVzZSkKIAkJCQkJcmVsaWRzX3dpdGhfcmYgPSBsYXBwZW5kX29pZChyZWxpZHNfd2l0 aF9yZiwgY2hpbGRyZWxpZCk7CisKKwkJCQlpZiAodC0+Y29sdW1ucykKKwkJCQkJcmVsaWRz X3dpdGhfY29sbGlzdCA9IGxhcHBlbmRfb2lkKHJlbGlkc193aXRoX2NvbGxpc3QsIGNoaWxk cmVsaWQpOwogCQkJfQogCQl9CiAJfQpAQCAtMTYxMSw2ICsxODU0LDExIEBAIFB1YmxpY2F0 aW9uRHJvcFRhYmxlcyhPaWQgcHViaWQsIExpc3QgKnJlbHMsIGJvb2wgbWlzc2luZ19vaykK IAkJUmVsYXRpb24JcmVsID0gcHVicmVsLT5yZWxhdGlvbjsKIAkJT2lkCQkJcmVsaWQgPSBS ZWxhdGlvbkdldFJlbGlkKHJlbCk7CiAKKwkJaWYgKHB1YnJlbC0+Y29sdW1ucykKKwkJCWVy ZXBvcnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJ CQllcnJtc2coImNvbHVtbiBsaXN0IG11c3Qgbm90IGJlIHNwZWNpZmllZCBpbiBBTFRFUiBQ VUJMSUNBVElPTiAuLi4gRFJPUCIpKTsKKwogCQlwcmlkID0gR2V0U3lzQ2FjaGVPaWQyKFBV QkxJQ0FUSU9OUkVMTUFQLCBBbnVtX3BnX3B1YmxpY2F0aW9uX3JlbF9vaWQsCiAJCQkJCQkJ ICAgT2JqZWN0SWRHZXREYXR1bShyZWxpZCksCiAJCQkJCQkJICAgT2JqZWN0SWRHZXREYXR1 bShwdWJpZCkpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxp Y2F0aW9uLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYwppbmRl eCAwOWY3OGYyMjQ0MS4uM2UyODJlZDk5YWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNSZXBsaWNhdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNSZXBsaWNhdGlvbi5jCkBAIC01NzMsOSArNTczLDYgQEAgQ2hlY2tDbWRSZXBsaWNhSWRl bnRpdHkoUmVsYXRpb24gcmVsLCBDbWRUeXBlIGNtZCkKIAlpZiAoY21kICE9IENNRF9VUERB VEUgJiYgY21kICE9IENNRF9ERUxFVEUpCiAJCXJldHVybjsKIAotCWlmIChyZWwtPnJkX3Jl bC0+cmVscmVwbGlkZW50ID09IFJFUExJQ0FfSURFTlRJVFlfRlVMTCkKLQkJcmV0dXJuOwot CiAJLyoKIAkgKiBJdCBpcyBvbmx5IHNhZmUgdG8gZXhlY3V0ZSBVUERBVEUvREVMRVRFIHdo ZW4gYWxsIGNvbHVtbnMsIHJlZmVyZW5jZWQKIAkgKiBpbiB0aGUgcm93IGZpbHRlcnMgZnJv bSBwdWJsaWNhdGlvbnMgd2hpY2ggdGhlIHJlbGF0aW9uIGlzIGluLCBhcmUKQEAgLTU5NSwx NyArNTkyLDMzIEBAIENoZWNrQ21kUmVwbGljYUlkZW50aXR5KFJlbGF0aW9uIHJlbCwgQ21k VHlwZSBjbWQpCiAJCQkJIGVycm1zZygiY2Fubm90IHVwZGF0ZSB0YWJsZSBcIiVzXCIiLAog CQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSksCiAJCQkJIGVycmRldGFpbCgi Q29sdW1uIHVzZWQgaW4gdGhlIHB1YmxpY2F0aW9uIFdIRVJFIGV4cHJlc3Npb24gaXMgbm90 IHBhcnQgb2YgdGhlIHJlcGxpY2EgaWRlbnRpdHkuIikpKTsKKwllbHNlIGlmIChjbWQgPT0g Q01EX1VQREFURSAmJiAhcHViZGVzYy5jb2xzX3ZhbGlkX2Zvcl91cGRhdGUpCisJCWVyZXBv cnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX0NPTFVNTl9SRUZFUkVO Q0UpLAorCQkJCSBlcnJtc2coImNhbm5vdCB1cGRhdGUgdGFibGUgXCIlc1wiIiwKKwkJCQkJ CVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpLAorCQkJCSBlcnJkZXRhaWwoIkNvbHVt biBsaXN0IHVzZWQgYnkgdGhlIHB1YmxpY2F0aW9uIGRvZXMgbm90IGNvdmVyIHRoZSByZXBs aWNhIGlkZW50aXR5LiIpKSk7CiAJZWxzZSBpZiAoY21kID09IENNRF9ERUxFVEUgJiYgIXB1 YmRlc2MucmZfdmFsaWRfZm9yX2RlbGV0ZSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJy Y29kZShFUlJDT0RFX0lOVkFMSURfQ09MVU1OX1JFRkVSRU5DRSksCiAJCQkJIGVycm1zZygi Y2Fubm90IGRlbGV0ZSBmcm9tIHRhYmxlIFwiJXNcIiIsCiAJCQkJCQlSZWxhdGlvbkdldFJl bGF0aW9uTmFtZShyZWwpKSwKIAkJCQkgZXJyZGV0YWlsKCJDb2x1bW4gdXNlZCBpbiB0aGUg cHVibGljYXRpb24gV0hFUkUgZXhwcmVzc2lvbiBpcyBub3QgcGFydCBvZiB0aGUgcmVwbGlj YSBpZGVudGl0eS4iKSkpOworCWVsc2UgaWYgKGNtZCA9PSBDTURfREVMRVRFICYmICFwdWJk ZXNjLmNvbHNfdmFsaWRfZm9yX2RlbGV0ZSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJy Y29kZShFUlJDT0RFX0lOVkFMSURfQ09MVU1OX1JFRkVSRU5DRSksCisJCQkJIGVycm1zZygi Y2Fubm90IGRlbGV0ZSBmcm9tIHRhYmxlIFwiJXNcIiIsCisJCQkJCQlSZWxhdGlvbkdldFJl bGF0aW9uTmFtZShyZWwpKSwKKwkJCQkgZXJyZGV0YWlsKCJDb2x1bW4gbGlzdCB1c2VkIGJ5 IHRoZSBwdWJsaWNhdGlvbiBkb2VzIG5vdCBjb3ZlciB0aGUgcmVwbGljYSBpZGVudGl0eS4i KSkpOwogCiAJLyogSWYgcmVsYXRpb24gaGFzIHJlcGxpY2EgaWRlbnRpdHkgd2UgYXJlIGFs d2F5cyBnb29kLiAqLwogCWlmIChPaWRJc1ZhbGlkKFJlbGF0aW9uR2V0UmVwbGljYUluZGV4 KHJlbCkpKQogCQlyZXR1cm47CiAKKwkvKiBSRVBMSUNBIElERU5USVRZIEZVTEwgaXMgYWxz byBnb29kIGZvciBVUERBVEUvREVMRVRFLiAqLworCWlmIChyZWwtPnJkX3JlbC0+cmVscmVw bGlkZW50ID09IFJFUExJQ0FfSURFTlRJVFlfRlVMTCkKKwkJcmV0dXJuOworCiAJLyoKIAkg KiBUaGlzIGlzIFVQREFURS9ERUxFVEUgYW5kIHRoZXJlIGlzIG5vIHJlcGxpY2EgaWRlbnRp dHkuCiAJICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jIGIv c3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMKaW5kZXggZDRmODQ1NWEyYmQuLmE1MDQ0 Mzc4NzNmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYworKysg Yi9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYwpAQCAtNDg1MCw2ICs0ODUwLDcgQEAg X2NvcHlQdWJsaWNhdGlvblRhYmxlKGNvbnN0IFB1YmxpY2F0aW9uVGFibGUgKmZyb20pCiAK IAlDT1BZX05PREVfRklFTEQocmVsYXRpb24pOwogCUNPUFlfTk9ERV9GSUVMRCh3aGVyZUNs YXVzZSk7CisJQ09QWV9OT0RFX0ZJRUxEKGNvbHVtbnMpOwogCiAJcmV0dXJuIG5ld25vZGU7 CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMgYi9zcmMv YmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMKaW5kZXggZjEwMDJhZmU3YTAuLjRmYzE2Y2Uw NGUzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMKKysrIGIv c3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5jCkBAIC0yMzIyLDYgKzIzMjIsNyBAQCBf ZXF1YWxQdWJsaWNhdGlvblRhYmxlKGNvbnN0IFB1YmxpY2F0aW9uVGFibGUgKmEsIGNvbnN0 IFB1YmxpY2F0aW9uVGFibGUgKmIpCiB7CiAJQ09NUEFSRV9OT0RFX0ZJRUxEKHJlbGF0aW9u KTsKIAlDT01QQVJFX05PREVfRklFTEQod2hlcmVDbGF1c2UpOworCUNPTVBBUkVfTk9ERV9G SUVMRChjb2x1bW5zKTsKIAogCXJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXgg YTAzYjMzYjUzYmQuLmZmNDU3MzM5MGM1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJz ZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKQEAgLTk3NTEsMTMg Kzk3NTEsMTQgQEAgQ3JlYXRlUHVibGljYXRpb25TdG10OgogICogcmVsYXRpb25fZXhwciBo ZXJlLgogICovCiBQdWJsaWNhdGlvbk9ialNwZWM6Ci0JCQlUQUJMRSByZWxhdGlvbl9leHBy IE9wdFdoZXJlQ2xhdXNlCisJCQlUQUJMRSByZWxhdGlvbl9leHByIG9wdF9jb2x1bW5fbGlz dCBPcHRXaGVyZUNsYXVzZQogCQkJCXsKIAkJCQkJJCQgPSBtYWtlTm9kZShQdWJsaWNhdGlv bk9ialNwZWMpOwogCQkJCQkkJC0+cHVib2JqdHlwZSA9IFBVQkxJQ0FUSU9OT0JKX1RBQkxF OwogCQkJCQkkJC0+cHVidGFibGUgPSBtYWtlTm9kZShQdWJsaWNhdGlvblRhYmxlKTsKIAkJ CQkJJCQtPnB1YnRhYmxlLT5yZWxhdGlvbiA9ICQyOwotCQkJCQkkJC0+cHVidGFibGUtPndo ZXJlQ2xhdXNlID0gJDM7CisJCQkJCSQkLT5wdWJ0YWJsZS0+Y29sdW1ucyA9ICQzOworCQkJ CQkkJC0+cHVidGFibGUtPndoZXJlQ2xhdXNlID0gJDQ7CiAJCQkJfQogCQkJfCBBTEwgVEFC TEVTIElOX1AgU0NIRU1BIENvbElkCiAJCQkJewpAQCAtOTc3MiwxMSArOTc3MywxNSBAQCBQ dWJsaWNhdGlvbk9ialNwZWM6CiAJCQkJCSQkLT5wdWJvYmp0eXBlID0gUFVCTElDQVRJT05P QkpfVEFCTEVTX0lOX0NVUl9TQ0hFTUE7CiAJCQkJCSQkLT5sb2NhdGlvbiA9IEA1OwogCQkJ CX0KLQkJCXwgQ29sSWQgT3B0V2hlcmVDbGF1c2UKKwkJCXwgQ29sSWQgb3B0X2NvbHVtbl9s aXN0IE9wdFdoZXJlQ2xhdXNlCiAJCQkJewogCQkJCQkkJCA9IG1ha2VOb2RlKFB1YmxpY2F0 aW9uT2JqU3BlYyk7CiAJCQkJCSQkLT5wdWJvYmp0eXBlID0gUFVCTElDQVRJT05PQkpfQ09O VElOVUFUSU9OOwotCQkJCQlpZiAoJDIpCisJCQkJCS8qCisJCQkJCSAqIElmIGVpdGhlciBh IHJvdyBmaWx0ZXIgb3IgY29sdW1uIGxpc3QgaXMgc3BlY2lmaWVkLCBjcmVhdGUKKwkJCQkJ ICogYSBQdWJsaWNhdGlvblRhYmxlIG9iamVjdC4KKwkJCQkJICovCisJCQkJCWlmICgkMiB8 fCAkMykKIAkJCQkJewogCQkJCQkJLyoKIAkJCQkJCSAqIFRoZSBPcHRXaGVyZUNsYXVzZSBt dXN0IGJlIHN0b3JlZCBoZXJlIGJ1dCBpdCBpcwpAQCAtOTc4Niw3ICs5NzkxLDggQEAgUHVi bGljYXRpb25PYmpTcGVjOgogCQkJCQkJICovCiAJCQkJCQkkJC0+cHVidGFibGUgPSBtYWtl Tm9kZShQdWJsaWNhdGlvblRhYmxlKTsKIAkJCQkJCSQkLT5wdWJ0YWJsZS0+cmVsYXRpb24g PSBtYWtlUmFuZ2VWYXIoTlVMTCwgJDEsIEAxKTsKLQkJCQkJCSQkLT5wdWJ0YWJsZS0+d2hl cmVDbGF1c2UgPSAkMjsKKwkJCQkJCSQkLT5wdWJ0YWJsZS0+Y29sdW1ucyA9ICQyOworCQkJ CQkJJCQtPnB1YnRhYmxlLT53aGVyZUNsYXVzZSA9ICQzOwogCQkJCQl9CiAJCQkJCWVsc2UK IAkJCQkJewpAQCAtOTc5NCwyMyArOTgwMCwyNSBAQCBQdWJsaWNhdGlvbk9ialNwZWM6CiAJ CQkJCX0KIAkJCQkJJCQtPmxvY2F0aW9uID0gQDE7CiAJCQkJfQotCQkJfCBDb2xJZCBpbmRp cmVjdGlvbiBPcHRXaGVyZUNsYXVzZQorCQkJfCBDb2xJZCBpbmRpcmVjdGlvbiBvcHRfY29s dW1uX2xpc3QgT3B0V2hlcmVDbGF1c2UKIAkJCQl7CiAJCQkJCSQkID0gbWFrZU5vZGUoUHVi bGljYXRpb25PYmpTcGVjKTsKIAkJCQkJJCQtPnB1Ym9ianR5cGUgPSBQVUJMSUNBVElPTk9C Sl9DT05USU5VQVRJT047CiAJCQkJCSQkLT5wdWJ0YWJsZSA9IG1ha2VOb2RlKFB1YmxpY2F0 aW9uVGFibGUpOwogCQkJCQkkJC0+cHVidGFibGUtPnJlbGF0aW9uID0gbWFrZVJhbmdlVmFy RnJvbVF1YWxpZmllZE5hbWUoJDEsICQyLCBAMSwgeXlzY2FubmVyKTsKLQkJCQkJJCQtPnB1 YnRhYmxlLT53aGVyZUNsYXVzZSA9ICQzOworCQkJCQkkJC0+cHVidGFibGUtPmNvbHVtbnMg PSAkMzsKKwkJCQkJJCQtPnB1YnRhYmxlLT53aGVyZUNsYXVzZSA9ICQ0OwogCQkJCQkkJC0+ bG9jYXRpb24gPSBAMTsKIAkJCQl9CiAJCQkvKiBncmFtbWFyIGxpa2UgdGFibGVuYW1lICog LCBPTkxZIHRhYmxlbmFtZSwgT05MWSAoIHRhYmxlbmFtZSApICovCi0JCQl8IGV4dGVuZGVk X3JlbGF0aW9uX2V4cHIgT3B0V2hlcmVDbGF1c2UKKwkJCXwgZXh0ZW5kZWRfcmVsYXRpb25f ZXhwciBvcHRfY29sdW1uX2xpc3QgT3B0V2hlcmVDbGF1c2UKIAkJCQl7CiAJCQkJCSQkID0g bWFrZU5vZGUoUHVibGljYXRpb25PYmpTcGVjKTsKIAkJCQkJJCQtPnB1Ym9ianR5cGUgPSBQ VUJMSUNBVElPTk9CSl9DT05USU5VQVRJT047CiAJCQkJCSQkLT5wdWJ0YWJsZSA9IG1ha2VO b2RlKFB1YmxpY2F0aW9uVGFibGUpOwogCQkJCQkkJC0+cHVidGFibGUtPnJlbGF0aW9uID0g JDE7Ci0JCQkJCSQkLT5wdWJ0YWJsZS0+d2hlcmVDbGF1c2UgPSAkMjsKKwkJCQkJJCQtPnB1 YnRhYmxlLT5jb2x1bW5zID0gJDI7CisJCQkJCSQkLT5wdWJ0YWJsZS0+d2hlcmVDbGF1c2Ug PSAkMzsKIAkJCQl9CiAJCQl8IENVUlJFTlRfU0NIRU1BCiAJCQkJewpAQCAtMTc0ODgsNiAr MTc0OTYsMTMgQEAgcHJlcHJvY2Vzc19wdWJvYmpfbGlzdChMaXN0ICpwdWJvYmpzcGVjX2xp c3QsIGNvcmVfeXlzY2FuX3QgeXlzY2FubmVyKQogCQkJCQkJZXJybXNnKCJXSEVSRSBjbGF1 c2Ugbm90IGFsbG93ZWQgZm9yIHNjaGVtYSIpLAogCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9u KHB1Ym9iai0+bG9jYXRpb24pKTsKIAorCQkJLyogQ29sdW1uIGxpc3QgaXMgbm90IGFsbG93 ZWQgb24gYSBzY2hlbWEgb2JqZWN0ICovCisJCQlpZiAocHVib2JqLT5wdWJ0YWJsZSAmJiBw dWJvYmotPnB1YnRhYmxlLT5jb2x1bW5zKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQll cnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCWVycm1zZygiY29sdW1uIHNw ZWNpZmljYXRpb24gbm90IGFsbG93ZWQgZm9yIHNjaGVtYSIpLAorCQkJCQkJcGFyc2VyX2Vy cnBvc2l0aW9uKHB1Ym9iai0+bG9jYXRpb24pKTsKKwogCQkJLyoKIAkJCSAqIFdlIGNhbiBk aXN0aW5ndWlzaCBiZXR3ZWVuIHRoZSBkaWZmZXJlbnQgdHlwZSBvZiBzY2hlbWEKIAkJCSAq IG9iamVjdHMgYmFzZWQgb24gd2hldGhlciBuYW1lIGFuZCBwdWJ0YWJsZSBpcyBzZXQuCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMKaW5kZXggYzliMGVlZWZk N2UuLmY5ZGUxZDE2ZGMyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL3Byb3RvLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9w cm90by5jCkBAIC0yOSwxNiArMjksMzAgQEAKICNkZWZpbmUgVFJVTkNBVEVfQ0FTQ0FERQkJ KDE8PDApCiAjZGVmaW5lIFRSVU5DQVRFX1JFU1RBUlRfU0VRUwkoMTw8MSkKIAotc3RhdGlj IHZvaWQgbG9naWNhbHJlcF93cml0ZV9hdHRycyhTdHJpbmdJbmZvIG91dCwgUmVsYXRpb24g cmVsKTsKK3N0YXRpYyB2b2lkIGxvZ2ljYWxyZXBfd3JpdGVfYXR0cnMoU3RyaW5nSW5mbyBv dXQsIFJlbGF0aW9uIHJlbCwKKwkJCQkJCQkJICAgQml0bWFwc2V0ICpjb2x1bW5zKTsKIHN0 YXRpYyB2b2lkIGxvZ2ljYWxyZXBfd3JpdGVfdHVwbGUoU3RyaW5nSW5mbyBvdXQsIFJlbGF0 aW9uIHJlbCwKIAkJCQkJCQkJICAgVHVwbGVUYWJsZVNsb3QgKnNsb3QsCi0JCQkJCQkJCSAg IGJvb2wgYmluYXJ5KTsKKwkJCQkJCQkJICAgYm9vbCBiaW5hcnksIEJpdG1hcHNldCAqY29s dW1ucyk7CiBzdGF0aWMgdm9pZCBsb2dpY2FscmVwX3JlYWRfYXR0cnMoU3RyaW5nSW5mbyBp biwgTG9naWNhbFJlcFJlbGF0aW9uICpyZWwpOwogc3RhdGljIHZvaWQgbG9naWNhbHJlcF9y ZWFkX3R1cGxlKFN0cmluZ0luZm8gaW4sIExvZ2ljYWxSZXBUdXBsZURhdGEgKnR1cGxlKTsK IAogc3RhdGljIHZvaWQgbG9naWNhbHJlcF93cml0ZV9uYW1lc3BhY2UoU3RyaW5nSW5mbyBv dXQsIE9pZCBuc3BpZCk7CiBzdGF0aWMgY29uc3QgY2hhciAqbG9naWNhbHJlcF9yZWFkX25h bWVzcGFjZShTdHJpbmdJbmZvIGluKTsKIAorLyoKKyAqIENoZWNrIGlmIGEgY29sdW1uIGlz IGNvdmVyZWQgYnkgYSBjb2x1bW4gbGlzdC4KKyAqCisgKiBOZWVkIHRvIGJlIGNhcmVmdWwg YWJvdXQgTlVMTCwgd2hpY2ggaXMgdHJlYXRlZCBhcyBhIGNvbHVtbiBsaXN0IGNvdmVyaW5n CisgKiBhbGwgY29sdW1ucy4KKyAqLworc3RhdGljIGJvb2wKK2NvbHVtbl9pbl9jb2x1bW5f bGlzdChpbnQgYXR0bnVtLCBCaXRtYXBzZXQgKmNvbHVtbnMpCit7CisJcmV0dXJuIChjb2x1 bW5zID09IE5VTEwgfHwgYm1zX2lzX21lbWJlcihhdHRudW0sIGNvbHVtbnMpKTsKK30KKwor CiAvKgogICogV3JpdGUgQkVHSU4gdG8gdGhlIG91dHB1dCBzdHJlYW0uCiAgKi8KQEAgLTM5 OCw3ICs0MTIsNyBAQCBsb2dpY2FscmVwX3JlYWRfb3JpZ2luKFN0cmluZ0luZm8gaW4sIFhM b2dSZWNQdHIgKm9yaWdpbl9sc24pCiAgKi8KIHZvaWQKIGxvZ2ljYWxyZXBfd3JpdGVfaW5z ZXJ0KFN0cmluZ0luZm8gb3V0LCBUcmFuc2FjdGlvbklkIHhpZCwgUmVsYXRpb24gcmVsLAot CQkJCQkJVHVwbGVUYWJsZVNsb3QgKm5ld3Nsb3QsIGJvb2wgYmluYXJ5KQorCQkJCQkJVHVw bGVUYWJsZVNsb3QgKm5ld3Nsb3QsIGJvb2wgYmluYXJ5LCBCaXRtYXBzZXQgKmNvbHVtbnMp CiB7CiAJcHFfc2VuZGJ5dGUob3V0LCBMT0dJQ0FMX1JFUF9NU0dfSU5TRVJUKTsKIApAQCAt NDEwLDcgKzQyNCw3IEBAIGxvZ2ljYWxyZXBfd3JpdGVfaW5zZXJ0KFN0cmluZ0luZm8gb3V0 LCBUcmFuc2FjdGlvbklkIHhpZCwgUmVsYXRpb24gcmVsLAogCXBxX3NlbmRpbnQzMihvdXQs IFJlbGF0aW9uR2V0UmVsaWQocmVsKSk7CiAKIAlwcV9zZW5kYnl0ZShvdXQsICdOJyk7CQkv KiBuZXcgdHVwbGUgZm9sbG93cyAqLwotCWxvZ2ljYWxyZXBfd3JpdGVfdHVwbGUob3V0LCBy ZWwsIG5ld3Nsb3QsIGJpbmFyeSk7CisJbG9naWNhbHJlcF93cml0ZV90dXBsZShvdXQsIHJl bCwgbmV3c2xvdCwgYmluYXJ5LCBjb2x1bW5zKTsKIH0KIAogLyoKQEAgLTQ0Myw3ICs0NTcs NyBAQCBsb2dpY2FscmVwX3JlYWRfaW5zZXJ0KFN0cmluZ0luZm8gaW4sIExvZ2ljYWxSZXBU dXBsZURhdGEgKm5ld3R1cCkKIHZvaWQKIGxvZ2ljYWxyZXBfd3JpdGVfdXBkYXRlKFN0cmlu Z0luZm8gb3V0LCBUcmFuc2FjdGlvbklkIHhpZCwgUmVsYXRpb24gcmVsLAogCQkJCQkJVHVw bGVUYWJsZVNsb3QgKm9sZHNsb3QsIFR1cGxlVGFibGVTbG90ICpuZXdzbG90LAotCQkJCQkJ Ym9vbCBiaW5hcnkpCisJCQkJCQlib29sIGJpbmFyeSwgQml0bWFwc2V0ICpjb2x1bW5zKQog ewogCXBxX3NlbmRieXRlKG91dCwgTE9HSUNBTF9SRVBfTVNHX1VQREFURSk7CiAKQEAgLTQ2 NCwxMSArNDc4LDExIEBAIGxvZ2ljYWxyZXBfd3JpdGVfdXBkYXRlKFN0cmluZ0luZm8gb3V0 LCBUcmFuc2FjdGlvbklkIHhpZCwgUmVsYXRpb24gcmVsLAogCQkJcHFfc2VuZGJ5dGUob3V0 LCAnTycpOwkvKiBvbGQgdHVwbGUgZm9sbG93cyAqLwogCQllbHNlCiAJCQlwcV9zZW5kYnl0 ZShvdXQsICdLJyk7CS8qIG9sZCBrZXkgZm9sbG93cyAqLwotCQlsb2dpY2FscmVwX3dyaXRl X3R1cGxlKG91dCwgcmVsLCBvbGRzbG90LCBiaW5hcnkpOworCQlsb2dpY2FscmVwX3dyaXRl X3R1cGxlKG91dCwgcmVsLCBvbGRzbG90LCBiaW5hcnksIGNvbHVtbnMpOwogCX0KIAogCXBx X3NlbmRieXRlKG91dCwgJ04nKTsJCS8qIG5ldyB0dXBsZSBmb2xsb3dzICovCi0JbG9naWNh bHJlcF93cml0ZV90dXBsZShvdXQsIHJlbCwgbmV3c2xvdCwgYmluYXJ5KTsKKwlsb2dpY2Fs cmVwX3dyaXRlX3R1cGxlKG91dCwgcmVsLCBuZXdzbG90LCBiaW5hcnksIGNvbHVtbnMpOwog fQogCiAvKgpAQCAtNTM3LDcgKzU1MSw3IEBAIGxvZ2ljYWxyZXBfd3JpdGVfZGVsZXRlKFN0 cmluZ0luZm8gb3V0LCBUcmFuc2FjdGlvbklkIHhpZCwgUmVsYXRpb24gcmVsLAogCWVsc2UK IAkJcHFfc2VuZGJ5dGUob3V0LCAnSycpOwkvKiBvbGQga2V5IGZvbGxvd3MgKi8KIAotCWxv Z2ljYWxyZXBfd3JpdGVfdHVwbGUob3V0LCByZWwsIG9sZHNsb3QsIGJpbmFyeSk7CisJbG9n aWNhbHJlcF93cml0ZV90dXBsZShvdXQsIHJlbCwgb2xkc2xvdCwgYmluYXJ5LCBOVUxMKTsK IH0KIAogLyoKQEAgLTY1Miw3ICs2NjYsOCBAQCBsb2dpY2FscmVwX3dyaXRlX21lc3NhZ2Uo U3RyaW5nSW5mbyBvdXQsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbiwKICAq IFdyaXRlIHJlbGF0aW9uIGRlc2NyaXB0aW9uIHRvIHRoZSBvdXRwdXQgc3RyZWFtLgogICov CiB2b2lkCi1sb2dpY2FscmVwX3dyaXRlX3JlbChTdHJpbmdJbmZvIG91dCwgVHJhbnNhY3Rp b25JZCB4aWQsIFJlbGF0aW9uIHJlbCkKK2xvZ2ljYWxyZXBfd3JpdGVfcmVsKFN0cmluZ0lu Zm8gb3V0LCBUcmFuc2FjdGlvbklkIHhpZCwgUmVsYXRpb24gcmVsLAorCQkJCQkgQml0bWFw c2V0ICpjb2x1bW5zKQogewogCWNoYXIJICAgKnJlbG5hbWU7CiAKQEAgLTY3NCw3ICs2ODks NyBAQCBsb2dpY2FscmVwX3dyaXRlX3JlbChTdHJpbmdJbmZvIG91dCwgVHJhbnNhY3Rpb25J ZCB4aWQsIFJlbGF0aW9uIHJlbCkKIAlwcV9zZW5kYnl0ZShvdXQsIHJlbC0+cmRfcmVsLT5y ZWxyZXBsaWRlbnQpOwogCiAJLyogc2VuZCB0aGUgYXR0cmlidXRlIGluZm8gKi8KLQlsb2dp Y2FscmVwX3dyaXRlX2F0dHJzKG91dCwgcmVsKTsKKwlsb2dpY2FscmVwX3dyaXRlX2F0dHJz KG91dCwgcmVsLCBjb2x1bW5zKTsKIH0KIAogLyoKQEAgLTc1MSw3ICs3NjYsNyBAQCBsb2dp Y2FscmVwX3JlYWRfdHlwKFN0cmluZ0luZm8gaW4sIExvZ2ljYWxSZXBUeXAgKmx0eXApCiAg Ki8KIHN0YXRpYyB2b2lkCiBsb2dpY2FscmVwX3dyaXRlX3R1cGxlKFN0cmluZ0luZm8gb3V0 LCBSZWxhdGlvbiByZWwsIFR1cGxlVGFibGVTbG90ICpzbG90LAotCQkJCQkgICBib29sIGJp bmFyeSkKKwkJCQkJICAgYm9vbCBiaW5hcnksIEJpdG1hcHNldCAqY29sdW1ucykKIHsKIAlU dXBsZURlc2MJZGVzYzsKIAlEYXR1bQkgICAqdmFsdWVzOwpAQCAtNzYzLDggKzc3OCwxNCBA QCBsb2dpY2FscmVwX3dyaXRlX3R1cGxlKFN0cmluZ0luZm8gb3V0LCBSZWxhdGlvbiByZWws IFR1cGxlVGFibGVTbG90ICpzbG90LAogCiAJZm9yIChpID0gMDsgaSA8IGRlc2MtPm5hdHRz OyBpKyspCiAJewotCQlpZiAoVHVwbGVEZXNjQXR0cihkZXNjLCBpKS0+YXR0aXNkcm9wcGVk IHx8IFR1cGxlRGVzY0F0dHIoZGVzYywgaSktPmF0dGdlbmVyYXRlZCkKKwkJRm9ybV9wZ19h dHRyaWJ1dGUgYXR0ID0gVHVwbGVEZXNjQXR0cihkZXNjLCBpKTsKKworCQlpZiAoYXR0LT5h dHRpc2Ryb3BwZWQgfHwgYXR0LT5hdHRnZW5lcmF0ZWQpCisJCQljb250aW51ZTsKKworCQlp ZiAoIWNvbHVtbl9pbl9jb2x1bW5fbGlzdChhdHQtPmF0dG51bSwgY29sdW1ucykpCiAJCQlj b250aW51ZTsKKwogCQlubGl2ZWF0dHMrKzsKIAl9CiAJcHFfc2VuZGludDE2KG91dCwgbmxp dmVhdHRzKTsKQEAgLTc4Myw2ICs4MDQsOSBAQCBsb2dpY2FscmVwX3dyaXRlX3R1cGxlKFN0 cmluZ0luZm8gb3V0LCBSZWxhdGlvbiByZWwsIFR1cGxlVGFibGVTbG90ICpzbG90LAogCQlp ZiAoYXR0LT5hdHRpc2Ryb3BwZWQgfHwgYXR0LT5hdHRnZW5lcmF0ZWQpCiAJCQljb250aW51 ZTsKIAorCQlpZiAoIWNvbHVtbl9pbl9jb2x1bW5fbGlzdChhdHQtPmF0dG51bSwgY29sdW1u cykpCisJCQljb250aW51ZTsKKwogCQlpZiAoaXNudWxsW2ldKQogCQl7CiAJCQlwcV9zZW5k Ynl0ZShvdXQsIExPR0lDQUxSRVBfQ09MVU1OX05VTEwpOwpAQCAtOTA0LDcgKzkyOCw3IEBA IGxvZ2ljYWxyZXBfcmVhZF90dXBsZShTdHJpbmdJbmZvIGluLCBMb2dpY2FsUmVwVHVwbGVE YXRhICp0dXBsZSkKICAqIFdyaXRlIHJlbGF0aW9uIGF0dHJpYnV0ZSBtZXRhZGF0YSB0byB0 aGUgc3RyZWFtLgogICovCiBzdGF0aWMgdm9pZAotbG9naWNhbHJlcF93cml0ZV9hdHRycyhT dHJpbmdJbmZvIG91dCwgUmVsYXRpb24gcmVsKQorbG9naWNhbHJlcF93cml0ZV9hdHRycyhT dHJpbmdJbmZvIG91dCwgUmVsYXRpb24gcmVsLCBCaXRtYXBzZXQgKmNvbHVtbnMpCiB7CiAJ VHVwbGVEZXNjCWRlc2M7CiAJaW50CQkJaTsKQEAgLTkxNyw4ICs5NDEsMTQgQEAgbG9naWNh bHJlcF93cml0ZV9hdHRycyhTdHJpbmdJbmZvIG91dCwgUmVsYXRpb24gcmVsKQogCS8qIHNl bmQgbnVtYmVyIG9mIGxpdmUgYXR0cmlidXRlcyAqLwogCWZvciAoaSA9IDA7IGkgPCBkZXNj LT5uYXR0czsgaSsrKQogCXsKLQkJaWYgKFR1cGxlRGVzY0F0dHIoZGVzYywgaSktPmF0dGlz ZHJvcHBlZCB8fCBUdXBsZURlc2NBdHRyKGRlc2MsIGkpLT5hdHRnZW5lcmF0ZWQpCisJCUZv cm1fcGdfYXR0cmlidXRlIGF0dCA9IFR1cGxlRGVzY0F0dHIoZGVzYywgaSk7CisKKwkJaWYg KGF0dC0+YXR0aXNkcm9wcGVkIHx8IGF0dC0+YXR0Z2VuZXJhdGVkKQogCQkJY29udGludWU7 CisKKwkJaWYgKCFjb2x1bW5faW5fY29sdW1uX2xpc3QoYXR0LT5hdHRudW0sIGNvbHVtbnMp KQorCQkJY29udGludWU7CisKIAkJbmxpdmVhdHRzKys7CiAJfQogCXBxX3NlbmRpbnQxNihv dXQsIG5saXZlYXR0cyk7CkBAIC05MzcsNiArOTY3LDkgQEAgbG9naWNhbHJlcF93cml0ZV9h dHRycyhTdHJpbmdJbmZvIG91dCwgUmVsYXRpb24gcmVsKQogCQlpZiAoYXR0LT5hdHRpc2Ry b3BwZWQgfHwgYXR0LT5hdHRnZW5lcmF0ZWQpCiAJCQljb250aW51ZTsKIAorCQlpZiAoIWNv bHVtbl9pbl9jb2x1bW5fbGlzdChhdHQtPmF0dG51bSwgY29sdW1ucykpCisJCQljb250aW51 ZTsKKwogCQkvKiBSRVBMSUNBIElERU5USVRZIEZVTEwgbWVhbnMgYWxsIGNvbHVtbnMgYXJl IHNlbnQgYXMgcGFydCBvZiBrZXkuICovCiAJCWlmIChyZXBsaWRlbnRmdWxsIHx8CiAJCQli bXNfaXNfbWVtYmVyKGF0dC0+YXR0bnVtIC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0 ZU51bWJlciwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv dGFibGVzeW5jLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3lu Yy5jCmluZGV4IDE2NTk5NjQ1NzFjLi5jYWVhYjg1M2U0YyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYworKysgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCkBAIC0xMTIsNiArMTEyLDcgQEAK ICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgog I2luY2x1ZGUgInV0aWxzL2FjbC5oIgorI2luY2x1ZGUgInV0aWxzL2FycmF5LmgiCiAjaW5j bHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIK ICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgpAQCAtNzAxLDEyICs3MDIsMTMgQEAgZmV0 Y2hfcmVtb3RlX3RhYmxlX2luZm8oY2hhciAqbnNwbmFtZSwgY2hhciAqcmVsbmFtZSwKIAlT dHJpbmdJbmZvRGF0YSBjbWQ7CiAJVHVwbGVUYWJsZVNsb3QgKnNsb3Q7CiAJT2lkCQkJdGFi bGVSb3dbXSA9IHtPSURPSUQsIENIQVJPSUQsIENIQVJPSUR9OwotCU9pZAkJCWF0dHJSb3db XSA9IHtURVhUT0lELCBPSURPSUQsIEJPT0xPSUR9OworCU9pZAkJCWF0dHJSb3dbXSA9IHtJ TlQyT0lELCBURVhUT0lELCBPSURPSUQsIEJPT0xPSUR9OwogCU9pZAkJCXF1YWxSb3dbXSA9 IHtURVhUT0lEfTsKIAlib29sCQlpc251bGw7CiAJaW50CQkJbmF0dDsKIAlMaXN0Q2VsbCAg ICpsYzsKIAlib29sCQlmaXJzdDsKKwlCaXRtYXBzZXQgICppbmNsdWRlZF9jb2xzID0gTlVM TDsKIAogCWxyZWwtPm5zcG5hbWUgPSBuc3BuYW1lOwogCWxyZWwtPnJlbG5hbWUgPSByZWxu YW1lOwpAQCAtNzQ3LDEwICs3NDksMTEwIEBAIGZldGNoX3JlbW90ZV90YWJsZV9pbmZvKGNo YXIgKm5zcG5hbWUsIGNoYXIgKnJlbG5hbWUsCiAJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxl U2xvdChzbG90KTsKIAl3YWxyY3ZfY2xlYXJfcmVzdWx0KHJlcyk7CiAKLQkvKiBOb3cgZmV0 Y2ggY29sdW1ucy4gKi8KKworCS8qCisJICogR2V0IGNvbHVtbiBsaXN0cyBmb3IgZWFjaCBy ZWxhdGlvbi4KKwkgKgorCSAqIEZvciBpbml0aWFsIHN5bmNocm9uaXphdGlvbiwgY29sdW1u IGxpc3RzIGNhbiBiZSBpZ25vcmVkIGluIGZvbGxvd2luZworCSAqIGNhc2VzOgorCSAqCisJ ICogMSkgb25lIG9mIHRoZSBzdWJzY3JpYmVkIHB1YmxpY2F0aW9ucyBmb3IgdGhlIHRhYmxl IGhhc24ndCBzcGVjaWZpZWQKKwkgKiBhbnkgY29sdW1uIGxpc3QKKwkgKgorCSAqIDIpIG9u ZSBvZiB0aGUgc3Vic2NyaWJlZCBwdWJsaWNhdGlvbnMgaGFzIHB1YmFsbHRhYmxlcyBzZXQg dG8gdHJ1ZQorCSAqCisJICogMykgb25lIG9mIHRoZSBzdWJzY3JpYmVkIHB1YmxpY2F0aW9u cyBpcyBkZWNsYXJlZCBhcyBBTEwgVEFCTEVTIElOCisJICogU0NIRU1BIHRoYXQgaW5jbHVk ZXMgdGhpcyByZWxhdGlvbgorCSAqCisJICogV2UgbmVlZCB0byBkbyB0aGlzIGJlZm9yZSBm ZXRjaGluZyBpbmZvIGFib3V0IGNvbHVtbiBuYW1lcyBhbmQgdHlwZXMsCisJICogc28gdGhh dCB3ZSBjYW4gc2tpcCBjb2x1bW5zIHRoYXQgc2hvdWxkIG5vdCBiZSByZXBsaWNhdGVkLgor CSAqLworCWlmICh3YWxyY3Zfc2VydmVyX3ZlcnNpb24oTG9nUmVwV29ya2VyV2FsUmN2Q29u bikgPj0gMTUwMDAwKQorCXsKKwkJV2FsUmN2RXhlY1Jlc3VsdCAqcHVicmVzOworCQlUdXBs ZVRhYmxlU2xvdCAqc2xvdDsKKwkJT2lkCQkJYXR0cnNSb3dbXSA9IHtJTlQyT0lEfTsKKwkJ U3RyaW5nSW5mb0RhdGEgcHViX25hbWVzOworCQlib29sCQlmaXJzdCA9IHRydWU7CisKKwkJ aW5pdFN0cmluZ0luZm8oJnB1Yl9uYW1lcyk7CisJCWZvcmVhY2gobGMsIE15U3Vic2NyaXB0 aW9uLT5wdWJsaWNhdGlvbnMpCisJCXsKKwkJCWlmICghZmlyc3QpCisJCQkJYXBwZW5kU3Ry aW5nSW5mbygmcHViX25hbWVzLCAiLCAiKTsKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmco JnB1Yl9uYW1lcywgcXVvdGVfbGl0ZXJhbF9jc3RyKHN0clZhbChsZmlyc3QobGMpKSkpOwor CQkJZmlyc3QgPSBmYWxzZTsKKwkJfQorCisJCS8qCisJCSAqIEZldGNoIGluZm8gYWJvdXQg Y29sdW1uIGxpc3RzIGZvciB0aGUgcmVsYXRpb24gKGZyb20gYWxsIHRoZQorCQkgKiBwdWJs aWNhdGlvbnMpLiBXZSB1bm5lc3QgdGhlIGludDJ2ZWN0b3IgdmFsdWVzLCBiZWNhdXNlIHRo YXQKKwkJICogbWFrZXMgaXQgZWFzaWVyIHRvIGNvbWJpbmUgbGlzdHMgYnkgc2ltcGx5IGFk ZGluZyB0aGUgYXR0bnVtcworCQkgKiB0byBhIG5ldyBiaXRtYXAgKHdpdGhvdXQgaGF2aW5n IHRvIHBhcnNlIHRoZSBpbnQydmVjdG9yIGRhdGEpLgorCQkgKiBUaGlzIHByZXNlcnZlcyBO VUxMIHZhbHVlcywgc28gdGhhdCBpZiBvbmUgb2YgdGhlIHB1YmxpY2F0aW9ucworCQkgKiBo YXMgbm8gY29sdW1uIGxpc3QsIHdlJ2xsIGtub3cgdGhhdC4KKwkJICovCisJCXJlc2V0U3Ry aW5nSW5mbygmY21kKTsKKwkJYXBwZW5kU3RyaW5nSW5mbygmY21kLAorCQkJCQkJICJTRUxF Q1QgRElTVElOQ1QgdW5uZXN0IgorCQkJCQkJICIgIEZST00gcGdfcHVibGljYXRpb24gcCIK KwkJCQkJCSAiICBMRUZUIE9VVEVSIEpPSU4gcGdfcHVibGljYXRpb25fcmVsIHByIgorCQkJ CQkJICIgICAgICAgT04gKHAub2lkID0gcHIucHJwdWJpZCBBTkQgcHIucHJyZWxpZCA9ICV1 KSIKKwkJCQkJCSAiICBMRUZUIE9VVEVSIEpPSU4gdW5uZXN0KHByLnByYXR0cnMpIE9OIFRS VUUsIgorCQkJCQkJICIgIExBVEVSQUwgcGdfZ2V0X3B1YmxpY2F0aW9uX3RhYmxlcyhwLnB1 Ym5hbWUpIGdwdCIKKwkJCQkJCSAiIFdIRVJFIGdwdC5yZWxpZCA9ICV1IgorCQkJCQkJICIg ICBBTkQgcC5wdWJuYW1lIElOICggJXMgKSIsCisJCQkJCQkgbHJlbC0+cmVtb3RlaWQsCisJ CQkJCQkgbHJlbC0+cmVtb3RlaWQsCisJCQkJCQkgcHViX25hbWVzLmRhdGEpOworCisJCXB1 YnJlcyA9IHdhbHJjdl9leGVjKExvZ1JlcFdvcmtlcldhbFJjdkNvbm4sIGNtZC5kYXRhLAor CQkJCQkJCSBsZW5ndGhvZihhdHRyc1JvdyksIGF0dHJzUm93KTsKKworCQlpZiAocHVicmVz LT5zdGF0dXMgIT0gV0FMUkNWX09LX1RVUExFUykKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJ CShlcnJjb2RlKEVSUkNPREVfQ09OTkVDVElPTl9GQUlMVVJFKSwKKwkJCQkJIGVycm1zZygi Y291bGQgbm90IGZldGNoIGNvbHVtbiBsaXN0IGluZm8gZm9yIHRhYmxlIFwiJXMuJXNcIiBm cm9tIHB1Ymxpc2hlcjogJXMiLAorCQkJCQkJCW5zcG5hbWUsIHJlbG5hbWUsIHB1YnJlcy0+ ZXJyKSkpOworCisJCS8qCisJCSAqIE1lcmdlIHRoZSBjb2x1bW4gbGlzdHMgKGZyb20gZGlm ZmVyZW50IHB1YmxpY2F0aW9ucykgYnkgY3JlYXRpbmcKKwkJICogYSBzaW5nbGUgYml0bWFw IHdpdGggYWxsIHRoZSBhdHRudW1zLiBJZiB3ZSBmaW5kIGEgTlVMTCB2YWx1ZSwKKwkJICog dGhhdCBtZWFucyBvbmUgb2YgdGhlIHB1YmxpY2F0aW9ucyBoYXMgbm8gY29sdW1uIGxpc3Qg Zm9yIHRoZQorCQkgKiB0YWJsZSB3ZSdyZSBzeW5jaW5nLgorCQkgKi8KKwkJc2xvdCA9IE1h a2VTaW5nbGVUdXBsZVRhYmxlU2xvdChwdWJyZXMtPnR1cGxlZGVzYywgJlRUU09wc01pbmlt YWxUdXBsZSk7CisJCXdoaWxlICh0dXBsZXN0b3JlX2dldHR1cGxlc2xvdChwdWJyZXMtPnR1 cGxlc3RvcmUsIHRydWUsIGZhbHNlLCBzbG90KSkKKwkJeworCQkJRGF0dW0JY2Z2YWwgPSBz bG90X2dldGF0dHIoc2xvdCwgMSwgJmlzbnVsbCk7CisKKwkJCS8qIE5VTEwgbWVhbnMgZW1w dHkgY29sdW1uIGxpc3QsIHNvIHdlJ3JlIGRvbmUuICovCisJCQlpZiAoaXNudWxsKQorCQkJ eworCQkJCWJtc19mcmVlKGluY2x1ZGVkX2NvbHMpOworCQkJCWluY2x1ZGVkX2NvbHMgPSBO VUxMOworCQkJCWJyZWFrOworCQkJfQorCisJCQlpbmNsdWRlZF9jb2xzID0gYm1zX2FkZF9t ZW1iZXIoaW5jbHVkZWRfY29scywKKwkJCQkJCQkJCQlEYXR1bUdldEludDE2KGNmdmFsKSk7 CisKKwkJCUV4ZWNDbGVhclR1cGxlKHNsb3QpOworCQl9CisJCUV4ZWNEcm9wU2luZ2xlVHVw bGVUYWJsZVNsb3Qoc2xvdCk7CisKKwkJd2FscmN2X2NsZWFyX3Jlc3VsdChwdWJyZXMpOwor CisJCXBmcmVlKHB1Yl9uYW1lcy5kYXRhKTsKKwl9CisKKwkvKgorCSAqIE5vdyBmZXRjaCBj b2x1bW4gbmFtZXMgYW5kIHR5cGVzLgorCSAqLwogCXJlc2V0U3RyaW5nSW5mbygmY21kKTsK IAlhcHBlbmRTdHJpbmdJbmZvKCZjbWQsCi0JCQkJCSAiU0VMRUNUIGEuYXR0bmFtZSwiCisJ CQkJCSAiU0VMRUNUIGEuYXR0bnVtLCIKKwkJCQkJICIgICAgICAgYS5hdHRuYW1lLCIKIAkJ CQkJICIgICAgICAgYS5hdHR0eXBpZCwiCiAJCQkJCSAiICAgICAgIGEuYXR0bnVtID0gQU5Z KGkuaW5ka2V5KSIKIAkJCQkJICIgIEZST00gcGdfY2F0YWxvZy5wZ19hdHRyaWJ1dGUgYSIK QEAgLTc3OCwxNiArODgwLDM1IEBAIGZldGNoX3JlbW90ZV90YWJsZV9pbmZvKGNoYXIgKm5z cG5hbWUsIGNoYXIgKnJlbG5hbWUsCiAJbHJlbC0+YXR0dHlwcyA9IHBhbGxvYzAoTWF4VHVw bGVBdHRyaWJ1dGVOdW1iZXIgKiBzaXplb2YoT2lkKSk7CiAJbHJlbC0+YXR0a2V5cyA9IE5V TEw7CiAKKwkvKgorCSAqIFN0b3JlIHRoZSBjb2x1bW5zIGFzIGEgbGlzdCBvZiBuYW1lcy4g IElnbm9yZSB0aG9zZSB0aGF0IGFyZSBub3QKKwkgKiBwcmVzZW50IGluIHRoZSBjb2x1bW4g bGlzdCwgaWYgdGhlcmUgaXMgb25lLgorCSAqLwogCW5hdHQgPSAwOwogCXNsb3QgPSBNYWtl U2luZ2xlVHVwbGVUYWJsZVNsb3QocmVzLT50dXBsZWRlc2MsICZUVFNPcHNNaW5pbWFsVHVw bGUpOwogCXdoaWxlICh0dXBsZXN0b3JlX2dldHR1cGxlc2xvdChyZXMtPnR1cGxlc3RvcmUs IHRydWUsIGZhbHNlLCBzbG90KSkKIAl7Ci0JCWxyZWwtPmF0dG5hbWVzW25hdHRdID0KLQkJ CVRleHREYXR1bUdldENTdHJpbmcoc2xvdF9nZXRhdHRyKHNsb3QsIDEsICZpc251bGwpKTsK KwkJY2hhcgkgICAqcmVsX2NvbG5hbWU7CisJCUF0dHJOdW1iZXIJYXR0bnVtOworCisJCWF0 dG51bSA9IERhdHVtR2V0SW50MTYoc2xvdF9nZXRhdHRyKHNsb3QsIDEsICZpc251bGwpKTsK KwkJQXNzZXJ0KCFpc251bGwpOworCisJCS8qIElmIHRoZSBjb2x1bW4gaXMgbm90IGluIHRo ZSBjb2x1bW4gbGlzdCwgc2tpcCBpdC4gKi8KKwkJaWYgKGluY2x1ZGVkX2NvbHMgIT0gTlVM TCAmJiAhYm1zX2lzX21lbWJlcihhdHRudW0sIGluY2x1ZGVkX2NvbHMpKQorCQl7CisJCQlF eGVjQ2xlYXJUdXBsZShzbG90KTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJcmVsX2NvbG5h bWUgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKHNsb3RfZ2V0YXR0cihzbG90LCAyLCAmaXNudWxs KSk7CiAJCUFzc2VydCghaXNudWxsKTsKLQkJbHJlbC0+YXR0dHlwc1tuYXR0XSA9IERhdHVt R2V0T2JqZWN0SWQoc2xvdF9nZXRhdHRyKHNsb3QsIDIsICZpc251bGwpKTsKKworCQlscmVs LT5hdHRuYW1lc1tuYXR0XSA9IHJlbF9jb2xuYW1lOworCQlscmVsLT5hdHR0eXBzW25hdHRd ID0gRGF0dW1HZXRPYmplY3RJZChzbG90X2dldGF0dHIoc2xvdCwgMywgJmlzbnVsbCkpOwog CQlBc3NlcnQoIWlzbnVsbCk7Ci0JCWlmIChEYXR1bUdldEJvb2woc2xvdF9nZXRhdHRyKHNs b3QsIDMsICZpc251bGwpKSkKKworCQlpZiAoRGF0dW1HZXRCb29sKHNsb3RfZ2V0YXR0cihz bG90LCA0LCAmaXNudWxsKSkpCiAJCQlscmVsLT5hdHRrZXlzID0gYm1zX2FkZF9tZW1iZXIo bHJlbC0+YXR0a2V5cywgbmF0dCk7CiAKIAkJLyogU2hvdWxkIG5ldmVyIGhhcHBlbi4gKi8K QEAgLTgyMSw2ICs5NDIsOSBAQCBmZXRjaF9yZW1vdGVfdGFibGVfaW5mbyhjaGFyICpuc3Bu YW1lLCBjaGFyICpyZWxuYW1lLAogCSAqCiAJICogMykgb25lIG9mIHRoZSBzdWJzY3JpYmVk IHB1YmxpY2F0aW9ucyBpcyBkZWNsYXJlZCBhcyBBTEwgVEFCTEVTIElOCiAJICogU0NIRU1B IHRoYXQgaW5jbHVkZXMgdGhpcyByZWxhdGlvbgorCSAqCisJICogWFhYIERvZXMgdGhpcyBh Y3R1YWxseSBoYW5kbGUgcHViYWxsdGFibGVzIGFuZCBzY2hlbWEgcHVibGljYXRpb25zCisJ ICogY29ycmVjdGx5PwogCSAqLwogCWlmICh3YWxyY3Zfc2VydmVyX3ZlcnNpb24oTG9nUmVw V29ya2VyV2FsUmN2Q29ubikgPj0gMTUwMDAwKQogCXsKQEAgLTkzMCw4ICsxMDU0LDI0IEBA IGNvcHlfdGFibGUoUmVsYXRpb24gcmVsKQogCiAJLyogUmVndWxhciB0YWJsZSB3aXRoIG5v IHJvdyBmaWx0ZXIgKi8KIAlpZiAobHJlbC5yZWxraW5kID09IFJFTEtJTkRfUkVMQVRJT04g JiYgcXVhbCA9PSBOSUwpCi0JCWFwcGVuZFN0cmluZ0luZm8oJmNtZCwgIkNPUFkgJXMgVE8g U1RET1VUIiwKKwl7CisJCWFwcGVuZFN0cmluZ0luZm8oJmNtZCwgIkNPUFkgJXMgKCIsCiAJ CQkJCQkgcXVvdGVfcXVhbGlmaWVkX2lkZW50aWZpZXIobHJlbC5uc3BuYW1lLCBscmVsLnJl bG5hbWUpKTsKKworCQkvKgorCQkgKiBYWFggRG8gd2UgbmVlZCB0byBsaXN0IHRoZSBjb2x1 bW5zIGluIGFsbCBjYXNlcz8gTWF5YmUgd2UncmUgcmVwbGljYXRpbmcKKwkJICogYWxsIGNv bHVtbnM/CisJCSAqLworCQlmb3IgKGludCBpID0gMDsgaSA8IGxyZWwubmF0dHM7IGkrKykK KwkJeworCQkJaWYgKGkgPiAwKQorCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmNtZCwg IiwgIik7CisKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmNtZCwgcXVvdGVfaWRlbnRp ZmllcihscmVsLmF0dG5hbWVzW2ldKSk7CisJCX0KKworCQlhcHBlbmRTdHJpbmdJbmZvKCZj bWQsICIpIFRPIFNURE9VVCIpOworCX0KIAllbHNlCiAJewogCQkvKgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKaW5kZXggNWZkZGFiM2EzZDQu LmY1ZTc2MTBhMTcyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291 dHB1dC9wZ291dHB1dC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0 L3Bnb3V0cHV0LmMKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJ1dGlscy9pbnZhbC5o IgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0 aWxzLmgiCisjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAjaW5jbHVkZSAidXRpbHMvc3lzY2Fj aGUuaCIKICNpbmNsdWRlICJ1dGlscy92YXJsZW5hLmgiCiAKQEAgLTg1LDcgKzg2LDggQEAg c3RhdGljIExpc3QgKkxvYWRQdWJsaWNhdGlvbnMoTGlzdCAqcHVibmFtZXMpOwogc3RhdGlj IHZvaWQgcHVibGljYXRpb25faW52YWxpZGF0aW9uX2NiKERhdHVtIGFyZywgaW50IGNhY2hl aWQsCiAJCQkJCQkJCQkJdWludDMyIGhhc2h2YWx1ZSk7CiBzdGF0aWMgdm9pZCBzZW5kX3Jl bGF0aW9uX2FuZF9hdHRycyhSZWxhdGlvbiByZWxhdGlvbiwgVHJhbnNhY3Rpb25JZCB4aWQs Ci0JCQkJCQkJCQlMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgpOworCQkJCQkJCQkJTG9n aWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAorCQkJCQkJCQkJQml0bWFwc2V0ICpjb2x1bW5z KTsKIHN0YXRpYyB2b2lkIHNlbmRfcmVwbF9vcmlnaW4oTG9naWNhbERlY29kaW5nQ29udGV4 dCAqY3R4LAogCQkJCQkJCSBSZXBPcmlnaW5JZCBvcmlnaW5faWQsIFhMb2dSZWNQdHIgb3Jp Z2luX2xzbiwKIAkJCQkJCQkgYm9vbCBzZW5kX29yaWdpbik7CkBAIC0xNDMsOSArMTQ1LDYg QEAgdHlwZWRlZiBzdHJ1Y3QgUmVsYXRpb25TeW5jRW50cnkKIAkgKi8KIAlFeHByU3RhdGUg ICpleHByc3RhdGVbTlVNX1JPV0ZJTFRFUl9QVUJBQ1RJT05TXTsKIAlFU3RhdGUJICAgKmVz dGF0ZTsJCQkvKiBleGVjdXRvciBzdGF0ZSB1c2VkIGZvciByb3cgZmlsdGVyICovCi0JTWVt b3J5Q29udGV4dCBjYWNoZV9leHByX2N4dDsJLyogcHJpdmF0ZSBjb250ZXh0IGZvciBleHBy c3RhdGUgYW5kCi0JCQkJCQkJCQkgKiBlc3RhdGUsIGlmIGFueSAqLwotCiAJVHVwbGVUYWJs ZVNsb3QgKm5ld19zbG90OwkvKiBzbG90IGZvciBzdG9yaW5nIG5ldyB0dXBsZSAqLwogCVR1 cGxlVGFibGVTbG90ICpvbGRfc2xvdDsJLyogc2xvdCBmb3Igc3RvcmluZyBvbGQgdHVwbGUg Ki8KIApAQCAtMTY0LDYgKzE2MywxOSBAQCB0eXBlZGVmIHN0cnVjdCBSZWxhdGlvblN5bmNF bnRyeQogCSAqIGhhdmluZyBpZGVudGljYWwgVHVwbGVEZXNjLgogCSAqLwogCUF0dHJNYXAg ICAgKmF0dHJtYXA7CisKKwkvKgorCSAqIENvbHVtbnMgaW5jbHVkZWQgaW4gdGhlIHB1Ymxp Y2F0aW9uLCBvciBOVUxMIGlmIGFsbCBjb2x1bW5zIGFyZQorCSAqIGluY2x1ZGVkIGltcGxp Y2l0bHkuICBOb3RlIHRoYXQgdGhlIGF0dG51bXMgaW4gdGhpcyBiaXRtYXAgYXJlIG5vdAor CSAqIHNoaWZ0ZWQgYnkgRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlci4KKwkg Ki8KKwlCaXRtYXBzZXQgICpjb2x1bW5zOworCisJLyoKKwkgKiBQcml2YXRlIGNvbnRleHQg dG8gc3RvcmUgYWRkaXRpb25hbCBkYXRhIGZvciB0aGlzIGVudHJ5IC0gc3RhdGUgZm9yCisJ ICogdGhlIHJvdyBmaWx0ZXIgZXhwcmVzc2lvbnMsIGNvbHVtbiBsaXN0LCBldGMuCisJICov CisJTWVtb3J5Q29udGV4dCBlbnRyeV9jeHQ7CiB9IFJlbGF0aW9uU3luY0VudHJ5OwogCiAv KiBNYXAgdXNlZCB0byByZW1lbWJlciB3aGljaCByZWxhdGlvbiBzY2hlbWFzIHdlIHNlbnQu ICovCkBAIC0xODgsNiArMjAwLDcgQEAgc3RhdGljIEVTdGF0ZSAqY3JlYXRlX2VzdGF0ZV9m b3JfcmVsYXRpb24oUmVsYXRpb24gcmVsKTsKIHN0YXRpYyB2b2lkIHBnb3V0cHV0X3Jvd19m aWx0ZXJfaW5pdChQR091dHB1dERhdGEgKmRhdGEsCiAJCQkJCQkJCQkgTGlzdCAqcHVibGlj YXRpb25zLAogCQkJCQkJCQkJIFJlbGF0aW9uU3luY0VudHJ5ICplbnRyeSk7CisKIHN0YXRp YyBib29sIHBnb3V0cHV0X3Jvd19maWx0ZXJfZXhlY19leHByKEV4cHJTdGF0ZSAqc3RhdGUs CiAJCQkJCQkJCQkJICBFeHByQ29udGV4dCAqZWNvbnRleHQpOwogc3RhdGljIGJvb2wgcGdv dXRwdXRfcm93X2ZpbHRlcihSZWxhdGlvbiByZWxhdGlvbiwgVHVwbGVUYWJsZVNsb3QgKm9s ZF9zbG90LApAQCAtMTk1LDYgKzIwOCwxMSBAQCBzdGF0aWMgYm9vbCBwZ291dHB1dF9yb3df ZmlsdGVyKFJlbGF0aW9uIHJlbGF0aW9uLCBUdXBsZVRhYmxlU2xvdCAqb2xkX3Nsb3QsCiAJ CQkJCQkJCVJlbGF0aW9uU3luY0VudHJ5ICplbnRyeSwKIAkJCQkJCQkJUmVvcmRlckJ1ZmZl ckNoYW5nZVR5cGUgKmFjdGlvbik7CiAKKy8qIGNvbHVtbiBsaXN0IHJvdXRpbmVzICovCitz dGF0aWMgdm9pZCBwZ291dHB1dF9jb2x1bW5fbGlzdF9pbml0KFBHT3V0cHV0RGF0YSAqZGF0 YSwKKwkJCQkJCQkJCSAgTGlzdCAqcHVibGljYXRpb25zLAorCQkJCQkJCQkJICBSZWxhdGlv blN5bmNFbnRyeSAqZW50cnkpOworCiAvKgogICogU3BlY2lmeSBvdXRwdXQgcGx1Z2luIGNh bGxiYWNrcwogICovCkBAIC02MDMsMTEgKzYyMSwxMSBAQCBtYXliZV9zZW5kX3NjaGVtYShM b2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCiAJewogCQlSZWxhdGlvbglhbmNlc3RvciA9 IFJlbGF0aW9uSWRHZXRSZWxhdGlvbihyZWxlbnRyeS0+cHVibGlzaF9hc19yZWxpZCk7CiAK LQkJc2VuZF9yZWxhdGlvbl9hbmRfYXR0cnMoYW5jZXN0b3IsIHhpZCwgY3R4KTsKKwkJc2Vu ZF9yZWxhdGlvbl9hbmRfYXR0cnMoYW5jZXN0b3IsIHhpZCwgY3R4LCByZWxlbnRyeS0+Y29s dW1ucyk7CiAJCVJlbGF0aW9uQ2xvc2UoYW5jZXN0b3IpOwogCX0KIAotCXNlbmRfcmVsYXRp b25fYW5kX2F0dHJzKHJlbGF0aW9uLCB4aWQsIGN0eCk7CisJc2VuZF9yZWxhdGlvbl9hbmRf YXR0cnMocmVsYXRpb24sIHhpZCwgY3R4LCByZWxlbnRyeS0+Y29sdW1ucyk7CiAKIAlpZiAo aW5fc3RyZWFtaW5nKQogCQlzZXRfc2NoZW1hX3NlbnRfaW5fc3RyZWFtZWRfdHhuKHJlbGVu dHJ5LCB0b3B4aWQpOwpAQCAtNjIwLDcgKzYzOCw4IEBAIG1heWJlX3NlbmRfc2NoZW1hKExv Z2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwKICAqLwogc3RhdGljIHZvaWQKIHNlbmRfcmVs YXRpb25fYW5kX2F0dHJzKFJlbGF0aW9uIHJlbGF0aW9uLCBUcmFuc2FjdGlvbklkIHhpZCwK LQkJCQkJCUxvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCkKKwkJCQkJCUxvZ2ljYWxEZWNv ZGluZ0NvbnRleHQgKmN0eCwKKwkJCQkJCUJpdG1hcHNldCAqY29sdW1ucykKIHsKIAlUdXBs ZURlc2MJZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVsYXRpb24pOwogCWludAkJCWk7CkBA IC02NDMsMTMgKzY2MiwxNyBAQCBzZW5kX3JlbGF0aW9uX2FuZF9hdHRycyhSZWxhdGlvbiBy ZWxhdGlvbiwgVHJhbnNhY3Rpb25JZCB4aWQsCiAJCWlmIChhdHQtPmF0dHR5cGlkIDwgRmly c3RHZW5ia2lPYmplY3RJZCkKIAkJCWNvbnRpbnVlOwogCisJCS8qIFNraXAgdGhpcyBhdHRy aWJ1dGUgaWYgaXQncyBub3QgcHJlc2VudCBpbiB0aGUgY29sdW1uIGxpc3QgKi8KKwkJaWYg KGNvbHVtbnMgIT0gTlVMTCAmJiAhYm1zX2lzX21lbWJlcihhdHQtPmF0dG51bSwgY29sdW1u cykpCisJCQljb250aW51ZTsKKwogCQlPdXRwdXRQbHVnaW5QcmVwYXJlV3JpdGUoY3R4LCBm YWxzZSk7CiAJCWxvZ2ljYWxyZXBfd3JpdGVfdHlwKGN0eC0+b3V0LCB4aWQsIGF0dC0+YXR0 dHlwaWQpOwogCQlPdXRwdXRQbHVnaW5Xcml0ZShjdHgsIGZhbHNlKTsKIAl9CiAKIAlPdXRw dXRQbHVnaW5QcmVwYXJlV3JpdGUoY3R4LCBmYWxzZSk7Ci0JbG9naWNhbHJlcF93cml0ZV9y ZWwoY3R4LT5vdXQsIHhpZCwgcmVsYXRpb24pOworCWxvZ2ljYWxyZXBfd3JpdGVfcmVsKGN0 eC0+b3V0LCB4aWQsIHJlbGF0aW9uLCBjb2x1bW5zKTsKIAlPdXRwdXRQbHVnaW5Xcml0ZShj dHgsIGZhbHNlKTsKIH0KIApAQCAtNzAzLDYgKzcyNiwyOCBAQCBwZ291dHB1dF9yb3dfZmls dGVyX2V4ZWNfZXhwcihFeHByU3RhdGUgKnN0YXRlLCBFeHByQ29udGV4dCAqZWNvbnRleHQp CiAJcmV0dXJuIERhdHVtR2V0Qm9vbChyZXQpOwogfQogCisvKgorICogTWFrZSBzdXJlIHRo ZSBwZXItZW50cnkgbWVtb3J5IGNvbnRleHQgZXhpc3RzLgorICovCitzdGF0aWMgdm9pZAor cGdvdXRwdXRfZW5zdXJlX2VudHJ5X2N4dChQR091dHB1dERhdGEgKmRhdGEsIFJlbGF0aW9u U3luY0VudHJ5ICplbnRyeSkKK3sKKwlSZWxhdGlvbglyZWxhdGlvbjsKKworCS8qIFRoZSBj b250ZXh0IG1heSBhbHJlYWR5IGV4aXN0LCBpbiB3aGljaCBjYXNlIGJhaWwgb3V0LiAqLwor CWlmIChlbnRyeS0+ZW50cnlfY3h0KQorCQlyZXR1cm47CisKKwlyZWxhdGlvbiA9IFJlbGF0 aW9uSWRHZXRSZWxhdGlvbihlbnRyeS0+cHVibGlzaF9hc19yZWxpZCk7CisKKwllbnRyeS0+ ZW50cnlfY3h0ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRlKGRhdGEtPmNhY2hlY3R4LAorCQkJ CQkJCQkJCQkgImVudHJ5IHByaXZhdGUgY29udGV4dCIsCisJCQkJCQkJCQkJCSBBTExPQ1NF VF9TTUFMTF9TSVpFUyk7CisKKwlNZW1vcnlDb250ZXh0Q29weUFuZFNldElkZW50aWZpZXIo ZW50cnktPmVudHJ5X2N4dCwKKwkJCQkJCQkJCSAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUo cmVsYXRpb24pKTsKK30KKwogLyoKICAqIEluaXRpYWxpemUgdGhlIHJvdyBmaWx0ZXIuCiAg Ki8KQEAgLTgyMywyMSArODY4LDEzIEBAIHBnb3V0cHV0X3Jvd19maWx0ZXJfaW5pdChQR091 dHB1dERhdGEgKmRhdGEsIExpc3QgKnB1YmxpY2F0aW9ucywKIAl7CiAJCVJlbGF0aW9uCXJl bGF0aW9uID0gUmVsYXRpb25JZEdldFJlbGF0aW9uKGVudHJ5LT5wdWJsaXNoX2FzX3JlbGlk KTsKIAotCQlBc3NlcnQoZW50cnktPmNhY2hlX2V4cHJfY3h0ID09IE5VTEwpOwotCi0JCS8q IENyZWF0ZSB0aGUgbWVtb3J5IGNvbnRleHQgZm9yIHJvdyBmaWx0ZXJzICovCi0JCWVudHJ5 LT5jYWNoZV9leHByX2N4dCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShkYXRhLT5jYWNoZWN0 eCwKLQkJCQkJCQkJCQkJCQkgICJSb3cgZmlsdGVyIGV4cHJlc3Npb25zIiwKLQkJCQkJCQkJ CQkJCQkgIEFMTE9DU0VUX0RFRkFVTFRfU0laRVMpOwotCi0JCU1lbW9yeUNvbnRleHRDb3B5 QW5kU2V0SWRlbnRpZmllcihlbnRyeS0+Y2FjaGVfZXhwcl9jeHQsCi0JCQkJCQkJCQkJICBS ZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWxhdGlvbikpOworCQlwZ291dHB1dF9lbnN1cmVf ZW50cnlfY3h0KGRhdGEsIGVudHJ5KTsKIAogCQkvKgogCQkgKiBOb3cgYWxsIHRoZSBmaWx0 ZXJzIGZvciBhbGwgcHViYWN0aW9ucyBhcmUga25vd24uIENvbWJpbmUgdGhlbSB3aGVuCiAJ CSAqIHRoZWlyIHB1YmFjdGlvbnMgYXJlIHRoZSBzYW1lLgogCQkgKi8KLQkJb2xkY3R4ID0g TWVtb3J5Q29udGV4dFN3aXRjaFRvKGVudHJ5LT5jYWNoZV9leHByX2N4dCk7CisJCW9sZGN0 eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhlbnRyeS0+ZW50cnlfY3h0KTsKIAkJZW50cnkt PmVzdGF0ZSA9IGNyZWF0ZV9lc3RhdGVfZm9yX3JlbGF0aW9uKHJlbGF0aW9uKTsKIAkJZm9y IChpZHggPSAwOyBpZHggPCBOVU1fUk9XRklMVEVSX1BVQkFDVElPTlM7IGlkeCsrKQogCQl7 CkBAIC04NjAsNiArODk3LDEwNSBAQCBwZ291dHB1dF9yb3dfZmlsdGVyX2luaXQoUEdPdXRw dXREYXRhICpkYXRhLCBMaXN0ICpwdWJsaWNhdGlvbnMsCiAJfQogfQogCisvKgorICogSW5p dGlhbGl6ZSB0aGUgY29sdW1uIGxpc3QuCisgKi8KK3N0YXRpYyB2b2lkCitwZ291dHB1dF9j b2x1bW5fbGlzdF9pbml0KFBHT3V0cHV0RGF0YSAqZGF0YSwgTGlzdCAqcHVibGljYXRpb25z LAorCQkJCQkJICBSZWxhdGlvblN5bmNFbnRyeSAqZW50cnkpCit7CisJTGlzdENlbGwgICAq bGM7CisKKwkvKgorCSAqIEZpbmQgaWYgdGhlcmUgYXJlIGFueSBjb2x1bW4gbGlzdHMgZm9y IHRoaXMgcmVsYXRpb24uIElmIHRoZXJlIGFyZSwKKwkgKiBidWlsZCBhIGJpdG1hcCBtZXJn aW5nIGFsbCB0aGUgY29sdW1uIGxpc3RzLgorCSAqCisJICogQWxsIHRoZSBnaXZlbiBwdWJs aWNhdGlvbi10YWJsZSBtYXBwaW5ncyBtdXN0IGJlIGNoZWNrZWQuCisJICoKKwkgKiBNdWx0 aXBsZSBwdWJsaWNhdGlvbnMgbWlnaHQgaGF2ZSBtdWx0aXBsZSBjb2x1bW4gbGlzdHMgZm9y IHRoaXMgcmVsYXRpb24uCisJICoKKwkgKiBGT1IgQUxMIFRBQkxFUyBhbmQgRk9SIEFMTCBU QUJMRVMgSU4gU0NIRU1BIGltcGxpZXMgImRvbid0IHVzZSBjb2x1bW4KKwkgKiBsaXN0IiBz byBpdCB0YWtlcyBwcmVjZWRlbmNlLgorCSAqLworCWZvcmVhY2gobGMsIHB1YmxpY2F0aW9u cykKKwl7CisJCVB1YmxpY2F0aW9uICpwdWIgPSBsZmlyc3QobGMpOworCQlIZWFwVHVwbGUJ Y2Z0dXBsZSA9IE5VTEw7CisJCURhdHVtCQljZmRhdHVtID0gMDsKKworCQkvKgorCQkgKiBB c3N1bWUgdGhlcmUncyBubyBjb2x1bW4gbGlzdC4gT25seSBpZiB3ZSBmaW5kIHBnX3B1Ymxp Y2F0aW9uX3JlbAorCQkgKiBlbnRyeSB3aXRoIGEgY29sdW1uIGxpc3Qgd2UnbGwgc3dpdGNo IGl0IHRvIGZhbHNlLgorCQkgKi8KKwkJYm9vbAkJcHViX25vX2xpc3QgPSB0cnVlOworCisJ CS8qCisJCSAqIElmIHRoZSBwdWJsaWNhdGlvbiBpcyBGT1IgQUxMIFRBQkxFUyB0aGVuIGl0 IGlzIHRyZWF0ZWQgdGhlIHNhbWUgYXMgaWYKKwkJICogdGhlcmUgYXJlIG5vIGNvbHVtbiBs aXN0cyAoZXZlbiBpZiBvdGhlciBwdWJsaWNhdGlvbnMgaGF2ZSBhIGxpc3QpLgorCQkgKi8K KwkJaWYgKCFwdWItPmFsbHRhYmxlcykKKwkJeworCQkJLyoKKwkJCSAqIENoZWNrIGZvciB0 aGUgcHJlc2VuY2Ugb2YgYSBjb2x1bW4gbGlzdCBpbiB0aGlzIHB1YmxpY2F0aW9uLgorCQkJ ICoKKwkJCSAqIE5vdGU6IElmIHdlIGZpbmQgbm8gcGdfcHVibGljYXRpb25fcmVsIHJvdywg aXQncyBhIHB1YmxpY2F0aW9uCisJCQkgKiBkZWZpbmVkIGZvciBhIHdob2xlIHNjaGVtYSwg c28gaXQgY2FuJ3QgaGF2ZSBhIGNvbHVtbiBsaXN0LCBqdXN0CisJCQkgKiBsaWtlIGEgRk9S IEFMTCBUQUJMRVMgcHVibGljYXRpb24uCisJCQkgKi8KKwkJCWNmdHVwbGUgPSBTZWFyY2hT eXNDYWNoZTIoUFVCTElDQVRJT05SRUxNQVAsCisJCQkJCQkJCQkgIE9iamVjdElkR2V0RGF0 dW0oZW50cnktPnB1Ymxpc2hfYXNfcmVsaWQpLAorCQkJCQkJCQkJICBPYmplY3RJZEdldERh dHVtKHB1Yi0+b2lkKSk7CisKKwkJCWlmIChIZWFwVHVwbGVJc1ZhbGlkKGNmdHVwbGUpKQor CQkJeworCQkJCS8qCisJCQkJICogTG9va3VwIHRoZSBjb2x1bW4gbGlzdCBhdHRyaWJ1dGUu CisJCQkJICoKKwkJCQkgKiBOb3RlOiBXZSB1cGRhdGUgdGhlIHB1Yl9ub19saXN0IHZhbHVl IGRpcmVjdGx5LCBiZWNhdXNlIGlmCisJCQkJICogdGhlIHZhbHVlIGlzIE5VTEwsIHdlIGhh dmUgbm8gbGlzdCAoYW5kIHZpY2UgdmVyc2EpLgorCQkJCSAqLworCQkJCWNmZGF0dW0gPSBT eXNDYWNoZUdldEF0dHIoUFVCTElDQVRJT05SRUxNQVAsIGNmdHVwbGUsCisJCQkJCQkJCQkJ ICBBbnVtX3BnX3B1YmxpY2F0aW9uX3JlbF9wcmF0dHJzLAorCQkJCQkJCQkJCSAgJnB1Yl9u b19saXN0KTsKKworCQkJCS8qCisJCQkJICogQnVpbGQgdGhlIGNvbHVtbiBsaXN0IGJpdG1h cCBpbiB0aGUgcGVyLWVudHJ5IGNvbnRleHQuCisJCQkJICoKKwkJCQkgKiBXZSBuZWVkIHRv IG1lcmdlIGNvbHVtbiBsaXN0cyBmcm9tIGFsbCBwdWJsaWNhdGlvbnMsIHNvIHdlCisJCQkJ ICogdXBkYXRlIHRoZSBzYW1lIGJpdG1hcHNldC4gSWYgdGhlIGNvbHVtbiBsaXN0IGlzIG51 bGwsIHdlCisJCQkJICogaW50ZXJwcmV0IGl0IGFzIHJlcGxpY2F0aW5nIGFsbCBjb2x1bW5z LgorCQkJCSAqLworCQkJCWlmICghcHViX25vX2xpc3QpCS8qIHdoZW4gbm90IG51bGwgKi8K KwkJCQl7CisJCQkJCXBnb3V0cHV0X2Vuc3VyZV9lbnRyeV9jeHQoZGF0YSwgZW50cnkpOwor CisJCQkJCWVudHJ5LT5jb2x1bW5zID0gcHViX2NvbGxpc3RfdG9fYml0bWFwc2V0KGVudHJ5 LT5jb2x1bW5zLAorCQkJCQkJCQkJCQkJCQkJICBjZmRhdHVtLAorCQkJCQkJCQkJCQkJCQkJ ICBlbnRyeS0+ZW50cnlfY3h0KTsKKwkJCQl9CisJCQl9CisJCX0KKworCQkvKgorCQkgKiBG b3VuZCBhIHB1YmxpY2F0aW9uIHdpdGggbm8gY29sdW1uIGxpc3QsIHNvIHdlJ3JlIGRvbmUu IEJ1dCBmaXJzdAorCQkgKiBkaXNjYXJkIGNvbHVtbiBsaXN0IHdlIG1pZ2h0IGhhdmUgZnJv bSBwcmVjZWRpbmcgcHVibGljYXRpb25zLgorCQkgKi8KKwkJaWYgKHB1Yl9ub19saXN0KQor CQl7CisJCQlpZiAoY2Z0dXBsZSkKKwkJCQlSZWxlYXNlU3lzQ2FjaGUoY2Z0dXBsZSk7CisK KwkJCWJtc19mcmVlKGVudHJ5LT5jb2x1bW5zKTsKKwkJCWVudHJ5LT5jb2x1bW5zID0gTlVM TDsKKworCQkJYnJlYWs7CisJCX0KKworCQlSZWxlYXNlU3lzQ2FjaGUoY2Z0dXBsZSk7CisJ fQkvKiBsb29wIGFsbCBzdWJzY3JpYmVkIHB1YmxpY2F0aW9ucyAqLworCit9CisKIC8qCiAg KiBJbml0aWFsaXplIHRoZSBzbG90IGZvciBzdG9yaW5nIG5ldyBhbmQgb2xkIHR1cGxlcywg YW5kIGJ1aWxkIHRoZSBtYXAgdGhhdAogICogd2lsbCBiZSB1c2VkIHRvIGNvbnZlcnQgdGhl IHJlbGF0aW9uJ3MgdHVwbGVzIGludG8gdGhlIGFuY2VzdG9yJ3MgZm9ybWF0LgpAQCAtMTIy NCw3ICsxMzYwLDcgQEAgcGdvdXRwdXRfY2hhbmdlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQg KmN0eCwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogCiAJCQlPdXRwdXRQbHVnaW5QcmVwYXJl V3JpdGUoY3R4LCB0cnVlKTsKIAkJCWxvZ2ljYWxyZXBfd3JpdGVfaW5zZXJ0KGN0eC0+b3V0 LCB4aWQsIHRhcmdldHJlbCwgbmV3X3Nsb3QsCi0JCQkJCQkJCQlkYXRhLT5iaW5hcnkpOwor CQkJCQkJCQkJZGF0YS0+YmluYXJ5LCByZWxlbnRyeS0+Y29sdW1ucyk7CiAJCQlPdXRwdXRQ bHVnaW5Xcml0ZShjdHgsIHRydWUpOwogCQkJYnJlYWs7CiAJCWNhc2UgUkVPUkRFUl9CVUZG RVJfQ0hBTkdFX1VQREFURToKQEAgLTEyNzgsMTEgKzE0MTQsMTMgQEAgcGdvdXRwdXRfY2hh bmdlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgUmVvcmRlckJ1ZmZlclRYTiAqdHhu LAogCQkJewogCQkJCWNhc2UgUkVPUkRFUl9CVUZGRVJfQ0hBTkdFX0lOU0VSVDoKIAkJCQkJ bG9naWNhbHJlcF93cml0ZV9pbnNlcnQoY3R4LT5vdXQsIHhpZCwgdGFyZ2V0cmVsLAotCQkJ CQkJCQkJCQluZXdfc2xvdCwgZGF0YS0+YmluYXJ5KTsKKwkJCQkJCQkJCQkJbmV3X3Nsb3Qs IGRhdGEtPmJpbmFyeSwKKwkJCQkJCQkJCQkJcmVsZW50cnktPmNvbHVtbnMpOwogCQkJCQli cmVhazsKIAkJCQljYXNlIFJFT1JERVJfQlVGRkVSX0NIQU5HRV9VUERBVEU6CiAJCQkJCWxv Z2ljYWxyZXBfd3JpdGVfdXBkYXRlKGN0eC0+b3V0LCB4aWQsIHRhcmdldHJlbCwKLQkJCQkJ CQkJCQkJb2xkX3Nsb3QsIG5ld19zbG90LCBkYXRhLT5iaW5hcnkpOworCQkJCQkJCQkJCQlv bGRfc2xvdCwgbmV3X3Nsb3QsIGRhdGEtPmJpbmFyeSwKKwkJCQkJCQkJCQkJcmVsZW50cnkt PmNvbHVtbnMpOwogCQkJCQlicmVhazsKIAkJCQljYXNlIFJFT1JERVJfQlVGRkVSX0NIQU5H RV9ERUxFVEU6CiAJCQkJCWxvZ2ljYWxyZXBfd3JpdGVfZGVsZXRlKGN0eC0+b3V0LCB4aWQs IHRhcmdldHJlbCwKQEAgLTE3MjksOCArMTg2Nyw5IEBAIGdldF9yZWxfc3luY19lbnRyeShQ R091dHB1dERhdGEgKmRhdGEsIFJlbGF0aW9uIHJlbGF0aW9uKQogCQllbnRyeS0+bmV3X3Ns b3QgPSBOVUxMOwogCQllbnRyeS0+b2xkX3Nsb3QgPSBOVUxMOwogCQltZW1zZXQoZW50cnkt PmV4cHJzdGF0ZSwgMCwgc2l6ZW9mKGVudHJ5LT5leHByc3RhdGUpKTsKLQkJZW50cnktPmNh Y2hlX2V4cHJfY3h0ID0gTlVMTDsKKwkJZW50cnktPmVudHJ5X2N4dCA9IE5VTEw7CiAJCWVu dHJ5LT5wdWJsaXNoX2FzX3JlbGlkID0gSW52YWxpZE9pZDsKKwkJZW50cnktPmNvbHVtbnMg PSBOVUxMOwogCQllbnRyeS0+YXR0cm1hcCA9IE5VTEw7CiAJfQogCkBAIC0xNzc2LDYgKzE5 MTUsOCBAQCBnZXRfcmVsX3N5bmNfZW50cnkoUEdPdXRwdXREYXRhICpkYXRhLCBSZWxhdGlv biByZWxhdGlvbikKIAkJZW50cnktPnNjaGVtYV9zZW50ID0gZmFsc2U7CiAJCWxpc3RfZnJl ZShlbnRyeS0+c3RyZWFtZWRfdHhucyk7CiAJCWVudHJ5LT5zdHJlYW1lZF90eG5zID0gTklM OworCQlibXNfZnJlZShlbnRyeS0+Y29sdW1ucyk7CisJCWVudHJ5LT5jb2x1bW5zID0gTlVM TDsKIAkJZW50cnktPnB1YmFjdGlvbnMucHViaW5zZXJ0ID0gZmFsc2U7CiAJCWVudHJ5LT5w dWJhY3Rpb25zLnB1YnVwZGF0ZSA9IGZhbHNlOwogCQllbnRyeS0+cHViYWN0aW9ucy5wdWJk ZWxldGUgPSBmYWxzZTsKQEAgLTE3OTksMTcgKzE5NDAsMTggQEAgZ2V0X3JlbF9zeW5jX2Vu dHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRpb24pCiAJCS8qCiAJCSAq IFJvdyBmaWx0ZXIgY2FjaGUgY2xlYW51cHMuCiAJCSAqLwotCQlpZiAoZW50cnktPmNhY2hl X2V4cHJfY3h0KQotCQkJTWVtb3J5Q29udGV4dERlbGV0ZShlbnRyeS0+Y2FjaGVfZXhwcl9j eHQpOworCQlpZiAoZW50cnktPmVudHJ5X2N4dCkKKwkJCU1lbW9yeUNvbnRleHREZWxldGUo ZW50cnktPmVudHJ5X2N4dCk7CiAKLQkJZW50cnktPmNhY2hlX2V4cHJfY3h0ID0gTlVMTDsK KwkJZW50cnktPmVudHJ5X2N4dCA9IE5VTEw7CiAJCWVudHJ5LT5lc3RhdGUgPSBOVUxMOwog CQltZW1zZXQoZW50cnktPmV4cHJzdGF0ZSwgMCwgc2l6ZW9mKGVudHJ5LT5leHByc3RhdGUp KTsKIAogCQkvKgogCQkgKiBCdWlsZCBwdWJsaWNhdGlvbiBjYWNoZS4gV2UgY2FuJ3QgdXNl IG9uZSBwcm92aWRlZCBieSByZWxjYWNoZSBhcwotCQkgKiByZWxjYWNoZSBjb25zaWRlcnMg YWxsIHB1YmxpY2F0aW9ucyBnaXZlbiByZWxhdGlvbiBpcyBpbiwgYnV0IGhlcmUKLQkJICog d2Ugb25seSBuZWVkIHRvIGNvbnNpZGVyIG9uZXMgdGhhdCB0aGUgc3Vic2NyaWJlciByZXF1 ZXN0ZWQuCisJCSAqIHJlbGNhY2hlIGNvbnNpZGVycyBhbGwgcHVibGljYXRpb25zIHRoYXQg dGhlIGdpdmVuIHJlbGF0aW9uIGlzIGluLAorCQkgKiBidXQgaGVyZSB3ZSBvbmx5IG5lZWQg dG8gY29uc2lkZXIgb25lcyB0aGF0IHRoZSBzdWJzY3JpYmVyCisJCSAqIHJlcXVlc3RlZC4K IAkJICovCiAJCWZvcmVhY2gobGMsIGRhdGEtPnB1YmxpY2F0aW9ucykKIAkJewpAQCAtMTg3 OCw2ICsyMDIwLDkgQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwg UmVsYXRpb24gcmVsYXRpb24pCiAJCQl9CiAKIAkJCS8qCisJCQkgKiBJZiB0aGUgcmVsYXRp b24gaXMgdG8gYmUgcHVibGlzaGVkLCBkZXRlcm1pbmUgYWN0aW9ucyB0bworCQkJICogcHVi bGlzaCwgYW5kIGxpc3Qgb2YgY29sdW1ucywgaWYgYXBwcm9wcmlhdGUuCisJCQkgKgogCQkJ ICogRG9uJ3QgcHVibGlzaCBjaGFuZ2VzIGZvciBwYXJ0aXRpb25lZCB0YWJsZXMsIGJlY2F1 c2UKIAkJCSAqIHB1Ymxpc2hpbmcgdGhvc2Ugb2YgaXRzIHBhcnRpdGlvbnMgc3VmZmljZXMs IHVubGVzcyBwYXJ0aXRpb24KIAkJCSAqIGNoYW5nZXMgd29uJ3QgYmUgcHVibGlzaGVkIGR1 ZSB0byBwdWJ2aWFyb290IGJlaW5nIHNldC4KQEAgLTE5MzgsNiArMjA4Myw5IEBAIGdldF9y ZWxfc3luY19lbnRyeShQR091dHB1dERhdGEgKmRhdGEsIFJlbGF0aW9uIHJlbGF0aW9uKQog CiAJCQkvKiBJbml0aWFsaXplIHRoZSByb3cgZmlsdGVyICovCiAJCQlwZ291dHB1dF9yb3df ZmlsdGVyX2luaXQoZGF0YSwgcmVsX3B1YmxpY2F0aW9ucywgZW50cnkpOworCisJCQkvKiBJ bml0aWFsaXplIHRoZSBjb2x1bW4gbGlzdCAqLworCQkJcGdvdXRwdXRfY29sdW1uX2xpc3Rf aW5pdChkYXRhLCByZWxfcHVibGljYXRpb25zLCBlbnRyeSk7CiAJCX0KIAogCQlsaXN0X2Zy ZWUocHViaWRzKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNh Y2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCmluZGV4IGZjY2Zm Y2U1NzI5Li5hMmRhNzJmMGQ0OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2Fj aGUvcmVsY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5j CkBAIC01NTUzLDYgKzU1NTMsOCBAQCBSZWxhdGlvbkJ1aWxkUHVibGljYXRpb25EZXNjKFJl bGF0aW9uIHJlbGF0aW9uLCBQdWJsaWNhdGlvbkRlc2MgKnB1YmRlc2MpCiAJCW1lbXNldChw dWJkZXNjLCAwLCBzaXplb2YoUHVibGljYXRpb25EZXNjKSk7CiAJCXB1YmRlc2MtPnJmX3Zh bGlkX2Zvcl91cGRhdGUgPSB0cnVlOwogCQlwdWJkZXNjLT5yZl92YWxpZF9mb3JfZGVsZXRl ID0gdHJ1ZTsKKwkJcHViZGVzYy0+Y29sc192YWxpZF9mb3JfdXBkYXRlID0gdHJ1ZTsKKwkJ cHViZGVzYy0+Y29sc192YWxpZF9mb3JfZGVsZXRlID0gdHJ1ZTsKIAkJcmV0dXJuOwogCX0K IApAQCAtNTU2NSw2ICs1NTY3LDggQEAgUmVsYXRpb25CdWlsZFB1YmxpY2F0aW9uRGVzYyhS ZWxhdGlvbiByZWxhdGlvbiwgUHVibGljYXRpb25EZXNjICpwdWJkZXNjKQogCW1lbXNldChw dWJkZXNjLCAwLCBzaXplb2YoUHVibGljYXRpb25EZXNjKSk7CiAJcHViZGVzYy0+cmZfdmFs aWRfZm9yX3VwZGF0ZSA9IHRydWU7CiAJcHViZGVzYy0+cmZfdmFsaWRfZm9yX2RlbGV0ZSA9 IHRydWU7CisJcHViZGVzYy0+Y29sc192YWxpZF9mb3JfdXBkYXRlID0gdHJ1ZTsKKwlwdWJk ZXNjLT5jb2xzX3ZhbGlkX2Zvcl9kZWxldGUgPSB0cnVlOwogCiAJLyogRmV0Y2ggdGhlIHB1 YmxpY2F0aW9uIG1lbWJlcnNoaXAgaW5mby4gKi8KIAlwdWJvaWRzID0gR2V0UmVsYXRpb25Q dWJsaWNhdGlvbnMocmVsaWQpOwpAQCAtNTYxNiw3ICs1NjIwLDcgQEAgUmVsYXRpb25CdWls ZFB1YmxpY2F0aW9uRGVzYyhSZWxhdGlvbiByZWxhdGlvbiwgUHVibGljYXRpb25EZXNjICpw dWJkZXNjKQogCQkgKi8KIAkJaWYgKCFwdWJmb3JtLT5wdWJhbGx0YWJsZXMgJiYKIAkJCShw dWJmb3JtLT5wdWJ1cGRhdGUgfHwgcHViZm9ybS0+cHViZGVsZXRlKSAmJgotCQkJY29udGFp bl9pbnZhbGlkX3JmY29sdW1uKHB1YmlkLCByZWxhdGlvbiwgYW5jZXN0b3JzLAorCQkJcHVi X3JmX2NvbnRhaW5zX2ludmFsaWRfY29sdW1uKHB1YmlkLCByZWxhdGlvbiwgYW5jZXN0b3Jz LAogCQkJCQkJCQkJIHB1YmZvcm0tPnB1YnZpYXJvb3QpKQogCQl7CiAJCQlpZiAocHViZm9y bS0+cHVidXBkYXRlKQpAQCAtNTYyNSw2ICs1NjI5LDIzIEBAIFJlbGF0aW9uQnVpbGRQdWJs aWNhdGlvbkRlc2MoUmVsYXRpb24gcmVsYXRpb24sIFB1YmxpY2F0aW9uRGVzYyAqcHViZGVz YykKIAkJCQlwdWJkZXNjLT5yZl92YWxpZF9mb3JfZGVsZXRlID0gZmFsc2U7CiAJCX0KIAor CQkvKgorCQkgKiBDaGVjayBpZiBhbGwgY29sdW1ucyBhcmUgcGFydCBvZiB0aGUgUkVQTElD QSBJREVOVElUWSBpbmRleCBvciBub3QuCisJCSAqCisJCSAqIElmIHRoZSBwdWJsaWNhdGlv biBpcyBGT1IgQUxMIFRBQkxFUyB0aGVuIGl0IG1lYW5zIHRoZSB0YWJsZSBoYXMgbm8KKwkJ ICogY29sdW1uIGxpc3QgYW5kIHdlIGNhbiBza2lwIHRoZSB2YWxpZGF0aW9uLgorCQkgKi8K KwkJaWYgKCFwdWJmb3JtLT5wdWJhbGx0YWJsZXMgJiYKKwkJCShwdWJmb3JtLT5wdWJ1cGRh dGUgfHwgcHViZm9ybS0+cHViZGVsZXRlKSAmJgorCQkJcHViX2NvbGxpc3RfY29udGFpbnNf aW52YWxpZF9jb2x1bW4ocHViaWQsIHJlbGF0aW9uLCBhbmNlc3RvcnMsCisJCQkJCQkJCQkg cHViZm9ybS0+cHVidmlhcm9vdCkpCisJCXsKKwkJCWlmIChwdWJmb3JtLT5wdWJ1cGRhdGUp CisJCQkJcHViZGVzYy0+Y29sc192YWxpZF9mb3JfdXBkYXRlID0gZmFsc2U7CisJCQlpZiAo cHViZm9ybS0+cHViZGVsZXRlKQorCQkJCXB1YmRlc2MtPmNvbHNfdmFsaWRfZm9yX2RlbGV0 ZSA9IGZhbHNlOworCQl9CisKIAkJUmVsZWFzZVN5c0NhY2hlKHR1cCk7CiAKIAkJLyoKQEAg LTU2MzYsNiArNTY1NywxNiBAQCBSZWxhdGlvbkJ1aWxkUHVibGljYXRpb25EZXNjKFJlbGF0 aW9uIHJlbGF0aW9uLCBQdWJsaWNhdGlvbkRlc2MgKnB1YmRlc2MpCiAJCQlwdWJkZXNjLT5w dWJhY3Rpb25zLnB1YmRlbGV0ZSAmJiBwdWJkZXNjLT5wdWJhY3Rpb25zLnB1YnRydW5jYXRl ICYmCiAJCQkhcHViZGVzYy0+cmZfdmFsaWRfZm9yX3VwZGF0ZSAmJiAhcHViZGVzYy0+cmZf dmFsaWRfZm9yX2RlbGV0ZSkKIAkJCWJyZWFrOworCisJCS8qCisJCSAqIElmIHdlIGtub3cg ZXZlcnl0aGluZyBpcyByZXBsaWNhdGVkIGFuZCB0aGUgY29sdW1uIGxpc3QgaXMgaW52YWxp ZAorCQkgKiBmb3IgdXBkYXRlIGFuZCBkZWxldGUsIHRoZXJlIGlzIG5vIHBvaW50IHRvIGNo ZWNrIGZvciBvdGhlcgorCQkgKiBwdWJsaWNhdGlvbnMuCisJCSAqLworCQlpZiAocHViZGVz Yy0+cHViYWN0aW9ucy5wdWJpbnNlcnQgJiYgcHViZGVzYy0+cHViYWN0aW9ucy5wdWJ1cGRh dGUgJiYKKwkJCXB1YmRlc2MtPnB1YmFjdGlvbnMucHViZGVsZXRlICYmIHB1YmRlc2MtPnB1 YmFjdGlvbnMucHVidHJ1bmNhdGUgJiYKKwkJCSFwdWJkZXNjLT5jb2xzX3ZhbGlkX2Zvcl91 cGRhdGUgJiYgIXB1YmRlc2MtPmNvbHNfdmFsaWRfZm9yX2RlbGV0ZSkKKwkJCWJyZWFrOwog CX0KIAogCWlmIChyZWxhdGlvbi0+cmRfcHViZGVzYykKZGlmZiAtLWdpdCBhL3NyYy9iaW4v cGdfZHVtcC9wZ19kdW1wLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCmluZGV4IDcy NWNkMmU0ZWJjLi5iZTQwYWNkM2UzNyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3Bn X2R1bXAuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCkBAIC00MTAxLDYgKzQx MDEsNyBAQCBnZXRQdWJsaWNhdGlvblRhYmxlcyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8g dGJsaW5mb1tdLCBpbnQgbnVtVGFibGVzKQogCWludAkJCWlfcHJwdWJpZDsKIAlpbnQJCQlp X3BycmVsaWQ7CiAJaW50CQkJaV9wcnJlbHF1YWw7CisJaW50CQkJaV9wcmF0dHJzOwogCWlu dAkJCWksCiAJCQkJaiwKIAkJCQludHVwczsKQEAgLTQxMTQsMTIgKzQxMTUsMjAgQEAgZ2V0 UHVibGljYXRpb25UYWJsZXMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvIHRibGluZm9bXSwg aW50IG51bVRhYmxlcykKIAlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxNTAwMDApCiAJ CWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAogCQkJCQkJCSAiU0VMRUNUIHRhYmxlb2lk LCBvaWQsIHBycHViaWQsIHBycmVsaWQsICIKLQkJCQkJCQkgInBnX2NhdGFsb2cucGdfZ2V0 X2V4cHIocHJxdWFsLCBwcnJlbGlkKSBBUyBwcnJlbHF1YWwgIgotCQkJCQkJCSAiRlJPTSBw Z19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX3JlbCIpOworCQkJCQkJCSAicGdfY2F0YWxvZy5w Z19nZXRfZXhwcihwcnF1YWwsIHBycmVsaWQpIEFTIHBycmVscXVhbCwgIgorCQkJCQkJCSAi KENBU0VcbiIKKwkJCQkJCQkgIiAgV0hFTiBwci5wcmF0dHJzIElTIE5PVCBOVUxMIFRIRU5c biIKKwkJCQkJCQkgIiAgICAoU0VMRUNUIGFycmF5X2FnZyhhdHRuYW1lKVxuIgorCQkJCQkJ CSAiICAgICAgIEZST01cbiIKKwkJCQkJCQkgIiAgICAgICAgIHBnX2NhdGFsb2cuZ2VuZXJh dGVfc2VyaWVzKDAsIHBnX2NhdGFsb2cuYXJyYXlfdXBwZXIocHIucHJhdHRyczo6cGdfY2F0 YWxvZy5pbnQyW10sIDEpKSBzLFxuIgorCQkJCQkJCSAiICAgICAgICAgcGdfY2F0YWxvZy5w Z19hdHRyaWJ1dGVcbiIKKwkJCQkJCQkgIiAgICAgIFdIRVJFIGF0dHJlbGlkID0gcHIucHJy ZWxpZCBBTkQgYXR0bnVtID0gcHJhdHRyc1tzXSlcbiIKKwkJCQkJCQkgIiAgRUxTRSBOVUxM IEVORCkgcHJhdHRycyAiCisJCQkJCQkJICJGUk9NIHBnX2NhdGFsb2cucGdfcHVibGljYXRp b25fcmVsIHByIik7CiAJZWxzZQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKIAkJ CQkJCQkgIlNFTEVDVCB0YWJsZW9pZCwgb2lkLCBwcnB1YmlkLCBwcnJlbGlkLCAiCi0JCQkJ CQkJICJOVUxMIEFTIHBycmVscXVhbCAiCisJCQkJCQkJICJOVUxMIEFTIHBycmVscXVhbCwg TlVMTCBBUyBwcmF0dHJzICIKIAkJCQkJCQkgIkZST00gcGdfY2F0YWxvZy5wZ19wdWJsaWNh dGlvbl9yZWwiKTsKIAlyZXMgPSBFeGVjdXRlU3FsUXVlcnkoZm91dCwgcXVlcnktPmRhdGEs IFBHUkVTX1RVUExFU19PSyk7CiAKQEAgLTQxMzAsNiArNDEzOSw3IEBAIGdldFB1YmxpY2F0 aW9uVGFibGVzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyB0YmxpbmZvW10sIGludCBudW1U YWJsZXMpCiAJaV9wcnB1YmlkID0gUFFmbnVtYmVyKHJlcywgInBycHViaWQiKTsKIAlpX3By cmVsaWQgPSBQUWZudW1iZXIocmVzLCAicHJyZWxpZCIpOwogCWlfcHJyZWxxdWFsID0gUFFm bnVtYmVyKHJlcywgInBycmVscXVhbCIpOworCWlfcHJhdHRycyA9IFBRZm51bWJlcihyZXMs ICJwcmF0dHJzIik7CiAKIAkvKiB0aGlzIGFsbG9jYXRpb24gbWF5IGJlIG1vcmUgdGhhbiB3 ZSBuZWVkICovCiAJcHVicmluZm8gPSBwZ19tYWxsb2MobnR1cHMgKiBzaXplb2YoUHVibGlj YXRpb25SZWxJbmZvKSk7CkBAIC00MTc1LDYgKzQxODUsMjggQEAgZ2V0UHVibGljYXRpb25U YWJsZXMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvIHRibGluZm9bXSwgaW50IG51bVRhYmxl cykKIAkJZWxzZQogCQkJcHVicmluZm9bal0ucHVicmVscXVhbCA9IHBnX3N0cmR1cChQUWdl dHZhbHVlKHJlcywgaSwgaV9wcnJlbHF1YWwpKTsKIAorCQlpZiAoIVBRZ2V0aXNudWxsKHJl cywgaSwgaV9wcmF0dHJzKSkKKwkJeworCQkJY2hhcgkgICoqYXR0bmFtZXM7CisJCQlpbnQJ CQluYXR0bmFtZXM7CisJCQlQUUV4cEJ1ZmZlciBhdHRyaWJzOworCisJCQlpZiAoIXBhcnNl UEdBcnJheShQUWdldHZhbHVlKHJlcywgaSwgaV9wcmF0dHJzKSwKKwkJCQkJCQkgICZhdHRu YW1lcywgJm5hdHRuYW1lcykpCisJCQkJZmF0YWwoImNvdWxkIG5vdCBwYXJzZSAlcyBhcnJh eSIsICJwcmF0dHJzIik7CisJCQlhdHRyaWJzID0gY3JlYXRlUFFFeHBCdWZmZXIoKTsKKwkJ CWZvciAoaW50IGsgPSAwOyBrIDwgbmF0dG5hbWVzOyBrKyspCisJCQl7CisJCQkJaWYgKGsg PiAwKQorCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihhdHRyaWJzLCAiLCAiKTsKKworCQkJ CWFwcGVuZFBRRXhwQnVmZmVyU3RyKGF0dHJpYnMsIGZtdElkKGF0dG5hbWVzW2tdKSk7CisJ CQl9CisJCQlwdWJyaW5mb1tqXS5wdWJyYXR0cnMgPSBhdHRyaWJzLT5kYXRhOworCQl9CisJ CWVsc2UKKwkJCXB1YnJpbmZvW2pdLnB1YnJhdHRycyA9IE5VTEw7CisKIAkJLyogRGVjaWRl IHdoZXRoZXIgd2Ugd2FudCB0byBkdW1wIGl0ICovCiAJCXNlbGVjdER1bXBhYmxlUHVibGlj YXRpb25PYmplY3QoJihwdWJyaW5mb1tqXS5kb2JqKSwgZm91dCk7CiAKQEAgLTQyNDksMTAg KzQyODEsMTMgQEAgZHVtcFB1YmxpY2F0aW9uVGFibGUoQXJjaGl2ZSAqZm91dCwgY29uc3Qg UHVibGljYXRpb25SZWxJbmZvICpwdWJyaW5mbykKIAogCXF1ZXJ5ID0gY3JlYXRlUFFFeHBC dWZmZXIoKTsKIAotCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiQUxURVIgUFVCTElDQVRJ T04gJXMgQUREIFRBQkxFIE9OTFkiLAorCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiQUxU RVIgUFVCTElDQVRJT04gJXMgQUREIFRBQkxFIE9OTFkgIiwKIAkJCQkJICBmbXRJZChwdWJp bmZvLT5kb2JqLm5hbWUpKTsKLQlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwgIiAlcyIsCi0J CQkJCSAgZm10UXVhbGlmaWVkRHVtcGFibGUodGJpbmZvKSk7CisJYXBwZW5kUFFFeHBCdWZm ZXJTdHIocXVlcnksIGZtdFF1YWxpZmllZER1bXBhYmxlKHRiaW5mbykpOworCisJaWYgKHB1 YnJpbmZvLT5wdWJyYXR0cnMpCisJCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiICglcyki LCBwdWJyaW5mby0+cHVicmF0dHJzKTsKKwogCWlmIChwdWJyaW5mby0+cHVicmVscXVhbCkK IAl7CiAJCS8qCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oIGIvc3Jj L2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAppbmRleCA3NzJkYzBjZjdhMi4uMWQyMWMyOTA2ZjEg MTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKKysrIGIvc3JjL2Jpbi9w Z19kdW1wL3BnX2R1bXAuaApAQCAtNjMyLDYgKzYzMiw3IEBAIHR5cGVkZWYgc3RydWN0IF9Q dWJsaWNhdGlvblJlbEluZm8KIAlQdWJsaWNhdGlvbkluZm8gKnB1YmxpY2F0aW9uOwogCVRh YmxlSW5mbyAgKnB1YnRhYmxlOwogCWNoYXIJICAgKnB1YnJlbHF1YWw7CisJY2hhcgkgICAq cHVicmF0dHJzOwogfSBQdWJsaWNhdGlvblJlbEluZm87CiAKIC8qCmRpZmYgLS1naXQgYS9z cmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbCBiL3NyYy9iaW4vcGdfZHVtcC90LzAw Ml9wZ19kdW1wLnBsCmluZGV4IGZkMTA1MmU1ZGI4Li4wNWE3ZTI4YmRjYyAxMDA2NDQKLS0t IGEvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwKKysrIGIvc3JjL2Jpbi9wZ19k dW1wL3QvMDAyX3BnX2R1bXAucGwKQEAgLTI0MjgsNiArMjQyOCwyOCBAQCBteSAldGVzdHMg PSAoCiAJCXVubGlrZSA9PiB7IGV4Y2x1ZGVfZHVtcF90ZXN0X3NjaGVtYSA9PiAxLCB9LAog CX0sCiAKKwknQUxURVIgUFVCTElDQVRJT04gcHViMSBBREQgVEFCTEUgdGVzdF9zaXh0aF90 YWJsZSAoY29sMywgY29sMiknID0+IHsKKwkJY3JlYXRlX29yZGVyID0+IDUyLAorCQljcmVh dGVfc3FsID0+CisJCSAgJ0FMVEVSIFBVQkxJQ0FUSU9OIHB1YjEgQUREIFRBQkxFIGR1bXBf dGVzdC50ZXN0X3NpeHRoX3RhYmxlIChjb2wzLCBjb2wyKTsnLAorCQlyZWdleHAgPT4gcXIv XgorCQkJXFFBTFRFUiBQVUJMSUNBVElPTiBwdWIxIEFERCBUQUJMRSBPTkxZIGR1bXBfdGVz dC50ZXN0X3NpeHRoX3RhYmxlIChjb2wyLCBjb2wzKTtcRQorCQkJL3htLAorCQlsaWtlID0+ IHsgJWZ1bGxfcnVucywgc2VjdGlvbl9wb3N0X2RhdGEgPT4gMSwgfSwKKwkJdW5saWtlID0+ IHsgZXhjbHVkZV9kdW1wX3Rlc3Rfc2NoZW1hID0+IDEsIH0sCisJfSwKKworCSdBTFRFUiBQ VUJMSUNBVElPTiBwdWIxIEFERCBUQUJMRSB0ZXN0X3NldmVudGhfdGFibGUgKGNvbDMsIGNv bDIpIFdIRVJFIChjb2wxID0gMSknID0+IHsKKwkJY3JlYXRlX29yZGVyID0+IDUyLAorCQlj cmVhdGVfc3FsID0+CisJCSAgJ0FMVEVSIFBVQkxJQ0FUSU9OIHB1YjEgQUREIFRBQkxFIGR1 bXBfdGVzdC50ZXN0X3NldmVudGhfdGFibGUgKGNvbDMsIGNvbDIpIFdIRVJFIChjb2wxID0g MSk7JywKKwkJcmVnZXhwID0+IHFyL14KKwkJCVxRQUxURVIgUFVCTElDQVRJT04gcHViMSBB REQgVEFCTEUgT05MWSBkdW1wX3Rlc3QudGVzdF9zZXZlbnRoX3RhYmxlIChjb2wyLCBjb2wz KSBXSEVSRSAoKGNvbDEgPSAxKSk7XEUKKwkJCS94bSwKKwkJbGlrZSA9PiB7ICVmdWxsX3J1 bnMsIHNlY3Rpb25fcG9zdF9kYXRhID0+IDEsIH0sCisJCXVubGlrZSA9PiB7IGV4Y2x1ZGVf ZHVtcF90ZXN0X3NjaGVtYSA9PiAxLCB9LAorCX0sCisKIAknQUxURVIgUFVCTElDQVRJT04g cHViMyBBREQgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgZHVtcF90ZXN0JyA9PiB7CiAJCWNyZWF0 ZV9vcmRlciA9PiA1MSwKIAkJY3JlYXRlX3NxbCA9PgpAQCAtMjc3OCw2ICsyODAwLDQ0IEBA IG15ICV0ZXN0cyA9ICgKIAkJdW5saWtlID0+IHsgZXhjbHVkZV9kdW1wX3Rlc3Rfc2NoZW1h ID0+IDEsIH0sCiAJfSwKIAorCSdDUkVBVEUgVEFCTEUgdGVzdF9zaXh0aF90YWJsZScgPT4g eworCQljcmVhdGVfb3JkZXIgPT4gNiwKKwkJY3JlYXRlX3NxbCAgID0+ICdDUkVBVEUgVEFC TEUgZHVtcF90ZXN0LnRlc3Rfc2l4dGhfdGFibGUgKAorCQkJCQkJICAgY29sMSBpbnQsCisJ CQkJCQkgICBjb2wyIHRleHQsCisJCQkJCQkgICBjb2wzIGJ5dGVhCisJCQkJCSAgICk7JywK KwkJcmVnZXhwID0+IHFyL14KKwkJCVxRQ1JFQVRFIFRBQkxFIGR1bXBfdGVzdC50ZXN0X3Np eHRoX3RhYmxlIChcRQorCQkJXG5ccytcUWNvbDEgaW50ZWdlcixcRQorCQkJXG5ccytcUWNv bDIgdGV4dCxcRQorCQkJXG5ccytcUWNvbDMgYnl0ZWFcRQorCQkJXG5cKTsKKwkJCS94bSwK KwkJbGlrZSA9PgorCQkgIHsgJWZ1bGxfcnVucywgJWR1bXBfdGVzdF9zY2hlbWFfcnVucywg c2VjdGlvbl9wcmVfZGF0YSA9PiAxLCB9LAorCQl1bmxpa2UgPT4geyBleGNsdWRlX2R1bXBf dGVzdF9zY2hlbWEgPT4gMSwgfSwKKwl9LAorCisJJ0NSRUFURSBUQUJMRSB0ZXN0X3NldmVu dGhfdGFibGUnID0+IHsKKwkJY3JlYXRlX29yZGVyID0+IDYsCisJCWNyZWF0ZV9zcWwgICA9 PiAnQ1JFQVRFIFRBQkxFIGR1bXBfdGVzdC50ZXN0X3NldmVudGhfdGFibGUgKAorCQkJCQkJ ICAgY29sMSBpbnQsCisJCQkJCQkgICBjb2wyIHRleHQsCisJCQkJCQkgICBjb2wzIGJ5dGVh CisJCQkJCSAgICk7JywKKwkJcmVnZXhwID0+IHFyL14KKwkJCVxRQ1JFQVRFIFRBQkxFIGR1 bXBfdGVzdC50ZXN0X3NldmVudGhfdGFibGUgKFxFCisJCQlcblxzK1xRY29sMSBpbnRlZ2Vy LFxFCisJCQlcblxzK1xRY29sMiB0ZXh0LFxFCisJCQlcblxzK1xRY29sMyBieXRlYVxFCisJ CQlcblwpOworCQkJL3htLAorCQlsaWtlID0+CisJCSAgeyAlZnVsbF9ydW5zLCAlZHVtcF90 ZXN0X3NjaGVtYV9ydW5zLCBzZWN0aW9uX3ByZV9kYXRhID0+IDEsIH0sCisJCXVubGlrZSA9 PiB7IGV4Y2x1ZGVfZHVtcF90ZXN0X3NjaGVtYSA9PiAxLCB9LAorCX0sCisKIAknQ1JFQVRF IFRBQkxFIHRlc3RfdGFibGVfaWRlbnRpdHknID0+IHsKIAkJY3JlYXRlX29yZGVyID0+IDMs CiAJCWNyZWF0ZV9zcWwgICA9PiAnQ1JFQVRFIFRBQkxFIGR1bXBfdGVzdC50ZXN0X3RhYmxl X2lkZW50aXR5ICgKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jIGIvc3Jj L2Jpbi9wc3FsL2Rlc2NyaWJlLmMKaW5kZXggOTkxYmZjMTU0NmIuLjg4YmI3NWFjNjU4IDEw MDY0NAotLS0gYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYworKysgYi9zcmMvYmluL3BzcWwv ZGVzY3JpYmUuYwpAQCAtMjg5Miw2ICsyODkyLDcgQEAgZGVzY3JpYmVPbmVUYWJsZURldGFp bHMoY29uc3QgY2hhciAqc2NoZW1hbmFtZSwKIAkJCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVm LAogCQkJCQkJCQkgICJTRUxFQ1QgcHVibmFtZVxuIgogCQkJCQkJCQkgICIJCSwgTlVMTFxu IgorCQkJCQkJCQkgICIJCSwgTlVMTFxuIgogCQkJCQkJCQkgICJGUk9NIHBnX2NhdGFsb2cu cGdfcHVibGljYXRpb24gcFxuIgogCQkJCQkJCQkgICIJCUpPSU4gcGdfY2F0YWxvZy5wZ19w dWJsaWNhdGlvbl9uYW1lc3BhY2UgcG4gT04gcC5vaWQgPSBwbi5wbnB1YmlkXG4iCiAJCQkJ CQkJCSAgIgkJSk9JTiBwZ19jYXRhbG9nLnBnX2NsYXNzIHBjIE9OIHBjLnJlbG5hbWVzcGFj ZSA9IHBuLnBubnNwaWRcbiIKQEAgLTI4OTksNiArMjkwMCwxMiBAQCBkZXNjcmliZU9uZVRh YmxlRGV0YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1lLAogCQkJCQkJCQkgICJVTklPTlxu IgogCQkJCQkJCQkgICJTRUxFQ1QgcHVibmFtZVxuIgogCQkJCQkJCQkgICIJCSwgcGdfZ2V0 X2V4cHIocHIucHJxdWFsLCBjLm9pZClcbiIKKwkJCQkJCQkJICAiCQksIChDQVNFIFdIRU4g cHIucHJhdHRycyBJUyBOT1QgTlVMTCBUSEVOXG4iCisJCQkJCQkJCSAgIgkJCShTRUxFQ1Qg c3RyaW5nX2FnZyhhdHRuYW1lLCAnLCAnKVxuIgorCQkJCQkJCQkgICIJCQkgIEZST00gcGdf Y2F0YWxvZy5nZW5lcmF0ZV9zZXJpZXMoMCwgcGdfY2F0YWxvZy5hcnJheV91cHBlcihwci5w cmF0dHJzOjpwZ19jYXRhbG9nLmludDJbXSwgMSkpIHMsXG4iCisJCQkJCQkJCSAgIgkJCQkg ICBwZ19jYXRhbG9nLnBnX2F0dHJpYnV0ZVxuIgorCQkJCQkJCQkgICIJCQkgV0hFUkUgYXR0 cmVsaWQgPSBwci5wcnJlbGlkIEFORCBhdHRudW0gPSBwcmF0dHJzW3NdKVxuIgorCQkJCQkJ CQkgICIJCSAgIEVMU0UgTlVMTCBFTkQpICIKIAkJCQkJCQkJICAiRlJPTSBwZ19jYXRhbG9n LnBnX3B1YmxpY2F0aW9uIHBcbiIKIAkJCQkJCQkJICAiCQlKT0lOIHBnX2NhdGFsb2cucGdf cHVibGljYXRpb25fcmVsIHByIE9OIHAub2lkID0gcHIucHJwdWJpZFxuIgogCQkJCQkJCQkg ICIJCUpPSU4gcGdfY2F0YWxvZy5wZ19jbGFzcyBjIE9OIGMub2lkID0gcHIucHJyZWxpZFxu IgpAQCAtMjkwNiw2ICsyOTEzLDcgQEAgZGVzY3JpYmVPbmVUYWJsZURldGFpbHMoY29uc3Qg Y2hhciAqc2NoZW1hbmFtZSwKIAkJCQkJCQkJICAiVU5JT05cbiIKIAkJCQkJCQkJICAiU0VM RUNUIHB1Ym5hbWVcbiIKIAkJCQkJCQkJICAiCQksIE5VTExcbiIKKwkJCQkJCQkJICAiCQks IE5VTExcbiIKIAkJCQkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uIHBc biIKIAkJCQkJCQkJICAiV0hFUkUgcC5wdWJhbGx0YWJsZXMgQU5EIHBnX2NhdGFsb2cucGdf cmVsYXRpb25faXNfcHVibGlzaGFibGUoJyVzJylcbiIKIAkJCQkJCQkJICAiT1JERVIgQlkg MTsiLApAQCAtMjkxNiwxMiArMjkyNCwxNCBAQCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhj b25zdCBjaGFyICpzY2hlbWFuYW1lLAogCQkJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsCiAJ CQkJCQkJCSAgIlNFTEVDVCBwdWJuYW1lXG4iCiAJCQkJCQkJCSAgIgkJLCBOVUxMXG4iCisJ CQkJCQkJCSAgIgkJLCBOVUxMXG4iCiAJCQkJCQkJCSAgIkZST00gcGdfY2F0YWxvZy5wZ19w dWJsaWNhdGlvbiBwXG4iCiAJCQkJCQkJCSAgIkpPSU4gcGdfY2F0YWxvZy5wZ19wdWJsaWNh dGlvbl9yZWwgcHIgT04gcC5vaWQgPSBwci5wcnB1YmlkXG4iCiAJCQkJCQkJCSAgIldIRVJF IHByLnBycmVsaWQgPSAnJXMnXG4iCiAJCQkJCQkJCSAgIlVOSU9OIEFMTFxuIgogCQkJCQkJ CQkgICJTRUxFQ1QgcHVibmFtZVxuIgogCQkJCQkJCQkgICIJCSwgTlVMTFxuIgorCQkJCQkJ CQkgICIJCSwgTlVMTFxuIgogCQkJCQkJCQkgICJGUk9NIHBnX2NhdGFsb2cucGdfcHVibGlj YXRpb24gcFxuIgogCQkJCQkJCQkgICJXSEVSRSBwLnB1YmFsbHRhYmxlcyBBTkQgcGdfY2F0 YWxvZy5wZ19yZWxhdGlvbl9pc19wdWJsaXNoYWJsZSgnJXMnKVxuIgogCQkJCQkJCQkgICJP UkRFUiBCWSAxOyIsCkBAIC0yOTQzLDYgKzI5NTMsMTEgQEAgZGVzY3JpYmVPbmVUYWJsZURl dGFpbHMoY29uc3QgY2hhciAqc2NoZW1hbmFtZSwKIAkJCQlwcmludGZQUUV4cEJ1ZmZlcigm YnVmLCAiICAgIFwiJXNcIiIsCiAJCQkJCQkJCSAgUFFnZXR2YWx1ZShyZXN1bHQsIGksIDAp KTsKIAorCQkJCS8qIGNvbHVtbiBsaXN0IChpZiBhbnkpICovCisJCQkJaWYgKCFQUWdldGlz bnVsbChyZXN1bHQsIGksIDIpKQorCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLCAiICgl cykiLAorCQkJCQkJCQkJICBQUWdldHZhbHVlKHJlc3VsdCwgaSwgMikpOworCiAJCQkJLyog cm93IGZpbHRlciAoaWYgYW55KSAqLwogCQkJCWlmICghUFFnZXRpc251bGwocmVzdWx0LCBp LCAxKSkKIAkJCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwgIiBXSEVSRSAlcyIsCkBAIC01 ODg4LDcgKzU5MDMsNyBAQCBsaXN0UHVibGljYXRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4p CiAgKi8KIHN0YXRpYyBib29sCiBhZGRGb290ZXJUb1B1YmxpY2F0aW9uRGVzYyhQUUV4cEJ1 ZmZlciBidWYsIGNoYXIgKmZvb3Rlcm1zZywKLQkJCQkJCSAgIGJvb2wgc2luZ2xlY29sLCBw cmludFRhYmxlQ29udGVudCAqY29udCkKKwkJCQkJCSAgIGJvb2wgYXNfc2NoZW1hLCBwcmlu dFRhYmxlQ29udGVudCAqY29udCkKIHsKIAlQR3Jlc3VsdCAgICpyZXM7CiAJaW50CQkJY291 bnQgPSAwOwpAQCAtNTkwNSwxNSArNTkyMCwxOSBAQCBhZGRGb290ZXJUb1B1YmxpY2F0aW9u RGVzYyhQUUV4cEJ1ZmZlciBidWYsIGNoYXIgKmZvb3Rlcm1zZywKIAogCWZvciAoaSA9IDA7 IGkgPCBjb3VudDsgaSsrKQogCXsKLQkJaWYgKCFzaW5nbGVjb2wpCisJCWlmIChhc19zY2hl bWEpCisJCQlwcmludGZQUUV4cEJ1ZmZlcihidWYsICIgICAgXCIlc1wiIiwgUFFnZXR2YWx1 ZShyZXMsIGksIDApKTsKKwkJZWxzZQogCQl7CiAJCQlwcmludGZQUUV4cEJ1ZmZlcihidWYs ICIgICAgXCIlcy4lc1wiIiwgUFFnZXR2YWx1ZShyZXMsIGksIDApLAogCQkJCQkJCSAgUFFn ZXR2YWx1ZShyZXMsIGksIDEpKTsKKworCQkJaWYgKCFQUWdldGlzbnVsbChyZXMsIGksIDMp KQorCQkJCWFwcGVuZFBRRXhwQnVmZmVyKGJ1ZiwgIiAoJXMpIiwgUFFnZXR2YWx1ZShyZXMs IGksIDMpKTsKKwogCQkJaWYgKCFQUWdldGlzbnVsbChyZXMsIGksIDIpKQogCQkJCWFwcGVu ZFBRRXhwQnVmZmVyKGJ1ZiwgIiBXSEVSRSAlcyIsIFBRZ2V0dmFsdWUocmVzLCBpLCAyKSk7 CiAJCX0KLQkJZWxzZQotCQkJcHJpbnRmUFFFeHBCdWZmZXIoYnVmLCAiICAgIFwiJXNcIiIs IFBRZ2V0dmFsdWUocmVzLCBpLCAwKSk7CiAKIAkJcHJpbnRUYWJsZUFkZEZvb3Rlcihjb250 LCBidWYtPmRhdGEpOwogCX0KQEAgLTYwNDIsMTEgKzYwNjEsMjIgQEAgZGVzY3JpYmVQdWJs aWNhdGlvbnMoY29uc3QgY2hhciAqcGF0dGVybikKIAkJCXByaW50ZlBRRXhwQnVmZmVyKCZi dWYsCiAJCQkJCQkJICAiU0VMRUNUIG4ubnNwbmFtZSwgYy5yZWxuYW1lIik7CiAJCQlpZiAo cHNldC5zdmVyc2lvbiA+PSAxNTAwMDApCisJCQl7CiAJCQkJYXBwZW5kUFFFeHBCdWZmZXJT dHIoJmJ1ZiwKIAkJCQkJCQkJCSAiLCBwZ19nZXRfZXhwcihwci5wcnF1YWwsIGMub2lkKSIp OworCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsCisJCQkJCQkJCQkgIiwgKENBU0Ug V0hFTiBwci5wcmF0dHJzIElTIE5PVCBOVUxMIFRIRU5cbiIKKwkJCQkJCQkJCSAiICAgICBw Z19jYXRhbG9nLmFycmF5X3RvX3N0cmluZygiCisJCQkJCQkJCQkgIiAgICAgIEFSUkFZKFNF TEVDVCBhdHRuYW1lXG4iCisJCQkJCQkJCQkgIiAgICAgICAgICAgICAgRlJPTVxuIgorCQkJ CQkJCQkJICIgICAgICAgICAgICAgICAgcGdfY2F0YWxvZy5nZW5lcmF0ZV9zZXJpZXMoMCwg cGdfY2F0YWxvZy5hcnJheV91cHBlcihwci5wcmF0dHJzOjpwZ19jYXRhbG9nLmludDJbXSwg MSkpIHMsXG4iCisJCQkJCQkJCQkgIiAgICAgICAgICAgICAgICBwZ19jYXRhbG9nLnBnX2F0 dHJpYnV0ZVxuIgorCQkJCQkJCQkJICIgICAgICAgIFdIRVJFIGF0dHJlbGlkID0gYy5vaWQg QU5EIGF0dG51bSA9IHByYXR0cnNbc10pLCAnLCAnKVxuIgorCQkJCQkJCQkJICIgICAgICAg RUxTRSBOVUxMIEVORCkiKTsKKwkJCX0KIAkJCWVsc2UKIAkJCQlhcHBlbmRQUUV4cEJ1ZmZl clN0cigmYnVmLAotCQkJCQkJCQkJICIsIE5VTEwiKTsKKwkJCQkJCQkJCSAiLCBOVUxMLCBO VUxMIik7CiAJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAogCQkJCQkJCSAgIlxuRlJPTSBw Z19jYXRhbG9nLnBnX2NsYXNzIGMsXG4iCiAJCQkJCQkJICAiICAgICBwZ19jYXRhbG9nLnBn X25hbWVzcGFjZSBuLFxuIgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19w dWJsaWNhdGlvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oCmlu ZGV4IGZlNzczY2Y5YjdkLi5hNTZjMTEwMjQ2MyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf cHVibGljYXRpb24uaApAQCAtODUsNiArODUsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgUHVibGlj YXRpb25EZXNjCiAJICovCiAJYm9vbAkJcmZfdmFsaWRfZm9yX3VwZGF0ZTsKIAlib29sCQly Zl92YWxpZF9mb3JfZGVsZXRlOworCisJLyoKKwkgKiB0cnVlIGlmIHRoZSBjb2x1bW5zIGFy ZSBwYXJ0IG9mIHRoZSByZXBsaWNhIGlkZW50aXR5IG9yIHRoZSBwdWJsaWNhdGlvbiBhY3Rp b25zCisJICogZG8gbm90IGluY2x1ZGUgVVBEQVRFIG9yIERFTEVURS4KKwkgKi8KKwlib29s CQljb2xzX3ZhbGlkX2Zvcl91cGRhdGU7CisJYm9vbAkJY29sc192YWxpZF9mb3JfZGVsZXRl OwogfSBQdWJsaWNhdGlvbkRlc2M7CiAKIHR5cGVkZWYgc3RydWN0IFB1YmxpY2F0aW9uCkBA IC0xMDAsNiArMTA3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUHVibGljYXRpb25SZWxJbmZvCiB7 CiAJUmVsYXRpb24JcmVsYXRpb247CiAJTm9kZQkgICAqd2hlcmVDbGF1c2U7CisJTGlzdAkg ICAqY29sdW1uczsKIH0gUHVibGljYXRpb25SZWxJbmZvOwogCiBleHRlcm4gUHVibGljYXRp b24gKkdldFB1YmxpY2F0aW9uKE9pZCBwdWJpZCk7CkBAIC0xMjMsOCArMTMxLDExIEBAIHR5 cGVkZWYgZW51bSBQdWJsaWNhdGlvblBhcnRPcHQKIH0gUHVibGljYXRpb25QYXJ0T3B0Owog CiBleHRlcm4gTGlzdCAqR2V0UHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLCBQdWJs aWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQpOworZXh0ZXJuIExpc3QgKkdldFJlbGF0aW9u Q29sdW1uUGFydGlhbFB1YmxpY2F0aW9ucyhPaWQgcmVsaWQpOworZXh0ZXJuIExpc3QgKkdl dFJlbGF0aW9uQ29sdW1uTGlzdEluUHVibGljYXRpb24oT2lkIHJlbGlkLCBPaWQgcHViaWQp OwogZXh0ZXJuIExpc3QgKkdldEFsbFRhYmxlc1B1YmxpY2F0aW9ucyh2b2lkKTsKIGV4dGVy biBMaXN0ICpHZXRBbGxUYWJsZXNQdWJsaWNhdGlvblJlbGF0aW9ucyhib29sIHB1YnZpYXJv b3QpOworZXh0ZXJuIHZvaWQgR2V0QWN0aW9uc0luUHVibGljYXRpb24oT2lkIHB1YmlkLCBQ dWJsaWNhdGlvbkFjdGlvbnMgKmFjdGlvbnMpOwogZXh0ZXJuIExpc3QgKkdldFB1YmxpY2F0 aW9uU2NoZW1hcyhPaWQgcHViaWQpOwogZXh0ZXJuIExpc3QgKkdldFNjaGVtYVB1YmxpY2F0 aW9ucyhPaWQgc2NoZW1haWQpOwogZXh0ZXJuIExpc3QgKkdldFNjaGVtYVB1YmxpY2F0aW9u UmVsYXRpb25zKE9pZCBzY2hlbWFpZCwKQEAgLTE0NCw2ICsxNTUsOSBAQCBleHRlcm4gT2Jq ZWN0QWRkcmVzcyBwdWJsaWNhdGlvbl9hZGRfcmVsYXRpb24oT2lkIHB1YmlkLCBQdWJsaWNh dGlvblJlbEluZm8gKnByaQogZXh0ZXJuIE9iamVjdEFkZHJlc3MgcHVibGljYXRpb25fYWRk X3NjaGVtYShPaWQgcHViaWQsIE9pZCBzY2hlbWFpZCwKIAkJCQkJCQkJCQkJYm9vbCBpZl9u b3RfZXhpc3RzKTsKIAorZXh0ZXJuIEJpdG1hcHNldCAqcHViX2NvbGxpc3RfdG9fYml0bWFw c2V0KEJpdG1hcHNldCAqY29sdW1ucywgRGF0dW0gcHViY29scywKKwkJCQkJCQkJCQkgICBN ZW1vcnlDb250ZXh0IG1jeHQpOworCiBleHRlcm4gT2lkCWdldF9wdWJsaWNhdGlvbl9vaWQo Y29uc3QgY2hhciAqcHVibmFtZSwgYm9vbCBtaXNzaW5nX29rKTsKIGV4dGVybiBjaGFyICpn ZXRfcHVibGljYXRpb25fbmFtZShPaWQgcHViaWQsIGJvb2wgbWlzc2luZ19vayk7CiAKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb25fcmVsLmggYi9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uX3JlbC5oCmluZGV4IDBkZDBmNDI1 ZGI5Li40ZmViNTgxODk5ZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19w dWJsaWNhdGlvbl9yZWwuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0 aW9uX3JlbC5oCkBAIC0zNCw2ICszNCw3IEBAIENBVEFMT0cocGdfcHVibGljYXRpb25fcmVs LDYxMDYsUHVibGljYXRpb25SZWxSZWxhdGlvbklkKQogCiAjaWZkZWYJQ0FUQUxPR19WQVJM RU4JCQkvKiB2YXJpYWJsZS1sZW5ndGggZmllbGRzIHN0YXJ0IGhlcmUgKi8KIAlwZ19ub2Rl X3RyZWUgcHJxdWFsOwkJLyogcXVhbGlmaWNhdGlvbnMgKi8KKwlpbnQydmVjdG9yCXByYXR0 cnM7CQkvKiBjb2x1bW5zIHRvIHJlcGxpY2F0ZSAqLwogI2VuZGlmCiB9IEZvcm1EYXRhX3Bn X3B1YmxpY2F0aW9uX3JlbDsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMv cHVibGljYXRpb25jbWRzLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9wdWJsaWNhdGlvbmNt ZHMuaAppbmRleCA3ODEzY2JjYjZiYi4uYWU4N2NhZjA4OWQgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5oCisrKyBiL3NyYy9pbmNsdWRlL2Nv bW1hbmRzL3B1YmxpY2F0aW9uY21kcy5oCkBAIC0zMSw3ICszMSw5IEBAIGV4dGVybiB2b2lk IFJlbW92ZVB1YmxpY2F0aW9uU2NoZW1hQnlJZChPaWQgcHNvaWQpOwogZXh0ZXJuIE9iamVj dEFkZHJlc3MgQWx0ZXJQdWJsaWNhdGlvbk93bmVyKGNvbnN0IGNoYXIgKm5hbWUsIE9pZCBu ZXdPd25lcklkKTsKIGV4dGVybiB2b2lkIEFsdGVyUHVibGljYXRpb25Pd25lcl9vaWQoT2lk IHB1YmlkLCBPaWQgbmV3T3duZXJJZCk7CiBleHRlcm4gdm9pZCBJbnZhbGlkYXRlUHVibGlj YXRpb25SZWxzKExpc3QgKnJlbGlkcyk7Ci1leHRlcm4gYm9vbCBjb250YWluX2ludmFsaWRf cmZjb2x1bW4oT2lkIHB1YmlkLCBSZWxhdGlvbiByZWxhdGlvbiwKK2V4dGVybiBib29sIHB1 Yl9yZl9jb250YWluc19pbnZhbGlkX2NvbHVtbihPaWQgcHViaWQsIFJlbGF0aW9uIHJlbGF0 aW9uLAorCQkJCQkJCQkJIExpc3QgKmFuY2VzdG9ycywgYm9vbCBwdWJ2aWFyb290KTsKK2V4 dGVybiBib29sIHB1Yl9jb2xsaXN0X2NvbnRhaW5zX2ludmFsaWRfY29sdW1uKE9pZCBwdWJp ZCwgUmVsYXRpb24gcmVsYXRpb24sCiAJCQkJCQkJCQkgTGlzdCAqYW5jZXN0b3JzLCBib29s IHB1YnZpYXJvb3QpOwogCiAjZW5kaWYJCQkJCQkJLyogUFVCTElDQVRJT05DTURTX0ggKi8K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNs dWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCAxNjE3NzAyZDlkNi4uYjQ0NzljNzA0OWEg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysgYi9zcmMv aW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTM2NTIsNiArMzY1Miw3IEBAIHR5cGVk ZWYgc3RydWN0IFB1YmxpY2F0aW9uVGFibGUKIAlOb2RlVGFnCQl0eXBlOwogCVJhbmdlVmFy ICAgKnJlbGF0aW9uOwkJLyogcmVsYXRpb24gdG8gYmUgcHVibGlzaGVkICovCiAJTm9kZQkg ICAqd2hlcmVDbGF1c2U7CS8qIHF1YWxpZmljYXRpb25zICovCisJTGlzdAkgICAqY29sdW1u czsJCS8qIExpc3Qgb2YgY29sdW1ucyBpbiBhIHB1YmxpY2F0aW9uIHRhYmxlICovCiB9IFB1 YmxpY2F0aW9uVGFibGU7CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNh dGlvbi9sb2dpY2FscHJvdG8uaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxw cm90by5oCmluZGV4IDRkMmM4ODE2NDRhLi5hNzcxYWI4ZmYzMyAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKKysrIGIvc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKQEAgLTIwOSwxMiArMjA5LDEyIEBAIGV4dGVy biBjaGFyICpsb2dpY2FscmVwX3JlYWRfb3JpZ2luKFN0cmluZ0luZm8gaW4sIFhMb2dSZWNQ dHIgKm9yaWdpbl9sc24pOwogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93cml0ZV9pbnNlcnQo U3RyaW5nSW5mbyBvdXQsIFRyYW5zYWN0aW9uSWQgeGlkLAogCQkJCQkJCQkJUmVsYXRpb24g cmVsLAogCQkJCQkJCQkJVHVwbGVUYWJsZVNsb3QgKm5ld3Nsb3QsCi0JCQkJCQkJCQlib29s IGJpbmFyeSk7CisJCQkJCQkJCQlib29sIGJpbmFyeSwgQml0bWFwc2V0ICpjb2x1bW5zKTsK IGV4dGVybiBMb2dpY2FsUmVwUmVsSWQgbG9naWNhbHJlcF9yZWFkX2luc2VydChTdHJpbmdJ bmZvIGluLCBMb2dpY2FsUmVwVHVwbGVEYXRhICpuZXd0dXApOwogZXh0ZXJuIHZvaWQgbG9n aWNhbHJlcF93cml0ZV91cGRhdGUoU3RyaW5nSW5mbyBvdXQsIFRyYW5zYWN0aW9uSWQgeGlk LAogCQkJCQkJCQkJUmVsYXRpb24gcmVsLAogCQkJCQkJCQkJVHVwbGVUYWJsZVNsb3QgKm9s ZHNsb3QsCi0JCQkJCQkJCQlUdXBsZVRhYmxlU2xvdCAqbmV3c2xvdCwgYm9vbCBiaW5hcnkp OworCQkJCQkJCQkJVHVwbGVUYWJsZVNsb3QgKm5ld3Nsb3QsIGJvb2wgYmluYXJ5LCBCaXRt YXBzZXQgKmNvbHVtbnMpOwogZXh0ZXJuIExvZ2ljYWxSZXBSZWxJZCBsb2dpY2FscmVwX3Jl YWRfdXBkYXRlKFN0cmluZ0luZm8gaW4sCiAJCQkJCQkJCQkJCSAgYm9vbCAqaGFzX29sZHR1 cGxlLCBMb2dpY2FsUmVwVHVwbGVEYXRhICpvbGR0dXAsCiAJCQkJCQkJCQkJCSAgTG9naWNh bFJlcFR1cGxlRGF0YSAqbmV3dHVwKTsKQEAgLTIzMSw3ICsyMzEsNyBAQCBleHRlcm4gTGlz dCAqbG9naWNhbHJlcF9yZWFkX3RydW5jYXRlKFN0cmluZ0luZm8gaW4sCiBleHRlcm4gdm9p ZCBsb2dpY2FscmVwX3dyaXRlX21lc3NhZ2UoU3RyaW5nSW5mbyBvdXQsIFRyYW5zYWN0aW9u SWQgeGlkLCBYTG9nUmVjUHRyIGxzbiwKIAkJCQkJCQkJCSBib29sIHRyYW5zYWN0aW9uYWws IGNvbnN0IGNoYXIgKnByZWZpeCwgU2l6ZSBzeiwgY29uc3QgY2hhciAqbWVzc2FnZSk7CiBl eHRlcm4gdm9pZCBsb2dpY2FscmVwX3dyaXRlX3JlbChTdHJpbmdJbmZvIG91dCwgVHJhbnNh Y3Rpb25JZCB4aWQsCi0JCQkJCQkJCSBSZWxhdGlvbiByZWwpOworCQkJCQkJCQkgUmVsYXRp b24gcmVsLCBCaXRtYXBzZXQgKmNvbHVtbnMpOwogZXh0ZXJuIExvZ2ljYWxSZXBSZWxhdGlv biAqbG9naWNhbHJlcF9yZWFkX3JlbChTdHJpbmdJbmZvIGluKTsKIGV4dGVybiB2b2lkIGxv Z2ljYWxyZXBfd3JpdGVfdHlwKFN0cmluZ0luZm8gb3V0LCBUcmFuc2FjdGlvbklkIHhpZCwK IAkJCQkJCQkJIE9pZCB0eXBvaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1 YmxpY2F0aW9uLm91dAppbmRleCA0ZTE5MWMxMjBhYy4uMjI3YjU2MTE5MTUgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0CisrKyBiL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0CkBAIC02MTMsNiArNjEz LDM2OSBAQCBEUk9QIFRBQkxFIHJmX3RibF9hYmNkX3BrOwogRFJPUCBUQUJMRSByZl90Ymxf YWJjZF9ub3BrOwogRFJPUCBUQUJMRSByZl90YmxfYWJjZF9wYXJ0X3BrOwogLS0gPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBm YWlsIC0gZHVwbGljYXRlIHRhYmxlcyBhcmUgbm90IGFsbG93ZWQgaWYgdGhhdCB0YWJsZSBo YXMgYW55IGNvbHVtbiBsaXN0cworU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1In OworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZHVwcyBGT1IgVEFCTEUgdGVzdHB1Yl90 YmwxIChhKSwgdGVzdHB1Yl90YmwxIFdJVEggKHB1Ymxpc2ggPSAnaW5zZXJ0Jyk7CitFUlJP UjogIGNvbmZsaWN0aW5nIG9yIHJlZHVuZGFudCBjb2x1bW4gbGlzdHMgZm9yIHRhYmxlICJ0 ZXN0cHViX3RibDEiCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9kdXBzIEZPUiBUQUJM RSB0ZXN0cHViX3RibDEsIHRlc3RwdWJfdGJsMSAoYSkgV0lUSCAocHVibGlzaCA9ICdpbnNl cnQnKTsKK0VSUk9SOiAgY29uZmxpY3Rpbmcgb3IgcmVkdW5kYW50IGNvbHVtbiBsaXN0cyBm b3IgdGFibGUgInRlc3RwdWJfdGJsMSIKK1JFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7Cist LSB0ZXN0IGZvciBjb2x1bW4gbGlzdHMKK1NFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VS Uk9SJzsKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnRhYmxlIEZPUiBUQUJMRSB0 ZXN0cHViX3RibDE7CitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3J0YWJsZV9pbnNl cnQgV0lUSCAocHVibGlzaCA9ICdpbnNlcnQnKTsKK1JFU0VUIGNsaWVudF9taW5fbWVzc2Fn ZXM7CitDUkVBVEUgVEFCTEUgdGVzdHB1Yl90Ymw1IChhIGludCBQUklNQVJZIEtFWSwgYiB0 ZXh0LCBjIHRleHQsCisJZCBpbnQgZ2VuZXJhdGVkIGFsd2F5cyBhcyAoYSArIGxlbmd0aChi KSkgc3RvcmVkKTsKKy0tIGVycm9yOiBjb2x1bW4gIngiIGRvZXMgbm90IGV4aXN0CitBTFRF UiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnRhYmxlIEFERCBUQUJMRSB0ZXN0cHViX3RibDUg KGEsIHgpOworRVJST1I6ICBjb2x1bW4gIngiIG9mIHJlbGF0aW9uICJ0ZXN0cHViX3RibDUi IGRvZXMgbm90IGV4aXN0CistLSBlcnJvcjogcmVwbGljYSBpZGVudGl0eSAiYSIgbm90IGlu Y2x1ZGVkIGluIHRoZSBjb2x1bW4gbGlzdAorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9m b3J0YWJsZSBBREQgVEFCTEUgdGVzdHB1Yl90Ymw1IChiLCBjKTsKK1VQREFURSB0ZXN0cHVi X3RibDUgU0VUIGEgPSAxOworRVJST1I6ICBjYW5ub3QgdXBkYXRlIHRhYmxlICJ0ZXN0cHVi X3RibDUiCitERVRBSUw6ICBDb2x1bW4gbGlzdCB1c2VkIGJ5IHRoZSBwdWJsaWNhdGlvbiBk b2VzIG5vdCBjb3ZlciB0aGUgcmVwbGljYSBpZGVudGl0eS4KK0FMVEVSIFBVQkxJQ0FUSU9O IHRlc3RwdWJfZm9ydGFibGUgRFJPUCBUQUJMRSB0ZXN0cHViX3RibDU7CistLSBlcnJvcjog Z2VuZXJhdGVkIGNvbHVtbiAiZCIgY2FuJ3QgYmUgaW4gbGlzdAorQUxURVIgUFVCTElDQVRJ T04gdGVzdHB1Yl9mb3J0YWJsZSBBREQgVEFCTEUgdGVzdHB1Yl90Ymw1IChhLCBkKTsKK0VS Uk9SOiAgY2Fubm90IHJlZmVyZW5jZSBnZW5lcmF0ZWQgY29sdW1uICJkIiBpbiBwdWJsaWNh dGlvbiBjb2x1bW4gbGlzdAorLS0gZXJyb3I6IHN5c3RlbSBhdHRyaWJ1dGVzICJjdGlkIiBu b3QgYWxsb3dlZCBpbiBjb2x1bW4gbGlzdAorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9m b3J0YWJsZSBBREQgVEFCTEUgdGVzdHB1Yl90Ymw1IChhLCBjdGlkKTsKK0VSUk9SOiAgY2Fu bm90IHJlZmVyZW5jZSBzeXN0ZW0gY29sdW1uICJjdGlkIiBpbiBwdWJsaWNhdGlvbiBjb2x1 bW4gbGlzdAorLS0gb2sKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9ydGFibGUgQURE IFRBQkxFIHRlc3RwdWJfdGJsNSAoYSwgYyk7CitBTFRFUiBUQUJMRSB0ZXN0cHViX3RibDUg RFJPUCBDT0xVTU4gYzsJCS0tIG5vIGRpY2UKK0VSUk9SOiAgY2Fubm90IGRyb3AgY29sdW1u IGMgb2YgdGFibGUgdGVzdHB1Yl90Ymw1IGJlY2F1c2Ugb3RoZXIgb2JqZWN0cyBkZXBlbmQg b24gaXQKK0RFVEFJTDogIHB1YmxpY2F0aW9uIG9mIHRhYmxlIHRlc3RwdWJfdGJsNSBpbiBw dWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnRhYmxlIGRlcGVuZHMgb24gY29sdW1uIGMgb2YgdGFi bGUgdGVzdHB1Yl90Ymw1CitISU5UOiAgVXNlIERST1AgLi4uIENBU0NBREUgdG8gZHJvcCB0 aGUgZGVwZW5kZW50IG9iamVjdHMgdG9vLgorLS0gb2s6IGZvciBpbnNlcnQtb25seSBwdWJs aWNhdGlvbiwgdGhlIGNvbHVtbiBsaXN0IGlzIGFyYml0cmFyeQorQUxURVIgUFVCTElDQVRJ T04gdGVzdHB1Yl9mb3J0YWJsZV9pbnNlcnQgQUREIFRBQkxFIHRlc3RwdWJfdGJsNSAoYiwg Yyk7CisvKiBub3QgYWxsIHJlcGxpY2EgaWRlbnRpdGllcyBhcmUgZ29vZCBlbm91Z2ggKi8K K0NSRUFURSBVTklRVUUgSU5ERVggdGVzdHB1Yl90Ymw1X2Jfa2V5IE9OIHRlc3RwdWJfdGJs NSAoYiwgYyk7CitBTFRFUiBUQUJMRSB0ZXN0cHViX3RibDUgQUxURVIgYiBTRVQgTk9UIE5V TEwsIEFMVEVSIGMgU0VUIE5PVCBOVUxMOworQUxURVIgVEFCTEUgdGVzdHB1Yl90Ymw1IFJF UExJQ0EgSURFTlRJVFkgVVNJTkcgSU5ERVggdGVzdHB1Yl90Ymw1X2Jfa2V5OworLS0gZXJy b3I6IHJlcGxpY2EgaWRlbnRpdHkgKGIsYykgaXMgY292ZXJlZCBieSBjb2x1bW4gbGlzdCAo YSwgYykKK1VQREFURSB0ZXN0cHViX3RibDUgU0VUIGEgPSAxOworRVJST1I6ICBjYW5ub3Qg dXBkYXRlIHRhYmxlICJ0ZXN0cHViX3RibDUiCitERVRBSUw6ICBDb2x1bW4gbGlzdCB1c2Vk IGJ5IHRoZSBwdWJsaWNhdGlvbiBkb2VzIG5vdCBjb3ZlciB0aGUgcmVwbGljYSBpZGVudGl0 eS4KK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9ydGFibGUgRFJPUCBUQUJMRSB0ZXN0 cHViX3RibDU7CistLSBlcnJvcjogY2hhbmdlIHRoZSByZXBsaWNhIGlkZW50aXR5IHRvICJi IiwgYW5kIGNvbHVtbiBsaXN0IHRvIChhLCBjKQorLS0gdGhlbiB1cGRhdGUgZmFpbHMsIGJl Y2F1c2UgKGEsIGMpIGRvZXMgbm90IGNvdmVyIHJlcGxpY2EgaWRlbnRpdHkKK0FMVEVSIFRB QkxFIHRlc3RwdWJfdGJsNSBSRVBMSUNBIElERU5USVRZIFVTSU5HIElOREVYIHRlc3RwdWJf dGJsNV9iX2tleTsKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9ydGFibGUgQUREIFRB QkxFIHRlc3RwdWJfdGJsNSAoYSwgYyk7CitVUERBVEUgdGVzdHB1Yl90Ymw1IFNFVCBhID0g MTsKK0VSUk9SOiAgY2Fubm90IHVwZGF0ZSB0YWJsZSAidGVzdHB1Yl90Ymw1IgorREVUQUlM OiAgQ29sdW1uIGxpc3QgdXNlZCBieSB0aGUgcHVibGljYXRpb24gZG9lcyBub3QgY292ZXIg dGhlIHJlcGxpY2EgaWRlbnRpdHkuCisvKiBCdXQgaWYgdXBkL2RlbCBhcmUgbm90IHB1Ymxp c2hlZCwgaXQgd29ya3MgT0sgKi8KK1NFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9S JzsKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX3RhYmxlX2lucyBXSVRIIChwdWJsaXNo ID0gJ2luc2VydCwgdHJ1bmNhdGUnKTsKK1JFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CitB TFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3RhYmxlX2lucyBBREQgVEFCTEUgdGVzdHB1Yl90 Ymw1IChhKTsJCS0tIG9rCitcZFJwKyB0ZXN0cHViX3RhYmxlX2lucworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfdGFibGVfaW5zCisgICAg ICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVz IHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAg ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAgIHwgdCAgICAgICAgIHwgZgor VGFibGVzOgorICAgICJwdWJsaWMudGVzdHB1Yl90Ymw1IiAoYSkKKworLS0gd2l0aCBSRVBM SUNBIElERU5USVRZIEZVTEwsIGNvbHVtbiBsaXN0cyBhcmUgbm90IGFsbG93ZWQKK0NSRUFU RSBUQUJMRSB0ZXN0cHViX3RibDYgKGEgaW50LCBiIHRleHQsIGMgdGV4dCk7CitBTFRFUiBU QUJMRSB0ZXN0cHViX3RibDYgUkVQTElDQSBJREVOVElUWSBGVUxMOworQUxURVIgUFVCTElD QVRJT04gdGVzdHB1Yl9mb3J0YWJsZSBBREQgVEFCTEUgdGVzdHB1Yl90Ymw2IChhLCBiLCBj KTsKK1VQREFURSB0ZXN0cHViX3RibDYgU0VUIGEgPSAxOworRVJST1I6ICBjYW5ub3QgdXBk YXRlIHRhYmxlICJ0ZXN0cHViX3RibDYiCitERVRBSUw6ICBDb2x1bW4gbGlzdCB1c2VkIGJ5 IHRoZSBwdWJsaWNhdGlvbiBkb2VzIG5vdCBjb3ZlciB0aGUgcmVwbGljYSBpZGVudGl0eS4K K0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9ydGFibGUgRFJPUCBUQUJMRSB0ZXN0cHVi X3RibDY7CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnRhYmxlIEFERCBUQUJMRSB0 ZXN0cHViX3RibDY7IC0tIG9rCitVUERBVEUgdGVzdHB1Yl90Ymw2IFNFVCBhID0gMTsKKy0t IG1ha2Ugc3VyZSBjaGFuZ2luZyB0aGUgY29sdW1uIGxpc3QgaXMgdXBkYXRlZCBpbiBTRVQg VEFCTEUKK0NSRUFURSBUQUJMRSB0ZXN0cHViX3RibDcgKGEgaW50IHByaW1hcnkga2V5LCBi IHRleHQsIGMgdGV4dCk7CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnRhYmxlIEFE RCBUQUJMRSB0ZXN0cHViX3RibDcgKGEsIGIpOworXGQrIHRlc3RwdWJfdGJsNworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBUYWJsZSAicHVibGljLnRlc3RwdWJfdGJsNyIK KyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IHwg U3RvcmFnZSAgfCBTdGF0cyB0YXJnZXQgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBhICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAg IHwgbm90IG51bGwgfCAgICAgICAgIHwgcGxhaW4gICAgfCAgICAgICAgICAgICAgfCAKKyBi ICAgICAgfCB0ZXh0ICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICAgIHwgZXh0 ZW5kZWQgfCAgICAgICAgICAgICAgfCAKKyBjICAgICAgfCB0ZXh0ICAgIHwgICAgICAgICAg IHwgICAgICAgICAgfCAgICAgICAgIHwgZXh0ZW5kZWQgfCAgICAgICAgICAgICAgfCAKK0lu ZGV4ZXM6CisgICAgInRlc3RwdWJfdGJsN19wa2V5IiBQUklNQVJZIEtFWSwgYnRyZWUgKGEp CitQdWJsaWNhdGlvbnM6CisgICAgInRlc3RwdWJfZm9ydGFibGUiIChhLCBiKQorCistLSBv azogd2UnbGwgc2tpcCB0aGlzIHRhYmxlCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2Zv cnRhYmxlIFNFVCBUQUJMRSB0ZXN0cHViX3RibDcgKGEsIGIpOworXGQrIHRlc3RwdWJfdGJs NworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUYWJsZSAicHVibGljLnRlc3Rw dWJfdGJsNyIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBE ZWZhdWx0IHwgU3RvcmFnZSAgfCBTdGF0cyB0YXJnZXQgfCBEZXNjcmlwdGlvbiAKKy0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBhICAgICAgfCBpbnRlZ2VyIHwg ICAgICAgICAgIHwgbm90IG51bGwgfCAgICAgICAgIHwgcGxhaW4gICAgfCAgICAgICAgICAg ICAgfCAKKyBiICAgICAgfCB0ZXh0ICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAgICAg ICAgIHwgZXh0ZW5kZWQgfCAgICAgICAgICAgICAgfCAKKyBjICAgICAgfCB0ZXh0ICAgIHwg ICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICAgIHwgZXh0ZW5kZWQgfCAgICAgICAgICAg ICAgfCAKK0luZGV4ZXM6CisgICAgInRlc3RwdWJfdGJsN19wa2V5IiBQUklNQVJZIEtFWSwg YnRyZWUgKGEpCitQdWJsaWNhdGlvbnM6CisgICAgInRlc3RwdWJfZm9ydGFibGUiIChhLCBi KQorCistLSBvazogdXBkYXRlIHRoZSBjb2x1bW4gbGlzdAorQUxURVIgUFVCTElDQVRJT04g dGVzdHB1Yl9mb3J0YWJsZSBTRVQgVEFCTEUgdGVzdHB1Yl90Ymw3IChhLCBjKTsKK1xkKyB0 ZXN0cHViX3RibDcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFibGUgInB1 YmxpYy50ZXN0cHViX3RibDciCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51 bGxhYmxlIHwgRGVmYXVsdCB8IFN0b3JhZ2UgIHwgU3RhdHMgdGFyZ2V0IHwgRGVzY3JpcHRp b24gCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgYSAgICAgIHwg aW50ZWdlciB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgICAgICAgICB8IHBsYWluICAgIHwg ICAgICAgICAgICAgIHwgCisgYiAgICAgIHwgdGV4dCAgICB8ICAgICAgICAgICB8ICAgICAg ICAgIHwgICAgICAgICB8IGV4dGVuZGVkIHwgICAgICAgICAgICAgIHwgCisgYyAgICAgIHwg dGV4dCAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICB8IGV4dGVuZGVkIHwg ICAgICAgICAgICAgIHwgCitJbmRleGVzOgorICAgICJ0ZXN0cHViX3RibDdfcGtleSIgUFJJ TUFSWSBLRVksIGJ0cmVlIChhKQorUHVibGljYXRpb25zOgorICAgICJ0ZXN0cHViX2ZvcnRh YmxlIiAoYSwgYykKKworLS0gY29sdW1uIGxpc3QgZm9yIHBhcnRpdGlvbmVkIHRhYmxlcyBo YXMgdG8gY292ZXIgcmVwbGljYSBpZGVudGl0aWVzIGZvcgorLS0gYWxsIGNoaWxkIHJlbGF0 aW9ucworQ1JFQVRFIFRBQkxFIHRlc3RwdWJfdGJsOCAoYSBpbnQsIGIgdGV4dCwgYyB0ZXh0 KSBQQVJUSVRJT04gQlkgSEFTSCAoYSk7CistLSBmaXJzdCBwYXJ0aXRpb24gaGFzIHJlcGxp Y2EgaWRlbnRpdHkgImEiCitDUkVBVEUgVEFCTEUgdGVzdHB1Yl90Ymw4XzAgUEFSVElUSU9O IE9GIHRlc3RwdWJfdGJsOCBGT1IgVkFMVUVTIFdJVEggKG1vZHVsdXMgMiwgcmVtYWluZGVy IDApOworQUxURVIgVEFCTEUgdGVzdHB1Yl90Ymw4XzAgQUREIFBSSU1BUlkgS0VZIChhKTsK K0FMVEVSIFRBQkxFIHRlc3RwdWJfdGJsOF8wIFJFUExJQ0EgSURFTlRJVFkgVVNJTkcgSU5E RVggdGVzdHB1Yl90Ymw4XzBfcGtleTsKKy0tIHNlY29uZCBwYXJ0aXRpb24gaGFzIHJlcGxp Y2EgaWRlbnRpdHkgImIiCitDUkVBVEUgVEFCTEUgdGVzdHB1Yl90Ymw4XzEgUEFSVElUSU9O IE9GIHRlc3RwdWJfdGJsOCBGT1IgVkFMVUVTIFdJVEggKG1vZHVsdXMgMiwgcmVtYWluZGVy IDEpOworQUxURVIgVEFCTEUgdGVzdHB1Yl90Ymw4XzEgQUREIFBSSU1BUlkgS0VZIChiKTsK K0FMVEVSIFRBQkxFIHRlc3RwdWJfdGJsOF8xIFJFUExJQ0EgSURFTlRJVFkgVVNJTkcgSU5E RVggdGVzdHB1Yl90Ymw4XzFfcGtleTsKKy0tIG9rOiBjb2x1bW4gbGlzdCBjb3ZlcnMgYm90 aCAiYSIgYW5kICJiIgorU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOworQ1JF QVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfY29sX2xpc3QgRk9SIFRBQkxFIHRlc3RwdWJfdGJs OCAoYSwgYikgV0lUSCAocHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSAndHJ1ZScpOwor UkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKKy0tIG9rOiB0aGUgc2FtZSB0aGluZywgYnV0 IHRyeSBwbGFpbiBBREQgVEFCTEUKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfY29sX2xp c3QgRFJPUCBUQUJMRSB0ZXN0cHViX3RibDg7CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHVi X2NvbF9saXN0IEFERCBUQUJMRSB0ZXN0cHViX3RibDggKGEsIGIpOworVVBEQVRFIHRlc3Rw dWJfdGJsOCBTRVQgYSA9IDE7CistLSBmYWlsdXJlOiBjb2x1bW4gbGlzdCBkb2VzIG5vdCBj b3ZlciByZXBsaWNhIGlkZW50aXR5IGZvciB0aGUgc2Vjb25kIHBhcnRpdGlvbgorQUxURVIg UFVCTElDQVRJT04gdGVzdHB1Yl9jb2xfbGlzdCBEUk9QIFRBQkxFIHRlc3RwdWJfdGJsODsK K0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfY29sX2xpc3QgQUREIFRBQkxFIHRlc3RwdWJf dGJsOCAoYSwgYyk7CitVUERBVEUgdGVzdHB1Yl90Ymw4IFNFVCBhID0gMTsKK0VSUk9SOiAg Y2Fubm90IHVwZGF0ZSB0YWJsZSAidGVzdHB1Yl90Ymw4XzEiCitERVRBSUw6ICBDb2x1bW4g bGlzdCB1c2VkIGJ5IHRoZSBwdWJsaWNhdGlvbiBkb2VzIG5vdCBjb3ZlciB0aGUgcmVwbGlj YSBpZGVudGl0eS4KK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfY29sX2xpc3QgRFJPUCBU QUJMRSB0ZXN0cHViX3RibDg7CistLSBmYWlsdXJlOiBvbmUgb2YgdGhlIHBhcnRpdGlvbnMg aGFzIFJFUExJQ0EgSURFTlRJVFkgRlVMTAorQUxURVIgVEFCTEUgdGVzdHB1Yl90Ymw4XzEg UkVQTElDQSBJREVOVElUWSBGVUxMOworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9jb2xf bGlzdCBBREQgVEFCTEUgdGVzdHB1Yl90Ymw4IChhLCBjKTsKK1VQREFURSB0ZXN0cHViX3Ri bDggU0VUIGEgPSAxOworRVJST1I6ICBjYW5ub3QgdXBkYXRlIHRhYmxlICJ0ZXN0cHViX3Ri bDhfMSIKK0RFVEFJTDogIENvbHVtbiBsaXN0IHVzZWQgYnkgdGhlIHB1YmxpY2F0aW9uIGRv ZXMgbm90IGNvdmVyIHRoZSByZXBsaWNhIGlkZW50aXR5LgorQUxURVIgUFVCTElDQVRJT04g dGVzdHB1Yl9jb2xfbGlzdCBEUk9QIFRBQkxFIHRlc3RwdWJfdGJsODsKKy0tIGFkZCB0YWJs ZSBhbmQgdGhlbiB0cnkgY2hhbmdpbmcgcmVwbGljYSBpZGVudGl0eQorQUxURVIgVEFCTEUg dGVzdHB1Yl90Ymw4XzEgUkVQTElDQSBJREVOVElUWSBVU0lORyBJTkRFWCB0ZXN0cHViX3Ri bDhfMV9wa2V5OworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9jb2xfbGlzdCBBREQgVEFC TEUgdGVzdHB1Yl90Ymw4IChhLCBiKTsKKy0tIGZhaWx1cmU6IHJlcGxpY2EgaWRlbnRpdHkg ZnVsbCBjYW4ndCBiZSB1c2VkIHdpdGggYSBjb2x1bW4gbGlzdAorQUxURVIgVEFCTEUgdGVz dHB1Yl90Ymw4XzEgUkVQTElDQSBJREVOVElUWSBGVUxMOworVVBEQVRFIHRlc3RwdWJfdGJs OCBTRVQgYSA9IDE7CitFUlJPUjogIGNhbm5vdCB1cGRhdGUgdGFibGUgInRlc3RwdWJfdGJs OF8xIgorREVUQUlMOiAgQ29sdW1uIGxpc3QgdXNlZCBieSB0aGUgcHVibGljYXRpb24gZG9l cyBub3QgY292ZXIgdGhlIHJlcGxpY2EgaWRlbnRpdHkuCistLSBmYWlsdXJlOiByZXBsaWNh IGlkZW50aXR5IGhhcyB0byBiZSBjb3ZlcmVkIGJ5IHRoZSBjb2x1bW4gbGlzdAorQUxURVIg VEFCTEUgdGVzdHB1Yl90Ymw4XzEgRFJPUCBDT05TVFJBSU5UIHRlc3RwdWJfdGJsOF8xX3Br ZXk7CitBTFRFUiBUQUJMRSB0ZXN0cHViX3RibDhfMSBBREQgUFJJTUFSWSBLRVkgKGMpOwor QUxURVIgVEFCTEUgdGVzdHB1Yl90Ymw4XzEgUkVQTElDQSBJREVOVElUWSBVU0lORyBJTkRF WCB0ZXN0cHViX3RibDhfMV9wa2V5OworVVBEQVRFIHRlc3RwdWJfdGJsOCBTRVQgYSA9IDE7 CitFUlJPUjogIGNhbm5vdCB1cGRhdGUgdGFibGUgInRlc3RwdWJfdGJsOF8xIgorREVUQUlM OiAgQ29sdW1uIGxpc3QgdXNlZCBieSB0aGUgcHVibGljYXRpb24gZG9lcyBub3QgY292ZXIg dGhlIHJlcGxpY2EgaWRlbnRpdHkuCitEUk9QIFRBQkxFIHRlc3RwdWJfdGJsODsKKy0tIGNv bHVtbiBsaXN0IGZvciBwYXJ0aXRpb25lZCB0YWJsZXMgaGFzIHRvIGNvdmVyIHJlcGxpY2Eg aWRlbnRpdGllcyBmb3IKKy0tIGFsbCBjaGlsZCByZWxhdGlvbnMKK0NSRUFURSBUQUJMRSB0 ZXN0cHViX3RibDggKGEgaW50LCBiIHRleHQsIGMgdGV4dCkgUEFSVElUSU9OIEJZIEhBU0gg KGEpOworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9jb2xfbGlzdCBBREQgVEFCTEUgdGVz dHB1Yl90Ymw4IChhLCBiKTsKKy0tIGZpcnN0IHBhcnRpdGlvbiBoYXMgcmVwbGljYSBpZGVu dGl0eSAiYSIKK0NSRUFURSBUQUJMRSB0ZXN0cHViX3RibDhfMCAoYSBpbnQsIGIgdGV4dCwg YyB0ZXh0KTsKK0FMVEVSIFRBQkxFIHRlc3RwdWJfdGJsOF8wIEFERCBQUklNQVJZIEtFWSAo YSk7CitBTFRFUiBUQUJMRSB0ZXN0cHViX3RibDhfMCBSRVBMSUNBIElERU5USVRZIFVTSU5H IElOREVYIHRlc3RwdWJfdGJsOF8wX3BrZXk7CistLSBzZWNvbmQgcGFydGl0aW9uIGhhcyBy ZXBsaWNhIGlkZW50aXR5ICJiIgorQ1JFQVRFIFRBQkxFIHRlc3RwdWJfdGJsOF8xIChhIGlu dCwgYiB0ZXh0LCBjIHRleHQpOworQUxURVIgVEFCTEUgdGVzdHB1Yl90Ymw4XzEgQUREIFBS SU1BUlkgS0VZIChjKTsKK0FMVEVSIFRBQkxFIHRlc3RwdWJfdGJsOF8xIFJFUExJQ0EgSURF TlRJVFkgVVNJTkcgSU5ERVggdGVzdHB1Yl90Ymw4XzFfcGtleTsKKy0tIG9rOiBhdHRhY2hp bmcgZmlyc3QgcGFydGl0aW9uIHdvcmtzLCBiZWNhdXNlIChhKSBpcyBpbiBjb2x1bW4gbGlz dAorQUxURVIgVEFCTEUgdGVzdHB1Yl90Ymw4IEFUVEFDSCBQQVJUSVRJT04gdGVzdHB1Yl90 Ymw4XzAgRk9SIFZBTFVFUyBXSVRIIChtb2R1bHVzIDIsIHJlbWFpbmRlciAwKTsKKy0tIGZh aWx1cmU6IHNlY29uZCBwYXJ0aXRpb24gaGFzIHJlcGxpY2EgaWRlbnRpdHkgKGMpLCB3aGlj aCBzaSBub3QgaW4gY29sdW1uIGxpc3QKK0FMVEVSIFRBQkxFIHRlc3RwdWJfdGJsOCBBVFRB Q0ggUEFSVElUSU9OIHRlc3RwdWJfdGJsOF8xIEZPUiBWQUxVRVMgV0lUSCAobW9kdWx1cyAy LCByZW1haW5kZXIgMSk7CitVUERBVEUgdGVzdHB1Yl90Ymw4IFNFVCBhID0gMTsKK0VSUk9S OiAgY2Fubm90IHVwZGF0ZSB0YWJsZSAidGVzdHB1Yl90Ymw4XzEiCitERVRBSUw6ICBDb2x1 bW4gbGlzdCB1c2VkIGJ5IHRoZSBwdWJsaWNhdGlvbiBkb2VzIG5vdCBjb3ZlciB0aGUgcmVw bGljYSBpZGVudGl0eS4KKy0tIGZhaWx1cmU6IGNoYW5naW5nIHJlcGxpY2EgaWRlbnRpdHkg dG8gRlVMTCBmb3IgcGFydGl0aW9uIGZhaWxzLCBiZWNhdXNlCistLSBvZiB0aGUgY29sdW1u IGxpc3Qgb24gdGhlIHBhcmVudAorQUxURVIgVEFCTEUgdGVzdHB1Yl90Ymw4XzAgUkVQTElD QSBJREVOVElUWSBGVUxMOworVVBEQVRFIHRlc3RwdWJfdGJsOCBTRVQgYSA9IDE7CitFUlJP UjogIGNhbm5vdCB1cGRhdGUgdGFibGUgInRlc3RwdWJfdGJsOF8wIgorREVUQUlMOiAgQ29s dW1uIGxpc3QgdXNlZCBieSB0aGUgcHVibGljYXRpb24gZG9lcyBub3QgY292ZXIgdGhlIHJl cGxpY2EgaWRlbnRpdHkuCitEUk9QIFRBQkxFIHRlc3RwdWJfdGJsNSwgdGVzdHB1Yl90Ymw2 LCB0ZXN0cHViX3RibDcsIHRlc3RwdWJfdGJsOCwgdGVzdHB1Yl90Ymw4XzE7CitEUk9QIFBV QkxJQ0FUSU9OIHRlc3RwdWJfdGFibGVfaW5zLCB0ZXN0cHViX2ZvcnRhYmxlLCB0ZXN0cHVi X2ZvcnRhYmxlX2luc2VydCwgdGVzdHB1Yl9jb2xfbGlzdDsKKy0tID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gVGVzdCBjb21i aW5hdGlvbiBvZiBjb2x1bW4gbGlzdCBhbmQgcm93IGZpbHRlcgorU0VUIGNsaWVudF9taW5f bWVzc2FnZXMgPSAnRVJST1InOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfYm90aF9m aWx0ZXJzOworUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKK0NSRUFURSBUQUJMRSB0ZXN0 cHViX3RibF9ib3RoX2ZpbHRlcnMgKGEgaW50LCBiIGludCwgYyBpbnQsIFBSSU1BUlkgS0VZ IChhLGMpKTsKK0FMVEVSIFRBQkxFIHRlc3RwdWJfdGJsX2JvdGhfZmlsdGVycyBSRVBMSUNB IElERU5USVRZIFVTSU5HIElOREVYIHRlc3RwdWJfdGJsX2JvdGhfZmlsdGVyc19wa2V5Owor QUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9ib3RoX2ZpbHRlcnMgQUREIFRBQkxFIHRlc3Rw dWJfdGJsX2JvdGhfZmlsdGVycyAoYSxjKSBXSEVSRSAoYyAhPSAxKTsKK1xkUnArIHRlc3Rw dWJfYm90aF9maWx0ZXJzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNh dGlvbiB0ZXN0cHViX2JvdGhfZmlsdGVycworICAgICAgICAgIE93bmVyICAgICAgICAgICB8 IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMg fCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisg cmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKK1RhYmxlczoKKyAgICAicHVibGljLnRl c3RwdWJfdGJsX2JvdGhfZmlsdGVycyIgKGEsIGMpIFdIRVJFIChjIDw+IDEpCisKK1xkKyB0 ZXN0cHViX3RibF9ib3RoX2ZpbHRlcnMKKyAgICAgICAgICAgICAgICAgICAgICAgICBUYWJs ZSAicHVibGljLnRlc3RwdWJfdGJsX2JvdGhfZmlsdGVycyIKKyBDb2x1bW4gfCAgVHlwZSAg IHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IHwgU3RvcmFnZSB8IFN0YXRzIHRh cmdldCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tCisgYSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgICAgICAg ICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKKyBiICAgICAgfCBpbnRlZ2VyIHwgICAg ICAgICAgIHwgICAgICAgICAgfCAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8 IAorIGMgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCBub3QgbnVsbCB8ICAgICAgICAg fCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCitJbmRleGVzOgorICAgICJ0ZXN0cHViX3Ri bF9ib3RoX2ZpbHRlcnNfcGtleSIgUFJJTUFSWSBLRVksIGJ0cmVlIChhLCBjKSBSRVBMSUNB IElERU5USVRZCitQdWJsaWNhdGlvbnM6CisgICAgInRlc3RwdWJfYm90aF9maWx0ZXJzIiAo YSwgYykgV0hFUkUgKGMgPD4gMSkKKworRFJPUCBUQUJMRSB0ZXN0cHViX3RibF9ib3RoX2Zp bHRlcnM7CitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfYm90aF9maWx0ZXJzOworLS0gPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cist LSBNb3JlIGNvbHVtbiBsaXN0IHRlc3RzIGZvciB2YWxpZGF0aW5nIGNvbHVtbiByZWZlcmVu Y2VzCitDUkVBVEUgVEFCTEUgcmZfdGJsX2FiY2Rfbm9wayhhIGludCwgYiBpbnQsIGMgaW50 LCBkIGludCk7CitDUkVBVEUgVEFCTEUgcmZfdGJsX2FiY2RfcGsoYSBpbnQsIGIgaW50LCBj IGludCwgZCBpbnQsIFBSSU1BUlkgS0VZKGEsYikpOworQ1JFQVRFIFRBQkxFIHJmX3RibF9h YmNkX3BhcnRfcGsgKGEgaW50IFBSSU1BUlkgS0VZLCBiIGludCkgUEFSVElUSU9OIGJ5IFJB TkdFIChhKTsKK0NSRUFURSBUQUJMRSByZl90YmxfYWJjZF9wYXJ0X3BrXzEgKGIgaW50LCBh IGludCBQUklNQVJZIEtFWSk7CitBTFRFUiBUQUJMRSByZl90YmxfYWJjZF9wYXJ0X3BrIEFU VEFDSCBQQVJUSVRJT04gcmZfdGJsX2FiY2RfcGFydF9wa18xIEZPUiBWQUxVRVMgRlJPTSAo MSkgVE8gKDEwKTsKKy0tIENhc2UgMS4gUkVQTElDQSBJREVOVElUWSBERUZBVUxUIChtZWFu cyB1c2UgcHJpbWFyeSBrZXkgb3Igbm90aGluZykKKy0tIDFhLiBSRVBMSUNBIElERU5USVRZ IGlzIERFRkFVTFQgYW5kIHRhYmxlIGhhcyBhIFBLLgorU0VUIGNsaWVudF9taW5fbWVzc2Fn ZXMgPSAnRVJST1InOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI2IEZPUiBUQUJMRSBy Zl90YmxfYWJjZF9wayAoYSwgYik7CitSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOworLS0g b2sgLSAoYSxiKSBjb3ZlcnRzIGFsbCBQSyBjb2xzCitVUERBVEUgcmZfdGJsX2FiY2RfcGsg U0VUIGEgPSAxOworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjYgU0VUIFRBQkxFIHJmX3Ri bF9hYmNkX3BrIChhLCBiLCBjKTsKKy0tIG9rIC0gKGEsYixjKSBjb3ZlcnRzIGFsbCBQSyBj b2xzCitVUERBVEUgcmZfdGJsX2FiY2RfcGsgU0VUIGEgPSAxOworQUxURVIgUFVCTElDQVRJ T04gdGVzdHB1YjYgU0VUIFRBQkxFIHJmX3RibF9hYmNkX3BrIChhKTsKKy0tIGZhaWwgLSAi YiIgaXMgbWlzc2luZyBmcm9tIHRoZSBjb2x1bW4gbGlzdAorVVBEQVRFIHJmX3RibF9hYmNk X3BrIFNFVCBhID0gMTsKK0VSUk9SOiAgY2Fubm90IHVwZGF0ZSB0YWJsZSAicmZfdGJsX2Fi Y2RfcGsiCitERVRBSUw6ICBDb2x1bW4gbGlzdCB1c2VkIGJ5IHRoZSBwdWJsaWNhdGlvbiBk b2VzIG5vdCBjb3ZlciB0aGUgcmVwbGljYSBpZGVudGl0eS4KK0FMVEVSIFBVQkxJQ0FUSU9O IHRlc3RwdWI2IFNFVCBUQUJMRSByZl90YmxfYWJjZF9wayAoYik7CistLSBmYWlsIC0gImEi IGlzIG1pc3NpbmcgZnJvbSB0aGUgY29sdW1uIGxpc3QKK1VQREFURSByZl90YmxfYWJjZF9w ayBTRVQgYSA9IDE7CitFUlJPUjogIGNhbm5vdCB1cGRhdGUgdGFibGUgInJmX3RibF9hYmNk X3BrIgorREVUQUlMOiAgQ29sdW1uIGxpc3QgdXNlZCBieSB0aGUgcHVibGljYXRpb24gZG9l cyBub3QgY292ZXIgdGhlIHJlcGxpY2EgaWRlbnRpdHkuCistLSAxYi4gUkVQTElDQSBJREVO VElUWSBpcyBERUZBVUxUIGFuZCB0YWJsZSBoYXMgbm8gUEsKK0FMVEVSIFBVQkxJQ0FUSU9O IHRlc3RwdWI2IFNFVCBUQUJMRSByZl90YmxfYWJjZF9ub3BrIChhKTsKKy0tIG9rIC0gdGhl cmUncyBubyByZXBsaWNhIGlkZW50aXR5LCBzbyBhbnkgY29sdW1uIGxpc3Qgd29ya3MKKy0t IG5vdGU6IGl0IGZhaWxzIGFueXdheSwganVzdCBhIGJpdCBsYXRlciBiZWNhdXNlIFVQREFU RSByZXF1aXJlcyBSSQorVVBEQVRFIHJmX3RibF9hYmNkX25vcGsgU0VUIGEgPSAxOworRVJS T1I6ICBjYW5ub3QgdXBkYXRlIHRhYmxlICJyZl90YmxfYWJjZF9ub3BrIiBiZWNhdXNlIGl0 IGRvZXMgbm90IGhhdmUgYSByZXBsaWNhIGlkZW50aXR5IGFuZCBwdWJsaXNoZXMgdXBkYXRl cworSElOVDogIFRvIGVuYWJsZSB1cGRhdGluZyB0aGUgdGFibGUsIHNldCBSRVBMSUNBIElE RU5USVRZIHVzaW5nIEFMVEVSIFRBQkxFLgorLS0gQ2FzZSAyLiBSRVBMSUNBIElERU5USVRZ IEZVTEwKK0FMVEVSIFRBQkxFIHJmX3RibF9hYmNkX3BrIFJFUExJQ0EgSURFTlRJVFkgRlVM TDsKK0FMVEVSIFRBQkxFIHJmX3RibF9hYmNkX25vcGsgUkVQTElDQSBJREVOVElUWSBGVUxM OworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjYgU0VUIFRBQkxFIHJmX3RibF9hYmNkX3Br IChjKTsKKy0tIGZhaWwgLSB3aXRoIFJFUExJQ0EgSURFTlRJVFkgRlVMTCBubyBjb2x1bW4g bGlzdCBpcyBhbGxvd2VkCitVUERBVEUgcmZfdGJsX2FiY2RfcGsgU0VUIGEgPSAxOworRVJS T1I6ICBjYW5ub3QgdXBkYXRlIHRhYmxlICJyZl90YmxfYWJjZF9wayIKK0RFVEFJTDogIENv bHVtbiBsaXN0IHVzZWQgYnkgdGhlIHB1YmxpY2F0aW9uIGRvZXMgbm90IGNvdmVyIHRoZSBy ZXBsaWNhIGlkZW50aXR5LgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjYgU0VUIFRBQkxF IHJmX3RibF9hYmNkX25vcGsgKGEsIGIsIGMsIGQpOworLS0gZmFpbCAtIHdpdGggUkVQTElD QSBJREVOVElUWSBGVUxMIG5vIGNvbHVtbiBsaXN0IGlzIGFsbG93ZWQKK1VQREFURSByZl90 YmxfYWJjZF9ub3BrIFNFVCBhID0gMTsKK0VSUk9SOiAgY2Fubm90IHVwZGF0ZSB0YWJsZSAi cmZfdGJsX2FiY2Rfbm9wayIKK0RFVEFJTDogIENvbHVtbiBsaXN0IHVzZWQgYnkgdGhlIHB1 YmxpY2F0aW9uIGRvZXMgbm90IGNvdmVyIHRoZSByZXBsaWNhIGlkZW50aXR5LgorLS0gQ2Fz ZSAzLiBSRVBMSUNBIElERU5USVRZIE5PVEhJTkcKK0FMVEVSIFRBQkxFIHJmX3RibF9hYmNk X3BrIFJFUExJQ0EgSURFTlRJVFkgTk9USElORzsKK0FMVEVSIFRBQkxFIHJmX3RibF9hYmNk X25vcGsgUkVQTElDQSBJREVOVElUWSBOT1RISU5HOworQUxURVIgUFVCTElDQVRJT04gdGVz dHB1YjYgU0VUIFRBQkxFIHJmX3RibF9hYmNkX3BrIChhKTsKKy0tIG9rIC0gUkVQTElDQSBJ REVOVElUWSBOT1RISU5HIG1lYW5zIGFsbCBjb2x1bW4gbGlzdHMgYXJlIHZhbGlkCistLSBp dCBzdGlsbCBmYWlscyBsYXRlciBiZWNhdXNlIHdpdGhvdXQgUkkgd2UgY2FuJ3QgcmVwbGlj YXRlIHVwZGF0ZXMKK1VQREFURSByZl90YmxfYWJjZF9wayBTRVQgYSA9IDE7CitFUlJPUjog IGNhbm5vdCB1cGRhdGUgdGFibGUgInJmX3RibF9hYmNkX3BrIiBiZWNhdXNlIGl0IGRvZXMg bm90IGhhdmUgYSByZXBsaWNhIGlkZW50aXR5IGFuZCBwdWJsaXNoZXMgdXBkYXRlcworSElO VDogIFRvIGVuYWJsZSB1cGRhdGluZyB0aGUgdGFibGUsIHNldCBSRVBMSUNBIElERU5USVRZ IHVzaW5nIEFMVEVSIFRBQkxFLgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjYgU0VUIFRB QkxFIHJmX3RibF9hYmNkX3BrIChhLCBiLCBjLCBkKTsKKy0tIG9rIC0gUkVQTElDQSBJREVO VElUWSBOT1RISU5HIG1lYW5zIGFsbCBjb2x1bW4gbGlzdHMgYXJlIHZhbGlkCistLSBpdCBz dGlsbCBmYWlscyBsYXRlciBiZWNhdXNlIHdpdGhvdXQgUkkgd2UgY2FuJ3QgcmVwbGljYXRl IHVwZGF0ZXMKK1VQREFURSByZl90YmxfYWJjZF9wayBTRVQgYSA9IDE7CitFUlJPUjogIGNh bm5vdCB1cGRhdGUgdGFibGUgInJmX3RibF9hYmNkX3BrIiBiZWNhdXNlIGl0IGRvZXMgbm90 IGhhdmUgYSByZXBsaWNhIGlkZW50aXR5IGFuZCBwdWJsaXNoZXMgdXBkYXRlcworSElOVDog IFRvIGVuYWJsZSB1cGRhdGluZyB0aGUgdGFibGUsIHNldCBSRVBMSUNBIElERU5USVRZIHVz aW5nIEFMVEVSIFRBQkxFLgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjYgU0VUIFRBQkxF IHJmX3RibF9hYmNkX25vcGsgKGQpOworLS0gb2sgLSBSRVBMSUNBIElERU5USVRZIE5PVEhJ TkcgbWVhbnMgYWxsIGNvbHVtbiBsaXN0cyBhcmUgdmFsaWQKKy0tIGl0IHN0aWxsIGZhaWxz IGxhdGVyIGJlY2F1c2Ugd2l0aG91dCBSSSB3ZSBjYW4ndCByZXBsaWNhdGUgdXBkYXRlcwor VVBEQVRFIHJmX3RibF9hYmNkX25vcGsgU0VUIGEgPSAxOworRVJST1I6ICBjYW5ub3QgdXBk YXRlIHRhYmxlICJyZl90YmxfYWJjZF9ub3BrIiBiZWNhdXNlIGl0IGRvZXMgbm90IGhhdmUg YSByZXBsaWNhIGlkZW50aXR5IGFuZCBwdWJsaXNoZXMgdXBkYXRlcworSElOVDogIFRvIGVu YWJsZSB1cGRhdGluZyB0aGUgdGFibGUsIHNldCBSRVBMSUNBIElERU5USVRZIHVzaW5nIEFM VEVSIFRBQkxFLgorLS0gQ2FzZSA0LiBSRVBMSUNBIElERU5USVRZIElOREVYCitBTFRFUiBU QUJMRSByZl90YmxfYWJjZF9wayBBTFRFUiBDT0xVTU4gYyBTRVQgTk9UIE5VTEw7CitDUkVB VEUgVU5JUVVFIElOREVYIGlkeF9hYmNkX3BrX2MgT04gcmZfdGJsX2FiY2RfcGsoYyk7CitB TFRFUiBUQUJMRSByZl90YmxfYWJjZF9wayBSRVBMSUNBIElERU5USVRZIFVTSU5HIElOREVY IGlkeF9hYmNkX3BrX2M7CitBTFRFUiBUQUJMRSByZl90YmxfYWJjZF9ub3BrIEFMVEVSIENP TFVNTiBjIFNFVCBOT1QgTlVMTDsKK0NSRUFURSBVTklRVUUgSU5ERVggaWR4X2FiY2Rfbm9w a19jIE9OIHJmX3RibF9hYmNkX25vcGsoYyk7CitBTFRFUiBUQUJMRSByZl90YmxfYWJjZF9u b3BrIFJFUExJQ0EgSURFTlRJVFkgVVNJTkcgSU5ERVggaWR4X2FiY2Rfbm9wa19jOworQUxU RVIgUFVCTElDQVRJT04gdGVzdHB1YjYgU0VUIFRBQkxFIHJmX3RibF9hYmNkX3BrIChhKTsK Ky0tIGZhaWwgLSBjb2x1bW4gbGlzdCAiYSIgZG9lcyBub3QgY292ZXIgdGhlIFJFUExJQ0Eg SURFTlRJVFkgSU5ERVggb24gImMiCitVUERBVEUgcmZfdGJsX2FiY2RfcGsgU0VUIGEgPSAx OworRVJST1I6ICBjYW5ub3QgdXBkYXRlIHRhYmxlICJyZl90YmxfYWJjZF9wayIKK0RFVEFJ TDogIENvbHVtbiBsaXN0IHVzZWQgYnkgdGhlIHB1YmxpY2F0aW9uIGRvZXMgbm90IGNvdmVy IHRoZSByZXBsaWNhIGlkZW50aXR5LgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjYgU0VU IFRBQkxFIHJmX3RibF9hYmNkX3BrIChjKTsKKy0tIG9rIC0gY29sdW1uIGxpc3QgImMiIGRv ZXMgY292ZXIgdGhlIFJFUExJQ0EgSURFTlRJVFkgSU5ERVggb24gImMiCitVUERBVEUgcmZf dGJsX2FiY2RfcGsgU0VUIGEgPSAxOworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjYgU0VU IFRBQkxFIHJmX3RibF9hYmNkX25vcGsgKGEpOworLS0gZmFpbCAtIGNvbHVtbiBsaXN0ICJh IiBkb2VzIG5vdCBjb3ZlciB0aGUgUkVQTElDQSBJREVOVElUWSBJTkRFWCBvbiAiYyIKK1VQ REFURSByZl90YmxfYWJjZF9ub3BrIFNFVCBhID0gMTsKK0VSUk9SOiAgY2Fubm90IHVwZGF0 ZSB0YWJsZSAicmZfdGJsX2FiY2Rfbm9wayIKK0RFVEFJTDogIENvbHVtbiBsaXN0IHVzZWQg YnkgdGhlIHB1YmxpY2F0aW9uIGRvZXMgbm90IGNvdmVyIHRoZSByZXBsaWNhIGlkZW50aXR5 LgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjYgU0VUIFRBQkxFIHJmX3RibF9hYmNkX25v cGsgKGMpOworLS0gb2sgLSBjb2x1bW4gbGlzdCAiYyIgZG9lcyBjb3ZlciB0aGUgUkVQTElD QSBJREVOVElUWSBJTkRFWCBvbiAiYyIKK1VQREFURSByZl90YmxfYWJjZF9ub3BrIFNFVCBh ID0gMTsKKy0tIFRlc3RzIGZvciBwYXJ0aXRpb25lZCB0YWJsZQorLS0gc2V0IFBVQkxJU0hf VklBX1BBUlRJVElPTl9ST09UIHRvIGZhbHNlIGFuZCB0ZXN0IGNvbHVtbiBsaXN0IGZvciBw YXJ0aXRpb25lZAorLS0gdGFibGUKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI2IFNFVCAo UFVCTElTSF9WSUFfUEFSVElUSU9OX1JPT1Q9MCk7CistLSBmYWlsIC0gY2Fubm90IHVzZSBj b2x1bW4gbGlzdCBmb3IgcGFydGl0aW9uZWQgdGFibGUKK0FMVEVSIFBVQkxJQ0FUSU9OIHRl c3RwdWI2IFNFVCBUQUJMRSByZl90YmxfYWJjZF9wYXJ0X3BrIChhKTsKK0VSUk9SOiAgY2Fu bm90IHVzZSBwdWJsaWNhdGlvbiBjb2x1bW4gbGlzdCBmb3IgcmVsYXRpb24gInJmX3RibF9h YmNkX3BhcnRfcGsiCitERVRBSUw6ICBjb2x1bW4gbGlzdCBjYW5ub3QgYmUgdXNlZCBmb3Ig YSBwYXJ0aXRpb25lZCB0YWJsZSB3aGVuIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290IGlz IGZhbHNlLgorLS0gb2sgLSBjYW4gdXNlIGNvbHVtbiBsaXN0IGZvciBwYXJ0aXRpb24KK0FM VEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI2IFNFVCBUQUJMRSByZl90YmxfYWJjZF9wYXJ0X3Br XzEgKGEpOworLS0gb2sgLSAiYSIgaXMgYSBQSyBjb2wKK1VQREFURSByZl90YmxfYWJjZF9w YXJ0X3BrIFNFVCBhID0gMTsKKy0tIHNldCBQVUJMSVNIX1ZJQV9QQVJUSVRJT05fUk9PVCB0 byB0cnVlIGFuZCB0ZXN0IGNvbHVtbiBsaXN0IGZvciBwYXJ0aXRpb25lZAorLS0gdGFibGUK K0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI2IFNFVCAoUFVCTElTSF9WSUFfUEFSVElUSU9O X1JPT1Q9MSk7CistLSBvayAtIGNhbiB1c2UgY29sdW1uIGxpc3QgZm9yIHBhcnRpdGlvbmVk IHRhYmxlCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViNiBTRVQgVEFCTEUgcmZfdGJsX2Fi Y2RfcGFydF9wayAoYSk7CistLSBvayAtICJhIiBpcyBhIFBLIGNvbAorVVBEQVRFIHJmX3Ri bF9hYmNkX3BhcnRfcGsgU0VUIGEgPSAxOworLS0gZmFpbCAtIGNhbm5vdCBzZXQgUFVCTElT SF9WSUFfUEFSVElUSU9OX1JPT1QgdG8gZmFsc2UgaWYgYW55IGNvbHVtbiBsaXN0IGlzCist LSB1c2VkIGZvciBwYXJ0aXRpb25lZCB0YWJsZQorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1 YjYgU0VUIChQVUJMSVNIX1ZJQV9QQVJUSVRJT05fUk9PVD0wKTsKK0VSUk9SOiAgY2Fubm90 IHNldCBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IGZhbHNlIGZvciBwdWJsaWNhdGlv biAidGVzdHB1YjYiCitERVRBSUw6ICBUaGUgcHVibGljYXRpb24gY29udGFpbnMgYSBjb2x1 bW4gbGlzdCBmb3IgYSBwYXJ0aXRpb25lZCB0YWJsZSAicmZfdGJsX2FiY2RfcGFydF9wayIg d2hpY2ggaXMgbm90IGFsbG93ZWQgd2hlbiBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCBp cyBmYWxzZS4KKy0tIE5vdyBjaGFuZ2UgdGhlIHJvb3QgY29sdW1uIGxpc3QgdG8gdXNlIGEg Y29sdW1uICJiIgorLS0gKHdoaWNoIGlzIG5vdCBpbiB0aGUgcmVwbGljYSBpZGVudGl0eSkK K0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI2IFNFVCBUQUJMRSByZl90YmxfYWJjZF9wYXJ0 X3BrXzEgKGIpOworLS0gb2sgLSB3ZSBkb24ndCBoYXZlIGNvbHVtbiBsaXN0IGZvciBwYXJ0 aXRpb25lZCB0YWJsZS4KK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI2IFNFVCAoUFVCTElT SF9WSUFfUEFSVElUSU9OX1JPT1Q9MCk7CistLSBmYWlsIC0gImIiIGlzIG5vdCBpbiBSRVBM SUNBIElERU5USVRZIElOREVYCitVUERBVEUgcmZfdGJsX2FiY2RfcGFydF9wayBTRVQgYSA9 IDE7CitFUlJPUjogIGNhbm5vdCB1cGRhdGUgdGFibGUgInJmX3RibF9hYmNkX3BhcnRfcGtf MSIKK0RFVEFJTDogIENvbHVtbiBsaXN0IHVzZWQgYnkgdGhlIHB1YmxpY2F0aW9uIGRvZXMg bm90IGNvdmVyIHRoZSByZXBsaWNhIGlkZW50aXR5LgorLS0gc2V0IFBVQkxJU0hfVklBX1BB UlRJVElPTl9ST09UIHRvIHRydWUKKy0tIGNhbiB1c2UgY29sdW1uIGxpc3QgZm9yIHBhcnRp dGlvbmVkIHRhYmxlCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViNiBTRVQgKFBVQkxJU0hf VklBX1BBUlRJVElPTl9ST09UPTEpOworLS0gb2sgLSBjYW4gdXNlIGNvbHVtbiBsaXN0IGZv ciBwYXJ0aXRpb25lZCB0YWJsZQorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjYgU0VUIFRB QkxFIHJmX3RibF9hYmNkX3BhcnRfcGsgKGIpOworLS0gZmFpbCAtICJiIiBpcyBub3QgaW4g UkVQTElDQSBJREVOVElUWSBJTkRFWAorVVBEQVRFIHJmX3RibF9hYmNkX3BhcnRfcGsgU0VU IGEgPSAxOworRVJST1I6ICBjYW5ub3QgdXBkYXRlIHRhYmxlICJyZl90YmxfYWJjZF9wYXJ0 X3BrXzEiCitERVRBSUw6ICBDb2x1bW4gbGlzdCB1c2VkIGJ5IHRoZSBwdWJsaWNhdGlvbiBk b2VzIG5vdCBjb3ZlciB0aGUgcmVwbGljYSBpZGVudGl0eS4KK0RST1AgUFVCTElDQVRJT04g dGVzdHB1YjY7CitEUk9QIFRBQkxFIHJmX3RibF9hYmNkX3BrOworRFJPUCBUQUJMRSByZl90 YmxfYWJjZF9ub3BrOworRFJPUCBUQUJMRSByZl90YmxfYWJjZF9wYXJ0X3BrOworLS0gPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAt LSBUZXN0IGNhY2hlIGludmFsaWRhdGlvbiBGT1IgQUxMIFRBQkxFUyBwdWJsaWNhdGlvbgog U0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOwogQ1JFQVRFIFRBQkxFIHRlc3Rw dWJfdGJsNChhIGludCk7CkBAIC0xMDU4LDYgKzE0MjEsMTUgQEAgQUxURVIgUFVCTElDQVRJ T04gdGVzdHB1YjFfZm9yc2NoZW1hIFNFVCBBTEwgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVz dDEsIHB1Yl90ZXMKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgInB1Yl90ZXN0MSIKIAor LS0gVmVyaWZ5IHRoYXQgaXQgZmFpbHMgdG8gYWRkIGEgc2NoZW1hIHdpdGggYSBjb2x1bW4g c3BlY2lmaWNhdGlvbgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjFfZm9yc2NoZW1hIEFE RCBBTEwgVEFCTEVTIElOIFNDSEVNQSBmb28gKGEsIGIpOworRVJST1I6ICBzeW50YXggZXJy b3IgYXQgb3IgbmVhciAiKCIKK0xJTkUgMTogLi4uVElPTiB0ZXN0cHViMV9mb3JzY2hlbWEg QUREIEFMTCBUQUJMRVMgSU4gU0NIRU1BIGZvbyAoYSwgYik7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorQUxU RVIgUFVCTElDQVRJT04gdGVzdHB1YjFfZm9yc2NoZW1hIEFERCBBTEwgVEFCTEVTIElOIFND SEVNQSBmb28sIGJhciAoYSwgYik7CitFUlJPUjogIGNvbHVtbiBzcGVjaWZpY2F0aW9uIG5v dCBhbGxvd2VkIGZvciBzY2hlbWEKK0xJTkUgMTogLi4uIHRlc3RwdWIxX2ZvcnNjaGVtYSBB REQgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgZm9vLCBiYXIgKGEsIGIpLi4uCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgog LS0gY2xlYW51cCBwdWJfdGVzdDEgc2NoZW1hIGZvciBpbnZhbGlkYXRpb24gdGVzdHMKIEFM VEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWIyX2ZvcnNjaGVtYSBEUk9QIEFMTCBUQUJMRVMgSU4g U0NIRU1BIHB1Yl90ZXN0MTsKIERST1AgUFVCTElDQVRJT04gdGVzdHB1YjNfZm9yc2NoZW1h LCB0ZXN0cHViNF9mb3JzY2hlbWEsIHRlc3RwdWI1X2ZvcnNjaGVtYSwgdGVzdHB1YjZfZm9y c2NoZW1hLCB0ZXN0cHViX2ZvcnRhYmxlOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9zcWwvcHVibGljYXRpb24uc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRp b24uc3FsCmluZGV4IDU0NTdjNTZiMzNmLi5hZWIxYjU3MmFmOCAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3B1YmxpY2F0aW9uLnNxbApAQCAtMzczLDYgKzM3MywyODkgQEAgRFJPUCBUQUJM RSByZl90YmxfYWJjZF9ub3BrOwogRFJPUCBUQUJMRSByZl90YmxfYWJjZF9wYXJ0X3BrOwog LS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CiAKKy0tIGZhaWwgLSBkdXBsaWNhdGUgdGFibGVzIGFyZSBub3QgYWxsb3dlZCBpZiB0 aGF0IHRhYmxlIGhhcyBhbnkgY29sdW1uIGxpc3RzCitTRVQgY2xpZW50X21pbl9tZXNzYWdl cyA9ICdFUlJPUic7CitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9kdXBzIEZPUiBUQUJM RSB0ZXN0cHViX3RibDEgKGEpLCB0ZXN0cHViX3RibDEgV0lUSCAocHVibGlzaCA9ICdpbnNl cnQnKTsKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2R1cHMgRk9SIFRBQkxFIHRlc3Rw dWJfdGJsMSwgdGVzdHB1Yl90YmwxIChhKSBXSVRIIChwdWJsaXNoID0gJ2luc2VydCcpOwor UkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKKworLS0gdGVzdCBmb3IgY29sdW1uIGxpc3Rz CitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CitDUkVBVEUgUFVCTElDQVRJ T04gdGVzdHB1Yl9mb3J0YWJsZSBGT1IgVEFCTEUgdGVzdHB1Yl90YmwxOworQ1JFQVRFIFBV QkxJQ0FUSU9OIHRlc3RwdWJfZm9ydGFibGVfaW5zZXJ0IFdJVEggKHB1Ymxpc2ggPSAnaW5z ZXJ0Jyk7CitSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOworQ1JFQVRFIFRBQkxFIHRlc3Rw dWJfdGJsNSAoYSBpbnQgUFJJTUFSWSBLRVksIGIgdGV4dCwgYyB0ZXh0LAorCWQgaW50IGdl bmVyYXRlZCBhbHdheXMgYXMgKGEgKyBsZW5ndGgoYikpIHN0b3JlZCk7CistLSBlcnJvcjog Y29sdW1uICJ4IiBkb2VzIG5vdCBleGlzdAorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9m b3J0YWJsZSBBREQgVEFCTEUgdGVzdHB1Yl90Ymw1IChhLCB4KTsKKy0tIGVycm9yOiByZXBs aWNhIGlkZW50aXR5ICJhIiBub3QgaW5jbHVkZWQgaW4gdGhlIGNvbHVtbiBsaXN0CitBTFRF UiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnRhYmxlIEFERCBUQUJMRSB0ZXN0cHViX3RibDUg KGIsIGMpOworVVBEQVRFIHRlc3RwdWJfdGJsNSBTRVQgYSA9IDE7CitBTFRFUiBQVUJMSUNB VElPTiB0ZXN0cHViX2ZvcnRhYmxlIERST1AgVEFCTEUgdGVzdHB1Yl90Ymw1OworLS0gZXJy b3I6IGdlbmVyYXRlZCBjb2x1bW4gImQiIGNhbid0IGJlIGluIGxpc3QKK0FMVEVSIFBVQkxJ Q0FUSU9OIHRlc3RwdWJfZm9ydGFibGUgQUREIFRBQkxFIHRlc3RwdWJfdGJsNSAoYSwgZCk7 CistLSBlcnJvcjogc3lzdGVtIGF0dHJpYnV0ZXMgImN0aWQiIG5vdCBhbGxvd2VkIGluIGNv bHVtbiBsaXN0CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnRhYmxlIEFERCBUQUJM RSB0ZXN0cHViX3RibDUgKGEsIGN0aWQpOworLS0gb2sKK0FMVEVSIFBVQkxJQ0FUSU9OIHRl c3RwdWJfZm9ydGFibGUgQUREIFRBQkxFIHRlc3RwdWJfdGJsNSAoYSwgYyk7CitBTFRFUiBU QUJMRSB0ZXN0cHViX3RibDUgRFJPUCBDT0xVTU4gYzsJCS0tIG5vIGRpY2UKKy0tIG9rOiBm b3IgaW5zZXJ0LW9ubHkgcHVibGljYXRpb24sIHRoZSBjb2x1bW4gbGlzdCBpcyBhcmJpdHJh cnkKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9ydGFibGVfaW5zZXJ0IEFERCBUQUJM RSB0ZXN0cHViX3RibDUgKGIsIGMpOworCisvKiBub3QgYWxsIHJlcGxpY2EgaWRlbnRpdGll cyBhcmUgZ29vZCBlbm91Z2ggKi8KK0NSRUFURSBVTklRVUUgSU5ERVggdGVzdHB1Yl90Ymw1 X2Jfa2V5IE9OIHRlc3RwdWJfdGJsNSAoYiwgYyk7CitBTFRFUiBUQUJMRSB0ZXN0cHViX3Ri bDUgQUxURVIgYiBTRVQgTk9UIE5VTEwsIEFMVEVSIGMgU0VUIE5PVCBOVUxMOworQUxURVIg VEFCTEUgdGVzdHB1Yl90Ymw1IFJFUExJQ0EgSURFTlRJVFkgVVNJTkcgSU5ERVggdGVzdHB1 Yl90Ymw1X2Jfa2V5OworLS0gZXJyb3I6IHJlcGxpY2EgaWRlbnRpdHkgKGIsYykgaXMgY292 ZXJlZCBieSBjb2x1bW4gbGlzdCAoYSwgYykKK1VQREFURSB0ZXN0cHViX3RibDUgU0VUIGEg PSAxOworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3J0YWJsZSBEUk9QIFRBQkxFIHRl c3RwdWJfdGJsNTsKKworLS0gZXJyb3I6IGNoYW5nZSB0aGUgcmVwbGljYSBpZGVudGl0eSB0 byAiYiIsIGFuZCBjb2x1bW4gbGlzdCB0byAoYSwgYykKKy0tIHRoZW4gdXBkYXRlIGZhaWxz LCBiZWNhdXNlIChhLCBjKSBkb2VzIG5vdCBjb3ZlciByZXBsaWNhIGlkZW50aXR5CitBTFRF UiBUQUJMRSB0ZXN0cHViX3RibDUgUkVQTElDQSBJREVOVElUWSBVU0lORyBJTkRFWCB0ZXN0 cHViX3RibDVfYl9rZXk7CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnRhYmxlIEFE RCBUQUJMRSB0ZXN0cHViX3RibDUgKGEsIGMpOworVVBEQVRFIHRlc3RwdWJfdGJsNSBTRVQg YSA9IDE7CisKKy8qIEJ1dCBpZiB1cGQvZGVsIGFyZSBub3QgcHVibGlzaGVkLCBpdCB3b3Jr cyBPSyAqLworU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOworQ1JFQVRFIFBV QkxJQ0FUSU9OIHRlc3RwdWJfdGFibGVfaW5zIFdJVEggKHB1Ymxpc2ggPSAnaW5zZXJ0LCB0 cnVuY2F0ZScpOworUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKK0FMVEVSIFBVQkxJQ0FU SU9OIHRlc3RwdWJfdGFibGVfaW5zIEFERCBUQUJMRSB0ZXN0cHViX3RibDUgKGEpOwkJLS0g b2sKK1xkUnArIHRlc3RwdWJfdGFibGVfaW5zCisKKy0tIHdpdGggUkVQTElDQSBJREVOVElU WSBGVUxMLCBjb2x1bW4gbGlzdHMgYXJlIG5vdCBhbGxvd2VkCitDUkVBVEUgVEFCTEUgdGVz dHB1Yl90Ymw2IChhIGludCwgYiB0ZXh0LCBjIHRleHQpOworQUxURVIgVEFCTEUgdGVzdHB1 Yl90Ymw2IFJFUExJQ0EgSURFTlRJVFkgRlVMTDsKKworQUxURVIgUFVCTElDQVRJT04gdGVz dHB1Yl9mb3J0YWJsZSBBREQgVEFCTEUgdGVzdHB1Yl90Ymw2IChhLCBiLCBjKTsKK1VQREFU RSB0ZXN0cHViX3RibDYgU0VUIGEgPSAxOworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9m b3J0YWJsZSBEUk9QIFRBQkxFIHRlc3RwdWJfdGJsNjsKKworQUxURVIgUFVCTElDQVRJT04g dGVzdHB1Yl9mb3J0YWJsZSBBREQgVEFCTEUgdGVzdHB1Yl90Ymw2OyAtLSBvaworVVBEQVRF IHRlc3RwdWJfdGJsNiBTRVQgYSA9IDE7CisKKy0tIG1ha2Ugc3VyZSBjaGFuZ2luZyB0aGUg Y29sdW1uIGxpc3QgaXMgdXBkYXRlZCBpbiBTRVQgVEFCTEUKK0NSRUFURSBUQUJMRSB0ZXN0 cHViX3RibDcgKGEgaW50IHByaW1hcnkga2V5LCBiIHRleHQsIGMgdGV4dCk7CitBTFRFUiBQ VUJMSUNBVElPTiB0ZXN0cHViX2ZvcnRhYmxlIEFERCBUQUJMRSB0ZXN0cHViX3RibDcgKGEs IGIpOworXGQrIHRlc3RwdWJfdGJsNworLS0gb2s6IHdlJ2xsIHNraXAgdGhpcyB0YWJsZQor QUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3J0YWJsZSBTRVQgVEFCTEUgdGVzdHB1Yl90 Ymw3IChhLCBiKTsKK1xkKyB0ZXN0cHViX3RibDcKKy0tIG9rOiB1cGRhdGUgdGhlIGNvbHVt biBsaXN0CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnRhYmxlIFNFVCBUQUJMRSB0 ZXN0cHViX3RibDcgKGEsIGMpOworXGQrIHRlc3RwdWJfdGJsNworCistLSBjb2x1bW4gbGlz dCBmb3IgcGFydGl0aW9uZWQgdGFibGVzIGhhcyB0byBjb3ZlciByZXBsaWNhIGlkZW50aXRp ZXMgZm9yCistLSBhbGwgY2hpbGQgcmVsYXRpb25zCitDUkVBVEUgVEFCTEUgdGVzdHB1Yl90 Ymw4IChhIGludCwgYiB0ZXh0LCBjIHRleHQpIFBBUlRJVElPTiBCWSBIQVNIIChhKTsKKy0t IGZpcnN0IHBhcnRpdGlvbiBoYXMgcmVwbGljYSBpZGVudGl0eSAiYSIKK0NSRUFURSBUQUJM RSB0ZXN0cHViX3RibDhfMCBQQVJUSVRJT04gT0YgdGVzdHB1Yl90Ymw4IEZPUiBWQUxVRVMg V0lUSCAobW9kdWx1cyAyLCByZW1haW5kZXIgMCk7CitBTFRFUiBUQUJMRSB0ZXN0cHViX3Ri bDhfMCBBREQgUFJJTUFSWSBLRVkgKGEpOworQUxURVIgVEFCTEUgdGVzdHB1Yl90Ymw4XzAg UkVQTElDQSBJREVOVElUWSBVU0lORyBJTkRFWCB0ZXN0cHViX3RibDhfMF9wa2V5OworLS0g c2Vjb25kIHBhcnRpdGlvbiBoYXMgcmVwbGljYSBpZGVudGl0eSAiYiIKK0NSRUFURSBUQUJM RSB0ZXN0cHViX3RibDhfMSBQQVJUSVRJT04gT0YgdGVzdHB1Yl90Ymw4IEZPUiBWQUxVRVMg V0lUSCAobW9kdWx1cyAyLCByZW1haW5kZXIgMSk7CitBTFRFUiBUQUJMRSB0ZXN0cHViX3Ri bDhfMSBBREQgUFJJTUFSWSBLRVkgKGIpOworQUxURVIgVEFCTEUgdGVzdHB1Yl90Ymw4XzEg UkVQTElDQSBJREVOVElUWSBVU0lORyBJTkRFWCB0ZXN0cHViX3RibDhfMV9wa2V5OworCist LSBvazogY29sdW1uIGxpc3QgY292ZXJzIGJvdGggImEiIGFuZCAiYiIKK1NFVCBjbGllbnRf bWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2Nv bF9saXN0IEZPUiBUQUJMRSB0ZXN0cHViX3RibDggKGEsIGIpIFdJVEggKHB1Ymxpc2hfdmlh X3BhcnRpdGlvbl9yb290ID0gJ3RydWUnKTsKK1JFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7 CisKKy0tIG9rOiB0aGUgc2FtZSB0aGluZywgYnV0IHRyeSBwbGFpbiBBREQgVEFCTEUKK0FM VEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfY29sX2xpc3QgRFJPUCBUQUJMRSB0ZXN0cHViX3Ri bDg7CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2NvbF9saXN0IEFERCBUQUJMRSB0ZXN0 cHViX3RibDggKGEsIGIpOworVVBEQVRFIHRlc3RwdWJfdGJsOCBTRVQgYSA9IDE7CisKKy0t IGZhaWx1cmU6IGNvbHVtbiBsaXN0IGRvZXMgbm90IGNvdmVyIHJlcGxpY2EgaWRlbnRpdHkg Zm9yIHRoZSBzZWNvbmQgcGFydGl0aW9uCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2Nv bF9saXN0IERST1AgVEFCTEUgdGVzdHB1Yl90Ymw4OworQUxURVIgUFVCTElDQVRJT04gdGVz dHB1Yl9jb2xfbGlzdCBBREQgVEFCTEUgdGVzdHB1Yl90Ymw4IChhLCBjKTsKK1VQREFURSB0 ZXN0cHViX3RibDggU0VUIGEgPSAxOworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9jb2xf bGlzdCBEUk9QIFRBQkxFIHRlc3RwdWJfdGJsODsKKworLS0gZmFpbHVyZTogb25lIG9mIHRo ZSBwYXJ0aXRpb25zIGhhcyBSRVBMSUNBIElERU5USVRZIEZVTEwKK0FMVEVSIFRBQkxFIHRl c3RwdWJfdGJsOF8xIFJFUExJQ0EgSURFTlRJVFkgRlVMTDsKK0FMVEVSIFBVQkxJQ0FUSU9O IHRlc3RwdWJfY29sX2xpc3QgQUREIFRBQkxFIHRlc3RwdWJfdGJsOCAoYSwgYyk7CitVUERB VEUgdGVzdHB1Yl90Ymw4IFNFVCBhID0gMTsKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJf Y29sX2xpc3QgRFJPUCBUQUJMRSB0ZXN0cHViX3RibDg7CisKKy0tIGFkZCB0YWJsZSBhbmQg dGhlbiB0cnkgY2hhbmdpbmcgcmVwbGljYSBpZGVudGl0eQorQUxURVIgVEFCTEUgdGVzdHB1 Yl90Ymw4XzEgUkVQTElDQSBJREVOVElUWSBVU0lORyBJTkRFWCB0ZXN0cHViX3RibDhfMV9w a2V5OworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9jb2xfbGlzdCBBREQgVEFCTEUgdGVz dHB1Yl90Ymw4IChhLCBiKTsKKworLS0gZmFpbHVyZTogcmVwbGljYSBpZGVudGl0eSBmdWxs IGNhbid0IGJlIHVzZWQgd2l0aCBhIGNvbHVtbiBsaXN0CitBTFRFUiBUQUJMRSB0ZXN0cHVi X3RibDhfMSBSRVBMSUNBIElERU5USVRZIEZVTEw7CitVUERBVEUgdGVzdHB1Yl90Ymw4IFNF VCBhID0gMTsKKworLS0gZmFpbHVyZTogcmVwbGljYSBpZGVudGl0eSBoYXMgdG8gYmUgY292 ZXJlZCBieSB0aGUgY29sdW1uIGxpc3QKK0FMVEVSIFRBQkxFIHRlc3RwdWJfdGJsOF8xIERS T1AgQ09OU1RSQUlOVCB0ZXN0cHViX3RibDhfMV9wa2V5OworQUxURVIgVEFCTEUgdGVzdHB1 Yl90Ymw4XzEgQUREIFBSSU1BUlkgS0VZIChjKTsKK0FMVEVSIFRBQkxFIHRlc3RwdWJfdGJs OF8xIFJFUExJQ0EgSURFTlRJVFkgVVNJTkcgSU5ERVggdGVzdHB1Yl90Ymw4XzFfcGtleTsK K1VQREFURSB0ZXN0cHViX3RibDggU0VUIGEgPSAxOworCitEUk9QIFRBQkxFIHRlc3RwdWJf dGJsODsKKworLS0gY29sdW1uIGxpc3QgZm9yIHBhcnRpdGlvbmVkIHRhYmxlcyBoYXMgdG8g Y292ZXIgcmVwbGljYSBpZGVudGl0aWVzIGZvcgorLS0gYWxsIGNoaWxkIHJlbGF0aW9ucwor Q1JFQVRFIFRBQkxFIHRlc3RwdWJfdGJsOCAoYSBpbnQsIGIgdGV4dCwgYyB0ZXh0KSBQQVJU SVRJT04gQlkgSEFTSCAoYSk7CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2NvbF9saXN0 IEFERCBUQUJMRSB0ZXN0cHViX3RibDggKGEsIGIpOworLS0gZmlyc3QgcGFydGl0aW9uIGhh cyByZXBsaWNhIGlkZW50aXR5ICJhIgorQ1JFQVRFIFRBQkxFIHRlc3RwdWJfdGJsOF8wIChh IGludCwgYiB0ZXh0LCBjIHRleHQpOworQUxURVIgVEFCTEUgdGVzdHB1Yl90Ymw4XzAgQURE IFBSSU1BUlkgS0VZIChhKTsKK0FMVEVSIFRBQkxFIHRlc3RwdWJfdGJsOF8wIFJFUExJQ0Eg SURFTlRJVFkgVVNJTkcgSU5ERVggdGVzdHB1Yl90Ymw4XzBfcGtleTsKKy0tIHNlY29uZCBw YXJ0aXRpb24gaGFzIHJlcGxpY2EgaWRlbnRpdHkgImIiCitDUkVBVEUgVEFCTEUgdGVzdHB1 Yl90Ymw4XzEgKGEgaW50LCBiIHRleHQsIGMgdGV4dCk7CitBTFRFUiBUQUJMRSB0ZXN0cHVi X3RibDhfMSBBREQgUFJJTUFSWSBLRVkgKGMpOworQUxURVIgVEFCTEUgdGVzdHB1Yl90Ymw4 XzEgUkVQTElDQSBJREVOVElUWSBVU0lORyBJTkRFWCB0ZXN0cHViX3RibDhfMV9wa2V5Owor CistLSBvazogYXR0YWNoaW5nIGZpcnN0IHBhcnRpdGlvbiB3b3JrcywgYmVjYXVzZSAoYSkg aXMgaW4gY29sdW1uIGxpc3QKK0FMVEVSIFRBQkxFIHRlc3RwdWJfdGJsOCBBVFRBQ0ggUEFS VElUSU9OIHRlc3RwdWJfdGJsOF8wIEZPUiBWQUxVRVMgV0lUSCAobW9kdWx1cyAyLCByZW1h aW5kZXIgMCk7CistLSBmYWlsdXJlOiBzZWNvbmQgcGFydGl0aW9uIGhhcyByZXBsaWNhIGlk ZW50aXR5IChjKSwgd2hpY2ggc2kgbm90IGluIGNvbHVtbiBsaXN0CitBTFRFUiBUQUJMRSB0 ZXN0cHViX3RibDggQVRUQUNIIFBBUlRJVElPTiB0ZXN0cHViX3RibDhfMSBGT1IgVkFMVUVT IFdJVEggKG1vZHVsdXMgMiwgcmVtYWluZGVyIDEpOworVVBEQVRFIHRlc3RwdWJfdGJsOCBT RVQgYSA9IDE7CisKKy0tIGZhaWx1cmU6IGNoYW5naW5nIHJlcGxpY2EgaWRlbnRpdHkgdG8g RlVMTCBmb3IgcGFydGl0aW9uIGZhaWxzLCBiZWNhdXNlCistLSBvZiB0aGUgY29sdW1uIGxp c3Qgb24gdGhlIHBhcmVudAorQUxURVIgVEFCTEUgdGVzdHB1Yl90Ymw4XzAgUkVQTElDQSBJ REVOVElUWSBGVUxMOworVVBEQVRFIHRlc3RwdWJfdGJsOCBTRVQgYSA9IDE7CisKK0RST1Ag VEFCTEUgdGVzdHB1Yl90Ymw1LCB0ZXN0cHViX3RibDYsIHRlc3RwdWJfdGJsNywgdGVzdHB1 Yl90Ymw4LCB0ZXN0cHViX3RibDhfMTsKK0RST1AgUFVCTElDQVRJT04gdGVzdHB1Yl90YWJs ZV9pbnMsIHRlc3RwdWJfZm9ydGFibGUsIHRlc3RwdWJfZm9ydGFibGVfaW5zZXJ0LCB0ZXN0 cHViX2NvbF9saXN0OworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CisKKy0tIFRlc3QgY29tYmluYXRpb24gb2YgY29sdW1uIGxp c3QgYW5kIHJvdyBmaWx0ZXIKK1NFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsK K0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2JvdGhfZmlsdGVyczsKK1JFU0VUIGNsaWVu dF9taW5fbWVzc2FnZXM7CitDUkVBVEUgVEFCTEUgdGVzdHB1Yl90YmxfYm90aF9maWx0ZXJz IChhIGludCwgYiBpbnQsIGMgaW50LCBQUklNQVJZIEtFWSAoYSxjKSk7CitBTFRFUiBUQUJM RSB0ZXN0cHViX3RibF9ib3RoX2ZpbHRlcnMgUkVQTElDQSBJREVOVElUWSBVU0lORyBJTkRF WCB0ZXN0cHViX3RibF9ib3RoX2ZpbHRlcnNfcGtleTsKK0FMVEVSIFBVQkxJQ0FUSU9OIHRl c3RwdWJfYm90aF9maWx0ZXJzIEFERCBUQUJMRSB0ZXN0cHViX3RibF9ib3RoX2ZpbHRlcnMg KGEsYykgV0hFUkUgKGMgIT0gMSk7CitcZFJwKyB0ZXN0cHViX2JvdGhfZmlsdGVycworXGQr IHRlc3RwdWJfdGJsX2JvdGhfZmlsdGVycworCitEUk9QIFRBQkxFIHRlc3RwdWJfdGJsX2Jv dGhfZmlsdGVyczsKK0RST1AgUFVCTElDQVRJT04gdGVzdHB1Yl9ib3RoX2ZpbHRlcnM7Cist LSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKworLS0gTW9yZSBjb2x1bW4gbGlzdCB0ZXN0cyBmb3IgdmFsaWRhdGluZyBjb2x1bW4g cmVmZXJlbmNlcworQ1JFQVRFIFRBQkxFIHJmX3RibF9hYmNkX25vcGsoYSBpbnQsIGIgaW50 LCBjIGludCwgZCBpbnQpOworQ1JFQVRFIFRBQkxFIHJmX3RibF9hYmNkX3BrKGEgaW50LCBi IGludCwgYyBpbnQsIGQgaW50LCBQUklNQVJZIEtFWShhLGIpKTsKK0NSRUFURSBUQUJMRSBy Zl90YmxfYWJjZF9wYXJ0X3BrIChhIGludCBQUklNQVJZIEtFWSwgYiBpbnQpIFBBUlRJVElP TiBieSBSQU5HRSAoYSk7CitDUkVBVEUgVEFCTEUgcmZfdGJsX2FiY2RfcGFydF9wa18xIChi IGludCwgYSBpbnQgUFJJTUFSWSBLRVkpOworQUxURVIgVEFCTEUgcmZfdGJsX2FiY2RfcGFy dF9wayBBVFRBQ0ggUEFSVElUSU9OIHJmX3RibF9hYmNkX3BhcnRfcGtfMSBGT1IgVkFMVUVT IEZST00gKDEpIFRPICgxMCk7CisKKy0tIENhc2UgMS4gUkVQTElDQSBJREVOVElUWSBERUZB VUxUIChtZWFucyB1c2UgcHJpbWFyeSBrZXkgb3Igbm90aGluZykKKworLS0gMWEuIFJFUExJ Q0EgSURFTlRJVFkgaXMgREVGQVVMVCBhbmQgdGFibGUgaGFzIGEgUEsuCitTRVQgY2xpZW50 X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjYg Rk9SIFRBQkxFIHJmX3RibF9hYmNkX3BrIChhLCBiKTsKK1JFU0VUIGNsaWVudF9taW5fbWVz c2FnZXM7CistLSBvayAtIChhLGIpIGNvdmVydHMgYWxsIFBLIGNvbHMKK1VQREFURSByZl90 YmxfYWJjZF9wayBTRVQgYSA9IDE7CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViNiBTRVQg VEFCTEUgcmZfdGJsX2FiY2RfcGsgKGEsIGIsIGMpOworLS0gb2sgLSAoYSxiLGMpIGNvdmVy dHMgYWxsIFBLIGNvbHMKK1VQREFURSByZl90YmxfYWJjZF9wayBTRVQgYSA9IDE7CitBTFRF UiBQVUJMSUNBVElPTiB0ZXN0cHViNiBTRVQgVEFCTEUgcmZfdGJsX2FiY2RfcGsgKGEpOwor LS0gZmFpbCAtICJiIiBpcyBtaXNzaW5nIGZyb20gdGhlIGNvbHVtbiBsaXN0CitVUERBVEUg cmZfdGJsX2FiY2RfcGsgU0VUIGEgPSAxOworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjYg U0VUIFRBQkxFIHJmX3RibF9hYmNkX3BrIChiKTsKKy0tIGZhaWwgLSAiYSIgaXMgbWlzc2lu ZyBmcm9tIHRoZSBjb2x1bW4gbGlzdAorVVBEQVRFIHJmX3RibF9hYmNkX3BrIFNFVCBhID0g MTsKKworLS0gMWIuIFJFUExJQ0EgSURFTlRJVFkgaXMgREVGQVVMVCBhbmQgdGFibGUgaGFz IG5vIFBLCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViNiBTRVQgVEFCTEUgcmZfdGJsX2Fi Y2Rfbm9wayAoYSk7CistLSBvayAtIHRoZXJlJ3Mgbm8gcmVwbGljYSBpZGVudGl0eSwgc28g YW55IGNvbHVtbiBsaXN0IHdvcmtzCistLSBub3RlOiBpdCBmYWlscyBhbnl3YXksIGp1c3Qg YSBiaXQgbGF0ZXIgYmVjYXVzZSBVUERBVEUgcmVxdWlyZXMgUkkKK1VQREFURSByZl90Ymxf YWJjZF9ub3BrIFNFVCBhID0gMTsKKworLS0gQ2FzZSAyLiBSRVBMSUNBIElERU5USVRZIEZV TEwKK0FMVEVSIFRBQkxFIHJmX3RibF9hYmNkX3BrIFJFUExJQ0EgSURFTlRJVFkgRlVMTDsK K0FMVEVSIFRBQkxFIHJmX3RibF9hYmNkX25vcGsgUkVQTElDQSBJREVOVElUWSBGVUxMOwor QUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjYgU0VUIFRBQkxFIHJmX3RibF9hYmNkX3BrIChj KTsKKy0tIGZhaWwgLSB3aXRoIFJFUExJQ0EgSURFTlRJVFkgRlVMTCBubyBjb2x1bW4gbGlz dCBpcyBhbGxvd2VkCitVUERBVEUgcmZfdGJsX2FiY2RfcGsgU0VUIGEgPSAxOworQUxURVIg UFVCTElDQVRJT04gdGVzdHB1YjYgU0VUIFRBQkxFIHJmX3RibF9hYmNkX25vcGsgKGEsIGIs IGMsIGQpOworLS0gZmFpbCAtIHdpdGggUkVQTElDQSBJREVOVElUWSBGVUxMIG5vIGNvbHVt biBsaXN0IGlzIGFsbG93ZWQKK1VQREFURSByZl90YmxfYWJjZF9ub3BrIFNFVCBhID0gMTsK KworLS0gQ2FzZSAzLiBSRVBMSUNBIElERU5USVRZIE5PVEhJTkcKK0FMVEVSIFRBQkxFIHJm X3RibF9hYmNkX3BrIFJFUExJQ0EgSURFTlRJVFkgTk9USElORzsKK0FMVEVSIFRBQkxFIHJm X3RibF9hYmNkX25vcGsgUkVQTElDQSBJREVOVElUWSBOT1RISU5HOworQUxURVIgUFVCTElD QVRJT04gdGVzdHB1YjYgU0VUIFRBQkxFIHJmX3RibF9hYmNkX3BrIChhKTsKKy0tIG9rIC0g UkVQTElDQSBJREVOVElUWSBOT1RISU5HIG1lYW5zIGFsbCBjb2x1bW4gbGlzdHMgYXJlIHZh bGlkCistLSBpdCBzdGlsbCBmYWlscyBsYXRlciBiZWNhdXNlIHdpdGhvdXQgUkkgd2UgY2Fu J3QgcmVwbGljYXRlIHVwZGF0ZXMKK1VQREFURSByZl90YmxfYWJjZF9wayBTRVQgYSA9IDE7 CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViNiBTRVQgVEFCTEUgcmZfdGJsX2FiY2RfcGsg KGEsIGIsIGMsIGQpOworLS0gb2sgLSBSRVBMSUNBIElERU5USVRZIE5PVEhJTkcgbWVhbnMg YWxsIGNvbHVtbiBsaXN0cyBhcmUgdmFsaWQKKy0tIGl0IHN0aWxsIGZhaWxzIGxhdGVyIGJl Y2F1c2Ugd2l0aG91dCBSSSB3ZSBjYW4ndCByZXBsaWNhdGUgdXBkYXRlcworVVBEQVRFIHJm X3RibF9hYmNkX3BrIFNFVCBhID0gMTsKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI2IFNF VCBUQUJMRSByZl90YmxfYWJjZF9ub3BrIChkKTsKKy0tIG9rIC0gUkVQTElDQSBJREVOVElU WSBOT1RISU5HIG1lYW5zIGFsbCBjb2x1bW4gbGlzdHMgYXJlIHZhbGlkCistLSBpdCBzdGls bCBmYWlscyBsYXRlciBiZWNhdXNlIHdpdGhvdXQgUkkgd2UgY2FuJ3QgcmVwbGljYXRlIHVw ZGF0ZXMKK1VQREFURSByZl90YmxfYWJjZF9ub3BrIFNFVCBhID0gMTsKKworLS0gQ2FzZSA0 LiBSRVBMSUNBIElERU5USVRZIElOREVYCitBTFRFUiBUQUJMRSByZl90YmxfYWJjZF9wayBB TFRFUiBDT0xVTU4gYyBTRVQgTk9UIE5VTEw7CitDUkVBVEUgVU5JUVVFIElOREVYIGlkeF9h YmNkX3BrX2MgT04gcmZfdGJsX2FiY2RfcGsoYyk7CitBTFRFUiBUQUJMRSByZl90YmxfYWJj ZF9wayBSRVBMSUNBIElERU5USVRZIFVTSU5HIElOREVYIGlkeF9hYmNkX3BrX2M7CitBTFRF UiBUQUJMRSByZl90YmxfYWJjZF9ub3BrIEFMVEVSIENPTFVNTiBjIFNFVCBOT1QgTlVMTDsK K0NSRUFURSBVTklRVUUgSU5ERVggaWR4X2FiY2Rfbm9wa19jIE9OIHJmX3RibF9hYmNkX25v cGsoYyk7CitBTFRFUiBUQUJMRSByZl90YmxfYWJjZF9ub3BrIFJFUExJQ0EgSURFTlRJVFkg VVNJTkcgSU5ERVggaWR4X2FiY2Rfbm9wa19jOworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1 YjYgU0VUIFRBQkxFIHJmX3RibF9hYmNkX3BrIChhKTsKKy0tIGZhaWwgLSBjb2x1bW4gbGlz dCAiYSIgZG9lcyBub3QgY292ZXIgdGhlIFJFUExJQ0EgSURFTlRJVFkgSU5ERVggb24gImMi CitVUERBVEUgcmZfdGJsX2FiY2RfcGsgU0VUIGEgPSAxOworQUxURVIgUFVCTElDQVRJT04g dGVzdHB1YjYgU0VUIFRBQkxFIHJmX3RibF9hYmNkX3BrIChjKTsKKy0tIG9rIC0gY29sdW1u IGxpc3QgImMiIGRvZXMgY292ZXIgdGhlIFJFUExJQ0EgSURFTlRJVFkgSU5ERVggb24gImMi CitVUERBVEUgcmZfdGJsX2FiY2RfcGsgU0VUIGEgPSAxOworQUxURVIgUFVCTElDQVRJT04g dGVzdHB1YjYgU0VUIFRBQkxFIHJmX3RibF9hYmNkX25vcGsgKGEpOworLS0gZmFpbCAtIGNv bHVtbiBsaXN0ICJhIiBkb2VzIG5vdCBjb3ZlciB0aGUgUkVQTElDQSBJREVOVElUWSBJTkRF WCBvbiAiYyIKK1VQREFURSByZl90YmxfYWJjZF9ub3BrIFNFVCBhID0gMTsKK0FMVEVSIFBV QkxJQ0FUSU9OIHRlc3RwdWI2IFNFVCBUQUJMRSByZl90YmxfYWJjZF9ub3BrIChjKTsKKy0t IG9rIC0gY29sdW1uIGxpc3QgImMiIGRvZXMgY292ZXIgdGhlIFJFUExJQ0EgSURFTlRJVFkg SU5ERVggb24gImMiCitVUERBVEUgcmZfdGJsX2FiY2Rfbm9wayBTRVQgYSA9IDE7CisKKy0t IFRlc3RzIGZvciBwYXJ0aXRpb25lZCB0YWJsZQorCistLSBzZXQgUFVCTElTSF9WSUFfUEFS VElUSU9OX1JPT1QgdG8gZmFsc2UgYW5kIHRlc3QgY29sdW1uIGxpc3QgZm9yIHBhcnRpdGlv bmVkCistLSB0YWJsZQorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjYgU0VUIChQVUJMSVNI X1ZJQV9QQVJUSVRJT05fUk9PVD0wKTsKKy0tIGZhaWwgLSBjYW5ub3QgdXNlIGNvbHVtbiBs aXN0IGZvciBwYXJ0aXRpb25lZCB0YWJsZQorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjYg U0VUIFRBQkxFIHJmX3RibF9hYmNkX3BhcnRfcGsgKGEpOworLS0gb2sgLSBjYW4gdXNlIGNv bHVtbiBsaXN0IGZvciBwYXJ0aXRpb24KK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI2IFNF VCBUQUJMRSByZl90YmxfYWJjZF9wYXJ0X3BrXzEgKGEpOworLS0gb2sgLSAiYSIgaXMgYSBQ SyBjb2wKK1VQREFURSByZl90YmxfYWJjZF9wYXJ0X3BrIFNFVCBhID0gMTsKKy0tIHNldCBQ VUJMSVNIX1ZJQV9QQVJUSVRJT05fUk9PVCB0byB0cnVlIGFuZCB0ZXN0IGNvbHVtbiBsaXN0 IGZvciBwYXJ0aXRpb25lZAorLS0gdGFibGUKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI2 IFNFVCAoUFVCTElTSF9WSUFfUEFSVElUSU9OX1JPT1Q9MSk7CistLSBvayAtIGNhbiB1c2Ug Y29sdW1uIGxpc3QgZm9yIHBhcnRpdGlvbmVkIHRhYmxlCitBTFRFUiBQVUJMSUNBVElPTiB0 ZXN0cHViNiBTRVQgVEFCTEUgcmZfdGJsX2FiY2RfcGFydF9wayAoYSk7CistLSBvayAtICJh IiBpcyBhIFBLIGNvbAorVVBEQVRFIHJmX3RibF9hYmNkX3BhcnRfcGsgU0VUIGEgPSAxOwor LS0gZmFpbCAtIGNhbm5vdCBzZXQgUFVCTElTSF9WSUFfUEFSVElUSU9OX1JPT1QgdG8gZmFs c2UgaWYgYW55IGNvbHVtbiBsaXN0IGlzCistLSB1c2VkIGZvciBwYXJ0aXRpb25lZCB0YWJs ZQorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjYgU0VUIChQVUJMSVNIX1ZJQV9QQVJUSVRJ T05fUk9PVD0wKTsKKy0tIE5vdyBjaGFuZ2UgdGhlIHJvb3QgY29sdW1uIGxpc3QgdG8gdXNl IGEgY29sdW1uICJiIgorLS0gKHdoaWNoIGlzIG5vdCBpbiB0aGUgcmVwbGljYSBpZGVudGl0 eSkKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI2IFNFVCBUQUJMRSByZl90YmxfYWJjZF9w YXJ0X3BrXzEgKGIpOworLS0gb2sgLSB3ZSBkb24ndCBoYXZlIGNvbHVtbiBsaXN0IGZvciBw YXJ0aXRpb25lZCB0YWJsZS4KK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI2IFNFVCAoUFVC TElTSF9WSUFfUEFSVElUSU9OX1JPT1Q9MCk7CistLSBmYWlsIC0gImIiIGlzIG5vdCBpbiBS RVBMSUNBIElERU5USVRZIElOREVYCitVUERBVEUgcmZfdGJsX2FiY2RfcGFydF9wayBTRVQg YSA9IDE7CistLSBzZXQgUFVCTElTSF9WSUFfUEFSVElUSU9OX1JPT1QgdG8gdHJ1ZQorLS0g Y2FuIHVzZSBjb2x1bW4gbGlzdCBmb3IgcGFydGl0aW9uZWQgdGFibGUKK0FMVEVSIFBVQkxJ Q0FUSU9OIHRlc3RwdWI2IFNFVCAoUFVCTElTSF9WSUFfUEFSVElUSU9OX1JPT1Q9MSk7Cist LSBvayAtIGNhbiB1c2UgY29sdW1uIGxpc3QgZm9yIHBhcnRpdGlvbmVkIHRhYmxlCitBTFRF UiBQVUJMSUNBVElPTiB0ZXN0cHViNiBTRVQgVEFCTEUgcmZfdGJsX2FiY2RfcGFydF9wayAo Yik7CistLSBmYWlsIC0gImIiIGlzIG5vdCBpbiBSRVBMSUNBIElERU5USVRZIElOREVYCitV UERBVEUgcmZfdGJsX2FiY2RfcGFydF9wayBTRVQgYSA9IDE7CisKK0RST1AgUFVCTElDQVRJ T04gdGVzdHB1YjY7CitEUk9QIFRBQkxFIHJmX3RibF9hYmNkX3BrOworRFJPUCBUQUJMRSBy Zl90YmxfYWJjZF9ub3BrOworRFJPUCBUQUJMRSByZl90YmxfYWJjZF9wYXJ0X3BrOworLS0g PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CisKIC0tIFRlc3QgY2FjaGUgaW52YWxpZGF0aW9uIEZPUiBBTEwgVEFCTEVTIHB1YmxpY2F0 aW9uCiBTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CiBDUkVBVEUgVEFCTEUg dGVzdHB1Yl90Ymw0KGEgaW50KTsKQEAgLTYxNCw2ICs4OTcsMTAgQEAgQUxURVIgUFVCTElD QVRJT04gdGVzdHB1YjFfZm9yc2NoZW1hIFNFVCBBTEwgVEFCTEVTIElOIFNDSEVNQSBub25f ZXhpc3RlbnRfc2NoZW0KIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWIxX2ZvcnNjaGVtYSBT RVQgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QxLCBwdWJfdGVzdDE7CiBcZFJwKyB0 ZXN0cHViMV9mb3JzY2hlbWEKIAorLS0gVmVyaWZ5IHRoYXQgaXQgZmFpbHMgdG8gYWRkIGEg c2NoZW1hIHdpdGggYSBjb2x1bW4gc3BlY2lmaWNhdGlvbgorQUxURVIgUFVCTElDQVRJT04g dGVzdHB1YjFfZm9yc2NoZW1hIEFERCBBTEwgVEFCTEVTIElOIFNDSEVNQSBmb28gKGEsIGIp OworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjFfZm9yc2NoZW1hIEFERCBBTEwgVEFCTEVT IElOIFNDSEVNQSBmb28sIGJhciAoYSwgYik7CisKIC0tIGNsZWFudXAgcHViX3Rlc3QxIHNj aGVtYSBmb3IgaW52YWxpZGF0aW9uIHRlc3RzCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHVi Ml9mb3JzY2hlbWEgRFJPUCBBTEwgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDE7CiBEUk9Q IFBVQkxJQ0FUSU9OIHRlc3RwdWIzX2ZvcnNjaGVtYSwgdGVzdHB1YjRfZm9yc2NoZW1hLCB0 ZXN0cHViNV9mb3JzY2hlbWEsIHRlc3RwdWI2X2ZvcnNjaGVtYSwgdGVzdHB1Yl9mb3J0YWJs ZTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzMF9jb2x1bW5fbGlz dC5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzMF9jb2x1bW5fbGlzdC5wbApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNWNlYWVjODNjZGIKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzBfY29sdW1uX2xpc3Qu cGwKQEAgLTAsMCArMSwxMTI0IEBACisjIENvcHlyaWdodCAoYykgMjAyMiwgUG9zdGdyZVNR TCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworIyBUZXN0IHBhcnRpYWwtY29sdW1uIHB1 YmxpY2F0aW9uIG9mIHRhYmxlcwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKK3VzZSBQ b3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxz OwordXNlIFRlc3Q6Ok1vcmU7CisKKyMgY3JlYXRlIHB1Ymxpc2hlciBub2RlCitteSAkbm9k ZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3B1Ymxpc2hl cicpOworJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2lj YWwnKTsKKyRub2RlX3B1Ymxpc2hlci0+c3RhcnQ7CisKKyMgY3JlYXRlIHN1YnNjcmliZXIg bm9kZQorbXkgJG5vZGVfc3Vic2NyaWJlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXIt Pm5ldygnc3Vic2NyaWJlcicpOworJG5vZGVfc3Vic2NyaWJlci0+aW5pdChhbGxvd3Nfc3Ry ZWFtaW5nID0+ICdsb2dpY2FsJyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZign cG9zdGdyZXNxbC5jb25mJywKKwlxcShtYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJz ID0gNikpOworJG5vZGVfc3Vic2NyaWJlci0+c3RhcnQ7CisKK215ICRwdWJsaXNoZXJfY29u bnN0ciA9ICRub2RlX3B1Ymxpc2hlci0+Y29ubnN0ciAuICcgZGJuYW1lPXBvc3RncmVzJzsK Kworc3ViIHdhaXRfZm9yX3N1YnNjcmlwdGlvbl9zeW5jCit7CisJbXkgKCRub2RlKSA9IEBf OworCisJIyBBbHNvIHdhaXQgZm9yIGluaXRpYWwgdGFibGUgc3luYyB0byBmaW5pc2gKKwlt eSAkc3luY2VkX3F1ZXJ5ID0gIlNFTEVDVCBjb3VudCgxKSA9IDAgRlJPTSBwZ19zdWJzY3Jp cHRpb25fcmVsIFdIRVJFIHNyc3Vic3RhdGUgTk9UIElOICgncicsICdzJyk7IjsKKworCSRu b2RlLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsICRzeW5jZWRfcXVlcnkpCisJCW9y IGRpZSAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIHN1YnNjcmliZXIgdG8gc3luY2hy b25pemUgZGF0YSI7Cit9CisKKyMgc2V0dXAgdGFibGVzIG9uIGJvdGggbm9kZXMKKworIyB0 YWIxOiBzaW1wbGUgMToxIHJlcGxpY2F0aW9uCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCBxcSgKKwlDUkVBVEUgVEFCTEUgdGFiMSAoYSBpbnQgUFJJTUFSWSBL RVksICJCIiBpbnQsIGMgaW50KQorKSk7CisKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCBxcSgKKwlDUkVBVEUgVEFCTEUgdGFiMSAoYSBpbnQgUFJJTUFSWSBL RVksICJCIiBpbnQsIGMgaW50KQorKSk7CisKKyMgdGFiMjogcmVwbGljYXRpb24gZnJvbSBy ZWd1bGFyIHRvIHRhYmxlIHdpdGggZmV3ZXIgY29sdW1ucworJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgcXEoCisJQ1JFQVRFIFRBQkxFIHRhYjIgKGEgaW50IFBS SU1BUlkgS0VZLCBiIHZhcmNoYXIsIGMgaW50KTsKKykpOworCiskbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXEoCisJQ1JFQVRFIFRBQkxFIHRhYjIgKGEgaW50 IFBSSU1BUlkgS0VZLCBiIHZhcmNoYXIpCispKTsKKworIyB0YWIzOiBzaW1wbGUgMToxIHJl cGxpY2F0aW9uIHdpdGggd2VpcmQgY29sdW1uIG5hbWVzCiskbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCBxcSgKKwlDUkVBVEUgVEFCTEUgdGFiMyAoImEnIiBpbnQg UFJJTUFSWSBLRVksICJCIiB2YXJjaGFyLCAiYyciIGludCkKKykpOworCiskbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXEoCisJQ1JFQVRFIFRBQkxFIHRhYjMg KCJhJyIgaW50IFBSSU1BUlkgS0VZLCAiYyciIGludCkKKykpOworCisjIHRlc3RfcGFydDog cGFydGl0aW9uZWQgdGFibGVzLCB3aXRoIHBhcnRpdGlvbmluZyAoaW5jbHVkaW5nIG11bHRp LWxldmVsCisjIHBhcnRpdGlvbmluZywgYW5kIGZld2VyIGNvbHVtbnMgb24gdGhlIHN1YnNj cmliZXIpCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcSgKKwlD UkVBVEUgVEFCTEUgdGVzdF9wYXJ0IChhIGludCBQUklNQVJZIEtFWSwgYiB0ZXh0LCBjIHRp bWVzdGFtcHR6KSBQQVJUSVRJT04gQlkgTElTVCAoYSk7CisJQ1JFQVRFIFRBQkxFIHRlc3Rf cGFydF8xXzEgUEFSVElUSU9OIE9GIHRlc3RfcGFydCBGT1IgVkFMVUVTIElOICgxLDIsMyw0 LDUsNik7CisJQ1JFQVRFIFRBQkxFIHRlc3RfcGFydF8yXzEgUEFSVElUSU9OIE9GIHRlc3Rf cGFydCBGT1IgVkFMVUVTIElOICg3LDgsOSwxMCwxMSwxMikgUEFSVElUSU9OIEJZIExJU1Qg KGEpOworCUNSRUFURSBUQUJMRSB0ZXN0X3BhcnRfMl8yIFBBUlRJVElPTiBPRiB0ZXN0X3Bh cnRfMl8xIEZPUiBWQUxVRVMgSU4gKDcsOCw5LDEwKTsKKykpOworCiskbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXEoCisJQ1JFQVRFIFRBQkxFIHRlc3RfcGFy dCAoYSBpbnQgUFJJTUFSWSBLRVksIGIgdGV4dCkgUEFSVElUSU9OIEJZIExJU1QgKGEpOwor CUNSRUFURSBUQUJMRSB0ZXN0X3BhcnRfMV8xIFBBUlRJVElPTiBPRiB0ZXN0X3BhcnQgRk9S IFZBTFVFUyBJTiAoMSwyLDMsNCw1LDYpOworCUNSRUFURSBUQUJMRSB0ZXN0X3BhcnRfMl8x IFBBUlRJVElPTiBPRiB0ZXN0X3BhcnQgRk9SIFZBTFVFUyBJTiAoNyw4LDksMTAsMTEsMTIp IFBBUlRJVElPTiBCWSBMSVNUIChhKTsKKwlDUkVBVEUgVEFCTEUgdGVzdF9wYXJ0XzJfMiBQ QVJUSVRJT04gT0YgdGVzdF9wYXJ0XzJfMSBGT1IgVkFMVUVTIElOICg3LDgsOSwxMCk7Cisp KTsKKworIyB0YWI0OiB0YWJsZSB3aXRoIHVzZXItZGVmaW5lZCBlbnVtIHR5cGVzCiskbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcSgKKwlDUkVBVEUgVFlQRSB0 ZXN0X3R5cCBBUyBFTlVNICgnYmx1ZScsICdyZWQnKTsKKwlDUkVBVEUgVEFCTEUgdGFiNCAo YSBJTlQgUFJJTUFSWSBLRVksIGIgdGVzdF90eXAsIGMgaW50LCBkIHRleHQpOworKSk7CisK KyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcSgKKwlDUkVBVEUg VFlQRSB0ZXN0X3R5cCBBUyBFTlVNICgnYmx1ZScsICdyZWQnKTsKKwlDUkVBVEUgVEFCTEUg dGFiNCAoYSBJTlQgUFJJTUFSWSBLRVksIGIgdGVzdF90eXAsIGQgdGV4dCk7CispKTsKKwor CisjIFRFU1Q6IGNyZWF0ZSBwdWJsaWNhdGlvbiBhbmQgc3Vic2NyaXB0aW9uIGZvciBzb21l IG9mIHRoZSB0YWJsZXMgd2l0aAorIyBjb2x1bW4gbGlzdHMKKyRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxKAorCUNSRUFURSBQVUJMSUNBVElPTiBwdWIxCisJ ICAgRk9SIFRBQkxFIHRhYjEgKGEsICJCIiksIHRhYjMgKCJhJyIsICJjJyIpLCB0ZXN0X3Bh cnQgKGEsIGIpLCB0YWI0IChhLCBiLCBkKQorCSAgV0lUSCAocHVibGlzaF92aWFfcGFydGl0 aW9uX3Jvb3QgPSAndHJ1ZScpOworKSk7CisKKyMgY2hlY2sgdGhhdCB3ZSBnb3QgdGhlIHJp Z2h0IHByYXR0cnMgdmFsdWVzIGZvciB0aGUgcHVibGljYXRpb24gaW4gdGhlCisjIHBnX3B1 YmxpY2F0aW9uX3JlbCBjYXRhbG9nIChvcmRlciBieSByZWxuYW1lLCB0byBnZXQgc3RhYmxl IG9yZGVyaW5nKQorbXkgJHJlc3VsdCA9ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsIHFxKAorCVNFTEVDVCByZWxuYW1lLCBwcmF0dHJzCisJRlJPTSBwZ19wdWJs aWNhdGlvbl9yZWwgcGIgSk9JTiBwZ19jbGFzcyBwYyBPTihwYi5wcnJlbGlkID0gcGMub2lk KQorCU9SREVSIEJZIHJlbG5hbWUKKykpOworCitpcygkcmVzdWx0LCBxcSh0YWIxfDEgMgor dGFiM3wxIDMKK3RhYjR8MSAyIDQKK3Rlc3RfcGFydHwxIDIpLCAncHVibGljYXRpb24gcmVs YXRpb24gdXBkYXRlZCcpOworCisjIFRFU1Q6IGluc2VydCBkYXRhIGludG8gdGhlIHRhYmxl cywgY3JlYXRlIHN1YnNjcmlwdGlvbiBhbmQgc2VlIGlmIHN5bmMKKyMgcmVwbGljYXRlcyB0 aGUgcmlnaHQgY29sdW1ucworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgcXEoCisJSU5TRVJUIElOVE8gdGFiMSBWQUxVRVMgKDEsIDIsIDMpOworCUlOU0VSVCBJ TlRPIHRhYjEgVkFMVUVTICg0LCA1LCA2KTsKKykpOworCiskbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCBxcSgKKwlJTlNFUlQgSU5UTyB0YWIzIFZBTFVFUyAoMSwg MiwgMyk7CisJSU5TRVJUIElOVE8gdGFiMyBWQUxVRVMgKDQsIDUsIDYpOworKSk7CisKKyRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxKAorCUlOU0VSVCBJTlRP IHRhYjQgVkFMVUVTICgxLCAncmVkJywgMywgJ29oIG15Jyk7CisJSU5TRVJUIElOVE8gdGFi NCBWQUxVRVMgKDIsICdibHVlJywgNCwgJ2hlbGxvJyk7CispKTsKKworIyByZXBsaWNhdGlv biBvZiBwYXJ0aXRpb25lZCB0YWJsZQorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgcXEoCisJSU5TRVJUIElOVE8gdGVzdF9wYXJ0IFZBTFVFUyAoMSwgJ2FiYycs ICcyMDIxLTA3LTA0IDEyOjAwOjAwJyk7CisJSU5TRVJUIElOVE8gdGVzdF9wYXJ0IFZBTFVF UyAoMiwgJ2JjZCcsICcyMDIxLTA3LTAzIDExOjEyOjEzJyk7CisJSU5TRVJUIElOVE8gdGVz dF9wYXJ0IFZBTFVFUyAoNywgJ2FiYycsICcyMDIxLTA3LTA0IDEyOjAwOjAwJyk7CisJSU5T RVJUIElOVE8gdGVzdF9wYXJ0IFZBTFVFUyAoOCwgJ2JjZCcsICcyMDIxLTA3LTAzIDExOjEy OjEzJyk7CispKTsKKworIyBjcmVhdGUgc3Vic2NyaXB0aW9uIGZvciB0aGUgcHVibGljYXRp b24sIHdhaXQgZm9yIHN5bmMgdG8gY29tcGxldGUsCisjIHRoZW4gY2hlY2sgdGhlIHN5bmMg cmVzdWx0cworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxKAor CUNSRUFURSBTVUJTQ1JJUFRJT04gc3ViMSBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5z dHInIFBVQkxJQ0FUSU9OIHB1YjEKKykpOworCit3YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3lu Yygkbm9kZV9zdWJzY3JpYmVyKTsKKworIyB0YWIxOiBvbmx5IChhLGIpIGlzIHJlcGxpY2F0 ZWQKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkiU0VMRUNUICogRlJPTSB0YWIxIE9SREVSIEJZIGEiKTsKK2lzKCRyZXN1bHQsIHFxKDF8 MnwKKzR8NXwpLCAnaW5zZXJ0IG9uIGNvbHVtbiB0YWIxLmMgaXMgbm90IHJlcGxpY2F0ZWQn KTsKKworIyB0YWIzOiBvbmx5IChhLGMpIGlzIHJlcGxpY2F0ZWQKKyRyZXN1bHQgPSAkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxcShTRUxFQ1QgKiBGUk9N IHRhYjMgT1JERVIgQlkgImEnIikpOworaXMoJHJlc3VsdCwgcXEoMXwzCis0fDYpLCAnaW5z ZXJ0IG9uIGNvbHVtbiB0YWIzLmIgaXMgbm90IHJlcGxpY2F0ZWQnKTsKKworIyB0YWI0OiBv bmx5IChhLGIsZCkgaXMgcmVwbGljYXRlZAorJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgKiBGUk9NIHRhYjQgT1JERVIgQlkg YSIpOworaXMoJHJlc3VsdCwgcXEoMXxyZWR8b2ggbXkKKzJ8Ymx1ZXxoZWxsbyksICdpbnNl cnQgb24gY29sdW1uIHRhYjQuYyBpcyBub3QgcmVwbGljYXRlZCcpOworCisjIHRlc3RfcGFy dDogKGEsYikgaXMgcmVwbGljYXRlZAorJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgKiBGUk9NIHRlc3RfcGFydCBPUkRFUiBC WSBhIik7CitpcygkcmVzdWx0LCBxcSgxfGFiYworMnxiY2QKKzd8YWJjCis4fGJjZCksICdp bnNlcnQgb24gY29sdW1uIHRlc3RfcGFydC5jIGNvbHVtbnMgaXMgbm90IHJlcGxpY2F0ZWQn KTsKKworCisjIFRFU1Q6IG5vdyBpbnNlcnQgbW9yZSBkYXRhIGludG8gdGhlIHRhYmxlcywg YW5kIHdhaXQgdW50aWwgd2UgcmVwbGljYXRlCisjIHRoZW0gKG5vdCBieSB0YWJsZXN5bmMs IGJ1dCByZWd1bGFyIGRlY29kaW5nIGFuZCByZXBsaWNhdGlvbikKKworJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXEoCisJSU5TRVJUIElOVE8gdGFiMSBWQUxV RVMgKDIsIDMsIDQpOworCUlOU0VSVCBJTlRPIHRhYjEgVkFMVUVTICg1LCA2LCA3KTsKKykp OworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcSgKKwlJTlNF UlQgSU5UTyB0YWIzIFZBTFVFUyAoMiwgMywgNCk7CisJSU5TRVJUIElOVE8gdGFiMyBWQUxV RVMgKDUsIDYsIDcpOworKSk7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsIHFxKAorCUlOU0VSVCBJTlRPIHRhYjQgVkFMVUVTICgzLCAncmVkJywgNSwgJ2Zv bycpOworCUlOU0VSVCBJTlRPIHRhYjQgVkFMVUVTICg0LCAnYmx1ZScsIDYsICdiYXInKTsK KykpOworCisjIHJlcGxpY2F0aW9uIG9mIHBhcnRpdGlvbmVkIHRhYmxlCiskbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcSgKKwlJTlNFUlQgSU5UTyB0ZXN0X3Bh cnQgVkFMVUVTICgzLCAneHh4JywgJzIwMjItMDItMDEgMTA6MDA6MDAnKTsKKwlJTlNFUlQg SU5UTyB0ZXN0X3BhcnQgVkFMVUVTICg0LCAneXl5JywgJzIwMjItMDMtMDIgMTU6MTI6MTMn KTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3BhcnQgVkFMVUVTICg5LCAnenp6JywgJzIwMjItMDQt MDMgMjE6MDA6MDAnKTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3BhcnQgVkFMVUVTICgxMCwgJ3Fx cScsICcyMDIyLTA1LTA0IDIyOjEyOjEzJyk7CispKTsKKworIyB3YWl0IGZvciBjYXRjaHVw IGJlZm9yZSBjaGVja2luZyB0aGUgc3Vic2NyaWJlcgorJG5vZGVfcHVibGlzaGVyLT53YWl0 X2Zvcl9jYXRjaHVwKCdzdWIxJyk7CisKKyMgdGFiMTogb25seSAoYSxiKSBpcyByZXBsaWNh dGVkCiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJIlNFTEVDVCAqIEZST00gdGFiMSBPUkRFUiBCWSBhIik7CitpcygkcmVzdWx0LCBxcSgx fDJ8CisyfDN8Cis0fDV8Cis1fDZ8KSwgJ2luc2VydCBvbiBjb2x1bW4gdGFiMS5jIGlzIG5v dCByZXBsaWNhdGVkJyk7CisKKyMgdGFiMzogb25seSAoYSxjKSBpcyByZXBsaWNhdGVkCisk cmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXEo U0VMRUNUICogRlJPTSB0YWIzIE9SREVSIEJZICJhJyIpKTsKK2lzKCRyZXN1bHQsIHFxKDF8 MworMnw0Cis0fDYKKzV8NyksICdpbnNlcnQgb24gY29sdW1uIHRhYjMuYiBpcyBub3QgcmVw bGljYXRlZCcpOworCisjIHRhYjQ6IG9ubHkgKGEsYixkKSBpcyByZXBsaWNhdGVkCiskcmVz dWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVD VCAqIEZST00gdGFiNCBPUkRFUiBCWSBhIik7CitpcygkcmVzdWx0LCBxcSgxfHJlZHxvaCBt eQorMnxibHVlfGhlbGxvCiszfHJlZHxmb28KKzR8Ymx1ZXxiYXIpLCAnaW5zZXJ0IG9uIGNv bHVtbiB0YWI0LmMgaXMgbm90IHJlcGxpY2F0ZWQnKTsKKworIyB0ZXN0X3BhcnQ6IChhLGIp IGlzIHJlcGxpY2F0ZWQKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkiU0VMRUNUICogRlJPTSB0ZXN0X3BhcnQgT1JERVIgQlkgYSIpOwor aXMoJHJlc3VsdCwgcXEoMXxhYmMKKzJ8YmNkCiszfHh4eAorNHx5eXkKKzd8YWJjCis4fGJj ZAorOXx6enoKKzEwfHFxcSksICdpbnNlcnQgb24gY29sdW1uIHRlc3RfcGFydC5jIGNvbHVt bnMgaXMgbm90IHJlcGxpY2F0ZWQnKTsKKworCisjIFRFU1Q6IGRvIHNvbWUgdXBkYXRlcyBv biBzb21lIG9mIHRoZSB0YWJsZXMsIGJvdGggb24gY29sdW1ucyBpbmNsdWRlZAorIyBpbiB0 aGUgY29sdW1uIGxpc3QgYW5kIG90aGVyCisKKyMgdGFiMTogdXBkYXRlIG9mIHJlcGxpY2F0 ZWQgY29sdW1uCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCXFx KFVQREFURSB0YWIxIFNFVCAiQiIgPSAyICogIkIiIHdoZXJlIGEgPSAxKSk7CisKKyMgdGFi MTogdXBkYXRlIG9mIG5vbi1yZXBsaWNhdGVkIGNvbHVtbgorJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxcShVUERBVEUgdGFiMSBTRVQgYyA9IDIqYyB3aGVy ZSBhID0gNCkpOworCisjIHRhYjM6IHVwZGF0ZSBvZiBub24tcmVwbGljYXRlZAorJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxcShVUERBVEUgdGFiMyBTRVQg IkIiID0gIkIiIHx8ICcgdXBkYXRlZCcgd2hlcmUgImEnIiA9IDQpKTsKKworIyB0YWIzOiB1 cGRhdGUgb2YgcmVwbGljYXRlZCBjb2x1bW4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJcXEoVVBEQVRFIHRhYjMgU0VUICJjJyIgPSAyICogImMnIiB3aGVy ZSAiYSciID0gMSkpOworCisjIHRhYjQKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJcXEoVVBEQVRFIHRhYjQgU0VUIGIgPSAnYmx1ZScsIGMgPSBjICogMiwg ZCA9IGQgfHwgJyB1cGRhdGVkJyB3aGVyZSBhID0gMSkpOworCisjIHRhYjQKKyRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXEoVVBEQVRFIHRhYjQgU0VUIGIg PSAncmVkJywgYyA9IGMgKiAyLCBkID0gZCB8fCAnIHVwZGF0ZWQnIHdoZXJlIGEgPSAyKSk7 CisKKyMgd2FpdCBmb3IgdGhlIHJlcGxpY2F0aW9uIHRvIGNhdGNoIHVwLCBhbmQgY2hlY2sg dGhlIFVQREFURSByZXN1bHRzIGdvdAorIyByZXBsaWNhdGVkIGNvcnJlY3RseSwgd2l0aCB0 aGUgcmlnaHQgY29sdW1uIGxpc3QKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1 cCgnc3ViMScpOworCiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJcXEoU0VMRUNUICogRlJPTSB0YWIxIE9SREVSIEJZIGEpKTsKK2lzKCRy ZXN1bHQsCitxcSgxfDR8CisyfDN8Cis0fDV8Cis1fDZ8KSwgJ29ubHkgdXBkYXRlIG9uIGNv bHVtbiB0YWIxLmIgaXMgcmVwbGljYXRlZCcpOworCiskcmVzdWx0ID0gJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXEoU0VMRUNUICogRlJPTSB0YWIzIE9S REVSIEJZICJhJyIpKTsKK2lzKCRyZXN1bHQsCitxcSgxfDYKKzJ8NAorNHw2Cis1fDcpLCAn b25seSB1cGRhdGUgb24gY29sdW1uIHRhYjMuYyBpcyByZXBsaWNhdGVkJyk7CisKKyRyZXN1 bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxcShTRUxF Q1QgKiBGUk9NIHRhYjQgT1JERVIgQlkgYSkpOworCitpcygkcmVzdWx0LCBxcSgxfGJsdWV8 b2ggbXkgdXBkYXRlZAorMnxyZWR8aGVsbG8gdXBkYXRlZAorM3xyZWR8Zm9vCis0fGJsdWV8 YmFyKSwgJ3VwZGF0ZSBvbiBjb2x1bW4gdGFiNC5jIGlzIG5vdCByZXBsaWNhdGVkJyk7CisK KworIyBURVNUOiBhZGQgdGFibGUgd2l0aCBhIGNvbHVtbiBsaXN0LCBpbnNlcnQgZGF0YSwg cmVwbGljYXRlCisKKyMgaW5zZXJ0IHNvbWUgZGF0YSBiZWZvcmUgYWRkaW5nIGl0IHRvIHRo ZSBwdWJsaWNhdGlvbgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg cXEoCisJSU5TRVJUIElOVE8gdGFiMiBWQUxVRVMgKDEsICdhYmMnLCAzKTsKKykpOworCisk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBQVUJMSUNB VElPTiBwdWIxIEFERCBUQUJMRSB0YWIyIChhLCBiKSIpOworCiskbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgU1VCU0NSSVBUSU9OIHN1YjEgUkVG UkVTSCBQVUJMSUNBVElPTiIpOworCisjIHdhaXQgZm9yIHRoZSB0YWJsZXN5bmMgdG8gY29t cGxldGUsIGFkZCBhIGJpdCBtb3JlIGRhdGEgYW5kIHRoZW4gY2hlY2sKKyMgdGhlIHJlc3Vs dHMgb2YgdGhlIHJlcGxpY2F0aW9uCit3YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYygkbm9k ZV9zdWJzY3JpYmVyKTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgcXEoCisJSU5TRVJUIElOVE8gdGFiMiBWQUxVRVMgKDIsICdkZWYnLCA2KTsKKykpOwor Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3N1YjEnKTsKKworJHJlc3Vs dCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1Qg KiBGUk9NIHRhYjIgT1JERVIgQlkgYSIpOworaXMoJHJlc3VsdCwgcXEoMXxhYmMKKzJ8ZGVm KSwgJ2luc2VydCBvbiBjb2x1bW4gdGFiMi5jIGlzIG5vdCByZXBsaWNhdGVkJyk7CisKKyMg ZG8gYSBjb3VwbGUgdXBkYXRlcywgY2hlY2sgdGhlIGNvcnJlY3Qgc3R1ZmYgZ2V0cyByZXBs aWNhdGVkCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcSgKKwlV UERBVEUgdGFiMiBTRVQgYyA9IDUgd2hlcmUgYSA9IDE7CisJVVBEQVRFIHRhYjIgU0VUIGIg PSAneHl6JyB3aGVyZSBhID0gMjsKKykpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9y X2NhdGNodXAoJ3N1YjEnKTsKKworJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgKiBGUk9NIHRhYjIgT1JERVIgQlkgYSIpOwor aXMoJHJlc3VsdCwgcXEoMXxhYmMKKzJ8eHl6KSwgJ3VwZGF0ZSBvbiBjb2x1bW4gdGFiMi5j IGlzIG5vdCByZXBsaWNhdGVkJyk7CisKKworIyBURVNUOiBhZGQgYSB0YWJsZSB0byB0d28g cHVibGljYXRpb25zIHdpdGggZGlmZmVyZW50IGNvbHVtbiBsaXN0cywgYW5kCisjIGNyZWF0 ZSBhIHNpbmdsZSBzdWJzY3JpcHRpb24gcmVwbGljYXRpbmcgYm90aCBwdWJsaWNhdGlvbnMK KyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxKAorCUNSRUFURSBU QUJMRSB0YWI1IChhIGludCBQUklNQVJZIEtFWSwgYiBpbnQsIGMgaW50LCBkIGludCk7CisJ Q1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjIgRk9SIFRBQkxFIHRhYjUgKGEsIGIpOworCUNSRUFU RSBQVUJMSUNBVElPTiBwdWIzIEZPUiBUQUJMRSB0YWI1IChhLCBkKTsKKworCS0tIGluc2Vy dCBhIGNvdXBsZSBpbml0aWFsIHJlY29yZHMKKwlJTlNFUlQgSU5UTyB0YWI1IFZBTFVFUyAo MSwgMTEsIDExMSwgMTExMSk7CisJSU5TRVJUIElOVE8gdGFiNSBWQUxVRVMgKDIsIDIyLCAy MjIsIDIyMjIpOworKSk7CisKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCBxcSgKKwlDUkVBVEUgVEFCTEUgdGFiNSAoYSBpbnQgUFJJTUFSWSBLRVksIGIgaW50 LCBkIGludCk7CispKTsKKworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsIHFxKAorCUFMVEVSIFNVQlNDUklQVElPTiBzdWIxIFNFVCBQVUJMSUNBVElPTiBwdWIy LCBwdWIzCispKTsKKword2FpdF9mb3Jfc3Vic2NyaXB0aW9uX3N5bmMoJG5vZGVfc3Vic2Ny aWJlcik7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgnc3ViMScpOwor CisjIGluc2VydCBkYXRhIGFuZCBtYWtlIHN1cmUgYWxsIHRoZSBjb2x1bW5zICh1bmlvbiBv ZiB0aGUgY29sdW1ucyBsaXN0cykKKyMgZ2V0IGZ1bGx5IHJlcGxpY2F0ZWQKKyRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxKAorCUlOU0VSVCBJTlRPIHRhYjUg VkFMVUVTICgzLCAzMywgMzMzLCAzMzMzKTsKKwlJTlNFUlQgSU5UTyB0YWI1IFZBTFVFUyAo NCwgNDQsIDQ0NCwgNDQ0NCk7CispKTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9j YXRjaHVwKCdzdWIxJyk7CisKK2lzKCRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLCJTRUxFQ1QgKiBGUk9NIHRhYjUgT1JERVIgQlkgYSIpLAorICAgcXEoMXwxMXwx MTExCisyfDIyfDIyMjIKKzN8MzN8MzMzMworNHw0NHw0NDQ0KSwKKyAgICdvdmVybGFwcGlu ZyBwdWJsaWNhdGlvbnMgd2l0aCBvdmVybGFwcGluZyBjb2x1bW4gbGlzdHMnKTsKKworIyBh bmQgZmluYWxseSwgcmVtb3ZlIHRoZSBjb2x1bW4gbGlzdCBmb3Igb25lIG9mIHRoZSBwdWJs aWNhdGlvbnMsIHdoaWNoCisjIG1lYW5zIHJlcGxpY2F0aW5nIGFsbCBjb2x1bW5zIChyZW1v dmluZyB0aGUgY29sdW1uIGxpc3QpLCBidXQgZmlyc3QgYWRkCisjIHRoZSBtaXNzaW5nIGNv bHVtbiB0byB0aGUgdGFibGUgb24gc3Vic2NyaWJlcgorJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgcXEoCisJQUxURVIgUFVCTElDQVRJT04gcHViMyBTRVQgVEFC TEUgdGFiNTsKKykpOworCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgcXEoCisJQUxURVIgU1VCU0NSSVBUSU9OIHN1YjEgUkVGUkVTSCBQVUJMSUNBVElPTjsK KwlBTFRFUiBUQUJMRSB0YWI1IEFERCBDT0xVTU4gYyBJTlQ7CispKTsKKword2FpdF9mb3Jf c3Vic2NyaXB0aW9uX3N5bmMoJG5vZGVfc3Vic2NyaWJlcik7CisKKyRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxKAorCUlOU0VSVCBJTlRPIHRhYjUgVkFMVUVT ICg1LCA1NSwgNTU1LCA1NTU1KTsKKykpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9y X2NhdGNodXAoJ3N1YjEnKTsKKworaXMoJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsIlNFTEVDVCAqIEZST00gdGFiNSBPUkRFUiBCWSBhIiksCisgICBxcSgxfDEx fDExMTF8CisyfDIyfDIyMjJ8CiszfDMzfDMzMzN8Cis0fDQ0fDQ0NDR8Cis1fDU1fDU1NTV8 NTU1KSwKKyAgICdvdmVybGFwcGluZyBwdWJsaWNhdGlvbnMgd2l0aCBvdmVybGFwcGluZyBj b2x1bW4gbGlzdHMnKTsKKworIyBURVNUOiBjcmVhdGUgYSB0YWJsZSB3aXRoIGEgY29sdW1u IGxpc3QsIHRoZW4gY2hhbmdlIHRoZSByZXBsaWNhCisjIGlkZW50aXR5IGJ5IHJlcGxhY2lu ZyBhIHByaW1hcnkga2V5IChidXQgdXNlIGEgZGlmZmVyZW50IGNvbHVtbiBpbgorIyB0aGUg Y29sdW1uIGxpc3QpCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBx cSgKKwlDUkVBVEUgVEFCTEUgdGFiNiAoYSBpbnQgUFJJTUFSWSBLRVksIGIgaW50LCBjIGlu dCwgZCBpbnQpOworCUNSRUFURSBQVUJMSUNBVElPTiBwdWI0IEZPUiBUQUJMRSB0YWI2IChh LCBiKTsKKworCS0tIGluaXRpYWwgZGF0YQorCUlOU0VSVCBJTlRPIHRhYjYgVkFMVUVTICgx LCAyMiwgMzMzLCA0NDQ0KTsKKykpOworCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgcXEoCisJQ1JFQVRFIFRBQkxFIHRhYjYgKGEgaW50IFBSSU1BUlkgS0VZ LCBiIGludCwgYyBpbnQsIGQgaW50KTsKKykpOworCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgcXEoCisJQUxURVIgU1VCU0NSSVBUSU9OIHN1YjEgU0VUIFBV QkxJQ0FUSU9OIHB1YjQKKykpOworCit3YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYygkbm9k ZV9zdWJzY3JpYmVyKTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgcXEoCisJSU5TRVJUIElOVE8gdGFiNiBWQUxVRVMgKDIsIDMzLCA0NDQsIDU1NTUpOwor CVVQREFURSB0YWI2IFNFVCBiID0gYiAqIDIsIGMgPSBjICogMywgZCA9IGQgKiA0OworKSk7 CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgnc3ViMScpOworCitpcygk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywiU0VMRUNUICogRlJPTSB0 YWI2IE9SREVSIEJZIGEiKSwKKwlxcSgxfDQ0fHwKKzJ8NjZ8fCksICdyZXBsaWNhdGlvbiB3 aXRoIHRoZSBvcmlnaW5hbCBwcmltYXJ5IGtleScpOworCisjIG5vdyByZWRlZmluZSB0aGUg Y29uc3RyYWludCAtIG1vdmUgdGhlIHByaW1hcnkga2V5IHRvIGEgZGlmZmVyZW50IGNvbHVt bgorIyAod2hpY2ggaXMgc3RpbGwgY292ZXJlZCBieSB0aGUgY29sdW1uIGxpc3QsIHRob3Vn aCkKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXEoCisJQUxU RVIgVEFCTEUgdGFiNiBEUk9QIENPTlNUUkFJTlQgdGFiNl9wa2V5OworCUFMVEVSIFRBQkxF IHRhYjYgQUREIFBSSU1BUlkgS0VZIChiKTsKKykpOworCisjIHdlIG5lZWQgdG8gZG8gdGhl IHNhbWUgdGhpbmcgb24gdGhlIHN1YnNjcmliZXIKKyMgWFhYIFdoYXQgd291bGQgaGFwcGVu IGlmIHRoaXMgaGFwcGVucyBiZWZvcmUgdGhlIHB1Ymxpc2hlciBBTFRFUj8gT3IKKyMgaW50 ZXJsZWF2ZWQsIHNvbWVob3c/IEJ1dCB0aGF0IHNlZW1zIHVucmVsYXRlZCB0byBjb2x1bW4g bGlzdHMuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXEoCisJ QUxURVIgVEFCTEUgdGFiNiBEUk9QIENPTlNUUkFJTlQgdGFiNl9wa2V5OworCUFMVEVSIFRB QkxFIHRhYjYgQUREIFBSSU1BUlkgS0VZIChiKTsKKykpOworCiskbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXEoCisJQUxURVIgU1VCU0NSSVBUSU9OIHN1YjEg UkVGUkVTSCBQVUJMSUNBVElPTgorKSk7CisKK3dhaXRfZm9yX3N1YnNjcmlwdGlvbl9zeW5j KCRub2RlX3N1YnNjcmliZXIpOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLCBxcSgKKwlJTlNFUlQgSU5UTyB0YWI2IFZBTFVFUyAoMywgNTUsIDY2NiwgODg4 OCk7CisJVVBEQVRFIHRhYjYgU0VUIGIgPSBiICogMiwgYyA9IGMgKiAzLCBkID0gZCAqIDQ7 CispKTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdzdWIxJyk7CisK K2lzKCRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCJTRUxFQ1QgKiBG Uk9NIHRhYjYgT1JERVIgQlkgYSIpLAorICAgcXEoMXw4OHx8CisyfDEzMnx8CiszfDExMHx8 KSwKKyAgICdyZXBsaWNhdGlvbiB3aXRoIHRoZSBtb2RpZmllZCBwcmltYXJ5IGtleScpOwor CisKKyMgVEVTVDogY3JlYXRlIGEgdGFibGUgd2l0aCBhIGNvbHVtbiBsaXN0LCB0aGVuIGNo YW5nZSB0aGUgcmVwbGljYQorIyBpZGVudGl0eSBieSByZXBsYWNpbmcgYSBwcmltYXJ5IGtl eSB3aXRoIGEga2V5IG9uIG11bHRpcGxlIGNvbHVtbnMKKyMgKGFsbCBvZiB0aGVtIGNvdmVy ZWQgYnkgdGhlIGNvbHVtbiBsaXN0KQorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgcXEoCisJQ1JFQVRFIFRBQkxFIHRhYjcgKGEgaW50IFBSSU1BUlkgS0VZLCBi IGludCwgYyBpbnQsIGQgaW50KTsKKwlDUkVBVEUgUFVCTElDQVRJT04gcHViNSBGT1IgVEFC TEUgdGFiNyAoYSwgYik7CisKKwktLSBzb21lIGluaXRpYWwgZGF0YQorCUlOU0VSVCBJTlRP IHRhYjcgVkFMVUVTICgxLCAyMiwgMzMzLCA0NDQ0KTsKKykpOworCiskbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXEoCisJQ1JFQVRFIFRBQkxFIHRhYjcgKGEg aW50IFBSSU1BUlkgS0VZLCBiIGludCwgYyBpbnQsIGQgaW50KTsKKykpOworCiskbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXEoCisJQUxURVIgU1VCU0NSSVBU SU9OIHN1YjEgU0VUIFBVQkxJQ0FUSU9OIHB1YjUKKykpOworCit3YWl0X2Zvcl9zdWJzY3Jp cHRpb25fc3luYygkbm9kZV9zdWJzY3JpYmVyKTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgcXEoCisJSU5TRVJUIElOVE8gdGFiNyBWQUxVRVMgKDIsIDMz LCA0NDQsIDU1NTUpOworCVVQREFURSB0YWI3IFNFVCBiID0gYiAqIDIsIGMgPSBjICogMywg ZCA9IGQgKiA0OworKSk7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgn c3ViMScpOworCitpcygkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywi U0VMRUNUICogRlJPTSB0YWI3IE9SREVSIEJZIGEiKSwKKyAgIHFxKDF8NDR8fAorMnw2Nnx8 KSwgJ3JlcGxpY2F0aW9uIHdpdGggdGhlIG9yaWdpbmFsIHByaW1hcnkga2V5Jyk7CisKKyMg bm93IHJlZGVmaW5lIHRoZSBjb25zdHJhaW50IC0gbW92ZSB0aGUgcHJpbWFyeSBrZXkgdG8g YSBkaWZmZXJlbnQgY29sdW1uCisjICh3aGljaCBpcyBub3QgY292ZXJlZCBieSB0aGUgY29s dW1uIGxpc3QpCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcSgK KwlBTFRFUiBUQUJMRSB0YWI3IERST1AgQ09OU1RSQUlOVCB0YWI3X3BrZXk7CisJQUxURVIg VEFCTEUgdGFiNyBBREQgUFJJTUFSWSBLRVkgKGEsIGIpOworKSk7CisKKyRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxKAorCUlOU0VSVCBJTlRPIHRhYjcgVkFM VUVTICgzLCA1NSwgNjY2LCA3Nzc3KTsKKwlVUERBVEUgdGFiNyBTRVQgYiA9IGIgKiAyLCBj ID0gYyAqIDMsIGQgPSBkICogNDsKKykpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9y X2NhdGNodXAoJ3N1YjEnKTsKKworaXMoJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsIlNFTEVDVCAqIEZST00gdGFiNyBPUkRFUiBCWSBhIiksCisgICBxcSgxfDg4 fHwKKzJ8MTMyfHwKKzN8MTEwfHwpLAorICAgJ3JlcGxpY2F0aW9uIHdpdGggdGhlIG1vZGlm aWVkIHByaW1hcnkga2V5Jyk7CisKKyMgbm93IHN3aXRjaCB0aGUgcHJpbWFyeSBrZXkgYWdh aW4gdG8gYW5vdGhlciBjb2x1bW5zIG5vdCBjb3ZlcmVkIGJ5IHRoZQorIyBjb2x1bW4gbGlz dCwgYnV0IGFsc28gZ2VuZXJhdGUgd3JpdGVzIGJldHdlZW4gdGhlIGRyb3AgYW5kIGNyZWF0 aW9uCisjIG9mIHRoZSBuZXcgY29uc3RyYWludAorCiskbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLCBxcSgKKwlBTFRFUiBUQUJMRSB0YWI3IERST1AgQ09OU1RSQUlO VCB0YWI3X3BrZXk7CisJSU5TRVJUIElOVE8gdGFiNyBWQUxVRVMgKDQsIDc3LCA4ODgsIDk5 OTkpOworCS0tIHVwZGF0ZS9kZWxldGUgaXMgbm90IGFsbG93ZWQgZm9yIHRhYmxlcyB3aXRo b3V0IFJJCisJQUxURVIgVEFCTEUgdGFiNyBBREQgUFJJTUFSWSBLRVkgKGIsIGEpOworCVVQ REFURSB0YWI3IFNFVCBiID0gYiAqIDIsIGMgPSBjICogMywgZCA9IGQgKiA0OworCURFTEVU RSBGUk9NIHRhYjcgV0hFUkUgYSA9IDE7CispKTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgcXEoCispKTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zv cl9jYXRjaHVwKCdzdWIxJyk7CisKK2lzKCRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCJTRUxFQ1QgKiBGUk9NIHRhYjcgT1JERVIgQlkgYSIpLAorICAgcXEoMnwy NjR8fAorM3wyMjB8fAorNHwxNTR8fCksCisgICAncmVwbGljYXRpb24gd2l0aCB0aGUgbW9k aWZpZWQgcHJpbWFyeSBrZXknKTsKKworCisjIFRFU1Q6IHBhcnRpdGlvbmVkIHRhYmxlcyAo d2l0aCBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IGZhbHNlKQorIyBhbmQgcmVwbGlj YSBpZGVudGl0eS4gVGhlIChsZWFmKSBwYXJ0aXRpb25zIG1heSBoYXZlIGRpZmZlcmVudCBS SSwgc28KKyMgd2UgbmVlZCB0byBjaGVjayB0aGUgcGFydGl0aW9uIFJJICh3aXRoIHJlc3Bl Y3QgdG8gdGhlIGNvbHVtbiBsaXN0KQorIyB3aGlsZSBhdHRhY2hpbmcgdGhlIHBhcnRpdGlv bi4KKworIyBGaXJzdCwgbGV0J3MgY3JlYXRlIGEgcGFydGl0aW9uZWQgdGFibGUgd2l0aCB0 d28gcGFydGl0aW9ucywgZWFjaCB3aXRoCisjIGEgZGlmZmVyZW50IFJJLCBidXQgYSBjb2x1 bW4gbGlzdCBub3QgY292ZXJpbmcgYWxsIHRob3NlIFJJLgorCiskbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcSgKKwlDUkVBVEUgVEFCTEUgdGVzdF9wYXJ0X2Eg KGEgaW50LCBiIGludCwgYyBpbnQpIFBBUlRJVElPTiBCWSBMSVNUIChhKTsKKworCUNSRUFU RSBUQUJMRSB0ZXN0X3BhcnRfYV8xIFBBUlRJVElPTiBPRiB0ZXN0X3BhcnRfYSBGT1IgVkFM VUVTIElOICgxLDIsMyw0LDUpOworCUFMVEVSIFRBQkxFIHRlc3RfcGFydF9hXzEgQUREIFBS SU1BUlkgS0VZIChhKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3BhcnRfYV8xIFJFUExJQ0EgSURF TlRJVFkgVVNJTkcgSU5ERVggdGVzdF9wYXJ0X2FfMV9wa2V5OworCisJQ1JFQVRFIFRBQkxF IHRlc3RfcGFydF9hXzIgUEFSVElUSU9OIE9GIHRlc3RfcGFydF9hIEZPUiBWQUxVRVMgSU4g KDYsNyw4LDksMTApOworCUFMVEVSIFRBQkxFIHRlc3RfcGFydF9hXzIgQUREIFBSSU1BUlkg S0VZIChiKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3BhcnRfYV8yIFJFUExJQ0EgSURFTlRJVFkg VVNJTkcgSU5ERVggdGVzdF9wYXJ0X2FfMl9wa2V5OworCisJLS0gaW5pdGlhbCBkYXRhLCBv bmUgcm93IGluIGVhY2ggcGFydGl0aW9uCisJSU5TRVJUIElOVE8gdGVzdF9wYXJ0X2EgVkFM VUVTICgxLCAzKTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3BhcnRfYSBWQUxVRVMgKDYsIDQpOwor KSk7CisKKyMgZG8gdGhlIHNhbWUgdGhpbmcgb24gdGhlIHN1YnNjcmliZXIgKHdpdGggdGhl IG9wcG9zaXRlIGNvbHVtbiBvcmRlcikKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCBxcSgKKwlDUkVBVEUgVEFCTEUgdGVzdF9wYXJ0X2EgKGIgaW50LCBhIGlu dCkgUEFSVElUSU9OIEJZIExJU1QgKGEpOworCisJQ1JFQVRFIFRBQkxFIHRlc3RfcGFydF9h XzEgUEFSVElUSU9OIE9GIHRlc3RfcGFydF9hIEZPUiBWQUxVRVMgSU4gKDEsMiwzLDQsNSk7 CisJQUxURVIgVEFCTEUgdGVzdF9wYXJ0X2FfMSBBREQgUFJJTUFSWSBLRVkgKGEpOworCUFM VEVSIFRBQkxFIHRlc3RfcGFydF9hXzEgUkVQTElDQSBJREVOVElUWSBVU0lORyBJTkRFWCB0 ZXN0X3BhcnRfYV8xX3BrZXk7CisKKwlDUkVBVEUgVEFCTEUgdGVzdF9wYXJ0X2FfMiBQQVJU SVRJT04gT0YgdGVzdF9wYXJ0X2EgRk9SIFZBTFVFUyBJTiAoNiw3LDgsOSwxMCk7CisJQUxU RVIgVEFCTEUgdGVzdF9wYXJ0X2FfMiBBREQgUFJJTUFSWSBLRVkgKGIpOworCUFMVEVSIFRB QkxFIHRlc3RfcGFydF9hXzIgUkVQTElDQSBJREVOVElUWSBVU0lORyBJTkRFWCB0ZXN0X3Bh cnRfYV8yX3BrZXk7CispKTsKKworIyBjcmVhdGUgYSBwdWJsaWNhdGlvbiByZXBsaWNhdGlu ZyBqdXN0IHRoZSBjb2x1bW4gImEiLCB3aGljaCBpcyBub3QgZW5vdWdoCisjIGZvciB0aGUg c2Vjb25kIHBhcnRpdGlvbgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgcXEoCisJQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjYgRk9SIFRBQkxFIHRlc3RfcGFydF9h IChiLCBhKSBXSVRIIChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IHRydWUpOworCUFM VEVSIFBVQkxJQ0FUSU9OIHB1YjYgQUREIFRBQkxFIHRlc3RfcGFydF9hXzEgKGEpOworCUFM VEVSIFBVQkxJQ0FUSU9OIHB1YjYgQUREIFRBQkxFIHRlc3RfcGFydF9hXzIgKGIpOworKSk7 CisKKyMgYWRkIHRoZSBwdWJsaWNhdGlvbiB0byBvdXIgc3Vic2NyaXB0aW9uLCB3YWl0IGZv ciBzeW5jIHRvIGNvbXBsZXRlCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgcXEoCisJQUxURVIgU1VCU0NSSVBUSU9OIHN1YjEgU0VUIFBVQkxJQ0FUSU9OIHB1 YjYKKykpOworCit3YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYygkbm9kZV9zdWJzY3JpYmVy KTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXEoCisJSU5T RVJUIElOVE8gdGVzdF9wYXJ0X2EgVkFMVUVTICgyLCA1KTsKKwlJTlNFUlQgSU5UTyB0ZXN0 X3BhcnRfYSBWQUxVRVMgKDcsIDYpOworKSk7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9m b3JfY2F0Y2h1cCgnc3ViMScpOworCitpcygkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywiU0VMRUNUIGEsIGIgRlJPTSB0ZXN0X3BhcnRfYSBPUkRFUiBCWSBhLCBi IiksCisgICBxcSgxfDMKKzJ8NQorNnw0Cis3fDYpLAorICAgJ3BhcnRpdGlvbnMgd2l0aCBk aWZmZXJlbnQgcmVwbGljYSBpZGVudGl0aWVzIG5vdCByZXBsaWNhdGVkIGNvcnJlY3RseScp OworCisjIFRoaXMgdGltZSBzdGFydCB3aXRoIGEgY29sdW1uIGxpc3QgY292ZXJpbmcgUkkg Zm9yIGFsbCBwYXJ0aXRpb25zLCBidXQKKyMgdGhlbiB1cGRhdGUgdGhlIGNvbHVtbiBsaXN0 IHRvIG5vdCBjb3ZlciBjb2x1bW4gImIiIChuZWVkZWQgYnkgdGhlCisjIHNlY29uZCBwYXJ0 aXRpb24pCisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxKAor CUNSRUFURSBUQUJMRSB0ZXN0X3BhcnRfYiAoYSBpbnQsIGIgaW50KSBQQVJUSVRJT04gQlkg TElTVCAoYSk7CisKKwlDUkVBVEUgVEFCTEUgdGVzdF9wYXJ0X2JfMSBQQVJUSVRJT04gT0Yg dGVzdF9wYXJ0X2IgRk9SIFZBTFVFUyBJTiAoMSwyLDMsNCw1KTsKKwlBTFRFUiBUQUJMRSB0 ZXN0X3BhcnRfYl8xIEFERCBQUklNQVJZIEtFWSAoYSk7CisJQUxURVIgVEFCTEUgdGVzdF9w YXJ0X2JfMSBSRVBMSUNBIElERU5USVRZIFVTSU5HIElOREVYIHRlc3RfcGFydF9iXzFfcGtl eTsKKworCUNSRUFURSBUQUJMRSB0ZXN0X3BhcnRfYl8yIFBBUlRJVElPTiBPRiB0ZXN0X3Bh cnRfYiBGT1IgVkFMVUVTIElOICg2LDcsOCw5LDEwKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3Bh cnRfYl8yIEFERCBQUklNQVJZIEtFWSAoYik7CisJQUxURVIgVEFCTEUgdGVzdF9wYXJ0X2Jf MiBSRVBMSUNBIElERU5USVRZIFVTSU5HIElOREVYIHRlc3RfcGFydF9iXzJfcGtleTsKKwor CS0tIGluaXRpYWwgZGF0YSwgb25lIHJvdyBpbiBlYWNoIHBhcnRpdGlvbnMKKwlJTlNFUlQg SU5UTyB0ZXN0X3BhcnRfYiBWQUxVRVMgKDEsIDEpOworCUlOU0VSVCBJTlRPIHRlc3RfcGFy dF9iIFZBTFVFUyAoNiwgMik7CispKTsKKworIyBkbyB0aGUgc2FtZSB0aGluZyBvbiB0aGUg c3Vic2NyaWJlcgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFx KAorCUNSRUFURSBUQUJMRSB0ZXN0X3BhcnRfYiAoYSBpbnQsIGIgaW50KSBQQVJUSVRJT04g QlkgTElTVCAoYSk7CisKKwlDUkVBVEUgVEFCTEUgdGVzdF9wYXJ0X2JfMSBQQVJUSVRJT04g T0YgdGVzdF9wYXJ0X2IgRk9SIFZBTFVFUyBJTiAoMSwyLDMsNCw1KTsKKwlBTFRFUiBUQUJM RSB0ZXN0X3BhcnRfYl8xIEFERCBQUklNQVJZIEtFWSAoYSk7CisJQUxURVIgVEFCTEUgdGVz dF9wYXJ0X2JfMSBSRVBMSUNBIElERU5USVRZIFVTSU5HIElOREVYIHRlc3RfcGFydF9iXzFf cGtleTsKKworCUNSRUFURSBUQUJMRSB0ZXN0X3BhcnRfYl8yIFBBUlRJVElPTiBPRiB0ZXN0 X3BhcnRfYiBGT1IgVkFMVUVTIElOICg2LDcsOCw5LDEwKTsKKwlBTFRFUiBUQUJMRSB0ZXN0 X3BhcnRfYl8yIEFERCBQUklNQVJZIEtFWSAoYik7CisJQUxURVIgVEFCTEUgdGVzdF9wYXJ0 X2JfMiBSRVBMSUNBIElERU5USVRZIFVTSU5HIElOREVYIHRlc3RfcGFydF9iXzJfcGtleTsK KykpOworCisjIGNyZWF0ZSBhIHB1YmxpY2F0aW9uIHJlcGxpY2F0aW5nIGJvdGggY29sdW1u cywgd2hpY2ggaXMgc3VmZmljaWVudCBmb3IKKyMgYm90aCBwYXJ0aXRpb25zCiskbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcSgKKwlDUkVBVEUgUFVCTElDQVRJ T04gcHViNyBGT1IgVEFCTEUgdGVzdF9wYXJ0X2IgKGEsIGIpIFdJVEggKHB1Ymxpc2hfdmlh X3BhcnRpdGlvbl9yb290ID0gdHJ1ZSk7CispKTsKKworIyBhZGQgdGhlIHB1YmxpY2F0aW9u IHRvIG91ciBzdWJzY3JpcHRpb24sIHdhaXQgZm9yIHN5bmMgdG8gY29tcGxldGUKKyRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcSgKKwlBTFRFUiBTVUJTQ1JJ UFRJT04gc3ViMSBTRVQgUFVCTElDQVRJT04gcHViNworKSk7CisKK3dhaXRfZm9yX3N1YnNj cmlwdGlvbl9zeW5jKCRub2RlX3N1YnNjcmliZXIpOworCiskbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCBxcSgKKwlJTlNFUlQgSU5UTyB0ZXN0X3BhcnRfYiBWQUxV RVMgKDIsIDMpOworCUlOU0VSVCBJTlRPIHRlc3RfcGFydF9iIFZBTFVFUyAoNywgNCk7Cisp KTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdzdWIxJyk7CisKK2lz KCRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCJTRUxFQ1QgKiBGUk9N IHRlc3RfcGFydF9iIE9SREVSIEJZIGEsIGIiKSwKKyAgIHFxKDF8MQorMnwzCis2fDIKKzd8 NCksCisgICAncGFydGl0aW9ucyB3aXRoIGRpZmZlcmVudCByZXBsaWNhIGlkZW50aXRpZXMg bm90IHJlcGxpY2F0ZWQgY29ycmVjdGx5Jyk7CisKKworIyBURVNUOiBUaGlzIHRpbWUgc3Rh cnQgd2l0aCBhIGNvbHVtbiBsaXN0IGNvdmVyaW5nIFJJIGZvciBhbGwgcGFydGl0aW9ucywK KyMgYnV0IHRoZW4gdXBkYXRlIFJJIGZvciBvbmUgb2YgdGhlIHBhcnRpdGlvbnMgdG8gbm90 IGJlIGNvdmVyZWQgYnkgdGhlCisjIGNvbHVtbiBsaXN0IGFueW1vcmUuCisKKyRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxKAorCUNSRUFURSBUQUJMRSB0ZXN0 X3BhcnRfYyAoYSBpbnQsIGIgaW50LCBjIGludCkgUEFSVElUSU9OIEJZIExJU1QgKGEpOwor CisJQ1JFQVRFIFRBQkxFIHRlc3RfcGFydF9jXzEgUEFSVElUSU9OIE9GIHRlc3RfcGFydF9j IEZPUiBWQUxVRVMgSU4gKDEsMyk7CisJQUxURVIgVEFCTEUgdGVzdF9wYXJ0X2NfMSBBREQg UFJJTUFSWSBLRVkgKGEpOworCUFMVEVSIFRBQkxFIHRlc3RfcGFydF9jXzEgUkVQTElDQSBJ REVOVElUWSBVU0lORyBJTkRFWCB0ZXN0X3BhcnRfY18xX3BrZXk7CisKKwlDUkVBVEUgVEFC TEUgdGVzdF9wYXJ0X2NfMiBQQVJUSVRJT04gT0YgdGVzdF9wYXJ0X2MgRk9SIFZBTFVFUyBJ TiAoMiw0KTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3BhcnRfY18yIEFERCBQUklNQVJZIEtFWSAo Yik7CisJQUxURVIgVEFCTEUgdGVzdF9wYXJ0X2NfMiBSRVBMSUNBIElERU5USVRZIFVTSU5H IElOREVYIHRlc3RfcGFydF9jXzJfcGtleTsKKworCS0tIGluaXRpYWwgZGF0YSwgb25lIHJv dyBmb3IgZWFjaCBwYXJ0aXRpb24KKwlJTlNFUlQgSU5UTyB0ZXN0X3BhcnRfYyBWQUxVRVMg KDEsIDMsIDUpOworCUlOU0VSVCBJTlRPIHRlc3RfcGFydF9jIFZBTFVFUyAoMiwgNCwgNik7 CispKTsKKworIyBkbyB0aGUgc2FtZSB0aGluZyBvbiB0aGUgc3Vic2NyaWJlcgorJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxKAorCUNSRUFURSBUQUJMRSB0 ZXN0X3BhcnRfYyAoYSBpbnQsIGIgaW50LCBjIGludCkgUEFSVElUSU9OIEJZIExJU1QgKGEp OworCisJQ1JFQVRFIFRBQkxFIHRlc3RfcGFydF9jXzEgUEFSVElUSU9OIE9GIHRlc3RfcGFy dF9jIEZPUiBWQUxVRVMgSU4gKDEsMyk7CisJQUxURVIgVEFCTEUgdGVzdF9wYXJ0X2NfMSBB REQgUFJJTUFSWSBLRVkgKGEpOworCUFMVEVSIFRBQkxFIHRlc3RfcGFydF9jXzEgUkVQTElD QSBJREVOVElUWSBVU0lORyBJTkRFWCB0ZXN0X3BhcnRfY18xX3BrZXk7CisKKwlDUkVBVEUg VEFCTEUgdGVzdF9wYXJ0X2NfMiBQQVJUSVRJT04gT0YgdGVzdF9wYXJ0X2MgRk9SIFZBTFVF UyBJTiAoMiw0KTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3BhcnRfY18yIEFERCBQUklNQVJZIEtF WSAoYik7CisJQUxURVIgVEFCTEUgdGVzdF9wYXJ0X2NfMiBSRVBMSUNBIElERU5USVRZIFVT SU5HIElOREVYIHRlc3RfcGFydF9jXzJfcGtleTsKKykpOworCisjIGNyZWF0ZSBhIHB1Ymxp Y2F0aW9uIHJlcGxpY2F0aW5nIGRhdGEgdGhyb3VnaCBwYXJ0aXRpb24gcm9vdCwgd2l0aCBh IGNvbHVtbgorIyBsaXN0IG9uIHRoZSByb290LCBhbmQgdGhlbiBhZGQgdGhlIHBhcnRpdGlv bnMgb25lIGJ5IG9uZSB3aXRoIHNlcGFyYXRlCisjIGNvbHVtbiBsaXN0cyAoYnV0IHRob3Nl IGFyZSBub3QgYXBwbGllZCkKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsIHFxKAorCUNSRUFURSBQVUJMSUNBVElPTiBwdWI4IEZPUiBUQUJMRSB0ZXN0X3BhcnRf YyBXSVRIIChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IGZhbHNlKTsKKwlBTFRFUiBQ VUJMSUNBVElPTiBwdWI4IEFERCBUQUJMRSB0ZXN0X3BhcnRfY18xIChhLGMpOworCUFMVEVS IFBVQkxJQ0FUSU9OIHB1YjggQUREIFRBQkxFIHRlc3RfcGFydF9jXzIgKGEsYik7CispKTsK KworIyBhZGQgdGhlIHB1YmxpY2F0aW9uIHRvIG91ciBzdWJzY3JpcHRpb24sIHdhaXQgZm9y IHN5bmMgdG8gY29tcGxldGUKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCBxcSgKKwlEUk9QIFNVQlNDUklQVElPTiBzdWIxOworCUNSRUFURSBTVUJTQ1JJUFRJ T04gc3ViMSBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHInIFBVQkxJQ0FUSU9OIHB1 Yjg7CispKTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdzdWIxJyk7 CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxKAorCUlOU0VS VCBJTlRPIHRlc3RfcGFydF9jIFZBTFVFUyAoMywgNywgOCk7CisJSU5TRVJUIElOVE8gdGVz dF9wYXJ0X2MgVkFMVUVTICg0LCA5LCAxMCk7CispKTsKKworJG5vZGVfcHVibGlzaGVyLT53 YWl0X2Zvcl9jYXRjaHVwKCdzdWIxJyk7CisKK2lzKCRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLCJTRUxFQ1QgKiBGUk9NIHRlc3RfcGFydF9jIE9SREVSIEJZIGEs IGIiKSwKKyAgIHFxKDF8fDUKKzJ8NHwKKzN8fDgKKzR8OXwpLAorICAgJ3BhcnRpdGlvbnMg d2l0aCBkaWZmZXJlbnQgcmVwbGljYSBpZGVudGl0aWVzIG5vdCByZXBsaWNhdGVkIGNvcnJl Y3RseScpOworCisKKyMgY3JlYXRlIGEgcHVibGljYXRpb24gbm90IHJlcGxpY2F0aW5nIGRh dGEgdGhyb3VnaCBwYXJ0aXRpb24gcm9vdCwgd2l0aG91dAorIyBhIGNvbHVtbiBsaXN0IG9u IHRoZSByb290LCBhbmQgdGhlbiBhZGQgdGhlIHBhcnRpdGlvbnMgb25lIGJ5IG9uZSB3aXRo CisjIHNlcGFyYXRlIGNvbHVtbiBsaXN0cworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgcXEoCisJRFJPUCBQVUJMSUNBVElPTiBwdWI4OworCUNSRUFURSBQVUJM SUNBVElPTiBwdWI4IEZPUiBUQUJMRSB0ZXN0X3BhcnRfYyBXSVRIIChwdWJsaXNoX3ZpYV9w YXJ0aXRpb25fcm9vdCA9IGZhbHNlKTsKKwlBTFRFUiBQVUJMSUNBVElPTiBwdWI4IEFERCBU QUJMRSB0ZXN0X3BhcnRfY18xIChhKTsKKwlBTFRFUiBQVUJMSUNBVElPTiBwdWI4IEFERCBU QUJMRSB0ZXN0X3BhcnRfY18yIChhLGIpOworKSk7CisKKyMgYWRkIHRoZSBwdWJsaWNhdGlv biB0byBvdXIgc3Vic2NyaXB0aW9uLCB3YWl0IGZvciBzeW5jIHRvIGNvbXBsZXRlCiskbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXEoCisJQUxURVIgU1VCU0NS SVBUSU9OIHN1YjEgUkVGUkVTSCBQVUJMSUNBVElPTjsKKwlUUlVOQ0FURSB0ZXN0X3BhcnRf YzsKKykpOworCit3YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYygkbm9kZV9zdWJzY3JpYmVy KTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXEoCisJVFJV TkNBVEUgdGVzdF9wYXJ0X2M7CisJSU5TRVJUIElOVE8gdGVzdF9wYXJ0X2MgVkFMVUVTICgx LCAzLCA1KTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3BhcnRfYyBWQUxVRVMgKDIsIDQsIDYpOwor KSk7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgnc3ViMScpOworCitp cygkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywiU0VMRUNUICogRlJP TSB0ZXN0X3BhcnRfYyBPUkRFUiBCWSBhLCBiIiksCisgICBxcSgxfHwKKzJ8NHwpLAorICAg J3BhcnRpdGlvbnMgd2l0aCBkaWZmZXJlbnQgcmVwbGljYSBpZGVudGl0aWVzIG5vdCByZXBs aWNhdGVkIGNvcnJlY3RseScpOworCisKKyMgVEVTVDogU3RhcnQgd2l0aCBhIHNpbmdsZSBw YXJ0aXRpb24sIHdpdGggUkkgY29tcGF0aWJsZSB3aXRoIHRoZSBjb2x1bW4KKyMgbGlzdCwg YW5kIHRoZW4gYXR0YWNoIGEgcGFydGl0aW9uIHdpdGggaW5jb21wYXRpYmxlIFJJLgorCisk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcSgKKwlDUkVBVEUgVEFC TEUgdGVzdF9wYXJ0X2QgKGEgaW50LCBiIGludCkgUEFSVElUSU9OIEJZIExJU1QgKGEpOwor CisJQ1JFQVRFIFRBQkxFIHRlc3RfcGFydF9kXzEgUEFSVElUSU9OIE9GIHRlc3RfcGFydF9k IEZPUiBWQUxVRVMgSU4gKDEsMyk7CisJQUxURVIgVEFCTEUgdGVzdF9wYXJ0X2RfMSBBREQg UFJJTUFSWSBLRVkgKGEpOworCUFMVEVSIFRBQkxFIHRlc3RfcGFydF9kXzEgUkVQTElDQSBJ REVOVElUWSBVU0lORyBJTkRFWCB0ZXN0X3BhcnRfZF8xX3BrZXk7CisKKwlJTlNFUlQgSU5U TyB0ZXN0X3BhcnRfZCBWQUxVRVMgKDEsIDIpOworKSk7CisKKyMgZG8gdGhlIHNhbWUgdGhp bmcgb24gdGhlIHN1YnNjcmliZXIgKGluIGZhY3QsIGNyZWF0ZSBib3RoIHBhcnRpdGlvbnMg cmlnaHQKKyMgYXdheSwgbm8gbmVlZCB0byBkZWxheSB0aGF0KQorJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxKAorCUNSRUFURSBUQUJMRSB0ZXN0X3BhcnRf ZCAoYSBpbnQsIGIgaW50KSBQQVJUSVRJT04gQlkgTElTVCAoYSk7CisKKwlDUkVBVEUgVEFC TEUgdGVzdF9wYXJ0X2RfMSBQQVJUSVRJT04gT0YgdGVzdF9wYXJ0X2QgRk9SIFZBTFVFUyBJ TiAoMSwzKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3BhcnRfZF8xIEFERCBQUklNQVJZIEtFWSAo YSk7CisJQUxURVIgVEFCTEUgdGVzdF9wYXJ0X2RfMSBSRVBMSUNBIElERU5USVRZIFVTSU5H IElOREVYIHRlc3RfcGFydF9kXzFfcGtleTsKKworCUNSRUFURSBUQUJMRSB0ZXN0X3BhcnRf ZF8yIFBBUlRJVElPTiBPRiB0ZXN0X3BhcnRfZCBGT1IgVkFMVUVTIElOICgyLDQpOworCUFM VEVSIFRBQkxFIHRlc3RfcGFydF9kXzIgQUREIFBSSU1BUlkgS0VZIChhKTsKKwlBTFRFUiBU QUJMRSB0ZXN0X3BhcnRfZF8yIFJFUExJQ0EgSURFTlRJVFkgVVNJTkcgSU5ERVggdGVzdF9w YXJ0X2RfMl9wa2V5OworKSk7CisKKyMgY3JlYXRlIGEgcHVibGljYXRpb24gcmVwbGljYXRp bmcgYm90aCBjb2x1bW5zLCB3aGljaCBpcyBzdWZmaWNpZW50IGZvcgorIyBib3RoIHBhcnRp dGlvbnMKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxKAorCUNS RUFURSBQVUJMSUNBVElPTiBwdWI5IEZPUiBUQUJMRSB0ZXN0X3BhcnRfZCAoYSkgV0lUSCAo cHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSB0cnVlKTsKKykpOworCisjIGFkZCB0aGUg cHVibGljYXRpb24gdG8gb3VyIHN1YnNjcmlwdGlvbiwgd2FpdCBmb3Igc3luYyB0byBjb21w bGV0ZQorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxKAorCUFM VEVSIFNVQlNDUklQVElPTiBzdWIxIFNFVCBQVUJMSUNBVElPTiBwdWI5CispKTsKKword2Fp dF9mb3Jfc3Vic2NyaXB0aW9uX3N5bmMoJG5vZGVfc3Vic2NyaWJlcik7CisKKyRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxKAorCUlOU0VSVCBJTlRPIHRlc3Rf cGFydF9kIFZBTFVFUyAoMywgNCk7CispKTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zv cl9jYXRjaHVwKCdzdWIxJyk7CisKK2lzKCRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCJTRUxFQ1QgKiBGUk9NIHRlc3RfcGFydF9kIE9SREVSIEJZIGEsIGIiKSwK KyAgIHFxKDF8CiszfCksCisgICAncGFydGl0aW9ucyB3aXRoIGRpZmZlcmVudCByZXBsaWNh IGlkZW50aXRpZXMgbm90IHJlcGxpY2F0ZWQgY29ycmVjdGx5Jyk7CisKKyMgVEVTVDogV2l0 aCBhIHRhYmxlIGluY2x1ZGVkIGluIG11bHRpcGxlIHB1YmxpY2F0aW9ucywgd2Ugc2hvdWxk IHVzZSBhCisjIHVuaW9uIG9mIHRoZSBjb2x1bW4gbGlzdHMuIFNvIHdpdGggY29sdW1uIGxp c3RzIChhLGIpIGFuZCAoYSxjKSB3ZQorIyBzaG91bGQgcmVwbGljYXRlIChhLGIsYykuCisK KyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxKAorCUNSRUFURSBU QUJMRSB0ZXN0X21peF8xIChhIGludCBQUklNQVJZIEtFWSwgYiBpbnQsIGMgaW50KTsKKwlD UkVBVEUgUFVCTElDQVRJT04gcHViX21peF8xIEZPUiBUQUJMRSB0ZXN0X21peF8xIChhLCBi KTsKKwlDUkVBVEUgUFVCTElDQVRJT04gcHViX21peF8yIEZPUiBUQUJMRSB0ZXN0X21peF8x IChhLCBjKTsKKworCS0tIGluaXRpYWwgZGF0YQorCUlOU0VSVCBJTlRPIHRlc3RfbWl4XzEg VkFMVUVTICgxLCAyLCAzKTsKKykpOworCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgcXEoCisJQ1JFQVRFIFRBQkxFIHRlc3RfbWl4XzEgKGEgaW50IFBSSU1B UlkgS0VZLCBiIGludCwgYyBpbnQpOworCUFMVEVSIFNVQlNDUklQVElPTiBzdWIxIFNFVCBQ VUJMSUNBVElPTiBwdWJfbWl4XzEsIHB1Yl9taXhfMjsKKykpOworCit3YWl0X2Zvcl9zdWJz Y3JpcHRpb25fc3luYygkbm9kZV9zdWJzY3JpYmVyKTsKKworJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgcXEoCisJSU5TRVJUIElOVE8gdGVzdF9taXhfMSBWQUxV RVMgKDQsIDUsIDYpOworKSk7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1 cCgnc3ViMScpOworCitpcygkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywiU0VMRUNUICogRlJPTSB0ZXN0X21peF8xIE9SREVSIEJZIGEiKSwKKyAgIHFxKDF8Mnwz Cis0fDV8NiksCisgICAnYSBtaXggb2YgcHVibGljYXRpb25zIHNob3VsZCB1c2UgYSB1bmlv biBvZiBjb2x1bW4gbGlzdCcpOworCisKKyMgVEVTVDogV2l0aCBhIHRhYmxlIGluY2x1ZGVk IGluIG11bHRpcGxlIHB1YmxpY2F0aW9ucywgd2Ugc2hvdWxkIHVzZSBhCisjIHVuaW9uIG9m IHRoZSBjb2x1bW4gbGlzdHMuIElmIGFueSBvZiB0aGUgcHVibGljYXRpb25zIGlzIEZPUiBB TEwKKyMgVEFCTEVTLCB3ZSBzaG91bGQgcmVwbGljYXRlIGFsbCBjb2x1bW5zLgorCisjIGRy b3AgdW5uZWNlc3NhcnkgdGFibGVzLCBzbyBhcyBub3QgdG8gaW50ZXJmZXJlIHdpdGggdGhl IEZPUiBBTEwgVEFCTEVTCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCBxcSgKKwlEUk9QIFRBQkxFIHRhYjEsIHRhYjIsIHRhYjMsIHRhYjQsIHRhYjUsIHRhYjYs IHRhYjcsIHRlc3RfbWl4XzEsCisJCQkgICB0ZXN0X3BhcnQsIHRlc3RfcGFydF9hLCB0ZXN0 X3BhcnRfYiwgdGVzdF9wYXJ0X2MsIHRlc3RfcGFydF9kOworKSk7CisKKyRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxKAorCUNSRUFURSBUQUJMRSB0ZXN0X21p eF8yIChhIGludCBQUklNQVJZIEtFWSwgYiBpbnQsIGMgaW50KTsKKwlDUkVBVEUgUFVCTElD QVRJT04gcHViX21peF8zIEZPUiBUQUJMRSB0ZXN0X21peF8yIChhLCBiKTsKKwlDUkVBVEUg UFVCTElDQVRJT04gcHViX21peF80IEZPUiBBTEwgVEFCTEVTOworCisJLS0gaW5pdGlhbCBk YXRhCisJSU5TRVJUIElOVE8gdGVzdF9taXhfMiBWQUxVRVMgKDEsIDIsIDMpOworKSk7CisK KyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcSgKKwlDUkVBVEUg VEFCTEUgdGVzdF9taXhfMiAoYSBpbnQgUFJJTUFSWSBLRVksIGIgaW50LCBjIGludCk7CisJ QUxURVIgU1VCU0NSSVBUSU9OIHN1YjEgU0VUIFBVQkxJQ0FUSU9OIHB1Yl9taXhfMywgcHVi X21peF80OworCUFMVEVSIFNVQlNDUklQVElPTiBzdWIxIFJFRlJFU0ggUFVCTElDQVRJT047 CispKTsKKword2FpdF9mb3Jfc3Vic2NyaXB0aW9uX3N5bmMoJG5vZGVfc3Vic2NyaWJlcik7 CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxKAorCUlOU0VS VCBJTlRPIHRlc3RfbWl4XzIgVkFMVUVTICg0LCA1LCA2KTsKKykpOworCiskbm9kZV9wdWJs aXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3N1YjEnKTsKKworaXMoJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIlNFTEVDVCAqIEZST00gdGVzdF9taXhfMiIpLAor ICAgcXEoMXwyfDMKKzR8NXw2KSwKKyAgICdhIG1peCBvZiBwdWJsaWNhdGlvbnMgc2hvdWxk IHVzZSBhIHVuaW9uIG9mIGNvbHVtbiBsaXN0Jyk7CisKKworIyBURVNUOiBXaXRoIGEgdGFi bGUgaW5jbHVkZWQgaW4gbXVsdGlwbGUgcHVibGljYXRpb25zLCB3ZSBzaG91bGQgdXNlIGEK KyMgdW5pb24gb2YgdGhlIGNvbHVtbiBsaXN0cy4gSWYgYW55IG9mIHRoZSBwdWJsaWNhdGlv bnMgaXMgRk9SIEFMTAorIyBUQUJMRVMgSU4gU0NIRU1BLCB3ZSBzaG91bGQgcmVwbGljYXRl IGFsbCBjb2x1bW5zLgorCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCBxcSgKKwlDUkVBVEUgVEFCTEUgdGVzdF9taXhfMyAoYSBpbnQgUFJJTUFSWSBLRVksIGIg aW50LCBjIGludCk7CisJQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1Yl9taXhfNSBGT1IgVEFCTEUg dGVzdF9taXhfMyAoYSwgYik7CisJQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1Yl9taXhfNiBGT1Ig QUxMIFRBQkxFUyBJTiBTQ0hFTUEgcHVibGljOworCisJLS0gaW5pdGlhbCBkYXRhCisJSU5T RVJUIElOVE8gdGVzdF9taXhfMyBWQUxVRVMgKDEsIDIsIDMpOworKSk7CisKKyRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcSgKKwlDUkVBVEUgVEFCTEUgdGVz dF9taXhfMyAoYSBpbnQgUFJJTUFSWSBLRVksIGIgaW50LCBjIGludCk7CisJQUxURVIgU1VC U0NSSVBUSU9OIHN1YjEgU0VUIFBVQkxJQ0FUSU9OIHB1Yl9taXhfNSwgcHViX21peF82Owor KSk7CisKK3dhaXRfZm9yX3N1YnNjcmlwdGlvbl9zeW5jKCRub2RlX3N1YnNjcmliZXIpOwor Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcSgKKwlJTlNFUlQg SU5UTyB0ZXN0X21peF8zIFZBTFVFUyAoNCwgNSwgNik7CispKTsKKworJG5vZGVfcHVibGlz aGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdzdWIxJyk7CisKK2lzKCRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCJTRUxFQ1QgKiBGUk9NIHRlc3RfbWl4XzMiKSwKKyAg IHFxKDF8MnwzCis0fDV8NiksCisgICAnYSBtaXggb2YgcHVibGljYXRpb25zIHNob3VsZCB1 c2UgYSB1bmlvbiBvZiBjb2x1bW4gbGlzdCcpOworCisKKyMgVEVTVDogQ2hlY2sgaGFuZGxp bmcgb2YgcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgLSBpZiBhIHBhcnRpdGlvbiBpcwor IyBwdWJsaXNoZWQgdGhyb3VnaCBwYXJ0aXRpb24gcm9vdCwgd2Ugc2hvdWxkIG9ubHkgYXBw bHkgdGhlIGNvbHVtbiBsaXN0CisjIGRlZmluZWQgZm9yIHRoZSB3aG9sZSB0YWJsZSAobm90 IHRoZSBwYXJ0aXRpb25zKSAtIGJvdGggZHVyaW5nIHRoZSBpbml0aWFsCisjIHN5bmMgYW5k IHdoZW4gcmVwbGljYXRpbmcgY2hhbmdlcy4gVGhpcyBpcyB3aGF0IHdlIGRvIGZvciByb3cg ZmlsdGVycy4KKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXEo CisJQ1JFQVRFIFRBQkxFIHRlc3Rfcm9vdCAoYSBpbnQgUFJJTUFSWSBLRVksIGIgaW50LCBj IGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChhKTsKKwlDUkVBVEUgVEFCTEUgdGVzdF9yb290 XzEgUEFSVElUSU9OIE9GIHRlc3Rfcm9vdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgxMCk7 CisJQ1JFQVRFIFRBQkxFIHRlc3Rfcm9vdF8yIFBBUlRJVElPTiBPRiB0ZXN0X3Jvb3QgRk9S IFZBTFVFUyBGUk9NICgxMCkgVE8gKDIwKTsKKworCUNSRUFURSBQVUJMSUNBVElPTiBwdWJf cm9vdF90cnVlIEZPUiBUQUJMRSB0ZXN0X3Jvb3QgKGEpIFdJVEggKHB1Ymxpc2hfdmlhX3Bh cnRpdGlvbl9yb290ID0gdHJ1ZSk7CisKKwktLSBpbml0aWFsIGRhdGEKKwlJTlNFUlQgSU5U TyB0ZXN0X3Jvb3QgVkFMVUVTICgxLCAyLCAzKTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3Jvb3Qg VkFMVUVTICgxMCwgMjAsIDMwKTsKKykpOworCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgcXEoCisJQ1JFQVRFIFRBQkxFIHRlc3Rfcm9vdCAoYSBpbnQgUFJJ TUFSWSBLRVksIGIgaW50LCBjIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChhKTsKKwlDUkVB VEUgVEFCTEUgdGVzdF9yb290XzEgUEFSVElUSU9OIE9GIHRlc3Rfcm9vdCBGT1IgVkFMVUVT IEZST00gKDEpIFRPICgxMCk7CisJQ1JFQVRFIFRBQkxFIHRlc3Rfcm9vdF8yIFBBUlRJVElP TiBPRiB0ZXN0X3Jvb3QgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIwKTsKKykpOworCisk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXEoCisJQUxURVIgU1VC U0NSSVBUSU9OIHN1YjEgU0VUIFBVQkxJQ0FUSU9OIHB1Yl9yb290X3RydWU7CispKTsKKwor d2FpdF9mb3Jfc3Vic2NyaXB0aW9uX3N5bmMoJG5vZGVfc3Vic2NyaWJlcik7CisKKyRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxKAorCUlOU0VSVCBJTlRPIHRl c3Rfcm9vdCBWQUxVRVMgKDIsIDMsIDQpOworCUlOU0VSVCBJTlRPIHRlc3Rfcm9vdCBWQUxV RVMgKDExLCAyMSwgMzEpOworKSk7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0 Y2h1cCgnc3ViMScpOworCitpcygkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywiU0VMRUNUICogRlJPTSB0ZXN0X3Jvb3QgT1JERVIgQlkgYSwgYiwgYyIpLAorICAg cXEoMXx8CisyfHwKKzEwfHwKKzExfHwpLAorICAgJ3B1YmxpY2F0aW9uIHZpYSBwYXJ0aXRp b24gcm9vdCBhcHBsaWVzIGNvbHVtbiBsaXN0Jyk7CisKKworIyBURVNUOiBNdWx0aXBsZSBw dWJsaWNhdGlvbnMgd2hpY2ggcHVibGlzaCBzY2hlbWEgb2YgcGFyZW50IHRhYmxlIGFuZAor IyBwYXJ0aXRpb24uIFRoZSBwYXJ0aXRpb24gaXMgcHVibGlzaGVkIHRocm91Z2ggdHdvIHB1 YmxpY2F0aW9ucywgb25jZQorIyB0aHJvdWdoIGEgc2NoZW1hIChzbyBubyBjb2x1bW4gbGlz dCkgY29udGFpbmluZyB0aGUgcGFyZW50LCBhbmQgdGhlbgorIyBhbHNvIGRpcmVjdGx5ICh3 aXRoIGEgY29sdW1ucyBsaXN0KS4gVGhlIGV4cGVjdGVkIG91dGNvbWUgaXMgdGhlcmUgaXMK KyMgbm8gY29sdW1uIGxpc3QuCisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsIHFxKAorCURST1AgUFVCTElDQVRJT04gcHViMSwgcHViMiwgcHViMywgcHViNCwg cHViNSwgcHViNiwgcHViNywgcHViODsKKworCUNSRUFURSBTQ0hFTUEgczE7CisJQ1JFQVRF IFRBQkxFIHMxLnQgKGEgaW50LCBiIGludCwgYyBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAo YSk7CisJQ1JFQVRFIFRBQkxFIHRfMSBQQVJUSVRJT04gT0YgczEudCBGT1IgVkFMVUVTIEZS T00gKDEpIFRPICgxMCk7CisKKwlDUkVBVEUgUFVCTElDQVRJT04gcHViMSBGT1IgQUxMIFRB QkxFUyBJTiBTQ0hFTUEgczE7CisJQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjIgRk9SIFRBQkxF IHRfMShiKTsKKworCS0tIGluaXRpYWwgZGF0YQorCUlOU0VSVCBJTlRPIHMxLnQgVkFMVUVT ICgxLCAyLCAzKTsKKykpOworCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgcXEoCisJQ1JFQVRFIFNDSEVNQSBzMTsKKwlDUkVBVEUgVEFCTEUgczEudCAoYSBp bnQsIGIgaW50LCBjIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChhKTsKKwlDUkVBVEUgVEFC TEUgdF8xIFBBUlRJVElPTiBPRiBzMS50IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDEwKTsK KworCUFMVEVSIFNVQlNDUklQVElPTiBzdWIxIFNFVCBQVUJMSUNBVElPTiBwdWIxLCBwdWIy OworKSk7CisKK3dhaXRfZm9yX3N1YnNjcmlwdGlvbl9zeW5jKCRub2RlX3N1YnNjcmliZXIp OworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcSgKKwlJTlNF UlQgSU5UTyBzMS50IFZBTFVFUyAoNCwgNSwgNik7CispKTsKKworJG5vZGVfcHVibGlzaGVy LT53YWl0X2Zvcl9jYXRjaHVwKCdzdWIxJyk7CisKK2lzKCRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCJTRUxFQ1QgKiBGUk9NIHMxLnQgT1JERVIgQlkgYSIpLAor ICAgcXEoMXwyfDMKKzR8NXw2KSwKKyAgICd0d28gcHVibGljYXRpb25zLCBwdWJsaXNoaW5n IHRoZSBzYW1lIHJlbGF0aW9uJyk7CisKKyMgTm93IHJlc3luYyB0aGUgc3ViY3JpcHRpb24s IGJ1dCB3aXRoIHB1YmxpY2F0aW9ucyBpbiB0aGUgb3Bwb3NpdGUgb3JkZXIuCisjIFRoZSBy ZXN1bHQgc2hvdWxkIGJlIHRoZSBzYW1lLgorCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgcXEoCisJVFJVTkNBVEUgczEudDsKKworCUFMVEVSIFNVQlNDUklQ VElPTiBzdWIxIFNFVCBQVUJMSUNBVElPTiBwdWIyLCBwdWIxOworKSk7CisKK3dhaXRfZm9y X3N1YnNjcmlwdGlvbl9zeW5jKCRub2RlX3N1YnNjcmliZXIpOworCiskbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcSgKKwlJTlNFUlQgSU5UTyBzMS50IFZBTFVF UyAoNywgOCwgOSk7CispKTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVw KCdzdWIxJyk7CisKK2lzKCRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCJTRUxFQ1QgKiBGUk9NIHMxLnQgT1JERVIgQlkgYSIpLAorICAgcXEoN3w4fDkpLAorICAg J3R3byBwdWJsaWNhdGlvbnMsIHB1Ymxpc2hpbmcgdGhlIHNhbWUgcmVsYXRpb24nKTsKKwor CisjIFRFU1Q6IE9uZSBwdWJsaWNhdGlvbiwgY29udGFpbmluZyBib3RoIHRoZSBwYXJlbnQg YW5kIGNoaWxkIHJlbGF0aW9ucy4KKyMgVGhlIGV4cGVjdGVkIG91dGNvbWUgaXMgbGlzdCAi YSIsIGJlY2F1c2UgdGhhdCdzIHRoZSBjb2x1bW4gbGlzdCBkZWZpbmVkCisjIGZvciB0aGUg dG9wLW1vc3QgYW5jZXN0b3IgYWRkZWQgdG8gdGhlIHB1YmxpY2F0aW9uLgorCiskbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcSgKKwlEUk9QIFNDSEVNQSBzMSBD QVNDQURFOworCUNSRUFURSBUQUJMRSB0IChhIGludCwgYiBpbnQsIGMgaW50KSBQQVJUSVRJ T04gQlkgUkFOR0UgKGEpOworCUNSRUFURSBUQUJMRSB0XzEgUEFSVElUSU9OIE9GIHQgRk9S IFZBTFVFUyBGUk9NICgxKSBUTyAoMTApCisJCSAgIFBBUlRJVElPTiBCWSBSQU5HRSAoYSk7 CisJQ1JFQVRFIFRBQkxFIHRfMiBQQVJUSVRJT04gT0YgdF8xIEZPUiBWQUxVRVMgRlJPTSAo MSkgVE8gKDEwKTsKKworCUNSRUFURSBQVUJMSUNBVElPTiBwdWIzIEZPUiBUQUJMRSB0XzEg KGEpLCB0XzIKKwkgIFdJVEggKFBVQkxJU0hfVklBX1BBUlRJVElPTl9ST09UKTsKKworCS0t IGluaXRpYWwgZGF0YQorCUlOU0VSVCBJTlRPIHQgVkFMVUVTICgxLCAyLCAzKTsKKykpOwor Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXEoCisJRFJPUCBT Q0hFTUEgczEgQ0FTQ0FERTsKKwlDUkVBVEUgVEFCTEUgdCAoYSBpbnQsIGIgaW50LCBjIGlu dCkgUEFSVElUSU9OIEJZIFJBTkdFIChhKTsKKwlDUkVBVEUgVEFCTEUgdF8xIFBBUlRJVElP TiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDEwKQorCQkgICBQQVJUSVRJT04gQlkg UkFOR0UgKGEpOworCUNSRUFURSBUQUJMRSB0XzIgUEFSVElUSU9OIE9GIHRfMSBGT1IgVkFM VUVTIEZST00gKDEpIFRPICgxMCk7CisKKwlBTFRFUiBTVUJTQ1JJUFRJT04gc3ViMSBTRVQg UFVCTElDQVRJT04gcHViMzsKKykpOworCit3YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYygk bm9kZV9zdWJzY3JpYmVyKTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgcXEoCisJSU5TRVJUIElOVE8gdCBWQUxVRVMgKDQsIDUsIDYpOworKSk7CisKKyRu b2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgnc3ViMScpOworCitpcygkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywiU0VMRUNUICogRlJPTSB0IE9SREVS IEJZIGEsIGIsIGMiKSwKKyAgIHFxKDF8fAorNHx8KSwKKyAgICdwdWJsaWNhdGlvbiBjb250 YWluaW5nIGJvdGggcGFyZW50IGFuZCBjaGlsZCByZWxhdGlvbicpOworCisKKyMgVEVTVDog T25lIHB1YmxpY2F0aW9uLCBjb250YWluaW5nIGJvdGggdGhlIHBhcmVudCBhbmQgY2hpbGQg cmVsYXRpb25zLgorIyBUaGUgZXhwZWN0ZWQgb3V0Y29tZSBpcyBsaXN0ICJhIiwgYmVjYXVz ZSB0aGF0J3MgdGhlIGNvbHVtbiBsaXN0IGRlZmluZWQKKyMgZm9yIHRoZSB0b3AtbW9zdCBh bmNlc3RvciBhZGRlZCB0byB0aGUgcHVibGljYXRpb24uCisjIE5vdGU6IFRoZSBkaWZmZXJl bmNlIGZyb20gdGhlIHByZWNlZGluZyB0ZXN0IGlzIHRoYXQgaW4gdGhpcyBjYXNlIGJvdGgK KyMgcmVsYXRpb25zIGhhdmUgYSBjb2x1bW4gbGlzdCBkZWZpbmVkLgorCiskbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcSgKKwlEUk9QIFRBQkxFIHQ7CisJQ1JF QVRFIFRBQkxFIHQgKGEgaW50LCBiIGludCwgYyBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAo YSk7CisJQ1JFQVRFIFRBQkxFIHRfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00g KDEpIFRPICgxMCkKKwkJICAgUEFSVElUSU9OIEJZIFJBTkdFIChhKTsKKwlDUkVBVEUgVEFC TEUgdF8yIFBBUlRJVElPTiBPRiB0XzEgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOwor CisJQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjQgRk9SIFRBQkxFIHRfMSAoYSksIHRfMiAoYikK KwkgIFdJVEggKFBVQkxJU0hfVklBX1BBUlRJVElPTl9ST09UKTsKKworCS0tIGluaXRpYWwg ZGF0YQorCUlOU0VSVCBJTlRPIHQgVkFMVUVTICgxLCAyLCAzKTsKKykpOworCiskbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXEoCisJRFJPUCBUQUJMRSB0Owor CUNSRUFURSBUQUJMRSB0IChhIGludCwgYiBpbnQsIGMgaW50KSBQQVJUSVRJT04gQlkgUkFO R0UgKGEpOworCUNSRUFURSBUQUJMRSB0XzEgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBG Uk9NICgxKSBUTyAoMTApCisJCSAgIFBBUlRJVElPTiBCWSBSQU5HRSAoYSk7CisJQ1JFQVRF IFRBQkxFIHRfMiBQQVJUSVRJT04gT0YgdF8xIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDEw KTsKKworCUFMVEVSIFNVQlNDUklQVElPTiBzdWIxIFNFVCBQVUJMSUNBVElPTiBwdWI0Owor KSk7CisKK3dhaXRfZm9yX3N1YnNjcmlwdGlvbl9zeW5jKCRub2RlX3N1YnNjcmliZXIpOwor Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcSgKKwlJTlNFUlQg SU5UTyB0IFZBTFVFUyAoNCwgNSwgNik7CispKTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0 X2Zvcl9jYXRjaHVwKCdzdWIxJyk7CisKK2lzKCRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCJTRUxFQ1QgKiBGUk9NIHQgT1JERVIgQlkgYSwgYiwgYyIpLAorICAg cXEoMXx8Cis0fHwpLAorICAgJ3B1YmxpY2F0aW9uIGNvbnRhaW5pbmcgYm90aCBwYXJlbnQg YW5kIGNoaWxkIHJlbGF0aW9uJyk7CisKKworJG5vZGVfc3Vic2NyaWJlci0+c3RvcCgnZmFz dCcpOworJG5vZGVfcHVibGlzaGVyLT5zdG9wKCdmYXN0Jyk7CisKK2RvbmVfdGVzdGluZygp OwotLSAKMi4zNC4xCgo= --------------C62tn8qm0F0948cak4yW07iB--