Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1ugOhG-002Tm2-3J for pgsql-hackers@arkaria.postgresql.org; Mon, 28 Jul 2025 14:19:23 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1ugOhE-008JDB-An for pgsql-hackers@arkaria.postgresql.org; Mon, 28 Jul 2025 14:19:20 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1ugOhD-008JD2-IB for pgsql-hackers@lists.postgresql.org; Mon, 28 Jul 2025 14:19:20 +0000 Received: from relay4-d.mail.gandi.net ([217.70.183.196]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1ugOh6-001JS4-0c for pgsql-hackers@lists.postgresql.org; Mon, 28 Jul 2025 14:19:19 +0000 Received: by mail.gandi.net (Postfix) with ESMTPSA id C7CD941DF1; Mon, 28 Jul 2025 14:19:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vondra.me; s=gm1; t=1753712351; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=d0VP4SG27fxG7IEIswonAAlylkDKBrI/oEKsWb6Wy6o=; b=NcxeX0WIt4OzpfLwLvcMEoZfNFYEdwjDqrcHd44q6r2LsNSCwx2NU7j7tx0sE9b/j5W4xg 4HPUmETEOyd7ay/OmrqWzEX+uFownAocQ8s/exiPEi0YAbd+2gcx/bBBa1dmD7LDZvRpWU EdccdEFp8z4Mz+W1AUn5IXNpn7QAH9ROMRKXEVvVFDRsra01uGYOV6RIoQldA47T7zxZUP uSK/46nH9CLkfGAolNFdzY8WWO5ulE0ea7Hmv4al/fTxkR2w6kNnHg4s2JnARGPJ7tF/WL 4V3+voWJpei9W1+EANx8OHmXsrfjkBc9gc7qGSleuHzo7X36pZkiPJMLVoT+JA== Content-Type: multipart/mixed; boundary="------------ffSr0c8hlIKbvluiJSw5Id5o" Message-ID: <71a46484-053c-4b81-ba32-ddac050a8b5d@vondra.me> Date: Mon, 28 Jul 2025 16:19:07 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Adding basic NUMA awareness From: Tomas Vondra To: Jakub Wartak Cc: PostgreSQL Hackers References: <099b9433-2855-4f1b-b421-d078a5d82017@vondra.me> <5a2410f8-62a9-4483-bf0a-3a8331fb0808@vondra.me> Content-Language: en-US In-Reply-To: <5a2410f8-62a9-4483-bf0a-3a8331fb0808@vondra.me> X-GND-State: clean X-GND-Score: -100 X-GND-Cause: gggruggvucftvghtrhhoucdtuddrgeeffedrtdefgdelvdeflecutefuodetggdotefrodftvfcurfhrohhfihhlvgemucfitefpfffkpdcuggftfghnshhusghstghrihgsvgenuceurghilhhouhhtmecufedtudenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujfgurheptgfkffggfgfuhffvvehfjgesmhdtreertddvjeenucfhrhhomhepvfhomhgrshcugghonhgurhgruceothhomhgrshesvhhonhgurhgrrdhmvgeqnecuggftrfgrthhtvghrnhepteehgedugeeigedviedtgeekteeitdehleevffeggffguedvudeuffeluedvveeunecukfhppeekiedrgeelrddvfedtrddvtdeinecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehinhgvthepkeeirdegledrvdeftddrvddtiedphhgvlhhopegluddtrddufeejrddtrddvngdpmhgrihhlfhhrohhmpehtohhmrghssehvohhnughrrgdrmhgvpdhnsggprhgtphhtthhopedvpdhrtghpthhtohepjhgrkhhusgdrfigrrhhtrghksegvnhhtvghrphhrihhsvggusgdrtghomhdprhgtphhtthhopehpghhsqhhlqdhhrggtkhgvrhhssehlihhsthhsrdhpohhsthhgrhgvshhqlhdrohhrgh X-GND-Sasl: tomas@vondra.me 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. --------------ffSr0c8hlIKbvluiJSw5Id5o Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Hi, Here's a somewhat cleaned up v3 of this patch series, with various improvements and a lot of cleanup. Still WIP, but I hope it resolves the various crashes reported for v2, but it still requires --with-libnuma (it won't build without it). I'm aware there's an ongoing discussion about removing the freelists, and changing the clocksweep in some way. If that happens, the relevant parts of this series will need some adjustment, of course. I haven't looked into that yet, I plan to review those patches soon. main changes in v3 ------------------ 1) I've introduced "registry" of the buffer partitions (imagine a small array of structs), serving as a source of truth for places that need info about the partitions (range of buffers, ...). With v2 there was no "shared definition" - the shared buffers, freelist and clocksweep did their own thing. But per the discussion it doesn't really make much sense for to partition buffers in different ways. So in v3 the 0001 patch defines the partitions, records them in shared memory (in a small array), and the later parts just reuse this. I also added a pg_buffercache_partitions() listing the partitions, with first/last buffer, etc. The freelist/clocksweep patches add additional information. 2) The PGPROC part introduces a similar registry, even though there are no other patches building on this. But it seemed useful to have a clear place recording this info. There's also a view pg_buffercache_pgproc. The pg_buffercache location is a bit bogus - it has nothing to do with buffers, but it was good enough for now. 3) The PGPROC partitioning is reworked and should fix the crash with the GUC set to "off". 4) This still doesn't do anything about "balancing" the clocksweep. I have some ideas how to do that, I'll work on that next. simple benchmark ---------------- I did a simple benchmark, measuring pgbench throughput with scale still fitting into RAM, but much larger (~2x) than shared buffers. See the attached test script, testing builds with more and more of the patches. I'm attaching results from two different machines (the "usual" 2P xeon and also a much larger cloud instance with EPYC/Genoa) - both the raw CSV files, with average tps and percentiles, and PDFs. The PDFs also have a comparison either to the "preceding" build (right side), or to master (below the table). There's results for the three "pgbench pinning" strategies, and that can have pretty significant impact (colocated generally performs much better than either "none" or "random"). For the "bigger" machine (wiuth 176 cores) the incremental results look like this (for pinning=none, i.e. regular pgbench): mode s_b buffers localal no-tail freelist sweep pgproc pinning ==================================================================== prepared 16GB 99% 101% 100% 103% 111% 99% 102% 32GB 98% 102% 99% 103% 107% 101% 112% 8GB 97% 102% 100% 102% 101% 101% 106% -------------------------------------------------------------------- simple 16GB 100% 100% 99% 105% 108% 99% 108% 32GB 98% 101% 100% 103% 100% 101% 97% 8GB 100% 100% 101% 99% 100% 104% 104% The way I read this is that the first three patches have about no impact on throughput. Then freelist partitioning and (especially) clocksweep partitioning can help quite a bit. pgproc is again close to ~0%, and PGPROC pinning can help again (but this part is merely experimental). For the xeon the differences (in either direction) are much smaller, so I'm not going to post it here. It's in the PDF, though. I think this looks reasonable. The way I see this patch series is not about improving peak throughput, but more about reducing imbalance and making the behavior more consistent. The results are more a confirmation there's not some sort of massive overhead, somewhere. But I'll get to this in a minute. To quantify this kind of improvement, I think we'll need tests that intentionally cause (or try to) imbalance. If you have ideas for such tests, let me know. overhead of partitioning calculation ------------------------------------ Regarding the "overhead", while the results look mostly OK, I think we'll need to rethink the partitioning scheme - particularly how the partition size is calculated. The current scheme has to use %, which can be somewhat expensive. The 0001 patch calculates a "chunk size", which is the smallest number of buffers it can "assign" to a NUMA node. This depends on how many buffer descriptors fit onto a single memory page, and it's either 512KB (with 4KB pages), or 256MB (with 2MB huge pages). And then each NUMA node gets multiple chunks, to cover shared_buffers/num_nodes. But this can be an arbitrary number - it minimizes the imbalance, but it also forces the use of % and / in the formulas. AFAIK if we required the partitions to be 2^k multiples of the chunk size, we could switch to using shifts and masking. Which is supposed to be much faster. But I haven't measured this, and the cost is that some of the nodes could get much less memory. Maybe that's fine. reserving number of huge pages ------------------------------ The other thing I realized is that partitioning buffers with huge pages is quite tricky, and can easily lead to SIGBUS when accessing the memory later. The crashes I saw happen like this: 1) figure # of pages needed (using shared_memory_size_in_huge_pages) This can be 16828 for shared_buffers=32GB. 2) make sure there's enough huge pages echo 16828 > /proc/sys/vm/nr_hugepages 3) start postgres - everything seems to works just fine 4) query pg_buffercache_numa - triggers SIGBUS accessing memory for a valid buffer (usually ~2GB from the end) It took me ages to realize what's happening, but it's very simple. The nr_hugepages is a global limit, but it's also translated into limits for each NUMA node. So when you write 16828 to it, in a 4-node system each node gets 1/4 of that. See $ numastat -cm Then we do the mmap(), and everything looks great, because there really is enough huge pages and the system can allocate memory from any NUMA node it needs. And then we come around, and do the numa_tonode_memory(). And that's where the issues start, because AFAIK this does not check the per-node limit of huge pages in any way. It just appears to work. And then later, when we finally touch the buffer, it tries to actually allocate the memory on the node, and realizes there's not enough huge pages. And triggers the SIGBUS. You may ask why the per-node limit is too low. We still need just shared_memory_size_in_huge_pages, right? And if we were partitioning the whole memory segment, that'd be true. But we only to that for shared buffers, and there's a lot of other shared memory - could be 1-2GB or so, depending on the configuration. And this gets placed on one of the nodes, and it counts against the limit on that particular node. And so it doesn't have enough huge pages to back the partition of shared buffers. The only way around this I found is by inflating the number of huge pages, significantly above the shared_memory_size_in_huge_pages value. Just to make sure the nodes get enough huge pages. I don't know what to do about this. It's quite annoying. If we only used huge pages for the partitioned parts, this wouldn't be a problem. I also realize this can be used to make sure the memory is balanced on NUMA systems. Because if you set nr_hugepages, the kernel will ensure the shared memory is distributed on all the nodes. It won't have the benefits of "coordinating" the buffers and buffer descriptors, and so on. But it will be balanced. regards -- Tomas Vondra --------------ffSr0c8hlIKbvluiJSw5Id5o Content-Type: text/x-patch; charset=UTF-8; name="v3-0007-NUMA-pin-backends-to-NUMA-nodes.patch" Content-Disposition: attachment; filename="v3-0007-NUMA-pin-backends-to-NUMA-nodes.patch" Content-Transfer-Encoding: base64 RnJvbSAzYjNhOTI5YjAwNzIwNWM0NmIzYzE5M2NmMzhlM2VkZjcxMDg0YWY3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQHZvbmRyYS5tZT4K RGF0ZTogVHVlLCAyNyBNYXkgMjAyNSAyMzowODo0OCArMDIwMApTdWJqZWN0OiBbUEFUQ0gg djMgNy83XSBOVU1BOiBwaW4gYmFja2VuZHMgdG8gTlVNQSBub2RlcwoKV2hlbiBpbml0aWFs aXppbmcgdGhlIGJhY2tlbmQsIHdlIHBpY2sgYSBQR1BST0MgZW50cnkgZnJvbSB0aGUgcmln aHQKTlVNQSBub2RlIHdoZXJlIHRoZSBiYWNrZW5kIGlzIHJ1bm5pbmcuIEJ1dCB0aGUgcHJv Y2VzcyBjYW4gbW92ZSB0byBhCmRpZmZlcmVudCBjb3JlIC8gbm9kZSwgc28gdG8gcHJldmVu dCB0aGF0IHdlIHBpbiBpdC4KLS0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5j ICAgICB8IDIxICsrKysrKysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvdXRpbHMvaW5p dC9nbG9iYWxzLmMgICAgfCAgMSArCiBzcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJs ZXMuYyB8IDEwICsrKysrKysrKysKIHNyYy9pbmNsdWRlL21pc2NhZG1pbi5oICAgICAgICAg ICAgIHwgIDEgKwogNCBmaWxlcyBjaGFuZ2VkLCAzMyBpbnNlcnRpb25zKCspCgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYyBiL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvbG1nci9wcm9jLmMKaW5kZXggMTEyNTkxNTFhN2QuLmRiYjRjYmIxYmZhIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jCisrKyBiL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMKQEAgLTc2Niw2ICs3NjYsMjcgQEAgSW5pdFByb2Nl c3Modm9pZCkKIAl9CiAJTXlQcm9jTnVtYmVyID0gR2V0TnVtYmVyRnJvbVBHUHJvYyhNeVBy b2MpOwogCisJLyoKKwkgKiBPcHRpb25hbGx5LCByZXN0cmljdCB0aGUgcHJvY2VzcyB0byBv bmx5IHJ1biBvbiBDUFVzIGZyb20gdGhlIHNhbWUgTlVNQQorCSAqIGFzIHRoZSBQR1BST0Mu IFdlIGRvIHRoaXMgZXZlbiBpZiB0aGUgUEdQUk9DIGhhcyBhIGRpZmZlcmVudCBOVU1BIG5v ZGUsCisJICogYnV0IG5vdCBmb3IgUEdQUk9DIGVudHJpZXMgd2l0aG91dCBhIG5vZGUgKGku ZS4gYXV4LzJQQyBlbnRyaWVzKS4KKwkgKgorCSAqIFRoaXMgYWxzbyBtZWFucyB3ZSBvbmx5 IGRvIHRoaXMgd2l0aCBudW1hX3Byb2NzX2ludGVybGVhdmUsIGJlY2F1c2UKKwkgKiB3aXRo b3V0IHRoYXQgd2UnbGwgaGF2ZSBudW1hX25vZGU9LTEgZm9yIGFsbCBQR1BST0MgZW50cmll cy4KKwkgKgorCSAqIEZJWE1FIGFkZCBwcm9wZXIgZXJyb3ItY2hlY2tpbmcgZm9yIGxpYm51 bWEgZnVuY3Rpb25zCisJICovCisJaWYgKG51bWFfcHJvY3NfcGluICYmIE15UHJvYy0+bnVt YV9ub2RlICE9IC0xKQorCXsKKwkJc3RydWN0IGJpdG1hc2sgKmNwdW1hc2sgPSBudW1hX2Fs bG9jYXRlX2NwdW1hc2soKTsKKworCQludW1hX25vZGVfdG9fY3B1cyhNeVByb2MtPm51bWFf bm9kZSwgY3B1bWFzayk7CisKKwkJbnVtYV9zY2hlZF9zZXRhZmZpbml0eShNeVByb2NQaWQs IGNwdW1hc2spOworCisJCW51bWFfZnJlZV9jcHVtYXNrKGNwdW1hc2spOworCX0KKwogCS8q CiAJICogQ3Jvc3MtY2hlY2sgdGhhdCB0aGUgUEdQUk9DIGlzIG9mIHRoZSB0eXBlIHdlIGV4 cGVjdDsgaWYgdGhpcyB3ZXJlIG5vdAogCSAqIHRoZSBjYXNlLCBpdCB3b3VsZCBnZXQgcmV0 dXJuZWQgdG8gdGhlIHdyb25nIGxpc3QuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGls cy9pbml0L2dsb2JhbHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jCmlu ZGV4IDZlZTQ2ODRkMWI4Li4zZjg4NjU5YjQ5ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dXRpbHMvaW5pdC9nbG9iYWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9i YWxzLmMKQEAgLTE1MCw2ICsxNTAsNyBAQCBib29sCQludW1hX2J1ZmZlcnNfaW50ZXJsZWF2 ZSA9IGZhbHNlOwogYm9vbAkJbnVtYV9sb2NhbGFsbG9jID0gZmFsc2U7CiBib29sCQludW1h X3BhcnRpdGlvbl9mcmVlbGlzdCA9IGZhbHNlOwogYm9vbAkJbnVtYV9wcm9jc19pbnRlcmxl YXZlID0gZmFsc2U7Citib29sCQludW1hX3Byb2NzX3BpbiA9IGZhbHNlOwogCiAvKiBHVUMg cGFyYW1ldGVycyBmb3IgdmFjdXVtICovCiBpbnQJCQlWYWN1dW1CdWZmZXJVc2FnZUxpbWl0 ID0gMjA0ODsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxl cy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKaW5kZXggN2I3MTg3 NjAyNDguLjg2MjM0MWUxMzdlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNj L2d1Y190YWJsZXMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMu YwpAQCAtMjE1Niw2ICsyMTU2LDE2IEBAIHN0cnVjdCBjb25maWdfYm9vbCBDb25maWd1cmVO YW1lc0Jvb2xbXSA9CiAJCU5VTEwsIE5VTEwsIE5VTEwKIAl9LAogCisJeworCQl7Im51bWFf cHJvY3NfcGluIiwgUEdDX1BPU1RNQVNURVIsIERFVkVMT1BFUl9PUFRJT05TLAorCQkJZ2V0 dGV4dF9ub29wKCJFbmFibGVzIHBpbm5pbmcgYmFja2VuZHMgdG8gTlVNQSBub2RlcyAobWF0 Y2hpbmcgdGhlIFBHUFJPQyBub2RlKS4iKSwKKwkJCWdldHRleHRfbm9vcCgiV2hlbiBlbmFi bGVkLCBzZXRzIGFmZmluaXR5IHRvIENQVXMgZnJvbSB0aGUgc2FtZSBOVU1BIG5vZGUuIiks CisJCX0sCisJCSZudW1hX3Byb2NzX3BpbiwKKwkJZmFsc2UsCisJCU5VTEwsIE5VTEwsIE5V TEwKKwl9LAorCiAJewogCQl7InN5bmNfcmVwbGljYXRpb25fc2xvdHMiLCBQR0NfU0lHSFVQ LCBSRVBMSUNBVElPTl9TVEFOREJZLAogCQkJZ2V0dGV4dF9ub29wKCJFbmFibGVzIGEgcGh5 c2ljYWwgc3RhbmRieSB0byBzeW5jaHJvbml6ZSBsb2dpY2FsIGZhaWxvdmVyIHJlcGxpY2F0 aW9uIHNsb3RzIGZyb20gdGhlIHByaW1hcnkgc2VydmVyLiIpLApkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvbWlzY2FkbWluLmggYi9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaAppbmRleCBj ZGVlZThkY2NiYS4uYTk3NzQxYzY3MDcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL21pc2Nh ZG1pbi5oCisrKyBiL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oCkBAIC0xODIsNiArMTgyLDcg QEAgZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgbnVtYV9idWZmZXJzX2ludGVybGVhdmU7CiBl eHRlcm4gUEdETExJTVBPUlQgYm9vbCBudW1hX2xvY2FsYWxsb2M7CiBleHRlcm4gUEdETExJ TVBPUlQgYm9vbCBudW1hX3BhcnRpdGlvbl9mcmVlbGlzdDsKIGV4dGVybiBQR0RMTElNUE9S VCBib29sIG51bWFfcHJvY3NfaW50ZXJsZWF2ZTsKK2V4dGVybiBQR0RMTElNUE9SVCBib29s IG51bWFfcHJvY3NfcGluOwogCiBleHRlcm4gUEdETExJTVBPUlQgaW50IGNvbW1pdF90aW1l c3RhbXBfYnVmZmVyczsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgbXVsdGl4YWN0X21lbWJl cl9idWZmZXJzOwotLSAKMi41MC4xCgo= --------------ffSr0c8hlIKbvluiJSw5Id5o Content-Type: text/x-patch; charset=UTF-8; name="v3-0006-NUMA-interleave-PGPROC-entries.patch" Content-Disposition: attachment; filename="v3-0006-NUMA-interleave-PGPROC-entries.patch" Content-Transfer-Encoding: base64 RnJvbSA1YWRkYjU5NzNjZTU3MWRlYmViZjA3YjE3YWRjMDdlYjgyOGE0OGVlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQHZvbmRyYS5tZT4K RGF0ZTogVGh1LCAyMiBNYXkgMjAyNSAxODozOTowOCArMDIwMApTdWJqZWN0OiBbUEFUQ0gg djMgNi83XSBOVU1BOiBpbnRlcmxlYXZlIFBHUFJPQyBlbnRyaWVzCgpUaGUgZ29hbCBpcyB0 byBkaXN0cmlidXRlIFByb2NBcnJheSAob3IgcmF0aGVyIFBHUFJPQyBlbnRyaWVzIGFuZAph c3NvY2lhdGVkIGZhc3QtcGF0aCBhcnJheXMpIHRvIE5VTUEgbm9kZXMuCgpXZSBjYW4ndCBk byB0aGlzIGJ5IHNpbXBseSBpbnRlcmxlYXZpbmcgcGFnZXMsIGJlY2F1c2UgdGhhdCB3b3Vs ZG4ndAp3b3JrIGZvciBib3RoIHBhcnRzIGF0IHRoZSBzYW1lIHRpbWUuIFdlIHdhbnQgdG8g cGxhY2UgdGhlIFBHUFJPQyBhbmQKaXQncyBmYXN0LXBhdGggbG9ja2luZyBzdHJ1Y3RzIG9u IHRoZSBzYW1lIG5vZGUsIGJ1dCB0aGUgc3RydWN0cyBhcmUKb2YgZGlmZmVyZW50IHNpemVz LCBldGMuCgpBbm90aGVyIHByb2JsZW0gaXMgdGhhdCBQR1BST0MgZW50cmllcyBhcmUgZmFp cmx5IHNtYWxsLCBzbyB3aXRoIGh1Z2UKcGFnZXMgYW5kIHJlYXNvbmFibGUgdmFsdWVzIG9m IG1heF9jb25uZWN0aW9ucyBldmVyeXRoaW5nIGZpdHMgb250byBhCnNpbmdsZSBwYWdlLiBX ZSBkb24ndCB3YW50IHRvIG1ha2UgdGhpcyBpbmNvbXBhdGlibGUgd2l0aCBodWdlIHBhZ2Vz LgoKTm90ZTogSWYgd2UgZXZlbnR1YWxseSBzd2l0Y2ggdG8gYWxsb2NhdGluZyBzZXBhcmF0 ZSBzaGFyZWQgc2VnbWVudHMgZm9yCmRpZmZlcmVudCBwYXJ0cyAodG8gYWxsb3cgb24tbGlu ZSByZXNpemluZyksIHdlIGNvdWxkIGtlZXAgdXNpbmcgcmVndWxhcgpwYWdlcyBmb3IgcHJv Y2FycmF5LCBhbmQgdGhpcyB3b3VsZCBub3QgYmUgc3VjaCBhbiBpc3N1ZS4KClRvIG1ha2Ug dGhpcyB3b3JrLCB3ZSBzcGxpdCB0aGUgUEdQUk9DIGFycmF5IGludG8gcGVyLW5vZGUgc2Vn bWVudHMsCmVhY2ggd2l0aCBhYm91dCAoTWF4QmFja2VuZHMgLyBudW1hX25vZGVzKSBlbnRy aWVzLCBhbmQgb25lIHNlZ21lbnQgZm9yCmF1eGlsaWFyeSBwcm9jZXNzZXMgYW5kIHByZXBh cmVkIHRyYW5zYXRpb25zLiBBbmQgd2UgZG8gdGhlIHNhbWUgdGhpbmcKZm9yIGZhc3QtcGF0 aCBhcnJheXMuCgpUaGUgUEdQUk9DIHNlZ21lbnRzIGFyZSBsYWlkIG91dCBsaWtlIHRoaXMg KGUuZy4gZm9yIDIgTlVNQSBub2Rlcyk6CgogLSBQR1BST0MgYXJyYXkgLyBub2RlICMwCiAt IFBHUFJPQyBhcnJheSAvIG5vZGUgIzEKIC0gUEdQUk9DIGFycmF5IC8gYXV4IHByb2Nlc3Nl cyArIDJQQyB0cmFuc2FjdGlvbnMKIC0gZmFzdC1wYXRoIGFycmF5cyAvIG5vZGUgIzAKIC0g ZmFzdC1wYXRoIGFycmF5cyAvIG5vZGUgIzEKIC0gZmFzdC1wYXRoIGFycmF5cyAvIGF1eCBw cm9jZXNzZXMgKyAyUEMgdHJhbnNhY3Rpb24KCkVhY2ggc2VnbWVudCBpcyBhbGlnbmVkIHRv IChzdGFydHMgYXQpIG1lbW9yeSBwYWdlLCBhbmQgaXMgZWZmZWN0aXZlbHkgYQptdWx0aXBs ZSBvZiBtdWx0aXBsZSBtZW1vcnkgcGFnZXMuCgpIYXZpbmcgYSBzaW5nbGUgUEdQUk9DIGFy cmF5IG1hZGUgY2VydGFpbiBvcGVyYXRpb25zIGVhc2llcnMgLSBlLmcuIGl0CndhcyBwb3Nz aWJsZSB0byBpdGVyYXRlIHRoZSBhcnJheSwgYW5kIEdldE51bWJlckZyb21QR1Byb2MoKSBj b3VsZApjYWxjdWxhdGUgb2Zmc2V0IGJ5IHNpbXBseSBzdWJ0cmFjdGluZyBQR1BST0MgcG9p bnRlcnMuIFdpdGggbXVsdGlwbGUKc2VnbWVudHMgdGhhdCdzIG5vdCBwb3NzaWJsZSwgYnV0 IHRoZSBmYWxsb3V0IGlzIG1pbmltYWwuCgpNb3N0IHBsYWNlcyBhY2Nlc3NlZCBQR1BST0Mg dGhyb3VnaCBQUk9DX0hEUi0+YWxsUHJvY3MsIGFuZCBjYW4gY29udGludWUKdG8gZG8gc28s IGV4Y2VwdCB0aGF0IG5vdyB0aGV5IGdldCBhIHBvaW50ZXIgdG8gdGhlIFBHUFJPQyAod2hp Y2ggbW9zdApwbGFjZXMgd2FudGVkIGFueXdheSkuCgpXaXRoIHRoZSBmZWF0dXJlIGRpc2Fi bGVkLCB0aGVyZSdzIG9ubHkgYSBzaW5nbGUgInBhcnRpdGlvbiIgZm9yIGFsbApQR1BST0Mg ZW50cmllcy4KClNpbWlsYXJseSB0byB0aGUgYnVmZmVyIHBhcnRpdGlvbmluZywgdGhpcyBp bnRyb2R1Y2VzIGEgc21hbGwgInJlZ2lzdHJ5IgpvZiBwYXJ0aXRpb25zLCBhcyBhIHNvdXJj ZSBvZiB0cnV0aC4gQW5kIHRoZW4gYWxzbyBhIG5ldyAic3lzdGVtIiB2aWV3CiJwZ19idWZm ZXJjYWNoZV9wZ3Byb2MiIHNob3dpbmcgYmFzaWMgaW5mcm9tYXRpb24gYWJvdXV0IHRoZSBw YXJ0aXRpb25zLgoKTm90ZTogVGhlcmUncyBhbiBpbmRpcmVjdGlvbiwgdGhvdWdoLiBCdXQg dGhlIHBvaW50ZXIgZG9lcyBub3QgY2hhbmdlLApzbyBob3BlZnVsbHkgdGhhdCdzIG5vdCBh biBpc3N1ZS4gQW5kIGVhY2ggUEdQUk9DIGVudHJ5IGdldHMgYW4gZXhwbGljaXQKcHJvY251 bWJlciBmaWVsZCwgd2hpY2ggaXMgdGhlIGluZGV4IGluIGFsbFByb2NzLCBHZXROdW1iZXJG cm9tUEdQcm9jCmNhbiBzaW1wbHkgcmV0dXJuIHRoYXQuCgpFYWNoIFBHUFJPQyBhbHNvIGdl dHMgbnVtYV9ub2RlLCB0cmFja2luZyB0aGUgTlVNQSBub2RlLCBzbyB0aGF0IHdlCmRvbid0 IGhhdmUgdG8gcmVjYWxjdWxhdGUgdGhhdC4gVGhpcyBpcyB1c2VkIGJ5IEluaXRQcm9jZXNz KCkgdG8gcGljawphIFBHUFJPQyBlbnRyeSBmcm9tIHRoZSBsb2NhbCBOVU1BIG5vZGUuCgpO b3RlOiBUaGUgc2NoZWR1bGVyIG1heSBtaWdyYXRlIHRoZSBwcm9jZXNzIHRvIGEgZGlmZmVy ZW50IENQVS9ub2RlCmxhdGVyLiBNYXliZSB3ZSBzaG91bGQgY29uc2lkZXIgcGlubmluZyB0 aGUgcHJvY2VzcyB0byB0aGUgbm9kZT8KLS0tCiAuLi4vcGdfYnVmZmVyY2FjaGUtLTEuNi0t MS43LnNxbCAgICAgICAgICAgICAgfCAgMTkgKwogY29udHJpYi9wZ19idWZmZXJjYWNoZS9w Z19idWZmZXJjYWNoZV9wYWdlcy5jIHwgIDk0ICsrKwogc3JjL2JhY2tlbmQvYWNjZXNzL3Ry YW5zYW0vY2xvZy5jICAgICAgICAgICAgIHwgICA0ICstCiBzcmMvYmFja2VuZC9wb3N0bWFz dGVyL3BnYXJjaC5jICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL3Bvc3Rt YXN0ZXIvd2Fsc3VtbWFyaXplci5jICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvc3Rv cmFnZS9idWZmZXIvYnVmX2luaXQuYyAgICAgICAgIHwgICAyIC0KIHNyYy9iYWNrZW5kL3N0 b3JhZ2UvYnVmZmVyL2ZyZWVsaXN0LmMgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQv c3RvcmFnZS9pcGMvcHJvY2FycmF5LmMgICAgICAgICAgIHwgIDYzICstCiBzcmMvYmFja2Vu ZC9zdG9yYWdlL2xtZ3IvbG9jay5jICAgICAgICAgICAgICAgfCAgIDYgKy0KIHNyYy9iYWNr ZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMgICAgICAgICAgICAgICB8IDU2NSArKysrKysrKysr KysrKysrKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jICAgICAgICAgICAg ICB8ICAgMSArCiBzcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYyAgICAgICAg ICAgfCAgMTAgKwogc3JjL2luY2x1ZGUvbWlzY2FkbWluLmggICAgICAgICAgICAgICAgICAg ICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5oICAgICAgICAgICAgICAg ICAgICB8ICAxNCArLQogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAg ICAgICAgIHwgICAxICsKIDE1IGZpbGVzIGNoYW5nZWQsIDcyMiBpbnNlcnRpb25zKCspLCA2 NCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb250cmliL3BnX2J1ZmZlcmNhY2hlL3Bn X2J1ZmZlcmNhY2hlLS0xLjYtLTEuNy5zcWwgYi9jb250cmliL3BnX2J1ZmZlcmNhY2hlL3Bn X2J1ZmZlcmNhY2hlLS0xLjYtLTEuNy5zcWwKaW5kZXggYjdkOGVhNDVlZDcuLmM0ODk1MGE5 ZDNiIDEwMDY0NAotLS0gYS9jb250cmliL3BnX2J1ZmZlcmNhY2hlL3BnX2J1ZmZlcmNhY2hl LS0xLjYtLTEuNy5zcWwKKysrIGIvY29udHJpYi9wZ19idWZmZXJjYWNoZS9wZ19idWZmZXJj YWNoZS0tMS42LS0xLjcuc3FsCkBAIC0yMywzICsyMywyMiBAQCBSRVZPS0UgQUxMIE9OIHBn X2J1ZmZlcmNhY2hlX3BhcnRpdGlvbnMgRlJPTSBQVUJMSUM7CiAKIEdSQU5UIEVYRUNVVEUg T04gRlVOQ1RJT04gcGdfYnVmZmVyY2FjaGVfcGFydGl0aW9ucygpIFRPIHBnX21vbml0b3I7 CiBHUkFOVCBTRUxFQ1QgT04gcGdfYnVmZmVyY2FjaGVfcGFydGl0aW9ucyBUTyBwZ19tb25p dG9yOworCistLSBSZWdpc3RlciB0aGUgbmV3IGZ1bmN0aW9ucy4KK0NSRUFURSBPUiBSRVBM QUNFIEZVTkNUSU9OIHBnX2J1ZmZlcmNhY2hlX3BncHJvYygpCitSRVRVUk5TIFNFVE9GIFJF Q09SRAorQVMgJ01PRFVMRV9QQVRITkFNRScsICdwZ19idWZmZXJjYWNoZV9wZ3Byb2MnCitM QU5HVUFHRSBDIFBBUkFMTEVMIFNBRkU7CisKKy0tIENyZWF0ZSBhIHZpZXcgZm9yIGNvbnZl bmllbnQgYWNjZXNzLgorQ1JFQVRFIFZJRVcgcGdfYnVmZmVyY2FjaGVfcGdwcm9jIEFTCisJ U0VMRUNUIFAuKiBGUk9NIHBnX2J1ZmZlcmNhY2hlX3BncHJvYygpIEFTIFAKKwkocGFydGl0 aW9uIGludGVnZXIsCisJIG51bWFfbm9kZSBpbnRlZ2VyLCBudW1fcHJvY3MgaW50ZWdlciwg cGdwcm9jX3B0ciBiaWdpbnQsIGZhc3RwYXRoX3B0ciBiaWdpbnQpOworCistLSBEb24ndCB3 YW50IHRoZXNlIHRvIGJlIGF2YWlsYWJsZSB0byBwdWJsaWMuCitSRVZPS0UgQUxMIE9OIEZV TkNUSU9OIHBnX2J1ZmZlcmNhY2hlX3BncHJvYygpIEZST00gUFVCTElDOworUkVWT0tFIEFM TCBPTiBwZ19idWZmZXJjYWNoZV9wZ3Byb2MgRlJPTSBQVUJMSUM7CisKK0dSQU5UIEVYRUNV VEUgT04gRlVOQ1RJT04gcGdfYnVmZmVyY2FjaGVfcGdwcm9jKCkgVE8gcGdfbW9uaXRvcjsK K0dSQU5UIFNFTEVDVCBPTiBwZ19idWZmZXJjYWNoZV9wZ3Byb2MgVE8gcGdfbW9uaXRvcjsK ZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfYnVmZmVyY2FjaGUvcGdfYnVmZmVyY2FjaGVfcGFn ZXMuYyBiL2NvbnRyaWIvcGdfYnVmZmVyY2FjaGUvcGdfYnVmZmVyY2FjaGVfcGFnZXMuYwpp bmRleCA1MTY5NjU1YWU3OC4uMjIzOTZmMzZjMDkgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdf YnVmZmVyY2FjaGUvcGdfYnVmZmVyY2FjaGVfcGFnZXMuYworKysgYi9jb250cmliL3BnX2J1 ZmZlcmNhY2hlL3BnX2J1ZmZlcmNhY2hlX3BhZ2VzLmMKQEAgLTE1LDYgKzE1LDcgQEAKICNp bmNsdWRlICJwb3J0L3BnX251bWEuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zl9pbnRlcm5h bHMuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgorI2luY2x1ZGUgInN0b3JhZ2Uv cHJvYy5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgogCiAKQEAgLTI4LDYgKzI5LDcgQEAK IAogI2RlZmluZSBOVU1fQlVGRkVSQ0FDSEVfTlVNQV9FTEVNCTMKICNkZWZpbmUgTlVNX0JV RkZFUkNBQ0hFX1BBUlRJVElPTlNfRUxFTQkxMQorI2RlZmluZSBOVU1fQlVGRkVSQ0FDSEVf UEdQUk9DX0VMRU0gNQogCiBQR19NT0RVTEVfTUFHSUNfRVhUKAogCQkJCQkubmFtZSA9ICJw Z19idWZmZXJjYWNoZSIsCkBAIC0xMDIsNiArMTA0LDcgQEAgUEdfRlVOQ1RJT05fSU5GT19W MShwZ19idWZmZXJjYWNoZV9ldmljdCk7CiBQR19GVU5DVElPTl9JTkZPX1YxKHBnX2J1ZmZl cmNhY2hlX2V2aWN0X3JlbGF0aW9uKTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEocGdfYnVmZmVy Y2FjaGVfZXZpY3RfYWxsKTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEocGdfYnVmZmVyY2FjaGVf cGFydGl0aW9ucyk7CitQR19GVU5DVElPTl9JTkZPX1YxKHBnX2J1ZmZlcmNhY2hlX3BncHJv Yyk7CiAKIAogLyogT25seSBuZWVkIHRvIHRvdWNoIG1lbW9yeSBvbmNlIHBlciBiYWNrZW5k IHByb2Nlc3MgbGlmZXRpbWUgKi8KQEAgLTkwNSwzICs5MDgsOTQgQEAgcGdfYnVmZmVyY2Fj aGVfcGFydGl0aW9ucyhQR19GVU5DVElPTl9BUkdTKQogCWVsc2UKIAkJU1JGX1JFVFVSTl9E T05FKGZ1bmNjdHgpOwogfQorCisvKgorICogSW5xdWlyZSBhYm91dCBwYXJ0aXRpb25pbmcg b2YgUEdQUk9DIGFycmF5LgorICovCitEYXR1bQorcGdfYnVmZmVyY2FjaGVfcGdwcm9jKFBH X0ZVTkNUSU9OX0FSR1MpCit7CisJRnVuY0NhbGxDb250ZXh0ICpmdW5jY3R4OworCU1lbW9y eUNvbnRleHQgb2xkY29udGV4dDsKKwlUdXBsZURlc2MJdHVwbGVkZXNjOworCVR1cGxlRGVz YwlleHBlY3RlZF90dXBsZWRlc2M7CisJSGVhcFR1cGxlCXR1cGxlOworCURhdHVtCQlyZXN1 bHQ7CisKKwlpZiAoU1JGX0lTX0ZJUlNUQ0FMTCgpKQorCXsKKwkJZnVuY2N0eCA9IFNSRl9G SVJTVENBTExfSU5JVCgpOworCisJCS8qIFN3aXRjaCBjb250ZXh0IHdoZW4gYWxsb2NhdGlu ZyBzdHVmZiB0byBiZSB1c2VkIGluIGxhdGVyIGNhbGxzICovCisJCW9sZGNvbnRleHQgPSBN ZW1vcnlDb250ZXh0U3dpdGNoVG8oZnVuY2N0eC0+bXVsdGlfY2FsbF9tZW1vcnlfY3R4KTsK KworCQlpZiAoZ2V0X2NhbGxfcmVzdWx0X3R5cGUoZmNpbmZvLCBOVUxMLCAmZXhwZWN0ZWRf dHVwbGVkZXNjKSAhPSBUWVBFRlVOQ19DT01QT1NJVEUpCisJCQllbG9nKEVSUk9SLCAicmV0 dXJuIHR5cGUgbXVzdCBiZSBhIHJvdyB0eXBlIik7CisKKwkJaWYgKGV4cGVjdGVkX3R1cGxl ZGVzYy0+bmF0dHMgIT0gTlVNX0JVRkZFUkNBQ0hFX1BHUFJPQ19FTEVNKQorCQkJZWxvZyhF UlJPUiwgImluY29ycmVjdCBudW1iZXIgb2Ygb3V0cHV0IGFyZ3VtZW50cyIpOworCisJCS8q IENvbnN0cnVjdCBhIHR1cGxlIGRlc2NyaXB0b3IgZm9yIHRoZSByZXN1bHQgcm93cy4gKi8K KwkJdHVwbGVkZXNjID0gQ3JlYXRlVGVtcGxhdGVUdXBsZURlc2MoZXhwZWN0ZWRfdHVwbGVk ZXNjLT5uYXR0cyk7CisJCVR1cGxlRGVzY0luaXRFbnRyeSh0dXBsZWRlc2MsIChBdHRyTnVt YmVyKSAxLCAicGFydGl0aW9uIiwKKwkJCQkJCSAgIElOVDRPSUQsIC0xLCAwKTsKKwkJVHVw bGVEZXNjSW5pdEVudHJ5KHR1cGxlZGVzYywgKEF0dHJOdW1iZXIpIDIsICJudW1hX25vZGUi LAorCQkJCQkJICAgSU5UNE9JRCwgLTEsIDApOworCQlUdXBsZURlc2NJbml0RW50cnkodHVw bGVkZXNjLCAoQXR0ck51bWJlcikgMywgIm51bV9wcm9jcyIsCisJCQkJCQkgICBJTlQ0T0lE LCAtMSwgMCk7CisJCVR1cGxlRGVzY0luaXRFbnRyeSh0dXBsZWRlc2MsIChBdHRyTnVtYmVy KSA0LCAicGdwcm9jX3B0ciIsCisJCQkJCQkgICBJTlQ4T0lELCAtMSwgMCk7CisJCVR1cGxl RGVzY0luaXRFbnRyeSh0dXBsZWRlc2MsIChBdHRyTnVtYmVyKSA1LCAiZmFzdHBhdGhfcHRy IiwKKwkJCQkJCSAgIElOVDhPSUQsIC0xLCAwKTsKKworCQlmdW5jY3R4LT51c2VyX2ZjdHgg PSBCbGVzc1R1cGxlRGVzYyh0dXBsZWRlc2MpOworCisJCS8qIFJldHVybiB0byBvcmlnaW5h bCBjb250ZXh0IHdoZW4gYWxsb2NhdGluZyB0cmFuc2llbnQgbWVtb3J5ICovCisJCU1lbW9y eUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKKworCQkvKiBTZXQgbWF4IGNhbGxzIGFu ZCByZW1lbWJlciB0aGUgdXNlciBmdW5jdGlvbiBjb250ZXh0LiAqLworCQlmdW5jY3R4LT5t YXhfY2FsbHMgPSBQcm9jUGFydGl0aW9uQ291bnQoKTsKKwl9CisKKwlmdW5jY3R4ID0gU1JG X1BFUkNBTExfU0VUVVAoKTsKKworCWlmIChmdW5jY3R4LT5jYWxsX2NudHIgPCBmdW5jY3R4 LT5tYXhfY2FsbHMpCisJeworCQl1aW50MzIJCWkgPSBmdW5jY3R4LT5jYWxsX2NudHI7CisK KwkJaW50CQkJbnVtYV9ub2RlLAorCQkJCQludW1fcHJvY3M7CisKKwkJdm9pZAkgICAqcGdw cm9jX3B0ciwKKwkJCQkgICAqZmFzdHBhdGhfcHRyOworCisJCURhdHVtCQl2YWx1ZXNbTlVN X0JVRkZFUkNBQ0hFX1BHUFJPQ19FTEVNXTsKKwkJYm9vbAkJbnVsbHNbTlVNX0JVRkZFUkNB Q0hFX1BHUFJPQ19FTEVNXTsKKworCQlQcm9jUGFydGl0aW9uR2V0KGksICZudW1hX25vZGUs ICZudW1fcHJvY3MsCisJCQkJCQkgJnBncHJvY19wdHIsICZmYXN0cGF0aF9wdHIpOworCisJ CXZhbHVlc1swXSA9IEludDMyR2V0RGF0dW0oaSk7CisJCW51bGxzWzBdID0gZmFsc2U7CisK KwkJdmFsdWVzWzFdID0gSW50MzJHZXREYXR1bShudW1hX25vZGUpOworCQludWxsc1sxXSA9 IGZhbHNlOworCisJCXZhbHVlc1syXSA9IEludDMyR2V0RGF0dW0obnVtX3Byb2NzKTsKKwkJ bnVsbHNbMl0gPSBmYWxzZTsKKworCQl2YWx1ZXNbM10gPSBQb2ludGVyR2V0RGF0dW0ocGdw cm9jX3B0cik7CisJCW51bGxzWzNdID0gZmFsc2U7CisKKwkJdmFsdWVzWzRdID0gUG9pbnRl ckdldERhdHVtKGZhc3RwYXRoX3B0cik7CisJCW51bGxzWzRdID0gZmFsc2U7CisKKwkJLyog QnVpbGQgYW5kIHJldHVybiB0aGUgdHVwbGUuICovCisJCXR1cGxlID0gaGVhcF9mb3JtX3R1 cGxlKChUdXBsZURlc2MpIGZ1bmNjdHgtPnVzZXJfZmN0eCwgdmFsdWVzLCBudWxscyk7CisJ CXJlc3VsdCA9IEhlYXBUdXBsZUdldERhdHVtKHR1cGxlKTsKKworCQlTUkZfUkVUVVJOX05F WFQoZnVuY2N0eCwgcmVzdWx0KTsKKwl9CisJZWxzZQorCQlTUkZfUkVUVVJOX0RPTkUoZnVu Y2N0eCk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9jbG9n LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9jbG9nLmMKaW5kZXggZTgwZmJlMTA5 Y2YuLjkyOGQxMjZkMGVlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS9jbG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vY2xvZy5jCkBAIC01 NzQsNyArNTc0LDcgQEAgVHJhbnNhY3Rpb25Hcm91cFVwZGF0ZVhpZFN0YXR1cyhUcmFuc2Fj dGlvbklkIHhpZCwgWGlkU3RhdHVzIHN0YXR1cywKIAkvKiBXYWxrIHRoZSBsaXN0IGFuZCB1 cGRhdGUgdGhlIHN0YXR1cyBvZiBhbGwgWElEcy4gKi8KIAl3aGlsZSAobmV4dGlkeCAhPSBJ TlZBTElEX1BST0NfTlVNQkVSKQogCXsKLQkJUEdQUk9DCSAgICpuZXh0cHJvYyA9ICZQcm9j R2xvYmFsLT5hbGxQcm9jc1tuZXh0aWR4XTsKKwkJUEdQUk9DCSAgICpuZXh0cHJvYyA9IFBy b2NHbG9iYWwtPmFsbFByb2NzW25leHRpZHhdOwogCQlpbnQ2NAkJdGhpc3BhZ2VubyA9IG5l eHRwcm9jLT5jbG9nR3JvdXBNZW1iZXJQYWdlOwogCiAJCS8qCkBAIC02MzMsNyArNjMzLDcg QEAgVHJhbnNhY3Rpb25Hcm91cFVwZGF0ZVhpZFN0YXR1cyhUcmFuc2FjdGlvbklkIHhpZCwg WGlkU3RhdHVzIHN0YXR1cywKIAkgKi8KIAl3aGlsZSAod2FrZWlkeCAhPSBJTlZBTElEX1BS T0NfTlVNQkVSKQogCXsKLQkJUEdQUk9DCSAgICp3YWtlcHJvYyA9ICZQcm9jR2xvYmFsLT5h bGxQcm9jc1t3YWtlaWR4XTsKKwkJUEdQUk9DCSAgICp3YWtlcHJvYyA9IFByb2NHbG9iYWwt PmFsbFByb2NzW3dha2VpZHhdOwogCiAJCXdha2VpZHggPSBwZ19hdG9taWNfcmVhZF91MzIo Jndha2Vwcm9jLT5jbG9nR3JvdXBOZXh0KTsKIAkJcGdfYXRvbWljX3dyaXRlX3UzMigmd2Fr ZXByb2MtPmNsb2dHcm91cE5leHQsIElOVkFMSURfUFJPQ19OVU1CRVIpOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wZ2FyY2guYyBiL3NyYy9iYWNrZW5kL3Bvc3Rt YXN0ZXIvcGdhcmNoLmMKaW5kZXggNzhlMzllNWY4NjYuLmUyOGUwZjdkM2JkIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3BnYXJjaC5jCisrKyBiL3NyYy9iYWNrZW5k L3Bvc3RtYXN0ZXIvcGdhcmNoLmMKQEAgLTI4OSw3ICsyODksNyBAQCBQZ0FyY2hXYWtldXAo dm9pZCkKIAkgKiBiZSByZWxhdW5jaGVkIHNob3J0bHkgYW5kIHdpbGwgc3RhcnQgYXJjaGl2 aW5nLgogCSAqLwogCWlmIChhcmNoX3BncHJvY25vICE9IElOVkFMSURfUFJPQ19OVU1CRVIp Ci0JCVNldExhdGNoKCZQcm9jR2xvYmFsLT5hbGxQcm9jc1thcmNoX3BncHJvY25vXS5wcm9j TGF0Y2gpOworCQlTZXRMYXRjaCgmUHJvY0dsb2JhbC0+YWxsUHJvY3NbYXJjaF9wZ3Byb2Nu b10tPnByb2NMYXRjaCk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1h c3Rlci93YWxzdW1tYXJpemVyLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3dhbHN1bW1h cml6ZXIuYwppbmRleCA3NzdjOWE4ZDU1NS4uMDg3Mjc5YTZhOGUgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3Bvc3RtYXN0ZXIvd2Fsc3VtbWFyaXplci5jCisrKyBiL3NyYy9iYWNrZW5k L3Bvc3RtYXN0ZXIvd2Fsc3VtbWFyaXplci5jCkBAIC02NDksNyArNjQ5LDcgQEAgV2FrZXVw V2FsU3VtbWFyaXplcih2b2lkKQogCUxXTG9ja1JlbGVhc2UoV0FMU3VtbWFyaXplckxvY2sp OwogCiAJaWYgKHBncHJvY25vICE9IElOVkFMSURfUFJPQ19OVU1CRVIpCi0JCVNldExhdGNo KCZQcm9jR2xvYmFsLT5hbGxQcm9jc1twZ3Byb2Nub10ucHJvY0xhdGNoKTsKKwkJU2V0TGF0 Y2goJlByb2NHbG9iYWwtPmFsbFByb2NzW3BncHJvY25vXS0+cHJvY0xhdGNoKTsKIH0KIAog LyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zl9pbml0LmMg Yi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZfaW5pdC5jCmluZGV4IDViNjVhODU1 YjI5Li5mYjUyMDM5ZTFhNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZm ZXIvYnVmX2luaXQuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZfaW5p dC5jCkBAIC01MDAsOCArNTAwLDYgQEAgYnVmZmVyX3BhcnRpdGlvbnNfcHJlcGFyZSh2b2lk KQogCWlmIChudW1hX25vZGVzIDwgMSkKIAkJbnVtYV9ub2RlcyA9IDE7CiAKLQllbG9nKFdB Uk5JTkcsICJJc1VuZGVyUG9zdG1hc3RlciAlZCIsIElzVW5kZXJQb3N0bWFzdGVyKTsKLQog CS8qCiAJICogWFhYIEEgYml0IHdlaXJkLiBEbyB3ZSBuZWVkIHRvIHdvcnJ5IGFib3V0IHBv c3RtYXN0ZXI/IENvdWxkIHRoaXMgZXZlbgogCSAqIHJ1biBvdXRzaWRlIHBvc3RtYXN0ZXI/ IEkgZG9uJ3QgdGhpbmsgc28uCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1 ZmZlci9mcmVlbGlzdC5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvZnJlZWxpc3Qu YwppbmRleCBmZjAyZGM4ZTAwYi4uZDhkNjAyZjBhNGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvYnVmZmVyL2ZyZWVsaXN0LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFn ZS9idWZmZXIvZnJlZWxpc3QuYwpAQCAtNDE2LDcgKzQxNiw3IEBAIFN0cmF0ZWd5R2V0QnVm ZmVyKEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5LCB1aW50MzIgKmJ1Zl9zdGF0ZSwg Ym9vbCAqZnJvbV9yCiAJCSAqIGFjdHVhbGx5IGZpbmUgYmVjYXVzZSBwcm9jTGF0Y2ggaXNu J3QgZXZlciBmcmVlZCwgc28gd2UganVzdCBjYW4KIAkJICogcG90ZW50aWFsbHkgc2V0IHRo ZSB3cm9uZyBwcm9jZXNzJyAob3Igbm8gcHJvY2VzcycpIGxhdGNoLgogCQkgKi8KLQkJU2V0 TGF0Y2goJlByb2NHbG9iYWwtPmFsbFByb2NzW2Jnd3Byb2Nub10ucHJvY0xhdGNoKTsKKwkJ U2V0TGF0Y2goJlByb2NHbG9iYWwtPmFsbFByb2NzW2Jnd3Byb2Nub10tPnByb2NMYXRjaCk7 CiAJfQogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2Nh cnJheS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMKaW5kZXggYmY5 ODdhZWQ4ZDMuLjNlODZlNGNhMmFlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdl L2lwYy9wcm9jYXJyYXkuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJy YXkuYwpAQCAtMjY4LDcgKzI2OCw3IEBAIHR5cGVkZWYgZW51bSBLQVhDb21wcmVzc1JlYXNv bgogCiBzdGF0aWMgUHJvY0FycmF5U3RydWN0ICpwcm9jQXJyYXk7CiAKLXN0YXRpYyBQR1BS T0MgKmFsbFByb2NzOworc3RhdGljIFBHUFJPQyAqKmFsbFByb2NzOwogCiAvKgogICogQ2Fj aGUgdG8gcmVkdWNlIG92ZXJoZWFkIG9mIHJlcGVhdGVkIGNhbGxzIHRvIFRyYW5zYWN0aW9u SWRJc0luUHJvZ3Jlc3MoKQpAQCAtNTAyLDcgKzUwMiw3IEBAIFByb2NBcnJheUFkZChQR1BS T0MgKnByb2MpCiAJCWludAkJCXRoaXNfcHJvY25vID0gYXJyYXlQLT5wZ3Byb2Nub3NbaW5k ZXhdOwogCiAJCUFzc2VydCh0aGlzX3Byb2NubyA+PSAwICYmIHRoaXNfcHJvY25vIDwgKGFy cmF5UC0+bWF4UHJvY3MgKyBOVU1fQVVYSUxJQVJZX1BST0NTKSk7Ci0JCUFzc2VydChhbGxQ cm9jc1t0aGlzX3Byb2Nub10ucGd4YWN0b2ZmID09IGluZGV4KTsKKwkJQXNzZXJ0KGFsbFBy b2NzW3RoaXNfcHJvY25vXS0+cGd4YWN0b2ZmID09IGluZGV4KTsKIAogCQkvKiBJZiB3ZSBo YXZlIGZvdW5kIG91ciByaWdodCBwb3NpdGlvbiBpbiB0aGUgYXJyYXksIGJyZWFrICovCiAJ CWlmICh0aGlzX3Byb2NubyA+IHBncHJvY25vKQpAQCAtNTM4LDkgKzUzOCw5IEBAIFByb2NB cnJheUFkZChQR1BST0MgKnByb2MpCiAJCWludAkJCXByb2NubyA9IGFycmF5UC0+cGdwcm9j bm9zW2luZGV4XTsKIAogCQlBc3NlcnQocHJvY25vID49IDAgJiYgcHJvY25vIDwgKGFycmF5 UC0+bWF4UHJvY3MgKyBOVU1fQVVYSUxJQVJZX1BST0NTKSk7Ci0JCUFzc2VydChhbGxQcm9j c1twcm9jbm9dLnBneGFjdG9mZiA9PSBpbmRleCAtIDEpOworCQlBc3NlcnQoYWxsUHJvY3Nb cHJvY25vXS0+cGd4YWN0b2ZmID09IGluZGV4IC0gMSk7CiAKLQkJYWxsUHJvY3NbcHJvY25v XS5wZ3hhY3RvZmYgPSBpbmRleDsKKwkJYWxsUHJvY3NbcHJvY25vXS0+cGd4YWN0b2ZmID0g aW5kZXg7CiAJfQogCiAJLyoKQEAgLTU4MSw3ICs1ODEsNyBAQCBQcm9jQXJyYXlSZW1vdmUo UEdQUk9DICpwcm9jLCBUcmFuc2FjdGlvbklkIGxhdGVzdFhpZCkKIAlteW9mZiA9IHByb2Mt PnBneGFjdG9mZjsKIAogCUFzc2VydChteW9mZiA+PSAwICYmIG15b2ZmIDwgYXJyYXlQLT5u dW1Qcm9jcyk7Ci0JQXNzZXJ0KFByb2NHbG9iYWwtPmFsbFByb2NzW2FycmF5UC0+cGdwcm9j bm9zW215b2ZmXV0ucGd4YWN0b2ZmID09IG15b2ZmKTsKKwlBc3NlcnQoUHJvY0dsb2JhbC0+ YWxsUHJvY3NbYXJyYXlQLT5wZ3Byb2Nub3NbbXlvZmZdXS0+cGd4YWN0b2ZmID09IG15b2Zm KTsKIAogCWlmIChUcmFuc2FjdGlvbklkSXNWYWxpZChsYXRlc3RYaWQpKQogCXsKQEAgLTYz Niw5ICs2MzYsOSBAQCBQcm9jQXJyYXlSZW1vdmUoUEdQUk9DICpwcm9jLCBUcmFuc2FjdGlv bklkIGxhdGVzdFhpZCkKIAkJaW50CQkJcHJvY25vID0gYXJyYXlQLT5wZ3Byb2Nub3NbaW5k ZXhdOwogCiAJCUFzc2VydChwcm9jbm8gPj0gMCAmJiBwcm9jbm8gPCAoYXJyYXlQLT5tYXhQ cm9jcyArIE5VTV9BVVhJTElBUllfUFJPQ1MpKTsKLQkJQXNzZXJ0KGFsbFByb2NzW3Byb2Nu b10ucGd4YWN0b2ZmIC0gMSA9PSBpbmRleCk7CisJCUFzc2VydChhbGxQcm9jc1twcm9jbm9d LT5wZ3hhY3RvZmYgLSAxID09IGluZGV4KTsKIAotCQlhbGxQcm9jc1twcm9jbm9dLnBneGFj dG9mZiA9IGluZGV4OworCQlhbGxQcm9jc1twcm9jbm9dLT5wZ3hhY3RvZmYgPSBpbmRleDsK IAl9CiAKIAkvKgpAQCAtODYwLDcgKzg2MCw3IEBAIFByb2NBcnJheUdyb3VwQ2xlYXJYaWQo UEdQUk9DICpwcm9jLCBUcmFuc2FjdGlvbklkIGxhdGVzdFhpZCkKIAkvKiBXYWxrIHRoZSBs aXN0IGFuZCBjbGVhciBhbGwgWElEcy4gKi8KIAl3aGlsZSAobmV4dGlkeCAhPSBJTlZBTElE X1BST0NfTlVNQkVSKQogCXsKLQkJUEdQUk9DCSAgICpuZXh0cHJvYyA9ICZhbGxQcm9jc1tu ZXh0aWR4XTsKKwkJUEdQUk9DCSAgICpuZXh0cHJvYyA9IGFsbFByb2NzW25leHRpZHhdOwog CiAJCVByb2NBcnJheUVuZFRyYW5zYWN0aW9uSW50ZXJuYWwobmV4dHByb2MsIG5leHRwcm9j LT5wcm9jQXJyYXlHcm91cE1lbWJlclhpZCk7CiAKQEAgLTg4MCw3ICs4ODAsNyBAQCBQcm9j QXJyYXlHcm91cENsZWFyWGlkKFBHUFJPQyAqcHJvYywgVHJhbnNhY3Rpb25JZCBsYXRlc3RY aWQpCiAJICovCiAJd2hpbGUgKHdha2VpZHggIT0gSU5WQUxJRF9QUk9DX05VTUJFUikKIAl7 Ci0JCVBHUFJPQwkgICAqbmV4dHByb2MgPSAmYWxsUHJvY3Nbd2FrZWlkeF07CisJCVBHUFJP QwkgICAqbmV4dHByb2MgPSBhbGxQcm9jc1t3YWtlaWR4XTsKIAogCQl3YWtlaWR4ID0gcGdf YXRvbWljX3JlYWRfdTMyKCZuZXh0cHJvYy0+cHJvY0FycmF5R3JvdXBOZXh0KTsKIAkJcGdf YXRvbWljX3dyaXRlX3UzMigmbmV4dHByb2MtPnByb2NBcnJheUdyb3VwTmV4dCwgSU5WQUxJ RF9QUk9DX05VTUJFUik7CkBAIC0xNTI2LDcgKzE1MjYsNyBAQCBUcmFuc2FjdGlvbklkSXNJ blByb2dyZXNzKFRyYW5zYWN0aW9uSWQgeGlkKQogCQlweGlkcyA9IG90aGVyX3N1YnhpZHN0 YXRlc1twZ3hhY3RvZmZdLmNvdW50OwogCQlwZ19yZWFkX2JhcnJpZXIoKTsJCS8qIHBhaXJz IHdpdGggYmFycmllciBpbiBHZXROZXdUcmFuc2FjdGlvbklkKCkgKi8KIAkJcGdwcm9jbm8g PSBhcnJheVAtPnBncHJvY25vc1twZ3hhY3RvZmZdOwotCQlwcm9jID0gJmFsbFByb2NzW3Bn cHJvY25vXTsKKwkJcHJvYyA9IGFsbFByb2NzW3BncHJvY25vXTsKIAkJZm9yIChqID0gcHhp ZHMgLSAxOyBqID49IDA7IGotLSkKIAkJewogCQkJLyogRmV0Y2ggeGlkIGp1c3Qgb25jZSAt IHNlZSBHZXROZXdUcmFuc2FjdGlvbklkICovCkBAIC0xNjIyLDcgKzE2MjIsNiBAQCBUcmFu c2FjdGlvbklkSXNJblByb2dyZXNzKFRyYW5zYWN0aW9uSWQgeGlkKQogCXJldHVybiBmYWxz ZTsKIH0KIAotCiAvKgogICogRGV0ZXJtaW5lIFhJRCBob3Jpem9ucy4KICAqCkBAIC0xNzQw LDcgKzE3MzksNyBAQCBDb21wdXRlWGlkSG9yaXpvbnMoQ29tcHV0ZVhpZEhvcml6b25zUmVz dWx0ICpoKQogCWZvciAoaW50IGluZGV4ID0gMDsgaW5kZXggPCBhcnJheVAtPm51bVByb2Nz OyBpbmRleCsrKQogCXsKIAkJaW50CQkJcGdwcm9jbm8gPSBhcnJheVAtPnBncHJvY25vc1tp bmRleF07Ci0JCVBHUFJPQwkgICAqcHJvYyA9ICZhbGxQcm9jc1twZ3Byb2Nub107CisJCVBH UFJPQwkgICAqcHJvYyA9IGFsbFByb2NzW3BncHJvY25vXTsKIAkJaW50OAkJc3RhdHVzRmxh Z3MgPSBQcm9jR2xvYmFsLT5zdGF0dXNGbGFnc1tpbmRleF07CiAJCVRyYW5zYWN0aW9uSWQg eGlkOwogCQlUcmFuc2FjdGlvbklkIHhtaW47CkBAIC0yMjI0LDcgKzIyMjMsNyBAQCBHZXRT bmFwc2hvdERhdGEoU25hcHNob3Qgc25hcHNob3QpCiAJCQlUcmFuc2FjdGlvbklkIHhpZCA9 IFVJTlQzMl9BQ0NFU1NfT05DRShvdGhlcl94aWRzW3BneGFjdG9mZl0pOwogCQkJdWludDgJ CXN0YXR1c0ZsYWdzOwogCi0JCQlBc3NlcnQoYWxsUHJvY3NbYXJyYXlQLT5wZ3Byb2Nub3Nb cGd4YWN0b2ZmXV0ucGd4YWN0b2ZmID09IHBneGFjdG9mZik7CisJCQlBc3NlcnQoYWxsUHJv Y3NbYXJyYXlQLT5wZ3Byb2Nub3NbcGd4YWN0b2ZmXV0tPnBneGFjdG9mZiA9PSBwZ3hhY3Rv ZmYpOwogCiAJCQkvKgogCQkJICogSWYgdGhlIHRyYW5zYWN0aW9uIGhhcyBubyBYSUQgYXNz aWduZWQsIHdlIGNhbiBza2lwIGl0OyBpdApAQCAtMjI5OCw3ICsyMjk3LDcgQEAgR2V0U25h cHNob3REYXRhKFNuYXBzaG90IHNuYXBzaG90KQogCQkJCQlpZiAobnN1YnhpZHMgPiAwKQog CQkJCQl7CiAJCQkJCQlpbnQJCQlwZ3Byb2NubyA9IHBncHJvY25vc1twZ3hhY3RvZmZdOwot CQkJCQkJUEdQUk9DCSAgICpwcm9jID0gJmFsbFByb2NzW3BncHJvY25vXTsKKwkJCQkJCVBH UFJPQwkgICAqcHJvYyA9IGFsbFByb2NzW3BncHJvY25vXTsKIAogCQkJCQkJcGdfcmVhZF9i YXJyaWVyKCk7CS8qIHBhaXJzIHdpdGggR2V0TmV3VHJhbnNhY3Rpb25JZCAqLwogCkBAIC0y NDk5LDcgKzI0OTgsNyBAQCBQcm9jQXJyYXlJbnN0YWxsSW1wb3J0ZWRYbWluKFRyYW5zYWN0 aW9uSWQgeG1pbiwKIAlmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBhcnJheVAtPm51bVByb2Nz OyBpbmRleCsrKQogCXsKIAkJaW50CQkJcGdwcm9jbm8gPSBhcnJheVAtPnBncHJvY25vc1tp bmRleF07Ci0JCVBHUFJPQwkgICAqcHJvYyA9ICZhbGxQcm9jc1twZ3Byb2Nub107CisJCVBH UFJPQwkgICAqcHJvYyA9IGFsbFByb2NzW3BncHJvY25vXTsKIAkJaW50CQkJc3RhdHVzRmxh Z3MgPSBQcm9jR2xvYmFsLT5zdGF0dXNGbGFnc1tpbmRleF07CiAJCVRyYW5zYWN0aW9uSWQg eGlkOwogCkBAIC0yNzI1LDcgKzI3MjQsNyBAQCBHZXRSdW5uaW5nVHJhbnNhY3Rpb25EYXRh KHZvaWQpCiAJCWlmIChUcmFuc2FjdGlvbklkUHJlY2VkZXMoeGlkLCBvbGRlc3REYXRhYmFz ZVJ1bm5pbmdYaWQpKQogCQl7CiAJCQlpbnQJCQlwZ3Byb2NubyA9IGFycmF5UC0+cGdwcm9j bm9zW2luZGV4XTsKLQkJCVBHUFJPQwkgICAqcHJvYyA9ICZhbGxQcm9jc1twZ3Byb2Nub107 CisJCQlQR1BST0MJICAgKnByb2MgPSBhbGxQcm9jc1twZ3Byb2Nub107CiAKIAkJCWlmIChw cm9jLT5kYXRhYmFzZUlkID09IE15RGF0YWJhc2VJZCkKIAkJCQlvbGRlc3REYXRhYmFzZVJ1 bm5pbmdYaWQgPSB4aWQ7CkBAIC0yNzU2LDcgKzI3NTUsNyBAQCBHZXRSdW5uaW5nVHJhbnNh Y3Rpb25EYXRhKHZvaWQpCiAJCWZvciAoaW5kZXggPSAwOyBpbmRleCA8IGFycmF5UC0+bnVt UHJvY3M7IGluZGV4KyspCiAJCXsKIAkJCWludAkJCXBncHJvY25vID0gYXJyYXlQLT5wZ3By b2Nub3NbaW5kZXhdOwotCQkJUEdQUk9DCSAgICpwcm9jID0gJmFsbFByb2NzW3BncHJvY25v XTsKKwkJCVBHUFJPQwkgICAqcHJvYyA9IGFsbFByb2NzW3BncHJvY25vXTsKIAkJCWludAkJ CW5zdWJ4aWRzOwogCiAJCQkvKgpAQCAtMjg1OCw3ICsyODU3LDcgQEAgR2V0T2xkZXN0QWN0 aXZlVHJhbnNhY3Rpb25JZChib29sIGluQ29tbWl0T25seSwgYm9vbCBhbGxEYnMpCiAJewog CQlUcmFuc2FjdGlvbklkIHhpZDsKIAkJaW50CQkJcGdwcm9jbm8gPSBhcnJheVAtPnBncHJv Y25vc1tpbmRleF07Ci0JCVBHUFJPQwkgICAqcHJvYyA9ICZhbGxQcm9jc1twZ3Byb2Nub107 CisJCVBHUFJPQwkgICAqcHJvYyA9IGFsbFByb2NzW3BncHJvY25vXTsKIAogCQkvKiBGZXRj aCB4aWQganVzdCBvbmNlIC0gc2VlIEdldE5ld1RyYW5zYWN0aW9uSWQgKi8KIAkJeGlkID0g VUlOVDMyX0FDQ0VTU19PTkNFKG90aGVyX3hpZHNbaW5kZXhdKTsKQEAgLTMwMjAsNyArMzAx OSw3IEBAIEdldFZpcnR1YWxYSURzRGVsYXlpbmdDaGtwdChpbnQgKm52eGlkcywgaW50IHR5 cGUpCiAJZm9yIChpbmRleCA9IDA7IGluZGV4IDwgYXJyYXlQLT5udW1Qcm9jczsgaW5kZXgr KykKIAl7CiAJCWludAkJCXBncHJvY25vID0gYXJyYXlQLT5wZ3Byb2Nub3NbaW5kZXhdOwot CQlQR1BST0MJICAgKnByb2MgPSAmYWxsUHJvY3NbcGdwcm9jbm9dOworCQlQR1BST0MJICAg KnByb2MgPSBhbGxQcm9jc1twZ3Byb2Nub107CiAKIAkJaWYgKChwcm9jLT5kZWxheUNoa3B0 RmxhZ3MgJiB0eXBlKSAhPSAwKQogCQl7CkBAIC0zMDYxLDcgKzMwNjAsNyBAQCBIYXZlVmly dHVhbFhJRHNEZWxheWluZ0Noa3B0KFZpcnR1YWxUcmFuc2FjdGlvbklkICp2eGlkcywgaW50 IG52eGlkcywgaW50IHR5cGUpCiAJZm9yIChpbmRleCA9IDA7IGluZGV4IDwgYXJyYXlQLT5u dW1Qcm9jczsgaW5kZXgrKykKIAl7CiAJCWludAkJCXBncHJvY25vID0gYXJyYXlQLT5wZ3By b2Nub3NbaW5kZXhdOwotCQlQR1BST0MJICAgKnByb2MgPSAmYWxsUHJvY3NbcGdwcm9jbm9d OworCQlQR1BST0MJICAgKnByb2MgPSBhbGxQcm9jc1twZ3Byb2Nub107CiAJCVZpcnR1YWxU cmFuc2FjdGlvbklkIHZ4aWQ7CiAKIAkJR0VUX1ZYSURfRlJPTV9QR1BST0ModnhpZCwgKnBy b2MpOwpAQCAtMzE4OSw3ICszMTg4LDcgQEAgQmFja2VuZFBpZEdldFByb2NXaXRoTG9jayhp bnQgcGlkKQogCiAJZm9yIChpbmRleCA9IDA7IGluZGV4IDwgYXJyYXlQLT5udW1Qcm9jczsg aW5kZXgrKykKIAl7Ci0JCVBHUFJPQwkgICAqcHJvYyA9ICZhbGxQcm9jc1thcnJheVAtPnBn cHJvY25vc1tpbmRleF1dOworCQlQR1BST0MJICAgKnByb2MgPSBhbGxQcm9jc1thcnJheVAt PnBncHJvY25vc1tpbmRleF1dOwogCiAJCWlmIChwcm9jLT5waWQgPT0gcGlkKQogCQl7CkBA IC0zMjMyLDcgKzMyMzEsNyBAQCBCYWNrZW5kWGlkR2V0UGlkKFRyYW5zYWN0aW9uSWQgeGlk KQogCQlpZiAob3RoZXJfeGlkc1tpbmRleF0gPT0geGlkKQogCQl7CiAJCQlpbnQJCQlwZ3By b2NubyA9IGFycmF5UC0+cGdwcm9jbm9zW2luZGV4XTsKLQkJCVBHUFJPQwkgICAqcHJvYyA9 ICZhbGxQcm9jc1twZ3Byb2Nub107CisJCQlQR1BST0MJICAgKnByb2MgPSBhbGxQcm9jc1tw Z3Byb2Nub107CiAKIAkJCXJlc3VsdCA9IHByb2MtPnBpZDsKIAkJCWJyZWFrOwpAQCAtMzMw MSw3ICszMzAwLDcgQEAgR2V0Q3VycmVudFZpcnR1YWxYSURzKFRyYW5zYWN0aW9uSWQgbGlt aXRYbWluLCBib29sIGV4Y2x1ZGVYbWluMCwKIAlmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBh cnJheVAtPm51bVByb2NzOyBpbmRleCsrKQogCXsKIAkJaW50CQkJcGdwcm9jbm8gPSBhcnJh eVAtPnBncHJvY25vc1tpbmRleF07Ci0JCVBHUFJPQwkgICAqcHJvYyA9ICZhbGxQcm9jc1tw Z3Byb2Nub107CisJCVBHUFJPQwkgICAqcHJvYyA9IGFsbFByb2NzW3BncHJvY25vXTsKIAkJ dWludDgJCXN0YXR1c0ZsYWdzID0gUHJvY0dsb2JhbC0+c3RhdHVzRmxhZ3NbaW5kZXhdOwog CiAJCWlmIChwcm9jID09IE15UHJvYykKQEAgLTM0MDMsNyArMzQwMiw3IEBAIEdldENvbmZs aWN0aW5nVmlydHVhbFhJRHMoVHJhbnNhY3Rpb25JZCBsaW1pdFhtaW4sIE9pZCBkYk9pZCkK IAlmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBhcnJheVAtPm51bVByb2NzOyBpbmRleCsrKQog CXsKIAkJaW50CQkJcGdwcm9jbm8gPSBhcnJheVAtPnBncHJvY25vc1tpbmRleF07Ci0JCVBH UFJPQwkgICAqcHJvYyA9ICZhbGxQcm9jc1twZ3Byb2Nub107CisJCVBHUFJPQwkgICAqcHJv YyA9IGFsbFByb2NzW3BncHJvY25vXTsKIAogCQkvKiBFeGNsdWRlIHByZXBhcmVkIHRyYW5z YWN0aW9ucyAqLwogCQlpZiAocHJvYy0+cGlkID09IDApCkBAIC0zNDY4LDcgKzM0NjcsNyBA QCBTaWduYWxWaXJ0dWFsVHJhbnNhY3Rpb24oVmlydHVhbFRyYW5zYWN0aW9uSWQgdnhpZCwg UHJvY1NpZ25hbFJlYXNvbiBzaWdtb2RlLAogCWZvciAoaW5kZXggPSAwOyBpbmRleCA8IGFy cmF5UC0+bnVtUHJvY3M7IGluZGV4KyspCiAJewogCQlpbnQJCQlwZ3Byb2NubyA9IGFycmF5 UC0+cGdwcm9jbm9zW2luZGV4XTsKLQkJUEdQUk9DCSAgICpwcm9jID0gJmFsbFByb2NzW3Bn cHJvY25vXTsKKwkJUEdQUk9DCSAgICpwcm9jID0gYWxsUHJvY3NbcGdwcm9jbm9dOwogCQlW aXJ0dWFsVHJhbnNhY3Rpb25JZCBwcm9jdnhpZDsKIAogCQlHRVRfVlhJRF9GUk9NX1BHUFJP Qyhwcm9jdnhpZCwgKnByb2MpOwpAQCAtMzUyMyw3ICszNTIyLDcgQEAgTWluaW11bUFjdGl2 ZUJhY2tlbmRzKGludCBtaW4pCiAJZm9yIChpbmRleCA9IDA7IGluZGV4IDwgYXJyYXlQLT5u dW1Qcm9jczsgaW5kZXgrKykKIAl7CiAJCWludAkJCXBncHJvY25vID0gYXJyYXlQLT5wZ3By b2Nub3NbaW5kZXhdOwotCQlQR1BST0MJICAgKnByb2MgPSAmYWxsUHJvY3NbcGdwcm9jbm9d OworCQlQR1BST0MJICAgKnByb2MgPSBhbGxQcm9jc1twZ3Byb2Nub107CiAKIAkJLyoKIAkJ ICogU2luY2Ugd2UncmUgbm90IGhvbGRpbmcgYSBsb2NrLCBuZWVkIHRvIGJlIHByZXBhcmVk IHRvIGRlYWwgd2l0aApAQCAtMzU2OSw3ICszNTY4LDcgQEAgQ291bnREQkJhY2tlbmRzKE9p ZCBkYXRhYmFzZWlkKQogCWZvciAoaW5kZXggPSAwOyBpbmRleCA8IGFycmF5UC0+bnVtUHJv Y3M7IGluZGV4KyspCiAJewogCQlpbnQJCQlwZ3Byb2NubyA9IGFycmF5UC0+cGdwcm9jbm9z W2luZGV4XTsKLQkJUEdQUk9DCSAgICpwcm9jID0gJmFsbFByb2NzW3BncHJvY25vXTsKKwkJ UEdQUk9DCSAgICpwcm9jID0gYWxsUHJvY3NbcGdwcm9jbm9dOwogCiAJCWlmIChwcm9jLT5w aWQgPT0gMCkKIAkJCWNvbnRpbnVlOwkJCS8qIGRvIG5vdCBjb3VudCBwcmVwYXJlZCB4YWN0 cyAqLwpAQCAtMzU5OCw3ICszNTk3LDcgQEAgQ291bnREQkNvbm5lY3Rpb25zKE9pZCBkYXRh YmFzZWlkKQogCWZvciAoaW5kZXggPSAwOyBpbmRleCA8IGFycmF5UC0+bnVtUHJvY3M7IGlu ZGV4KyspCiAJewogCQlpbnQJCQlwZ3Byb2NubyA9IGFycmF5UC0+cGdwcm9jbm9zW2luZGV4 XTsKLQkJUEdQUk9DCSAgICpwcm9jID0gJmFsbFByb2NzW3BncHJvY25vXTsKKwkJUEdQUk9D CSAgICpwcm9jID0gYWxsUHJvY3NbcGdwcm9jbm9dOwogCiAJCWlmIChwcm9jLT5waWQgPT0g MCkKIAkJCWNvbnRpbnVlOwkJCS8qIGRvIG5vdCBjb3VudCBwcmVwYXJlZCB4YWN0cyAqLwpA QCAtMzYyOSw3ICszNjI4LDcgQEAgQ2FuY2VsREJCYWNrZW5kcyhPaWQgZGF0YWJhc2VpZCwg UHJvY1NpZ25hbFJlYXNvbiBzaWdtb2RlLCBib29sIGNvbmZsaWN0UGVuZGluZykKIAlmb3Ig KGluZGV4ID0gMDsgaW5kZXggPCBhcnJheVAtPm51bVByb2NzOyBpbmRleCsrKQogCXsKIAkJ aW50CQkJcGdwcm9jbm8gPSBhcnJheVAtPnBncHJvY25vc1tpbmRleF07Ci0JCVBHUFJPQwkg ICAqcHJvYyA9ICZhbGxQcm9jc1twZ3Byb2Nub107CisJCVBHUFJPQwkgICAqcHJvYyA9IGFs bFByb2NzW3BncHJvY25vXTsKIAogCQlpZiAoZGF0YWJhc2VpZCA9PSBJbnZhbGlkT2lkIHx8 IHByb2MtPmRhdGFiYXNlSWQgPT0gZGF0YWJhc2VpZCkKIAkJewpAQCAtMzY3MCw3ICszNjY5 LDcgQEAgQ291bnRVc2VyQmFja2VuZHMoT2lkIHJvbGVpZCkKIAlmb3IgKGluZGV4ID0gMDsg aW5kZXggPCBhcnJheVAtPm51bVByb2NzOyBpbmRleCsrKQogCXsKIAkJaW50CQkJcGdwcm9j bm8gPSBhcnJheVAtPnBncHJvY25vc1tpbmRleF07Ci0JCVBHUFJPQwkgICAqcHJvYyA9ICZh bGxQcm9jc1twZ3Byb2Nub107CisJCVBHUFJPQwkgICAqcHJvYyA9IGFsbFByb2NzW3BncHJv Y25vXTsKIAogCQlpZiAocHJvYy0+cGlkID09IDApCiAJCQljb250aW51ZTsJCQkvKiBkbyBu b3QgY291bnQgcHJlcGFyZWQgeGFjdHMgKi8KQEAgLTM3MzMsNyArMzczMiw3IEBAIENvdW50 T3RoZXJEQkJhY2tlbmRzKE9pZCBkYXRhYmFzZUlkLCBpbnQgKm5iYWNrZW5kcywgaW50ICpu cHJlcGFyZWQpCiAJCWZvciAoaW5kZXggPSAwOyBpbmRleCA8IGFycmF5UC0+bnVtUHJvY3M7 IGluZGV4KyspCiAJCXsKIAkJCWludAkJCXBncHJvY25vID0gYXJyYXlQLT5wZ3Byb2Nub3Nb aW5kZXhdOwotCQkJUEdQUk9DCSAgICpwcm9jID0gJmFsbFByb2NzW3BncHJvY25vXTsKKwkJ CVBHUFJPQwkgICAqcHJvYyA9IGFsbFByb2NzW3BncHJvY25vXTsKIAkJCXVpbnQ4CQlzdGF0 dXNGbGFncyA9IFByb2NHbG9iYWwtPnN0YXR1c0ZsYWdzW2luZGV4XTsKIAogCQkJaWYgKHBy b2MtPmRhdGFiYXNlSWQgIT0gZGF0YWJhc2VJZCkKQEAgLTM3OTksNyArMzc5OCw3IEBAIFRl cm1pbmF0ZU90aGVyREJCYWNrZW5kcyhPaWQgZGF0YWJhc2VJZCkKIAlmb3IgKGkgPSAwOyBp IDwgcHJvY0FycmF5LT5udW1Qcm9jczsgaSsrKQogCXsKIAkJaW50CQkJcGdwcm9jbm8gPSBh cnJheVAtPnBncHJvY25vc1tpXTsKLQkJUEdQUk9DCSAgICpwcm9jID0gJmFsbFByb2NzW3Bn cHJvY25vXTsKKwkJUEdQUk9DCSAgICpwcm9jID0gYWxsUHJvY3NbcGdwcm9jbm9dOwogCiAJ CWlmIChwcm9jLT5kYXRhYmFzZUlkICE9IGRhdGFiYXNlSWQpCiAJCQljb250aW51ZTsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sb2NrLmMgYi9zcmMvYmFja2Vu ZC9zdG9yYWdlL2xtZ3IvbG9jay5jCmluZGV4IDYyZjM0NzE0NDhlLi5jODRhMmE1ZjFiYyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xvY2suYworKysgYi9zcmMv YmFja2VuZC9zdG9yYWdlL2xtZ3IvbG9jay5jCkBAIC0yODQ0LDcgKzI4NDQsNyBAQCBGYXN0 UGF0aFRyYW5zZmVyUmVsYXRpb25Mb2NrcyhMb2NrTWV0aG9kIGxvY2tNZXRob2RUYWJsZSwg Y29uc3QgTE9DS1RBRyAqbG9ja3RhZwogCSAqLwogCWZvciAoaSA9IDA7IGkgPCBQcm9jR2xv YmFsLT5hbGxQcm9jQ291bnQ7IGkrKykKIAl7Ci0JCVBHUFJPQwkgICAqcHJvYyA9ICZQcm9j R2xvYmFsLT5hbGxQcm9jc1tpXTsKKwkJUEdQUk9DCSAgICpwcm9jID0gUHJvY0dsb2JhbC0+ YWxsUHJvY3NbaV07CiAJCXVpbnQzMgkJajsKIAogCQlMV0xvY2tBY3F1aXJlKCZwcm9jLT5m cEluZm9Mb2NrLCBMV19FWENMVVNJVkUpOwpAQCAtMzEwMyw3ICszMTAzLDcgQEAgR2V0TG9j a0NvbmZsaWN0cyhjb25zdCBMT0NLVEFHICpsb2NrdGFnLCBMT0NLTU9ERSBsb2NrbW9kZSwg aW50ICpjb3VudHApCiAJCSAqLwogCQlmb3IgKGkgPSAwOyBpIDwgUHJvY0dsb2JhbC0+YWxs UHJvY0NvdW50OyBpKyspCiAJCXsKLQkJCVBHUFJPQwkgICAqcHJvYyA9ICZQcm9jR2xvYmFs LT5hbGxQcm9jc1tpXTsKKwkJCVBHUFJPQwkgICAqcHJvYyA9IFByb2NHbG9iYWwtPmFsbFBy b2NzW2ldOwogCQkJdWludDMyCQlqOwogCiAJCQkvKiBBIGJhY2tlbmQgbmV2ZXIgYmxvY2tz IGl0c2VsZiAqLwpAQCAtMzc5MCw3ICszNzkwLDcgQEAgR2V0TG9ja1N0YXR1c0RhdGEodm9p ZCkKIAkgKi8KIAlmb3IgKGkgPSAwOyBpIDwgUHJvY0dsb2JhbC0+YWxsUHJvY0NvdW50OyAr K2kpCiAJewotCQlQR1BST0MJICAgKnByb2MgPSAmUHJvY0dsb2JhbC0+YWxsUHJvY3NbaV07 CisJCVBHUFJPQwkgICAqcHJvYyA9IFByb2NHbG9iYWwtPmFsbFByb2NzW2ldOwogCiAJCS8q IFNraXAgYmFja2VuZHMgd2l0aCBwaWQ9MCwgYXMgdGhleSBkb24ndCBob2xkIGZhc3QtcGF0 aCBsb2NrcyAqLwogCQlpZiAocHJvYy0+cGlkID09IDApCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3By b2MuYwppbmRleCBlOWVmMGZiZmUzMi4uMTEyNTkxNTFhN2QgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9s bWdyL3Byb2MuYwpAQCAtMjksMjEgKzI5LDI5IEBACiAgKi8KICNpbmNsdWRlICJwb3N0Z3Jl cy5oIgogCisjaW5jbHVkZSA8c2NoZWQuaD4KICNpbmNsdWRlIDxzaWduYWwuaD4KICNpbmNs dWRlIDx1bmlzdGQuaD4KICNpbmNsdWRlIDxzeXMvdGltZS5oPgogCisjaWZkZWYgVVNFX0xJ Qk5VTUEKKyNpbmNsdWRlIDxudW1hLmg+CisjaW5jbHVkZSA8bnVtYWlmLmg+CisjZW5kaWYK KwogI2luY2x1ZGUgImFjY2Vzcy90cmFuc2FtLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3R3b3Bo YXNlLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2d1dGlscy5oIgogI2luY2x1ZGUgIm1pc2Nh ZG1pbi5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgorI2luY2x1ZGUgInBvcnQvcGdfbnVtYS5o IgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5oIgogI2luY2x1ZGUgInJlcGxp Y2F0aW9uL3Nsb3RzeW5jLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vc3luY3JlcC5oIgog I2luY2x1ZGUgInN0b3JhZ2UvY29uZGl0aW9uX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9pcGMuaCIKICNpbmNsdWRlICJzdG9yYWdlL2xtZ3IuaCIKKyNpbmNsdWRlICJzdG9y YWdlL3BnX3NobWVtLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wbXNpZ25hbC5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY2FycmF5LmgiCkBA IC05MCw2ICs5OCwzMSBAQCBzdGF0aWMgdm9pZCBBdXhpbGlhcnlQcm9jS2lsbChpbnQgY29k ZSwgRGF0dW0gYXJnKTsKIHN0YXRpYyB2b2lkIENoZWNrRGVhZExvY2sodm9pZCk7CiAKIAor LyogbnVtYmVyIG9mIE5VTUEgbm9kZXMgKGFzIHJldHVybmVkIGJ5IG51bWFfbnVtX2NvbmZp Z3VyZWRfbm9kZXMpICovCitzdGF0aWMgaW50CW51bWFfbm9kZXMgPSAtMTsJLyogbnVtYmVy IG9mIG5vZGVzIHdoZW4gc2l6aW5nICovCitzdGF0aWMgU2l6ZSBudW1hX3BhZ2Vfc2l6ZSA9 IDA7IC8qIHBhZ2UgdXNlZCB0byBzaXplIHBhcnRpdGlvbnMgKi8KK3N0YXRpYyBib29sIG51 bWFfY2FuX3BhcnRpdGlvbiA9IGZhbHNlOyAvKiBjYW4gbWFwIHRvIE5VTUEgbm9kZXM/ICov CitzdGF0aWMgaW50CW51bWFfcHJvY3NfcGVyX25vZGUgPSAtMTsJLyogcGdwcm9jcyBwZXIg bm9kZSAqLworCitzdGF0aWMgU2l6ZSBnZXRfbWVtb3J5X3BhZ2Vfc2l6ZSh2b2lkKTsgLyog WFhYIGR1cGxpY2F0ZSB3aXRoIGJ1ZmlfaW5pdC5jICovCisKK3N0YXRpYyB2b2lkIHBncHJv Y19wYXJ0aXRpb25zX3ByZXBhcmUodm9pZCk7CitzdGF0aWMgY2hhciAqcGdwcm9jX3BhcnRp dGlvbl9pbml0KGNoYXIgKnB0ciwgaW50IG51bV9wcm9jcywKKwkJCQkJCQkJICAgaW50IGFs bHByb2NzX2luZGV4LCBpbnQgbm9kZSk7CitzdGF0aWMgY2hhciAqZmFzdHBhdGhfcGFydGl0 aW9uX2luaXQoY2hhciAqcHRyLCBpbnQgbnVtX3Byb2NzLAorCQkJCQkJCQkJIGludCBhbGxw cm9jc19pbmRleCwgaW50IG5vZGUsCisJCQkJCQkJCQkgU2l6ZSBmcExvY2tCaXRzU2l6ZSwg U2l6ZSBmcFJlbElkU2l6ZSk7CisKK3R5cGVkZWYgc3RydWN0IFBHUHJvY1BhcnRpdGlvbgor eworCWludAkJCW51bV9wcm9jczsKKwlpbnQJCQludW1hX25vZGU7CisJdm9pZAkgICAqcGdw cm9jX3B0cjsKKwl2b2lkCSAgICpmYXN0cGF0aF9wdHI7Cit9IFBHUHJvY1BhcnRpdGlvbjsK Kworc3RhdGljIFBHUHJvY1BhcnRpdGlvbiAqcGFydGl0aW9ucyA9IE5VTEw7CisKIC8qCiAg KiBSZXBvcnQgc2hhcmVkLW1lbW9yeSBzcGFjZSBuZWVkZWQgYnkgUEdQUk9DLgogICovCkBA IC0xMDAsMTEgKzEzMyw2MyBAQCBQR1Byb2NTaG1lbVNpemUodm9pZCkKIAlTaXplCQlUb3Rh bFByb2NzID0KIAkJYWRkX3NpemUoTWF4QmFja2VuZHMsIGFkZF9zaXplKE5VTV9BVVhJTElB UllfUFJPQ1MsIG1heF9wcmVwYXJlZF94YWN0cykpOwogCisJc2l6ZSA9IGFkZF9zaXplKHNp emUsIG11bF9zaXplKFRvdGFsUHJvY3MsIHNpemVvZihQR1BST0MgKikpKTsKIAlzaXplID0g YWRkX3NpemUoc2l6ZSwgbXVsX3NpemUoVG90YWxQcm9jcywgc2l6ZW9mKFBHUFJPQykpKTsK IAlzaXplID0gYWRkX3NpemUoc2l6ZSwgbXVsX3NpemUoVG90YWxQcm9jcywgc2l6ZW9mKCpQ cm9jR2xvYmFsLT54aWRzKSkpOwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBtdWxfc2l6ZShU b3RhbFByb2NzLCBzaXplb2YoKlByb2NHbG9iYWwtPnN1YnhpZFN0YXRlcykpKTsKIAlzaXpl ID0gYWRkX3NpemUoc2l6ZSwgbXVsX3NpemUoVG90YWxQcm9jcywgc2l6ZW9mKCpQcm9jR2xv YmFsLT5zdGF0dXNGbGFncykpKTsKIAorCS8qCisJICogVG8gc3VwcG9ydCBOVU1BIHBhcnRp dGlvbmluZywgdGhlIFBHUFJPQyBhcnJheSB3aWxsIGJlIGRpdmlkZWQgaW50bworCSAqIG11 bHRpcGxlIGNodW5rcyAtIG9uZSBwZXIgTlVNQSBub2RlLCBhbmQgb25lIGV4dHJhIGZvciBh dXhpbGlhcnkvMlBDCisJICogZW50cmllcyAod2hpY2ggYXJlIG5vdCBhc3NpZ25lZCB0byBh bnkgTlVNQSBub2RlKS4KKwkgKgorCSAqIFdlIGNhbid0IHNpbXBseSBtYXAgcGFnZXMgb2Yg YSBzaW5nbGUgY29udGludW91cyBhcnJheSwgYmVjYXVzZSB0aGUKKwkgKiBQR1BST0MgZW50 cmllcyBhcmUgdmVyeSBzbWFsbCBhbmQgdG9vIG1hbnkgb2YgdGhlbSB3b3VsZCBmaXQgb24g YQorCSAqIHNpbmdsZSBwYWdlIChhdCBsZWFzdCB3aXRoIGh1Z2UgcGFnZXMpLiBGYXIgbW9y ZSB0aGFuIHJlYXNvbmFibGUgdmFsdWVzCisJICogb2YgbWF4X2Nvbm5lY3Rpb25zLiBTbyBp bnN0ZWFkIHdlIGN1dCB0aGUgYXJyYXkgaW50byBzZXBhcmF0ZSBwaWVjZXMKKwkgKiBmb3Ig ZWFjaCBub2RlLgorCSAqCisJICogRWFjaCBwaWVjZSBtYXkgbmVlZCB1cCB0byBvbmUgbWVt b3J5IHBhZ2Ugb2YgcGFkZGluZywgdG8gbWFrZSBpdAorCSAqIGFsaWduZWQgd2l0aCBtZW1v cnkgcGFnZSAoZm9yIE5VTUEpLCBTbyB3ZSBqdXN0IGFkZCBhIHBhZ2UgLSBpdCdzIGEgYml0 CisJICogd2FzdGVmdWwsIGJ1dCBzaG91bGQgbm90IG1hdHRlciBtdWNoIC0gTlVNQSBpcyBt ZWFudCBmb3IgbGFyZ2UgYm94ZXMsCisJICogc28gYSBjb3VwbGUgcGFnZXMgaXMgbmVnbGln aWJsZS4KKwkgKgorCSAqIFdlIG9ubHkgZG8gdGhpcyB3aXRoIE5VTUEgcGFydGl0aW9uaW5n LiBXaXRoIHRoZSBHVUMgZGlzYWJsZWQsIG9yIHdoZW4KKwkgKiB3ZSBmaW5kIHdlIGNhbid0 IGRvIHRoYXQgZm9yIHNvbWUgcmVhc29uLCB3ZSBqdXN0IGFsbG9jYXRlIHRoZSBQR1BST0MK KwkgKiBhcnJheSBhcyBhIHNpbmdsZSBjaHVuay4gVGhpcyBpcyBkZXRlcm1pbmVkIGJ5IHRo ZSBlYXJsaWVyIGNhbGwgdG8KKwkgKiBwZ3Byb2NfcGFydGl0aW9uc19wcmVwYXJlKCkuCisJ ICoKKwkgKiBYWFggSXQgbWlnaHQgYmUgbW9yZSBwYWluZnVsIHdpdGggdmVyeSBsYXJnZSBo dWdlIHBhZ2VzIChlLmcuIDFHQikuCisJICovCisKKwkvKgorCSAqIElmIFBHUFJPQyBwYXJ0 aXRpb25pbmcgaXMgZW5hYmxlZCwgYW5kIHdlIGRlY2lkZWQgaXQncyBwb3NzaWJsZSwgd2UK KwkgKiBuZWVkIHRvIGFkZCBvbmUgbWVtb3J5IHBhZ2UgcGVyIE5VTUEgbm9kZSAoYW5kIG9u ZSBmb3IgYXV4aWxpYXJ5LzJQQworCSAqIHByb2Nlc3NlcykgdG8gYWxsb3cgcHJvcGVyIGFs aWdubWVudC4KKwkgKgorCSAqIFhYWCBUaGlzIGlzIGEgYSBiaXQgd2FzdGVmdWwsIGJlY2F1 c2UgaXQgbWlnaHQgYWN0dWFsbHkgYWRkIHBhZ2VzIGV2ZW4KKwkgKiB3aGVuIG5vdCBzdHJp Y3RseSBuZWVkZWQgKGlmIGl0J3MgYWxyZWFkeSBhbGlnbmVkKS4gQW5kIHdlIGFsd2F5cwor CSAqIGFzc3VtZSB3ZSdsbCBhZGQgYSB3aG9sZSBwYWdlLCBldmVuIGlmIHRoZSBhbGlnbm1l bnQgbmVlZHMgb25seSBsZXNzCisJICogbWVtb3J5LgorCSAqLworCWlmIChudW1hX3Byb2Nz X2ludGVybGVhdmUgJiYgbnVtYV9jYW5fcGFydGl0aW9uKQorCXsKKwkJQXNzZXJ0KG51bWFf bm9kZXMgPiAwKTsKKwkJc2l6ZSA9IGFkZF9zaXplKHNpemUsIG11bF9zaXplKChudW1hX25v ZGVzICsgMSksIG51bWFfcGFnZV9zaXplKSk7CisKKwkJLyoKKwkJICogQWxzbyBhY2NvdW50 IGZvciBhIHNtYWxsIHJlZ2lzdHJ5IG9mIHBhcnRpdGlvbnMsIGEgc2ltcGxlIGFycmF5IG9m CisJCSAqIHBhcnRpdGlvbnMgYXQgdGhlIGJlZ2lubmluZy4KKwkJICovCisJCXNpemUgPSBh ZGRfc2l6ZShzaXplLCBtdWxfc2l6ZSgobnVtYV9ub2RlcyArIDEpLCBzaXplb2YoUEdQcm9j UGFydGl0aW9uKSkpOworCX0KKwllbHNlCisJeworCQkvKiBvdGhlcndpc2UgYWRkIG9ubHkg YSB0aW55IHJlZ2lzdHJ5LCB3aXRoIGEgc2luZ2xlIHBhcnRpdGlvbiAqLworCQlzaXplID0g YWRkX3NpemUoc2l6ZSwgc2l6ZW9mKFBHUHJvY1BhcnRpdGlvbikpOworCX0KKwogCXJldHVy biBzaXplOwogfQogCkBAIC0xMjksNiArMjE0LDI1IEBAIEZhc3RQYXRoTG9ja1NobWVtU2l6 ZSh2b2lkKQogCiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIG11bF9zaXplKFRvdGFsUHJvY3Ms IChmcExvY2tCaXRzU2l6ZSArIGZwUmVsSWRTaXplKSkpOwogCisJLyoKKwkgKiBXaGVuIGFw cGx5aW5nIE5VTUEgdG8gdGhlIGZhc3QtcGF0aCBsb2Nrcywgd2UgZm9sbG93IHRoZSBzYW1l IGxvZ2ljIGFzCisJICogZm9yIFBHUFJPQyBlbnRyaWVzLiBTZWUgdGhlIGNvbW1lbnRzIGlu IFBHUHJvY1NobWVtU2l6ZSgpLgorCSAqCisJICogSWYgUEdQUk9DIHBhcnRpdGlvbmluZyBp cyBlbmFibGVkLCBhbmQgd2UgZGVjaWRlZCBpdCdzIHBvc3NpYmxlLCB3ZQorCSAqIG5lZWQg dG8gYWRkIG9uZSBtZW1vcnkgcGFnZSBwZXIgTlVNQSBub2RlIChhbmQgb25lIGZvciBhdXhp bGlhcnkvMlBDCisJICogcHJvY2Vzc2VzKSB0byBhbGxvdyBwcm9wZXIgYWxpZ25tZW50Lgor CSAqCisJICogWFhYIFRoaXMgaXMgYSBhIGJpdCB3YXN0ZWZ1bCwgYmVjYXVzZSBpdCBtaWdo dCBhY3R1YWxseSBhZGQgcGFnZXMgZXZlbgorCSAqIHdoZW4gbm90IHN0cmljdGx5IG5lZWRl ZCAoaWYgaXQncyBhbHJlYWR5IGFsaWduZWQpLiBBbmQgd2UgYWx3YXlzCisJICogYXNzdW1l IHdlJ2xsIGFkZCBhIHdob2xlIHBhZ2UsIGV2ZW4gaWYgdGhlIGFsaWdubWVudCBuZWVkcyBv bmx5IGxlc3MKKwkgKiBtZW1vcnkuCisJICovCisJaWYgKG51bWFfcHJvY3NfaW50ZXJsZWF2 ZSAmJiBudW1hX2Nhbl9wYXJ0aXRpb24pCisJeworCQlBc3NlcnQobnVtYV9ub2RlcyA+IDAp OworCQlzaXplID0gYWRkX3NpemUoc2l6ZSwgbXVsX3NpemUoKG51bWFfbm9kZXMgKyAxKSwg bnVtYV9wYWdlX3NpemUpKTsKKwl9CisKIAlyZXR1cm4gc2l6ZTsKIH0KIApAQCAtMTQwLDYg KzI0NCw5IEBAIFByb2NHbG9iYWxTaG1lbVNpemUodm9pZCkKIHsKIAlTaXplCQlzaXplID0g MDsKIAorCS8qIGNhbGN1bGF0ZSBwYXJ0aXRpb24gaW5mbyBmb3IgcGdwcm9jIGVudHJpZXMg ZXRjICovCisJcGdwcm9jX3BhcnRpdGlvbnNfcHJlcGFyZSgpOworCiAJLyogUHJvY0dsb2Jh bCAqLwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBzaXplb2YoUFJPQ19IRFIpKTsKIAlzaXpl ID0gYWRkX3NpemUoc2l6ZSwgc2l6ZW9mKHNsb2NrX3QpKTsKQEAgLTE5MSw3ICsyOTgsNyBA QCBQcm9jR2xvYmFsU2VtYXModm9pZCkKIHZvaWQKIEluaXRQcm9jR2xvYmFsKHZvaWQpCiB7 Ci0JUEdQUk9DCSAgICpwcm9jczsKKwlQR1BST0MJICAqKnByb2NzOwogCWludAkJCWksCiAJ CQkJajsKIAlib29sCQlmb3VuZDsKQEAgLTIwNSw2ICszMTIsOCBAQCBJbml0UHJvY0dsb2Jh bCh2b2lkKQogCVNpemUJCXJlcXVlc3RTaXplOwogCWNoYXIJICAgKnB0cjsKIAorCVNpemUJ CW1lbV9wYWdlX3NpemUgPSBnZXRfbWVtb3J5X3BhZ2Vfc2l6ZSgpOworCiAJLyogQ3JlYXRl IHRoZSBQcm9jR2xvYmFsIHNoYXJlZCBzdHJ1Y3R1cmUgKi8KIAlQcm9jR2xvYmFsID0gKFBS T0NfSERSICopCiAJCVNobWVtSW5pdFN0cnVjdCgiUHJvYyBIZWFkZXIiLCBzaXplb2YoUFJP Q19IRFIpLCAmZm91bmQpOwpAQCAtMjQxLDE5ICszNTAsMTE1IEBAIEluaXRQcm9jR2xvYmFs KHZvaWQpCiAKIAlNZW1TZXQocHRyLCAwLCByZXF1ZXN0U2l6ZSk7CiAKLQlwcm9jcyA9IChQ R1BST0MgKikgcHRyOwotCXB0ciA9IChjaGFyICopIHB0ciArIFRvdGFsUHJvY3MgKiBzaXpl b2YoUEdQUk9DKTsKKwkvKiBhbGxwcm9jcyAoYXJyYXkgb2YgcG9pbnRlcnMgdG8gUEdQUk9D IGVudHJpZXMpICovCisJcHJvY3MgPSAoUEdQUk9DICoqKSBwdHI7CisJcHRyID0gKGNoYXIg KikgcHRyICsgVG90YWxQcm9jcyAqIHNpemVvZihQR1BST0MgKik7CiAKIAlQcm9jR2xvYmFs LT5hbGxQcm9jcyA9IHByb2NzOwogCS8qIFhYWCBhbGxQcm9jQ291bnQgaXNuJ3QgcmVhbGx5 IGFsbCBvZiB0aGVtOyBpdCBleGNsdWRlcyBwcmVwYXJlZCB4YWN0cyAqLwogCVByb2NHbG9i YWwtPmFsbFByb2NDb3VudCA9IE1heEJhY2tlbmRzICsgTlVNX0FVWElMSUFSWV9QUk9DUzsK IAorCS8qCisJICogSWYgTlVNQSBwYXJ0aXRpb25pbmcgaXMgZW5hYmxlZCwgYW5kIHdlIGRl Y2lkZWQgd2UgYWN0dWFsbHkgY2FuIGRvIHRoZQorCSAqIHBhcnRpdGlvbmluZywgYWxsb2Nh dGUgdGhlIGNodW5rcy4KKwkgKgorCSAqIE90aGVyd2lzZSB3ZSdsbCBhbGxvY2F0ZSBhIHNp bmdsZSBhcnJheSBmb3IgZXZlcnl0aGluZy4gSXQncyBub3QgcXVpdGUKKwkgKiB3aGF0IHdl IGRpZCB3aXRob3V0IE5VTUEsIGJlY2F1c2UgdGhlcmUncyBhbiBleHRyYSBsZXZlbCBvZgor CSAqIGluZGlyZWN0aW9uLCBidXQgaXQncyB0aGUgYmVzdCB3ZSBjYW4gZG8uCisJICovCisJ aWYgKG51bWFfcHJvY3NfaW50ZXJsZWF2ZSAmJiBudW1hX2Nhbl9wYXJ0aXRpb24pCisJewor CQlpbnQJCQlub2RlX3Byb2NzOworCQlpbnQJCQl0b3RhbF9wcm9jcyA9IDA7CisKKwkJQXNz ZXJ0KG51bWFfcHJvY3NfcGVyX25vZGUgPiAwKTsKKwkJQXNzZXJ0KG51bWFfbm9kZXMgPiAw KTsKKworCQkvKgorCQkgKiBOb3cgaW5pdGlhbGl6ZSB0aGUgUEdQUk9DIHBhcnRpdGlvbiBy ZWdpc3RyeSB3aXRoIG9uZSBwYXJ0aXRvaW9uCisJCSAqIHBlciBOVU1BIG5vZGUuCisJCSAq LworCQlwYXJ0aXRpb25zID0gKFBHUHJvY1BhcnRpdGlvbiAqKSBwdHI7CisJCXB0ciArPSAo bnVtYV9ub2RlcyAqIHNpemVvZihQR1Byb2NQYXJ0aXRpb24pKTsKKworCQkvKiBidWlsZCBQ R1BST0MgZW50cmllcyBmb3IgTlVNQSBub2RlcyAqLworCQlmb3IgKGkgPSAwOyBpIDwgbnVt YV9ub2RlczsgaSsrKQorCQl7CisJCQkvKiB0aGUgbGFzdCBOVU1BIG5vZGUgbWF5IGdldCBm ZXdlciBQR1BST0MgZW50cmllcywgYnV0IG1laCAqLworCQkJbm9kZV9wcm9jcyA9IE1pbihu dW1hX3Byb2NzX3Blcl9ub2RlLCBNYXhCYWNrZW5kcyAtIHRvdGFsX3Byb2NzKTsKKworCQkJ LyogbWFrZSBzdXJlIHRvIGFsaWduIHRoZSBQR1BST0MgYXJyYXkgdG8gbWVtb3J5IHBhZ2Ug Ki8KKwkJCXB0ciA9IChjaGFyICopIFRZUEVBTElHTihudW1hX3BhZ2Vfc2l6ZSwgcHRyKTsK KworCQkJLyogZmlsbCBpbiB0aGUgcGFydGl0aW9uIGluZm8gKi8KKwkJCXBhcnRpdGlvbnNb aV0ubnVtX3Byb2NzID0gbm9kZV9wcm9jczsKKwkJCXBhcnRpdGlvbnNbaV0ubnVtYV9ub2Rl ID0gaTsKKwkJCXBhcnRpdGlvbnNbaV0ucGdwcm9jX3B0ciA9IHB0cjsKKworCQkJcHRyID0g cGdwcm9jX3BhcnRpdGlvbl9pbml0KHB0ciwgbm9kZV9wcm9jcywgdG90YWxfcHJvY3MsIGkp OworCisJCQl0b3RhbF9wcm9jcyArPSBub2RlX3Byb2NzOworCisJCQkvKiBkb24ndCB1bmRl cmZsb3cvb3ZlcmZsb3cgdGhlIGFsbG9jYXRpb24gKi8KKwkJCUFzc2VydCgocHRyID4gKGNo YXIgKikgcHJvY3MpICYmIChwdHIgPD0gKGNoYXIgKikgcHJvY3MgKyByZXF1ZXN0U2l6ZSkp OworCQl9CisKKwkJQXNzZXJ0KHRvdGFsX3Byb2NzID09IE1heEJhY2tlbmRzKTsKKworCQkv KgorCQkgKiBBbHNvIGJ1aWxkIFBHUFJPQyBlbnRyaWVzIGZvciBhdXhpbGlhcnkgcHJvY3Mg LyBwcmVwYXJlZCB4YWN0cyAod2UKKwkJICogaG93ZXZlciBkb24ndCBhc3NpZ24gdGhvc2Ug dG8gYW55IE5VTUEgbm9kZSkuCisJCSAqLworCQlub2RlX3Byb2NzID0gKE5VTV9BVVhJTElB UllfUFJPQ1MgKyBtYXhfcHJlcGFyZWRfeGFjdHMpOworCisJCS8qIG1ha2Ugc3VyZSB0byBh bGlnbiB0aGUgUEdQUk9DIGFycmF5IHRvIG1lbW9yeSBwYWdlICovCisJCXB0ciA9IChjaGFy ICopIFRZUEVBTElHTihudW1hX3BhZ2Vfc2l6ZSwgcHRyKTsKKworCQkvKiBmaWxsIGluIHRo ZSBwYXJ0aXRpb24gaW5mbyAqLworCQlwYXJ0aXRpb25zW251bWFfbm9kZXNdLm51bV9wcm9j cyA9IG5vZGVfcHJvY3M7CisJCXBhcnRpdGlvbnNbbnVtYV9ub2Rlc10ubnVtYV9ub2RlID0g LTE7CisJCXBhcnRpdGlvbnNbbnVtYV9ub2Rlc10ucGdwcm9jX3B0ciA9IHB0cjsKKworCQlw dHIgPSBwZ3Byb2NfcGFydGl0aW9uX2luaXQocHRyLCBub2RlX3Byb2NzLCB0b3RhbF9wcm9j cywgLTEpOworCisJCXRvdGFsX3Byb2NzICs9IG5vZGVfcHJvY3M7CisKKwkJLyogZG9uJ3Qg b3ZlcmZsb3cgdGhlIGFsbG9jYXRpb24gKi8KKwkJQXNzZXJ0KChwdHIgPiAoY2hhciAqKSBw cm9jcykgJiYgKHB0ciA8PSAoY2hhciAqKSBwcm9jcyArIHJlcXVlc3RTaXplKSk7CisKKwkJ QXNzZXJ0KHRvdGFsX3Byb2NzID0gVG90YWxQcm9jcyk7CisJfQorCWVsc2UKKwl7CisJCS8q CisJCSAqIE5vdyBpbml0aWFsaXplIHRoZSBQR1BST0MgcGFydGl0aW9uIHJlZ2lzdHJ5IHdp dGggYSBzaW5nbGUKKwkJICogcGFydGl0aW9uIGZvciBhbGwgdGhlIHByb2NzLgorCQkgKi8K KwkJcGFydGl0aW9ucyA9IChQR1Byb2NQYXJ0aXRpb24gKikgcHRyOworCQlwdHIgKz0gc2l6 ZW9mKFBHUHJvY1BhcnRpdGlvbik7CisKKwkJLyoganVzdCB0cmVhdCBldmVyeXRoaW5nIGFz IGEgc2luZ2xlIGFycmF5LCB3aXRoIG5vIGFsaWdubWVudCAqLworCQlwdHIgPSBwZ3Byb2Nf cGFydGl0aW9uX2luaXQocHRyLCBUb3RhbFByb2NzLCAwLCAtMSk7CisKKwkJLyogZmlsbCBp biB0aGUgcGFydGl0aW9uIGluZm8gKi8KKwkJcGFydGl0aW9uc1swXS5udW1fcHJvY3MgPSBU b3RhbFByb2NzOworCQlwYXJ0aXRpb25zWzBdLm51bWFfbm9kZSA9IC0xOworCQlwYXJ0aXRp b25zWzBdLnBncHJvY19wdHIgPSBwdHI7CisKKwkJLyogZG9uJ3Qgb3ZlcmZsb3cgdGhlIGFs bG9jYXRpb24gKi8KKwkJQXNzZXJ0KChwdHIgPiAoY2hhciAqKSBwcm9jcykgJiYgKHB0ciA8 PSAoY2hhciAqKSBwcm9jcyArIHJlcXVlc3RTaXplKSk7CisJfQorCiAJLyoKIAkgKiBBbGxv Y2F0ZSBhcnJheXMgbWlycm9yaW5nIFBHUFJPQyBmaWVsZHMgaW4gYSBkZW5zZSBtYW5uZXIu IFNlZQogCSAqIFBST0NfSERSLgogCSAqCiAJICogWFhYOiBJdCBtaWdodCBtYWtlIHNlbnNl IHRvIGluY3JlYXNlIHBhZGRpbmcgZm9yIHRoZXNlIGFycmF5cywgZ2l2ZW4KIAkgKiBob3cg aG90bHkgdGhleSBhcmUgYWNjZXNzZWQuCisJICoKKwkgKiBYWFggV291bGQgaXQgbWFrZSBz ZW5zZSB0byBOVU1BLXBhcnRpdGlvbiB0aGVzZSBjaHVua3MgdG9vLCBzb21laG93PworCSAq IEJ1dCB0aG9zZSBhcnJheXMgYXJlIHRpbnksIGZpdCBpbnRvIGEgc2luZ2xlIG1lbW9yeSBw YWdlLCBzbyB3b3VsZCBuZWVkCisJICogdG8gYmUgbWFkZSBtb3JlIGNvbXBsZXguIE5vdCBz dXJlLgogCSAqLwogCVByb2NHbG9iYWwtPnhpZHMgPSAoVHJhbnNhY3Rpb25JZCAqKSBwdHI7 CiAJcHRyID0gKGNoYXIgKikgcHRyICsgKFRvdGFsUHJvY3MgKiBzaXplb2YoKlByb2NHbG9i YWwtPnhpZHMpKTsKQEAgLTI4NiwyNCArNDkxLDkyIEBAIEluaXRQcm9jR2xvYmFsKHZvaWQp CiAJLyogRm9yIGFzc2VydHMgY2hlY2tpbmcgd2UgZGlkIG5vdCBvdmVyZmxvdy4gKi8KIAlm cEVuZFB0ciA9IGZwUHRyICsgcmVxdWVzdFNpemU7CiAKLQlmb3IgKGkgPSAwOyBpIDwgVG90 YWxQcm9jczsgaSsrKQorCS8qCisJICogTWltaWMgdGhlIGxvZ2ljIHdlIHVzZWQgdG8gcGFy dGl0aW9uIFBHUFJPQyBlbnRyaWVzLgorCSAqLworCisJLyoKKwkgKiBJZiBOVU1BIHBhcnRp dGlvbmluZyBpcyBlbmFibGVkLCBhbmQgd2UgZGVjaWRlZCB3ZSBhY3R1YWxseSBjYW4gZG8g dGhlCisJICogcGFydGl0aW9uaW5nLCBhbGxvY2F0ZSB0aGUgY2h1bmtzLgorCSAqCisJICog T3RoZXJ3aXNlIHdlJ2xsIGFsbG9jYXRlIGEgc2luZ2xlIGFycmF5IGZvciBldmVyeXRoaW5n LiBJdCdzIG5vdCBxdWl0ZQorCSAqIHdoYXQgd2UgZGlkIHdpdGhvdXQgTlVNQSwgYmVjYXVz ZSB0aGVyZSdzIGFuIGV4dHJhIGxldmVsIG9mCisJICogaW5kaXJlY3Rpb24sIGJ1dCBpdCdz IHRoZSBiZXN0IHdlIGNhbiBkby4KKwkgKi8KKwlpZiAobnVtYV9wcm9jc19pbnRlcmxlYXZl ICYmIG51bWFfY2FuX3BhcnRpdGlvbikKIAl7Ci0JCVBHUFJPQwkgICAqcHJvYyA9ICZwcm9j c1tpXTsKKwkJaW50CQkJbm9kZV9wcm9jczsKKwkJaW50CQkJdG90YWxfcHJvY3MgPSAwOwor CisJCUFzc2VydChudW1hX3Byb2NzX3Blcl9ub2RlID4gMCk7CisKKwkJLyogYnVpbGQgUEdQ Uk9DIGVudHJpZXMgZm9yIE5VTUEgbm9kZXMgKi8KKwkJZm9yIChpID0gMDsgaSA8IG51bWFf bm9kZXM7IGkrKykKKwkJeworCQkJLyogdGhlIGxhc3QgTlVNQSBub2RlIG1heSBnZXQgZmV3 ZXIgUEdQUk9DIGVudHJpZXMsIGJ1dCBtZWggKi8KKwkJCW5vZGVfcHJvY3MgPSBNaW4obnVt YV9wcm9jc19wZXJfbm9kZSwgTWF4QmFja2VuZHMgLSB0b3RhbF9wcm9jcyk7CisKKwkJCS8q IG1ha2Ugc3VyZSB0byBhbGlnbiB0aGUgUEdQUk9DIGFycmF5IHRvIG1lbW9yeSBwYWdlICov CisJCQlmcFB0ciA9IChjaGFyICopIFRZUEVBTElHTihtZW1fcGFnZV9zaXplLCBmcFB0cik7 CiAKLQkJLyogQ29tbW9uIGluaXRpYWxpemF0aW9uIGZvciBhbGwgUEdQUk9DcywgcmVnYXJk bGVzcyBvZiB0eXBlLiAqLworCQkJLyogcmVtZW1iZXIgdGhpcyBwb2ludGVyIHRvbyAqLwor CQkJcGFydGl0aW9uc1tpXS5mYXN0cGF0aF9wdHIgPSBmcFB0cjsKKwkJCUFzc2VydChub2Rl X3Byb2NzID09IHBhcnRpdGlvbnNbaV0ubnVtX3Byb2NzKTsKKworCQkJZnBQdHIgPSBmYXN0 cGF0aF9wYXJ0aXRpb25faW5pdChmcFB0ciwgbm9kZV9wcm9jcywgdG90YWxfcHJvY3MsIGks CisJCQkJCQkJCQkJCWZwTG9ja0JpdHNTaXplLCBmcFJlbElkU2l6ZSk7CisKKwkJCXRvdGFs X3Byb2NzICs9IG5vZGVfcHJvY3M7CisKKwkJCS8qIGRvbid0IG92ZXJmbG93IHRoZSBhbGxv Y2F0aW9uICovCisJCQlBc3NlcnQoZnBQdHIgPD0gZnBFbmRQdHIpOworCQl9CisKKwkJQXNz ZXJ0KHRvdGFsX3Byb2NzID09IE1heEJhY2tlbmRzKTsKIAogCQkvKgotCQkgKiBTZXQgdGhl IGZhc3QtcGF0aCBsb2NrIGFycmF5cywgYW5kIG1vdmUgdGhlIHBvaW50ZXIuIFdlIGludGVy bGVhdmUKLQkJICogdGhlIHR3byBhcnJheXMsIHRvIChob3BlZnVsbHkpIGdldCBzb21lIGxv Y2FsaXR5IGZvciBlYWNoIGJhY2tlbmQuCisJCSAqIEFsc28gYnVpbGQgUEdQUk9DIGVudHJp ZXMgZm9yIGF1eGlsaWFyeSBwcm9jcyAvIHByZXBhcmVkIHhhY3RzICh3ZQorCQkgKiBob3dl dmVyIGRvbid0IGFzc2lnbiB0aG9zZSB0byBhbnkgTlVNQSBub2RlKS4KIAkJICovCi0JCXBy b2MtPmZwTG9ja0JpdHMgPSAodWludDY0ICopIGZwUHRyOwotCQlmcFB0ciArPSBmcExvY2tC aXRzU2l6ZTsKKwkJbm9kZV9wcm9jcyA9IChOVU1fQVVYSUxJQVJZX1BST0NTICsgbWF4X3By ZXBhcmVkX3hhY3RzKTsKIAotCQlwcm9jLT5mcFJlbElkID0gKE9pZCAqKSBmcFB0cjsKLQkJ ZnBQdHIgKz0gZnBSZWxJZFNpemU7CisJCS8qIG1ha2Ugc3VyZSB0byBhbGlnbiB0aGUgUEdQ Uk9DIGFycmF5IHRvIG1lbW9yeSBwYWdlICovCisJCWZwUHRyID0gKGNoYXIgKikgVFlQRUFM SUdOKG51bWFfcGFnZV9zaXplLCBmcFB0cik7CiAKKwkJLyogcmVtZW1iZXIgdGhpcyBwb2lu dGVyIHRvbyAqLworCQlwYXJ0aXRpb25zW251bWFfbm9kZXNdLmZhc3RwYXRoX3B0ciA9IGZw UHRyOworCQlBc3NlcnQobm9kZV9wcm9jcyA9PSBwYXJ0aXRpb25zW251bWFfbm9kZXNdLm51 bV9wcm9jcyk7CisKKwkJZnBQdHIgPSBmYXN0cGF0aF9wYXJ0aXRpb25faW5pdChmcFB0ciwg bm9kZV9wcm9jcywgdG90YWxfcHJvY3MsIC0xLAorCQkJCQkJCQkJCWZwTG9ja0JpdHNTaXpl LCBmcFJlbElkU2l6ZSk7CisKKwkJdG90YWxfcHJvY3MgKz0gbm9kZV9wcm9jczsKKworCQkv KiBkb24ndCBvdmVyZmxvdyB0aGUgYWxsb2NhdGlvbiAqLwogCQlBc3NlcnQoZnBQdHIgPD0g ZnBFbmRQdHIpOwogCisJCUFzc2VydCh0b3RhbF9wcm9jcyA9IFRvdGFsUHJvY3MpOworCX0K KwllbHNlCisJeworCQkvKiByZW1lbWJlciB0aGlzIHBvaW50ZXIgdG9vICovCisJCXBhcnRp dGlvbnNbMF0uZmFzdHBhdGhfcHRyID0gZnBQdHI7CisJCUFzc2VydChUb3RhbFByb2NzID09 IHBhcnRpdGlvbnNbMF0ubnVtX3Byb2NzKTsKKworCQkvKiBqdXN0IHRyZWF0IGV2ZXJ5dGhp bmcgYXMgYSBzaW5nbGUgYXJyYXksIHdpdGggbm8gYWxpZ25tZW50ICovCisJCWZwUHRyID0g ZmFzdHBhdGhfcGFydGl0aW9uX2luaXQoZnBQdHIsIFRvdGFsUHJvY3MsIDAsIC0xLAorCQkJ CQkJCQkJCWZwTG9ja0JpdHNTaXplLCBmcFJlbElkU2l6ZSk7CisKKwkJLyogZG9uJ3Qgb3Zl cmZsb3cgdGhlIGFsbG9jYXRpb24gKi8KKwkJQXNzZXJ0KGZwUHRyIDw9IGZwRW5kUHRyKTsK Kwl9CisKKwlmb3IgKGkgPSAwOyBpIDwgVG90YWxQcm9jczsgaSsrKQorCXsKKwkJUEdQUk9D CSAgICpwcm9jID0gcHJvY3NbaV07CisKKwkJQXNzZXJ0KHByb2MtPnByb2NudW1iZXIgPT0g aSk7CisKIAkJLyoKIAkJICogU2V0IHVwIHBlci1QR1BST0Mgc2VtYXBob3JlLCBsYXRjaCwg YW5kIGZwSW5mb0xvY2suICBQcmVwYXJlZCB4YWN0CiAJCSAqIGR1bW15IFBHUFJPQ3MgZG9u J3QgbmVlZCB0aGVzZSB0aG91Z2ggLSB0aGV5J3JlIG5ldmVyIGFzc29jaWF0ZWQKQEAgLTM2 NiwxNSArNjM5LDEyIEBAIEluaXRQcm9jR2xvYmFsKHZvaWQpCiAJCXBnX2F0b21pY19pbml0 X3U2NCgmKHByb2MtPndhaXRTdGFydCksIDApOwogCX0KIAotCS8qIFNob3VsZCBoYXZlIGNv bnN1bWVkIGV4YWN0bHkgdGhlIGV4cGVjdGVkIGFtb3VudCBvZiBmYXN0LXBhdGggbWVtb3J5 LiAqLwotCUFzc2VydChmcFB0ciA9PSBmcEVuZFB0cik7Ci0KIAkvKgogCSAqIFNhdmUgcG9p bnRlcnMgdG8gdGhlIGJsb2NrcyBvZiBQR1BST0Mgc3RydWN0dXJlcyByZXNlcnZlZCBmb3Ig YXV4aWxpYXJ5CiAJICogcHJvY2Vzc2VzIGFuZCBwcmVwYXJlZCB0cmFuc2FjdGlvbnMuCiAJ ICovCi0JQXV4aWxpYXJ5UHJvY3MgPSAmcHJvY3NbTWF4QmFja2VuZHNdOwotCVByZXBhcmVk WGFjdFByb2NzID0gJnByb2NzW01heEJhY2tlbmRzICsgTlVNX0FVWElMSUFSWV9QUk9DU107 CisJQXV4aWxpYXJ5UHJvY3MgPSBwcm9jc1tNYXhCYWNrZW5kc107CisJUHJlcGFyZWRYYWN0 UHJvY3MgPSBwcm9jc1tNYXhCYWNrZW5kcyArIE5VTV9BVVhJTElBUllfUFJPQ1NdOwogCiAJ LyogQ3JlYXRlIFByb2NTdHJ1Y3RMb2NrIHNwaW5sb2NrLCB0b28gKi8KIAlQcm9jU3RydWN0 TG9jayA9IChzbG9ja190ICopIFNobWVtSW5pdFN0cnVjdCgiUHJvY1N0cnVjdExvY2sgc3Bp bmxvY2siLApAQCAtNDM1LDcgKzcwNSw0NSBAQCBJbml0UHJvY2Vzcyh2b2lkKQogCiAJaWYg KCFkbGlzdF9pc19lbXB0eShwcm9jZ2xvYmFsbGlzdCkpCiAJewotCQlNeVByb2MgPSBkbGlz dF9jb250YWluZXIoUEdQUk9DLCBsaW5rcywgZGxpc3RfcG9wX2hlYWRfbm9kZShwcm9jZ2xv YmFsbGlzdCkpOworCQkvKgorCQkgKiBXaXRoIG51bWEgaW50ZXJsZWF2aW5nIG9mIFBHUFJP QywgdHJ5IHRvIGdldCBhIFBST0MgZW50cnkgZnJvbSB0aGUKKwkJICogcmlnaHQgTlVNQSBu b2RlICh3aGVuIHRoZSBwcm9jZXNzIHN0YXJ0cykuCisJCSAqCisJCSAqIFhYWCBUaGUgcHJv Y2VzcyBtYXkgbW92ZSB0byBhIGRpZmZlcmVudCBOVU1BIG5vZGUgbGF0ZXIsIGJ1dAorCQkg KiB0aGVyZSdzIG5vdCBtdWNoIHdlIGNhbiBkbyBhYm91dCB0aGF0LgorCQkgKi8KKwkJaWYg KG51bWFfcHJvY3NfaW50ZXJsZWF2ZSkKKwkJeworCQkJZGxpc3RfbXV0YWJsZV9pdGVyIGl0 ZXI7CisJCQl1bnNpZ25lZAljcHU7CisJCQl1bnNpZ25lZAlub2RlOworCQkJaW50CQkJcmM7 CisKKwkJCXJjID0gZ2V0Y3B1KCZjcHUsICZub2RlKTsKKwkJCWlmIChyYyAhPSAwKQorCQkJ CWVsb2coRVJST1IsICJnZXRjcHUgZmFpbGVkOiAlbSIpOworCisJCQlNeVByb2MgPSBOVUxM OworCisJCQlkbGlzdF9mb3JlYWNoX21vZGlmeShpdGVyLCBwcm9jZ2xvYmFsbGlzdCkKKwkJ CXsKKwkJCQlQR1BST0MJICAgKnByb2M7CisKKwkJCQlwcm9jID0gZGxpc3RfY29udGFpbmVy KFBHUFJPQywgbGlua3MsIGl0ZXIuY3VyKTsKKworCQkJCWlmIChwcm9jLT5udW1hX25vZGUg PT0gbm9kZSkKKwkJCQl7CisJCQkJCU15UHJvYyA9IHByb2M7CisJCQkJCWRsaXN0X2RlbGV0 ZShpdGVyLmN1cik7CisJCQkJCWJyZWFrOworCQkJCX0KKwkJCX0KKwkJfQorCisJCS8qIGRp ZG4ndCBmaW5kIFBHUFJPQyBmcm9tIHRoZSBjb3JyZWN0IE5VTUEgbm9kZSwgcGljayBhbnkg ZnJlZSBvbmUgKi8KKwkJaWYgKE15UHJvYyA9PSBOVUxMKQorCQkJTXlQcm9jID0gZGxpc3Rf Y29udGFpbmVyKFBHUFJPQywgbGlua3MsIGRsaXN0X3BvcF9oZWFkX25vZGUocHJvY2dsb2Jh bGxpc3QpKTsKKwogCQlTcGluTG9ja1JlbGVhc2UoUHJvY1N0cnVjdExvY2spOwogCX0KIAll bHNlCkBAIC0xOTg4LDcgKzIyOTYsNyBAQCBQcm9jU2VuZFNpZ25hbChQcm9jTnVtYmVyIHBy b2NOdW1iZXIpCiAJaWYgKHByb2NOdW1iZXIgPCAwIHx8IHByb2NOdW1iZXIgPj0gUHJvY0ds b2JhbC0+YWxsUHJvY0NvdW50KQogCQllbG9nKEVSUk9SLCAicHJvY051bWJlciBvdXQgb2Yg cmFuZ2UiKTsKIAotCVNldExhdGNoKCZQcm9jR2xvYmFsLT5hbGxQcm9jc1twcm9jTnVtYmVy XS5wcm9jTGF0Y2gpOworCVNldExhdGNoKCZQcm9jR2xvYmFsLT5hbGxQcm9jc1twcm9jTnVt YmVyXS0+cHJvY0xhdGNoKTsKIH0KIAogLyoKQEAgLTIwNjMsMyArMjM3MSwyMjIgQEAgQmVj b21lTG9ja0dyb3VwTWVtYmVyKFBHUFJPQyAqbGVhZGVyLCBpbnQgcGlkKQogCiAJcmV0dXJu IG9rOwogfQorCisvKiBjb3B5IGZyb20gYnVmX2luaXQuYyAqLworc3RhdGljIFNpemUKK2dl dF9tZW1vcnlfcGFnZV9zaXplKHZvaWQpCit7CisJU2l6ZQkJb3NfcGFnZV9zaXplOworCVNp emUJCWh1Z2VfcGFnZV9zaXplOworCisjaWZkZWYgV0lOMzIKKwlTWVNURU1fSU5GTyBzeXNp bmZvOworCisJR2V0U3lzdGVtSW5mbygmc3lzaW5mbyk7CisJb3NfcGFnZV9zaXplID0gc3lz aW5mby5kd1BhZ2VTaXplOworI2Vsc2UKKwlvc19wYWdlX3NpemUgPSBzeXNjb25mKF9TQ19Q QUdFU0laRSk7CisjZW5kaWYKKworCS8qCisJICogWFhYIFRoaXMgaXMgYSBiaXQgYW5ub3lp bmcvY29uZnVzaW5nLCBiZWNhdXNlIHdlIG1heSBnZXQgYSBkaWZmZXJlbnQKKwkgKiByZXN1 bHQgZGVwZW5kaW5nIG9uIHdoZW4gd2UgY2FsbCBpdC4gQmVmb3JlIG1tYXAoKSB3ZSBkb24n dCBrbm93IGlmIHRoZQorCSAqIGh1Z2UgcGFnZXMgZ2V0IHVzZWQsIHNvIHdlIGFzc3VtZSB0 aGV5IHdpbGwuIEFuZCB0aGVuIGlmIHdlIGRvbid0IGdldAorCSAqIGh1Z2UgcGFnZXMsIHdl J2xsIHdhc3RlIG1lbW9yeSBldGMuCisJICovCisKKwkvKiBhc3N1bWUgaHVnZSBwYWdlcyBn ZXQgdXNlZCwgdW5sZXNzIEhVR0VfUEFHRVNfT0ZGICovCisJaWYgKGh1Z2VfcGFnZXNfc3Rh dHVzID09IEhVR0VfUEFHRVNfT0ZGKQorCQlodWdlX3BhZ2Vfc2l6ZSA9IDA7CisJZWxzZQor CQlHZXRIdWdlUGFnZVNpemUoJmh1Z2VfcGFnZV9zaXplLCBOVUxMKTsKKworCXJldHVybiBN YXgob3NfcGFnZV9zaXplLCBodWdlX3BhZ2Vfc2l6ZSk7Cit9CisKKy8qCisgKiBwZ3Byb2Nf cGFydGl0aW9uc19wcmVwYXJlCisgKgkJQ2FsY3VsYXRlIHBhcmFtZXRlcnMgZm9yIHBhcnRp dGlvbmluZyBidWZmZXJzLgorICoKKyAqIE5VTUEgcGFydGl0aW9uaW5nCisgKgorICogTm93 IGJ1aWxkIHRoZSBhY3R1YWwgUEdQUk9DIGFycmF5cywgb25lICJjaHVuayIgcGVyIE5VTUEg bm9kZSAoYW5kIG9uZQorICogZXh0cmEgZm9yIGF1eGlsaWFyeSBwcm9jZXNzZXMgYW5kIDJQ QyB0cmFuc2FjdGlvbnMsIG5vdCBhc3NvY2lhdGVkIHdpdGgKKyAqIGFueSBwYXJ0aWN1bGFy IG5vZGUpLgorICoKKyAqIEZpcnN0IGRldGVybWluZSBob3cgbWFueSAiYmFja2VuZCIgcHJv Y3MgdG8gYWxsb2NhdGUgcGVyIE5VTUEgbm9kZS4gVGhlCisgKiBjb3VudCBtYXkgbm90IGJl IGV4YWN0bHkgZGl2aXNpYmxlLCBidXQgd2UgbW9zdGx5IGlnbm9yZSB0aGF0LiBUaGUgbGFz dAorICogbm9kZSBtYXkgZ2V0IHNvbWV3aGF0IGZld2VyIFBHUFJPQyBlbnRyaWVzLCBidXQg dGhlIGltYmFsYW5jZSBvdWdodCB0bworICogYmUgcHJldHR5IHNtYWxsIChpZiBNYXhCYWNr ZW5kcyA+PiBudW1hX25vZGVzKS4KKyAqCisgKiBYWFggQSBmYWlyZXIgZGlzdHJpYnV0aW9u IGlzIHBvc3NpYmxlLCBidXQgbm90IHdvcnRoIGl0IGZvciBub3cuCisgKi8KK3N0YXRpYyB2 b2lkCitwZ3Byb2NfcGFydGl0aW9uc19wcmVwYXJlKHZvaWQpCit7CisJLyogYmFpbCBvdXQg aWYgYWxyZWFkeSBpbml0aWFsaXplZCAoY2FsY3VsYXRlIG9ubHkgb25jZSkgKi8KKwlpZiAo bnVtYV9ub2RlcyAhPSAtMSkKKwkJcmV0dXJuOworCisJLyogWFhYIG9ubHkgZ2l2ZXMgdXMg dGhlIG51bWJlciwgdGhlIG5vZGVzIG1heSBub3QgYmUgMCwgMSwgMiwgLi4uICovCisJbnVt YV9ub2RlcyA9IG51bWFfbnVtX2NvbmZpZ3VyZWRfbm9kZXMoKTsKKworCS8qIFhYWCBjYW4g dGhpcyBoYXBwZW4/ICovCisJaWYgKG51bWFfbm9kZXMgPCAxKQorCQludW1hX25vZGVzID0g MTsKKworCS8qCisJICogWFhYIEEgYml0IHdlaXJkLiBEbyB3ZSBuZWVkIHRvIHdvcnJ5IGFi b3V0IHBvc3RtYXN0ZXI/IENvdWxkIHRoaXMgZXZlbgorCSAqIHJ1biBvdXRzaWRlIHBvc3Rt YXN0ZXI/IEkgZG9uJ3QgdGhpbmsgc28uCisJICoKKwkgKiBYWFggQW5vdGhlciBpc3N1ZSBp cyB3ZSBtYXkgZ2V0IGRpZmZlcmVudCB2YWx1ZXMgdGhhbiB3aGVuIHNpemluZyB0aGUKKwkg KiB0aGUgbWVtb3J5LCBiZWNhdXNlIGF0IHRoYXQgcG9pbnQgd2UgZGlkbid0IGtub3cgaWYg d2UgZ2V0IGh1Z2UgcGFnZXMsCisJICogc28gd2UgYXNzdW1lZCB3ZSB3aWxsLiBTaG91bGRu J3QgY2F1c2UgY3Jhc2hlcywgYnV0IHdlIG1pZ2h0IGFsbG9jYXRlCisJICogc2hhcmVkIG1l bW9yeSBhbmQgdGhlbiBub3QgdXNlIHNvbWUgb2YgaXQgKGJlY2F1c2Ugb2YgdGhlIGFsaWdu bWVudAorCSAqIHRoYXQgd2UgZG9uJ3QgYWN0dWFsbHkgbmVlZCkuIE5vdCBzdXJlIGFib3V0 IGJldHRlciB3YXksIGdvb2QgZm9yIG5vdy4KKwkgKi8KKwlpZiAoSXNVbmRlclBvc3RtYXN0 ZXIpCisJCW51bWFfcGFnZV9zaXplID0gcGdfZ2V0X3NobWVtX3BhZ2VzaXplKCk7CisJZWxz ZQorCQludW1hX3BhZ2Vfc2l6ZSA9IGdldF9tZW1vcnlfcGFnZV9zaXplKCk7CisKKwludW1h X3Byb2NzX3Blcl9ub2RlID0gKE1heEJhY2tlbmRzICsgKG51bWFfbm9kZXMgLSAxKSkgLyBu dW1hX25vZGVzOworCisJZWxvZyhMT0csICJOVU1BOiBwZ3Byb2MgYmFja2VuZHMgJWQgbnVt X25vZGVzICVkIHBlcl9ub2RlICVkIiwKKwkJIE1heEJhY2tlbmRzLCBudW1hX25vZGVzLCBu dW1hX3Byb2NzX3Blcl9ub2RlKTsKKworCUFzc2VydChudW1hX25vZGVzICogbnVtYV9wcm9j c19wZXJfbm9kZSA+PSBNYXhCYWNrZW5kcyk7CisKKwkvKiBzdWNjZXNzICovCisJbnVtYV9j YW5fcGFydGl0aW9uID0gdHJ1ZTsKK30KKworc3RhdGljIHZvaWQKK3BnX251bWFfbW92ZV90 b19ub2RlKGNoYXIgKnN0YXJ0cHRyLCBjaGFyICplbmRwdHIsIGludCBub2RlKQoreworCVNp emUJCW1lbV9wYWdlX3NpemU7CisJU2l6ZQkJc3o7CisKKwkvKgorCSAqIEdldCB0aGUgImFj dHVhbCIgbWVtb3J5IHBhZ2Ugc2l6ZSwgbm90IHRoZSBvbmUgd2UgdXNlZCBmb3Igc2l6aW5n LiBXZQorCSAqIG1pZ2h0IGhhdmUgdXNlZCBodWdlIHBhZ2UgZm9yIHNpemluZywgYnV0IG9u bHkgZ2V0IHJlZ3VsYXIgcGFnZXMgd2hlbgorCSAqIGFsbG9jYXRpbmcsIHNvIHdlIG11c3Qg dXNlIHRoZSBzbWFsbGVyIHBhZ2VzIGhlcmUuCisJICoKKwkgKiBYWFggQSBiaXQgd2VpcmQu IERvIHdlIG5lZWQgdG8gd29ycnkgYWJvdXQgcG9zdG1hc3Rlcj8gQ291bGQgdGhpcyBldmVu CisJICogcnVuIG91dHNpZGUgcG9zdG1hc3Rlcj8gSSBkb24ndCB0aGluayBzby4KKwkgKi8K KwlpZiAoSXNVbmRlclBvc3RtYXN0ZXIpCisJCW1lbV9wYWdlX3NpemUgPSBwZ19nZXRfc2ht ZW1fcGFnZXNpemUoKTsKKwllbHNlCisJCW1lbV9wYWdlX3NpemUgPSBnZXRfbWVtb3J5X3Bh Z2Vfc2l6ZSgpOworCisJQXNzZXJ0KChpbnQ2NCkgc3RhcnRwdHIgJSBtZW1fcGFnZV9zaXpl ID09IDApOworCisJc3ogPSAoZW5kcHRyIC0gc3RhcnRwdHIpOworCW51bWFfdG9ub2RlX21l bW9yeShzdGFydHB0ciwgc3osIG5vZGUpOworfQorCisvKgorICogZG9lc24ndCBkbyBhbGln bm1lbnQKKyAqLworc3RhdGljIGNoYXIgKgorcGdwcm9jX3BhcnRpdGlvbl9pbml0KGNoYXIg KnB0ciwgaW50IG51bV9wcm9jcywgaW50IGFsbHByb2NzX2luZGV4LCBpbnQgbm9kZSkKK3sK KwlQR1BST0MJICAgKnByb2NzX25vZGU7CisKKwkvKiBhbGxvY2F0ZSB0aGUgUEdQUk9DIGNo dW5rIGZvciB0aGlzIG5vZGUgKi8KKwlwcm9jc19ub2RlID0gKFBHUFJPQyAqKSBwdHI7CisK KwkvKiBwb2ludGVyIHJpZ2h0IGFmdGVyIHRoaXMgYXJyYXkgKi8KKwlwdHIgPSAoY2hhciAq KSBwdHIgKyBudW1fcHJvY3MgKiBzaXplb2YoUEdQUk9DKTsKKworCWVsb2coTE9HLCAiTlVN QTogcGdwcm9jX2luaXRfcGFydGl0aW9uIHByb2NzICVwIGVuZHB0ciAlcCBudW1fcHJvY3Mg JWQgbm9kZSAlZCIsCisJCSBwcm9jc19ub2RlLCBwdHIsIG51bV9wcm9jcywgbm9kZSk7CisK KwkvKgorCSAqIGlmIG5vZGUgc3BlY2lmaWVkLCBtb3ZlIHRvIG5vZGUgLSBkbyB0aGlzIGJl Zm9yZSB3ZSBzdGFydCB0b3VjaGluZyB0aGUKKwkgKiBtZW1vcnksIHRvIG1ha2Ugc3VyZSBp dCdzIG5vdCBtYXBwZWQgdG8gYW55IG5vZGUgeWV0CisJICovCisJaWYgKG5vZGUgIT0gLTEp CisJCXBnX251bWFfbW92ZV90b19ub2RlKChjaGFyICopIHByb2NzX25vZGUsIHB0ciwgbm9k ZSk7CisKKwkvKiBhZGQgcG9pbnRlcnMgdG8gdGhlIFBHUFJPQyBlbnRyaWVzIHRvIGFsbFBy b2NzICovCisJZm9yIChpbnQgaSA9IDA7IGkgPCBudW1fcHJvY3M7IGkrKykKKwl7CisJCXBy b2NzX25vZGVbaV0ubnVtYV9ub2RlID0gbm9kZTsKKwkJcHJvY3Nfbm9kZVtpXS5wcm9jbnVt YmVyID0gYWxscHJvY3NfaW5kZXg7CisKKwkJUHJvY0dsb2JhbC0+YWxsUHJvY3NbYWxscHJv Y3NfaW5kZXhdID0gJnByb2NzX25vZGVbaV07CisKKwkJYWxscHJvY3NfaW5kZXgrKzsKKwl9 CisKKwlyZXR1cm4gcHRyOworfQorCitzdGF0aWMgY2hhciAqCitmYXN0cGF0aF9wYXJ0aXRp b25faW5pdChjaGFyICpwdHIsIGludCBudW1fcHJvY3MsIGludCBhbGxwcm9jc19pbmRleCwg aW50IG5vZGUsCisJCQkJCQlTaXplIGZwTG9ja0JpdHNTaXplLCBTaXplIGZwUmVsSWRTaXpl KQoreworCWNoYXIJICAgKmVuZHB0ciA9IHB0ciArIG51bV9wcm9jcyAqIChmcExvY2tCaXRz U2l6ZSArIGZwUmVsSWRTaXplKTsKKworCS8qCisJICogaWYgbm9kZSBzcGVjaWZpZWQsIG1v dmUgdG8gbm9kZSAtIGRvIHRoaXMgYmVmb3JlIHdlIHN0YXJ0IHRvdWNoaW5nIHRoZQorCSAq IG1lbW9yeSwgdG8gbWFrZSBzdXJlIGl0J3Mgbm90IG1hcHBlZCB0byBhbnkgbm9kZSB5ZXQK KwkgKi8KKwlpZiAobm9kZSAhPSAtMSkKKwkJcGdfbnVtYV9tb3ZlX3RvX25vZGUocHRyLCBl bmRwdHIsIG5vZGUpOworCisJLyoKKwkgKiBOb3cgcG9pbnQgdGhlIFBHUFJPQyBlbnRyaWVz IHRvIHRoZSBmYXN0LXBhdGggYXJyYXlzLCBhbmQgYWxzbyBhZHZhbmNlCisJICogdGhlIGZw UHRyLgorCSAqLworCWZvciAoaW50IGkgPSAwOyBpIDwgbnVtX3Byb2NzOyBpKyspCisJewor CQlQR1BST0MJICAgKnByb2MgPSBQcm9jR2xvYmFsLT5hbGxQcm9jc1thbGxwcm9jc19pbmRl eF07CisKKwkJLyogY3Jvc3MtY2hlY2sgd2UgZ290IHRoZSBleHBlY3RlZCBOVU1BIG5vZGUg Ki8KKwkJQXNzZXJ0KHByb2MtPm51bWFfbm9kZSA9PSBub2RlKTsKKwkJQXNzZXJ0KHByb2Mt PnByb2NudW1iZXIgPT0gYWxscHJvY3NfaW5kZXgpOworCisJCS8qCisJCSAqIFNldCB0aGUg ZmFzdC1wYXRoIGxvY2sgYXJyYXlzLCBhbmQgbW92ZSB0aGUgcG9pbnRlci4gV2UgaW50ZXJs ZWF2ZQorCQkgKiB0aGUgdHdvIGFycmF5cywgdG8gKGhvcGVmdWxseSkgZ2V0IHNvbWUgbG9j YWxpdHkgZm9yIGVhY2ggYmFja2VuZC4KKwkJICovCisJCXByb2MtPmZwTG9ja0JpdHMgPSAo dWludDY0ICopIHB0cjsKKwkJcHRyICs9IGZwTG9ja0JpdHNTaXplOworCisJCXByb2MtPmZw UmVsSWQgPSAoT2lkICopIHB0cjsKKwkJcHRyICs9IGZwUmVsSWRTaXplOworCisJCUFzc2Vy dChwdHIgPD0gZW5kcHRyKTsKKworCQlhbGxwcm9jc19pbmRleCsrOworCX0KKworCUFzc2Vy dChwdHIgPT0gZW5kcHRyKTsKKworCXJldHVybiBlbmRwdHI7Cit9CisKK2ludAorUHJvY1Bh cnRpdGlvbkNvdW50KHZvaWQpCit7CisJaWYgKG51bWFfcHJvY3NfaW50ZXJsZWF2ZSAmJiBu dW1hX2Nhbl9wYXJ0aXRpb24pCisJCXJldHVybiAobnVtYV9ub2RlcyArIDEpOworCisJcmV0 dXJuIDE7Cit9CisKK3ZvaWQKK1Byb2NQYXJ0aXRpb25HZXQoaW50IGlkeCwgaW50ICpub2Rl LCBpbnQgKm5wcm9jcywgdm9pZCAqKnByb2NzcHRyLCB2b2lkICoqZnBwdHIpCit7CisJUEdQ cm9jUGFydGl0aW9uICpwYXJ0ID0gJnBhcnRpdGlvbnNbaWR4XTsKKworCUFzc2VydCgoaWR4 ID49IDApICYmIChpZHggPCBQcm9jUGFydGl0aW9uQ291bnQoKSkpOworCisJKm5wcm9jcyA9 IHBhcnQtPm51bV9wcm9jczsKKwkqcHJvY3NwdHIgPSBwYXJ0LT5wZ3Byb2NfcHRyOworCSpm cHB0ciA9IHBhcnQtPmZhc3RwYXRoX3B0cjsKKwkqbm9kZSA9IHBhcnQtPm51bWFfbm9kZTsK K30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jIGIvc3Jj L2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMKaW5kZXggYTExYmM3MWEzODYuLjZlZTQ2 ODRkMWI4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYwor KysgYi9zcmMvYmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYwpAQCAtMTQ5LDYgKzE0OSw3 IEBAIGludAkJCU1heEJhY2tlbmRzID0gMDsKIGJvb2wJCW51bWFfYnVmZmVyc19pbnRlcmxl YXZlID0gZmFsc2U7CiBib29sCQludW1hX2xvY2FsYWxsb2MgPSBmYWxzZTsKIGJvb2wJCW51 bWFfcGFydGl0aW9uX2ZyZWVsaXN0ID0gZmFsc2U7Citib29sCQludW1hX3Byb2NzX2ludGVy bGVhdmUgPSBmYWxzZTsKIAogLyogR1VDIHBhcmFtZXRlcnMgZm9yIHZhY3V1bSAqLwogaW50 CQkJVmFjdXVtQnVmZmVyVXNhZ2VMaW1pdCA9IDIwNDg7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2Mv Z3VjX3RhYmxlcy5jCmluZGV4IDA1NTJlZDYyY2M3Li43YjcxODc2MDI0OCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKKysrIGIvc3JjL2JhY2tl bmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKQEAgLTIxNDYsNiArMjE0NiwxNiBAQCBzdHJ1 Y3QgY29uZmlnX2Jvb2wgQ29uZmlndXJlTmFtZXNCb29sW10gPQogCQlOVUxMLCBOVUxMLCBO VUxMCiAJfSwKIAorCXsKKwkJeyJudW1hX3Byb2NzX2ludGVybGVhdmUiLCBQR0NfUE9TVE1B U1RFUiwgREVWRUxPUEVSX09QVElPTlMsCisJCQlnZXR0ZXh0X25vb3AoIkVuYWJsZXMgTlVN QSBpbnRlcmxlYXZpbmcgb2YgUEdQUk9DIGVudHJpZXMuIiksCisJCQlnZXR0ZXh0X25vb3Ao IldoZW4gZW5hYmxlZCwgdGhlIFBHUFJPQyBlbnRyaWVzIGFyZSBpbnRlcmxlYXZlZCB0byBh bGwgTlVNQSBub2Rlcy4iKSwKKwkJfSwKKwkJJm51bWFfcHJvY3NfaW50ZXJsZWF2ZSwKKwkJ ZmFsc2UsCisJCU5VTEwsIE5VTEwsIE5VTEwKKwl9LAorCiAJewogCQl7InN5bmNfcmVwbGlj YXRpb25fc2xvdHMiLCBQR0NfU0lHSFVQLCBSRVBMSUNBVElPTl9TVEFOREJZLAogCQkJZ2V0 dGV4dF9ub29wKCJFbmFibGVzIGEgcGh5c2ljYWwgc3RhbmRieSB0byBzeW5jaHJvbml6ZSBs b2dpY2FsIGZhaWxvdmVyIHJlcGxpY2F0aW9uIHNsb3RzIGZyb20gdGhlIHByaW1hcnkgc2Vy dmVyLiIpLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmggYi9zcmMvaW5j bHVkZS9taXNjYWRtaW4uaAppbmRleCA2NmJhZjJiZjMzZS4uY2RlZWU4ZGNjYmEgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oCisrKyBiL3NyYy9pbmNsdWRlL21pc2Nh ZG1pbi5oCkBAIC0xODEsNiArMTgxLDcgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIGludCBtYXhf cGFyYWxsZWxfd29ya2VyczsKIGV4dGVybiBQR0RMTElNUE9SVCBib29sIG51bWFfYnVmZmVy c19pbnRlcmxlYXZlOwogZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgbnVtYV9sb2NhbGFsbG9j OwogZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgbnVtYV9wYXJ0aXRpb25fZnJlZWxpc3Q7Citl eHRlcm4gUEdETExJTVBPUlQgYm9vbCBudW1hX3Byb2NzX2ludGVybGVhdmU7CiAKIGV4dGVy biBQR0RMTElNUE9SVCBpbnQgY29tbWl0X3RpbWVzdGFtcF9idWZmZXJzOwogZXh0ZXJuIFBH RExMSU1QT1JUIGludCBtdWx0aXhhY3RfbWVtYmVyX2J1ZmZlcnM7CmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9zdG9yYWdlL3Byb2MuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5o CmluZGV4IGM2ZjVlYmNlZWZkLi5kMmQyNjk5NDFmYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvc3RvcmFnZS9wcm9jLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jLmgKQEAg LTIwMiw2ICsyMDIsOCBAQCBzdHJ1Y3QgUEdQUk9DCiAJCQkJCQkJCSAqIHZhY3V1bSBtdXN0 IG5vdCByZW1vdmUgdHVwbGVzIGRlbGV0ZWQgYnkKIAkJCQkJCQkJICogeGlkID49IHhtaW4g ISAqLwogCisJaW50CQkJcHJvY251bWJlcjsJCS8qIGluZGV4IGluIFByb2NHbG9iYWwtPmFs bFByb2NzICovCisKIAlpbnQJCQlwaWQ7CQkJLyogQmFja2VuZCdzIHByb2Nlc3MgSUQ7IDAg aWYgcHJlcGFyZWQgeGFjdCAqLwogCiAJaW50CQkJcGd4YWN0b2ZmOwkJLyogb2Zmc2V0IGlu dG8gdmFyaW91cyBQcm9jR2xvYmFsLT5hcnJheXMgd2l0aApAQCAtMzI3LDYgKzMyOSw5IEBA IHN0cnVjdCBQR1BST0MKIAlQR1BST0MJICAgKmxvY2tHcm91cExlYWRlcjsJLyogbG9jayBn cm91cCBsZWFkZXIsIGlmIEknbSBhIG1lbWJlciAqLwogCWRsaXN0X2hlYWQJbG9ja0dyb3Vw TWVtYmVyczsJLyogbGlzdCBvZiBtZW1iZXJzLCBpZiBJJ20gYSBsZWFkZXIgKi8KIAlkbGlz dF9ub2RlCWxvY2tHcm91cExpbms7CS8qIG15IG1lbWJlciBsaW5rLCBpZiBJJ20gYSBtZW1i ZXIgKi8KKworCS8qIE5VTUEgbm9kZSAqLworCWludAkJCW51bWFfbm9kZTsKIH07CiAKIC8q IE5PVEU6ICJ0eXBlZGVmIHN0cnVjdCBQR1BST0MgUEdQUk9DIiBhcHBlYXJzIGluIHN0b3Jh Z2UvbG9jay5oLiAqLwpAQCAtMzkxLDcgKzM5Niw3IEBAIGV4dGVybiBQR0RMTElNUE9SVCBQ R1BST0MgKk15UHJvYzsKIHR5cGVkZWYgc3RydWN0IFBST0NfSERSCiB7CiAJLyogQXJyYXkg b2YgUEdQUk9DIHN0cnVjdHVyZXMgKG5vdCBpbmNsdWRpbmcgZHVtbWllcyBmb3IgcHJlcGFy ZWQgdHhucykgKi8KLQlQR1BST0MJICAgKmFsbFByb2NzOworCVBHUFJPQwkgICoqYWxsUHJv Y3M7CiAKIAkvKiBBcnJheSBtaXJyb3JpbmcgUEdQUk9DLnhpZCBmb3IgZWFjaCBQR1BST0Mg Y3VycmVudGx5IGluIHRoZSBwcm9jYXJyYXkgKi8KIAlUcmFuc2FjdGlvbklkICp4aWRzOwpA QCAtNDQzLDggKzQ0OCw4IEBAIGV4dGVybiBQR0RMTElNUE9SVCBQR1BST0MgKlByZXBhcmVk WGFjdFByb2NzOwogLyoKICAqIEFjY2Vzc29ycyBmb3IgZ2V0dGluZyBQR1BST0MgZ2l2ZW4g YSBQcm9jTnVtYmVyIGFuZCB2aWNlIHZlcnNhLgogICovCi0jZGVmaW5lIEdldFBHUHJvY0J5 TnVtYmVyKG4pICgmUHJvY0dsb2JhbC0+YWxsUHJvY3NbKG4pXSkKLSNkZWZpbmUgR2V0TnVt YmVyRnJvbVBHUHJvYyhwcm9jKSAoKHByb2MpIC0gJlByb2NHbG9iYWwtPmFsbFByb2NzWzBd KQorI2RlZmluZSBHZXRQR1Byb2NCeU51bWJlcihuKSAoUHJvY0dsb2JhbC0+YWxsUHJvY3Nb KG4pXSkKKyNkZWZpbmUgR2V0TnVtYmVyRnJvbVBHUHJvYyhwcm9jKSAoKHByb2MpLT5wcm9j bnVtYmVyKQogCiAvKgogICogV2Ugc2V0IGFzaWRlIHNvbWUgZXh0cmEgUEdQUk9DIHN0cnVj dHVyZXMgZm9yICJzcGVjaWFsIHdvcmtlciIgcHJvY2Vzc2VzLApAQCAtNTIwLDQgKzUyNSw3 IEBAIGV4dGVybiBQR1BST0MgKkF1eGlsaWFyeVBpZEdldFByb2MoaW50IHBpZCk7CiBleHRl cm4gdm9pZCBCZWNvbWVMb2NrR3JvdXBMZWFkZXIodm9pZCk7CiBleHRlcm4gYm9vbCBCZWNv bWVMb2NrR3JvdXBNZW1iZXIoUEdQUk9DICpsZWFkZXIsIGludCBwaWQpOwogCitleHRlcm4g aW50CVByb2NQYXJ0aXRpb25Db3VudCh2b2lkKTsKK2V4dGVybiB2b2lkIFByb2NQYXJ0aXRp b25HZXQoaW50IGlkeCwgaW50ICpub2RlLCBpbnQgKm5wcm9jcywgdm9pZCAqKnByb2NzcHRy LCB2b2lkICoqZnBwdHIpOworCiAjZW5kaWYJCQkJCQkJLyogX1BST0NfSF8gKi8KZGlmZiAt LWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3Bn aW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggYTM4ZGQ4ZDYyNDIuLjU1OTVjZDQ4ZWVlIDEw MDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMv dG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMTg3Nyw2ICsxODc3LDcgQEAgUEdQ X01QSQogUEdQX1B1YktleQogUEdQX1MySwogUEdQaW5nCitQR1Byb2NQYXJ0aXRpb24KIFBH UXVlcnlDbGFzcwogUEdSVXNhZ2UKIFBHU2VtYXBob3JlCi0tIAoyLjUwLjEKCg== --------------ffSr0c8hlIKbvluiJSw5Id5o Content-Type: text/x-patch; charset=UTF-8; name="v3-0005-NUMA-clockweep-partitioning.patch" Content-Disposition: attachment; filename="v3-0005-NUMA-clockweep-partitioning.patch" Content-Transfer-Encoding: base64 RnJvbSAyYmZkNGE4MjRiMTJlOWE4NjVjNWVmMGE4ZWQzM2UyMTVmYjFiNjk4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQHZvbmRyYS5tZT4K RGF0ZTogU3VuLCA4IEp1biAyMDI1IDE4OjUzOjEyICswMjAwClN1YmplY3Q6IFtQQVRDSCB2 MyA1LzddIE5VTUE6IGNsb2Nrd2VlcCBwYXJ0aXRpb25pbmcKClNpbWlsYXIgdG8gdGhlIGZy ZWxpc3QgcGF0Y2ggLSBwYXJ0aXRpb24gdGhlICJjbG9ja3N3ZWVwIiBhbGdvcml0aG0gdG8K d29yayBvbiB0aGUgc2VxdWVuY2Ugb2Ygc21hbGxlciBwYXJ0aXRpb25zLCBvbmUgYnkgb25l LgoKSXQgZXh0ZW5kcyB0aGUgInBnX2J1ZmZlcmNhY2hlX3BhcnRpdGlvbnMiIHZpZXcgdG8g aW5jbHVkZSBpbmZvcm1hdGlvbgphYm91dCB0aGUgY2xvY2tzd2VlcCBhY3Rpdml0eS4KCk5v dGU6IFRoaXMgbmVlZHMgc29tZSBzb3J0IG9mICJiYWxhbmNpbmciIHdoZW4gb25lIG9mIHRo ZSBwYXJ0aXRpb25zIGlzCm11Y2ggYnVzaWVyIHRoYW4gdGhlIHJlc3QgKGUuZy4gYmVjYXVz ZSB0aGVyZSdzIGEgc2luZ2xlIGJhY2tlbmQgY29uc3VtaW5nCmEgbG90IG9mIGJ1ZmZlcnMg ZnJvbSBpdCkuCi0tLQogLi4uL3BnX2J1ZmZlcmNhY2hlLS0xLjYtLTEuNy5zcWwgICAgICAg ICAgICAgIHwgICA1ICstCiBjb250cmliL3BnX2J1ZmZlcmNhY2hlL3BnX2J1ZmZlcmNhY2hl X3BhZ2VzLmMgfCAgMjQgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5j ICAgICAgICAgICB8IDQ3NiArKysrKysrKysrLS0tLS0tLS0KIHNyYy9iYWNrZW5kL3N0b3Jh Z2UvYnVmZmVyL2ZyZWVsaXN0LmMgICAgICAgICB8IDIyNCArKysrKysrLS0KIHNyYy9pbmNs dWRlL3N0b3JhZ2UvYnVmX2ludGVybmFscy5oICAgICAgICAgICB8ICAgNCArLQogc3JjL2lu Y2x1ZGUvc3RvcmFnZS9idWZtZ3IuaCAgICAgICAgICAgICAgICAgIHwgICA1ICstCiBzcmMv dG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAgICAgICAgfCAgIDEgKwogNyBm aWxlcyBjaGFuZ2VkLCA0NzggaW5zZXJ0aW9ucygrKSwgMjYxIGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL2NvbnRyaWIvcGdfYnVmZmVyY2FjaGUvcGdfYnVmZmVyY2FjaGUtLTEuNi0t MS43LnNxbCBiL2NvbnRyaWIvcGdfYnVmZmVyY2FjaGUvcGdfYnVmZmVyY2FjaGUtLTEuNi0t MS43LnNxbAppbmRleCAzODcxYzI2MTUyOC4uYjdkOGVhNDVlZDcgMTAwNjQ0Ci0tLSBhL2Nv bnRyaWIvcGdfYnVmZmVyY2FjaGUvcGdfYnVmZmVyY2FjaGUtLTEuNi0tMS43LnNxbAorKysg Yi9jb250cmliL3BnX2J1ZmZlcmNhY2hlL3BnX2J1ZmZlcmNhY2hlLS0xLjYtLTEuNy5zcWwK QEAgLTEyLDcgKzEyLDEwIEBAIExBTkdVQUdFIEMgUEFSQUxMRUwgU0FGRTsKIC0tIENyZWF0 ZSBhIHZpZXcgZm9yIGNvbnZlbmllbnQgYWNjZXNzLgogQ1JFQVRFIFZJRVcgcGdfYnVmZmVy Y2FjaGVfcGFydGl0aW9ucyBBUwogCVNFTEVDVCBQLiogRlJPTSBwZ19idWZmZXJjYWNoZV9w YXJ0aXRpb25zKCkgQVMgUAotCShwYXJ0aXRpb24gaW50ZWdlciwgbnVtYV9ub2RlIGludGVn ZXIsIG51bV9idWZmZXJzIGludGVnZXIsIGZpcnN0X2J1ZmZlciBpbnRlZ2VyLCBsYXN0X2J1 ZmZlciBpbnRlZ2VyLCBidWZmZXJzX2NvbnN1bWVkIGJpZ2ludCwgYnVmZmVyc19yZW1haW4g YmlnaW50LCBidWZmZXJzX2ZyZWUgYmlnaW50KTsKKwkocGFydGl0aW9uIGludGVnZXIsCisJ IG51bWFfbm9kZSBpbnRlZ2VyLCBudW1fYnVmZmVycyBpbnRlZ2VyLCBmaXJzdF9idWZmZXIg aW50ZWdlciwgbGFzdF9idWZmZXIgaW50ZWdlciwKKwkgYnVmZmVyc19jb25zdW1lZCBiaWdp bnQsIGJ1ZmZlcnNfcmVtYWluIGJpZ2ludCwgYnVmZmVyc19mcmVlIGJpZ2ludCwKKwkgY29t cGxldGVfcGFzc2VzIGJpZ2ludCwgYnVmZmVyX2FsbG9jcyBiaWdpbnQsIG5leHRfdmljdGlt X2J1ZmZlciBpbnRlZ2VyKTsKIAogLS0gRG9uJ3Qgd2FudCB0aGVzZSB0byBiZSBhdmFpbGFi bGUgdG8gcHVibGljLgogUkVWT0tFIEFMTCBPTiBGVU5DVElPTiBwZ19idWZmZXJjYWNoZV9w YXJ0aXRpb25zKCkgRlJPTSBQVUJMSUM7CmRpZmYgLS1naXQgYS9jb250cmliL3BnX2J1ZmZl cmNhY2hlL3BnX2J1ZmZlcmNhY2hlX3BhZ2VzLmMgYi9jb250cmliL3BnX2J1ZmZlcmNhY2hl L3BnX2J1ZmZlcmNhY2hlX3BhZ2VzLmMKaW5kZXggNjY4YWRhOGM0N2IuLjUxNjk2NTVhZTc4 IDEwMDY0NAotLS0gYS9jb250cmliL3BnX2J1ZmZlcmNhY2hlL3BnX2J1ZmZlcmNhY2hlX3Bh Z2VzLmMKKysrIGIvY29udHJpYi9wZ19idWZmZXJjYWNoZS9wZ19idWZmZXJjYWNoZV9wYWdl cy5jCkBAIC0yNyw3ICsyNyw3IEBACiAjZGVmaW5lIE5VTV9CVUZGRVJDQUNIRV9FVklDVF9B TExfRUxFTSAzCiAKICNkZWZpbmUgTlVNX0JVRkZFUkNBQ0hFX05VTUFfRUxFTQkzCi0jZGVm aW5lIE5VTV9CVUZGRVJDQUNIRV9QQVJUSVRJT05TX0VMRU0JOAorI2RlZmluZSBOVU1fQlVG RkVSQ0FDSEVfUEFSVElUSU9OU19FTEVNCTExCiAKIFBHX01PRFVMRV9NQUdJQ19FWFQoCiAJ CQkJCS5uYW1lID0gInBnX2J1ZmZlcmNhY2hlIiwKQEAgLTgxOCw2ICs4MTgsMTIgQEAgcGdf YnVmZmVyY2FjaGVfcGFydGl0aW9ucyhQR19GVU5DVElPTl9BUkdTKQogCQkJCQkJICAgSU5U OE9JRCwgLTEsIDApOwogCQlUdXBsZURlc2NJbml0RW50cnkodHVwbGVkZXNjLCAoQXR0ck51 bWJlcikgOCwgImJ1ZmZlcnNfZnJlZSIsCiAJCQkJCQkgICBJTlQ4T0lELCAtMSwgMCk7CisJ CVR1cGxlRGVzY0luaXRFbnRyeSh0dXBsZWRlc2MsIChBdHRyTnVtYmVyKSA5LCAiY29tcGxl dGVfcGFzc2VzIiwKKwkJCQkJCSAgIElOVDhPSUQsIC0xLCAwKTsKKwkJVHVwbGVEZXNjSW5p dEVudHJ5KHR1cGxlZGVzYywgKEF0dHJOdW1iZXIpIDEwLCAiYnVmZmVyX2FsbG9jcyIsCisJ CQkJCQkgICBJTlQ4T0lELCAtMSwgMCk7CisJCVR1cGxlRGVzY0luaXRFbnRyeSh0dXBsZWRl c2MsIChBdHRyTnVtYmVyKSAxMSwgIm5leHRfdmljdGltX2J1ZmZlciIsCisJCQkJCQkgICBJ TlQ0T0lELCAtMSwgMCk7CiAKIAkJZnVuY2N0eC0+dXNlcl9mY3R4ID0gQmxlc3NUdXBsZURl c2ModHVwbGVkZXNjKTsKIApAQCAtODQzLDYgKzg0OSwxMCBAQCBwZ19idWZmZXJjYWNoZV9w YXJ0aXRpb25zKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJCWJ1ZmZlcnNfcmVtYWluLAogCQkJ CQlidWZmZXJzX2ZyZWU7CiAKKwkJdWludDMyCQljb21wbGV0ZV9wYXNzZXMsCisJCQkJCWJ1 ZmZlcl9hbGxvY3MsCisJCQkJCW5leHRfdmljdGltX2J1ZmZlcjsKKwogCQlEYXR1bQkJdmFs dWVzW05VTV9CVUZGRVJDQUNIRV9QQVJUSVRJT05TX0VMRU1dOwogCQlib29sCQludWxsc1tO VU1fQlVGRkVSQ0FDSEVfUEFSVElUSU9OU19FTEVNXTsKIApAQCAtODUwLDcgKzg2MCw4IEBA IHBnX2J1ZmZlcmNhY2hlX3BhcnRpdGlvbnMoUEdfRlVOQ1RJT05fQVJHUykKIAkJCQkJCSAg ICZmaXJzdF9idWZmZXIsICZsYXN0X2J1ZmZlcik7CiAKIAkJRnJlZWxpc3RQYXJ0aXRpb25H ZXRJbmZvKGksICZidWZmZXJzX2NvbnN1bWVkLCAmYnVmZmVyc19yZW1haW4sCi0JCQkJCQkJ CSAmYnVmZmVyc19mcmVlKTsKKwkJCQkJCQkJICZidWZmZXJzX2ZyZWUsICZjb21wbGV0ZV9w YXNzZXMsCisJCQkJCQkJCSAmYnVmZmVyX2FsbG9jcywgJm5leHRfdmljdGltX2J1ZmZlcik7 CiAKIAkJdmFsdWVzWzBdID0gSW50MzJHZXREYXR1bShpKTsKIAkJbnVsbHNbMF0gPSBmYWxz ZTsKQEAgLTg3Niw2ICs4ODcsMTUgQEAgcGdfYnVmZmVyY2FjaGVfcGFydGl0aW9ucyhQR19G VU5DVElPTl9BUkdTKQogCQl2YWx1ZXNbN10gPSBJbnQ2NEdldERhdHVtKGJ1ZmZlcnNfZnJl ZSk7CiAJCW51bGxzWzddID0gZmFsc2U7CiAKKwkJdmFsdWVzWzhdID0gSW50MzJHZXREYXR1 bShjb21wbGV0ZV9wYXNzZXMpOworCQludWxsc1s4XSA9IGZhbHNlOworCisJCXZhbHVlc1s5 XSA9IEludDMyR2V0RGF0dW0oYnVmZmVyX2FsbG9jcyk7CisJCW51bGxzWzldID0gZmFsc2U7 CisKKwkJdmFsdWVzWzEwXSA9IEludDMyR2V0RGF0dW0obmV4dF92aWN0aW1fYnVmZmVyKTsK KwkJbnVsbHNbMTBdID0gZmFsc2U7CisKIAkJLyogQnVpbGQgYW5kIHJldHVybiB0aGUgdHVw bGUuICovCiAJCXR1cGxlID0gaGVhcF9mb3JtX3R1cGxlKChUdXBsZURlc2MpIGZ1bmNjdHgt PnVzZXJfZmN0eCwgdmFsdWVzLCBudWxscyk7CiAJCXJlc3VsdCA9IEhlYXBUdXBsZUdldERh dHVtKHR1cGxlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1 Zm1nci5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMKaW5kZXggNTky MjY4OWZlNWQuLmJkMDA3YzFjNjIxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdl L2J1ZmZlci9idWZtZ3IuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZt Z3IuYwpAQCAtMzU4Nyw2ICszNTg3LDIzIEBAIEJ1ZmZlclN5bmMoaW50IGZsYWdzKQogCVRS QUNFX1BPU1RHUkVTUUxfQlVGRkVSX1NZTkNfRE9ORShOQnVmZmVycywgbnVtX3dyaXR0ZW4s IG51bV90b19zY2FuKTsKIH0KIAorLyoKKyAqIEluZm9ybWF0aW9uIHNhdmVkIGJldHdlZW4g Y2FsbHMgc28gd2UgY2FuIGRldGVybWluZSB0aGUgc3RyYXRlZ3kKKyAqIHBvaW50J3MgYWR2 YW5jZSByYXRlIGFuZCBhdm9pZCBzY2FubmluZyBhbHJlYWR5LWNsZWFuZWQgYnVmZmVycy4K KyAqCisgKiBYWFggT25lIHZhbHVlIHBlciBwYXJ0aXRpb24uIFdlIGRvbid0IGtub3cgaG93 IG1hbnkgcGFydGl0aW9ucyBhcmUKKyAqIHRoZXJlLCBzbyBhbGxvY2F0ZSAzMiwgc2hvdWxk IGJlIGVub3VnaCBmb3IgdGhlIFBvQyBwYXRjaC4KKyAqCisgKiBYWFggbWlnaHQgYmUgYmV0 dGVyIHRvIGhhdmUgYSBwZXItcGFydGl0aW9uIHN0cnVjdCB3aXRoIGFsbCB0aGUgaW5mbwor ICovCisjZGVmaW5lIE1BWF9DTE9DS1NXRUVQX1BBUlRJVElPTlMgMzIKK3N0YXRpYyBib29s IHNhdmVkX2luZm9fdmFsaWQgPSBmYWxzZTsKK3N0YXRpYyBpbnQJcHJldl9zdHJhdGVneV9i dWZfaWRbTUFYX0NMT0NLU1dFRVBfUEFSVElUSU9OU107CitzdGF0aWMgdWludDMyIHByZXZf c3RyYXRlZ3lfcGFzc2VzW01BWF9DTE9DS1NXRUVQX1BBUlRJVElPTlNdOworc3RhdGljIGlu dAluZXh0X3RvX2NsZWFuW01BWF9DTE9DS1NXRUVQX1BBUlRJVElPTlNdOworc3RhdGljIHVp bnQzMiBuZXh0X3Bhc3Nlc1tNQVhfQ0xPQ0tTV0VFUF9QQVJUSVRJT05TXTsKKworCiAvKgog ICogQmdCdWZmZXJTeW5jIC0tIFdyaXRlIG91dCBzb21lIGRpcnR5IGJ1ZmZlcnMgaW4gdGhl IHBvb2wuCiAgKgpAQCAtMzYwMiw1NSArMzYxOSwyNCBAQCBib29sCiBCZ0J1ZmZlclN5bmMo V3JpdGViYWNrQ29udGV4dCAqd2JfY29udGV4dCkKIHsKIAkvKiBpbmZvIG9idGFpbmVkIGZy b20gZnJlZWxpc3QuYyAqLwotCWludAkJCXN0cmF0ZWd5X2J1Zl9pZDsKLQl1aW50MzIJCXN0 cmF0ZWd5X3Bhc3NlczsKIAl1aW50MzIJCXJlY2VudF9hbGxvYzsKKwl1aW50MzIJCXJlY2Vu dF9hbGxvY19wYXJ0aXRpb247CisJaW50CQkJbnVtX3BhcnRpdGlvbnM7CiAKLQkvKgotCSAq IEluZm9ybWF0aW9uIHNhdmVkIGJldHdlZW4gY2FsbHMgc28gd2UgY2FuIGRldGVybWluZSB0 aGUgc3RyYXRlZ3kKLQkgKiBwb2ludCdzIGFkdmFuY2UgcmF0ZSBhbmQgYXZvaWQgc2Nhbm5p bmcgYWxyZWFkeS1jbGVhbmVkIGJ1ZmZlcnMuCi0JICovCi0Jc3RhdGljIGJvb2wgc2F2ZWRf aW5mb192YWxpZCA9IGZhbHNlOwotCXN0YXRpYyBpbnQJcHJldl9zdHJhdGVneV9idWZfaWQ7 Ci0Jc3RhdGljIHVpbnQzMiBwcmV2X3N0cmF0ZWd5X3Bhc3NlczsKLQlzdGF0aWMgaW50CW5l eHRfdG9fY2xlYW47Ci0Jc3RhdGljIHVpbnQzMiBuZXh0X3Bhc3NlczsKLQotCS8qIE1vdmlu ZyBhdmVyYWdlcyBvZiBhbGxvY2F0aW9uIHJhdGUgYW5kIGNsZWFuLWJ1ZmZlciBkZW5zaXR5 ICovCi0Jc3RhdGljIGZsb2F0IHNtb290aGVkX2FsbG9jID0gMDsKLQlzdGF0aWMgZmxvYXQg c21vb3RoZWRfZGVuc2l0eSA9IDEwLjA7Ci0KLQkvKiBQb3RlbnRpYWxseSB0aGVzZSBjb3Vs ZCBiZSB0dW5hYmxlcywgYnV0IGZvciBub3csIG5vdCAqLwotCWZsb2F0CQlzbW9vdGhpbmdf c2FtcGxlcyA9IDE2OwotCWZsb2F0CQlzY2FuX3dob2xlX3Bvb2xfbWlsbGlzZWNvbmRzID0g MTIwMDAwLjA7Ci0KLQkvKiBVc2VkIHRvIGNvbXB1dGUgaG93IGZhciB3ZSBzY2FuIGFoZWFk ICovCi0JbG9uZwkJc3RyYXRlZ3lfZGVsdGE7Ci0JaW50CQkJYnVmc190b19sYXA7Ci0JaW50 CQkJYnVmc19haGVhZDsKLQlmbG9hdAkJc2NhbnNfcGVyX2FsbG9jOwotCWludAkJCXJldXNh YmxlX2J1ZmZlcnNfZXN0OwotCWludAkJCXVwY29taW5nX2FsbG9jX2VzdDsKLQlpbnQJCQlt aW5fc2Nhbl9idWZmZXJzOwotCi0JLyogVmFyaWFibGVzIGZvciB0aGUgc2Nhbm5pbmcgbG9v cCBwcm9wZXIgKi8KLQlpbnQJCQludW1fdG9fc2NhbjsKLQlpbnQJCQludW1fd3JpdHRlbjsK LQlpbnQJCQlyZXVzYWJsZV9idWZmZXJzOworCS8qIGFzc3VtZSB3ZSBjYW4gaGliZXJuYXRl LCBhbnkgcGFydGl0aW9uIGNhbiBzZXQgdG8gZmFsc2UgKi8KKwlib29sCQloaWJlcm5hdGUg PSB0cnVlOwogCi0JLyogVmFyaWFibGVzIGZvciBmaW5hbCBzbW9vdGhlZF9kZW5zaXR5IHVw ZGF0ZSAqLwotCWxvbmcJCW5ld19zdHJhdGVneV9kZWx0YTsKLQl1aW50MzIJCW5ld19yZWNl bnRfYWxsb2M7CisJLyogZ2V0IHRoZSBudW1iZXIgb2YgY2xvY2tzd2VlcCBwYXJ0aXRpb25z LCBhbmQgdG90YWwgYWxsb2MgY291bnQgKi8KKwlTdHJhdGVneVN5bmNQcmVwYXJlKCZudW1f cGFydGl0aW9ucywgJnJlY2VudF9hbGxvYyk7CiAKLQkvKgotCSAqIEZpbmQgb3V0IHdoZXJl IHRoZSBmcmVlbGlzdCBjbG9jayBzd2VlcCBjdXJyZW50bHkgaXMsIGFuZCBob3cgbWFueQot CSAqIGJ1ZmZlciBhbGxvY2F0aW9ucyBoYXZlIGhhcHBlbmVkIHNpbmNlIG91ciBsYXN0IGNh bGwuCi0JICovCi0Jc3RyYXRlZ3lfYnVmX2lkID0gU3RyYXRlZ3lTeW5jU3RhcnQoJnN0cmF0 ZWd5X3Bhc3NlcywgJnJlY2VudF9hbGxvYyk7CisJQXNzZXJ0KG51bV9wYXJ0aXRpb25zIDw9 IE1BWF9DTE9DS1NXRUVQX1BBUlRJVElPTlMpOwogCiAJLyogUmVwb3J0IGJ1ZmZlciBhbGxv YyBjb3VudHMgdG8gcGdzdGF0ICovCiAJUGVuZGluZ0JnV3JpdGVyU3RhdHMuYnVmX2FsbG9j ICs9IHJlY2VudF9hbGxvYzsKIAorCS8qIGF2ZXJhZ2UgYWxsb2MgYnVmZmVycyBwZXIgcGFy dGl0aW9uICovCisJcmVjZW50X2FsbG9jX3BhcnRpdGlvbiA9IChyZWNlbnRfYWxsb2MgLyBu dW1fcGFydGl0aW9ucyk7CisKIAkvKgogCSAqIElmIHdlJ3JlIG5vdCBydW5uaW5nIHRoZSBM UlUgc2NhbiwganVzdCBzdG9wIGFmdGVyIGRvaW5nIHRoZSBzdGF0cwogCSAqIHN0dWZmLiAg V2UgbWFyayB0aGUgc2F2ZWQgc3RhdGUgaW52YWxpZCBzbyB0aGF0IHdlIGNhbiByZWNvdmVy IHNhbmVseQpAQCAtMzY2MywyMjMgKzM2NDksMjg1IEBAIEJnQnVmZmVyU3luYyhXcml0ZWJh Y2tDb250ZXh0ICp3Yl9jb250ZXh0KQogCX0KIAogCS8qCi0JICogQ29tcHV0ZSBzdHJhdGVn eV9kZWx0YSA9IGhvdyBtYW55IGJ1ZmZlcnMgaGF2ZSBiZWVuIHNjYW5uZWQgYnkgdGhlCi0J ICogY2xvY2sgc3dlZXAgc2luY2UgbGFzdCB0aW1lLiAgSWYgZmlyc3QgdGltZSB0aHJvdWdo LCBhc3N1bWUgbm9uZS4gVGhlbgotCSAqIHNlZSBpZiB3ZSBhcmUgc3RpbGwgYWhlYWQgb2Yg dGhlIGNsb2NrIHN3ZWVwLCBhbmQgaWYgc28sIGhvdyBtYW55Ci0JICogYnVmZmVycyB3ZSBj b3VsZCBzY2FuIGJlZm9yZSB3ZSdkIGNhdGNoIHVwIHdpdGggaXQgYW5kICJsYXAiIGl0LiBO b3RlOgotCSAqIHdlaXJkLWxvb2tpbmcgY29kaW5nIG9mIHh4eF9wYXNzZXMgY29tcGFyaXNv bnMgYXJlIHRvIGF2b2lkIGJvZ3VzCi0JICogYmVoYXZpb3Igd2hlbiB0aGUgcGFzc2VzIGNv dW50cyB3cmFwIGFyb3VuZC4KLQkgKi8KLQlpZiAoc2F2ZWRfaW5mb192YWxpZCkKLQl7Ci0J CWludDMyCQlwYXNzZXNfZGVsdGEgPSBzdHJhdGVneV9wYXNzZXMgLSBwcmV2X3N0cmF0ZWd5 X3Bhc3NlczsKLQotCQlzdHJhdGVneV9kZWx0YSA9IHN0cmF0ZWd5X2J1Zl9pZCAtIHByZXZf c3RyYXRlZ3lfYnVmX2lkOwotCQlzdHJhdGVneV9kZWx0YSArPSAobG9uZykgcGFzc2VzX2Rl bHRhICogTkJ1ZmZlcnM7CisJICogbm93IHByb2Nlc3MgdGhlIGNsb2Nrc3dlZXAgcGFydGl0 aW9ucywgb25lIGJ5IG9uZSwgdXNpbmcgdGhlIHNhbWUKKwkgKiBjbGVhbnVwIHRoYXQgd2Ug dXNlZCBmb3IgYWxsIGJ1ZmZlcnMKKwkgKgorCSAqIFhYWCBNYXliZSB3ZSBzaG91bGQgcmFu ZG9taXplIHRoZSBvcmRlciBvZiBwYXJ0aXRpb25zIGEgYml0LCBzbyB0aGF0IHdlCisJICog ZG9uJ3Qgc3RhcnQgZnJvbSBwYXJ0aXRpb24gMCBhbGwgdGhlIHRpbWU/IFBlcmhhcHMgbm90 IGVudGlyZWx5LCBidXQgYXQKKwkgKiBsZWFzdCBwaWNrIGEgcmFuZG9tIHN0YXJ0aW5nIHBv aW50PworCSAqLworCWZvciAoaW50IHBhcnRpdGlvbiA9IDA7IHBhcnRpdGlvbiA8IG51bV9w YXJ0aXRpb25zOyBwYXJ0aXRpb24rKykKKwl7CisJCS8qIGluZm8gb2J0YWluZWQgZnJvbSBm cmVlbGlzdC5jICovCisJCWludAkJCXN0cmF0ZWd5X2J1Zl9pZDsKKwkJdWludDMyCQlzdHJh dGVneV9wYXNzZXM7CisKKwkJLyogTW92aW5nIGF2ZXJhZ2VzIG9mIGFsbG9jYXRpb24gcmF0 ZSBhbmQgY2xlYW4tYnVmZmVyIGRlbnNpdHkgKi8KKwkJc3RhdGljIGZsb2F0IHNtb290aGVk X2FsbG9jID0gMDsKKwkJc3RhdGljIGZsb2F0IHNtb290aGVkX2RlbnNpdHkgPSAxMC4wOwor CisJCS8qIFBvdGVudGlhbGx5IHRoZXNlIGNvdWxkIGJlIHR1bmFibGVzLCBidXQgZm9yIG5v dywgbm90ICovCisJCWZsb2F0CQlzbW9vdGhpbmdfc2FtcGxlcyA9IDE2OworCQlmbG9hdAkJ c2Nhbl93aG9sZV9wb29sX21pbGxpc2Vjb25kcyA9IDEyMDAwMC4wOworCisJCS8qIFVzZWQg dG8gY29tcHV0ZSBob3cgZmFyIHdlIHNjYW4gYWhlYWQgKi8KKwkJbG9uZwkJc3RyYXRlZ3lf ZGVsdGE7CisJCWludAkJCWJ1ZnNfdG9fbGFwOworCQlpbnQJCQlidWZzX2FoZWFkOworCQlm bG9hdAkJc2NhbnNfcGVyX2FsbG9jOworCQlpbnQJCQlyZXVzYWJsZV9idWZmZXJzX2VzdDsK KwkJaW50CQkJdXBjb21pbmdfYWxsb2NfZXN0OworCQlpbnQJCQltaW5fc2Nhbl9idWZmZXJz OworCisJCS8qIFZhcmlhYmxlcyBmb3IgdGhlIHNjYW5uaW5nIGxvb3AgcHJvcGVyICovCisJ CWludAkJCW51bV90b19zY2FuOworCQlpbnQJCQludW1fd3JpdHRlbjsKKwkJaW50CQkJcmV1 c2FibGVfYnVmZmVyczsKKworCQkvKiBWYXJpYWJsZXMgZm9yIGZpbmFsIHNtb290aGVkX2Rl bnNpdHkgdXBkYXRlICovCisJCWxvbmcJCW5ld19zdHJhdGVneV9kZWx0YTsKKwkJdWludDMy CQluZXdfcmVjZW50X2FsbG9jOworCisJCS8qIGJ1ZmZlciByYW5nZSBmb3IgdGhlIGNsb2Nr c3dlZXAgcGFydGl0aW9uICovCisJCWludAkJCWZpcnN0X2J1ZmZlcjsKKwkJaW50CQkJbnVt X2J1ZmZlcnM7CiAKLQkJQXNzZXJ0KHN0cmF0ZWd5X2RlbHRhID49IDApOworCQkvKgorCQkg KiBGaW5kIG91dCB3aGVyZSB0aGUgZnJlZWxpc3QgY2xvY2sgc3dlZXAgY3VycmVudGx5IGlz LCBhbmQgaG93IG1hbnkKKwkJICogYnVmZmVyIGFsbG9jYXRpb25zIGhhdmUgaGFwcGVuZWQg c2luY2Ugb3VyIGxhc3QgY2FsbC4KKwkJICovCisJCXN0cmF0ZWd5X2J1Zl9pZCA9IFN0cmF0 ZWd5U3luY1N0YXJ0KHBhcnRpdGlvbiwgJnN0cmF0ZWd5X3Bhc3NlcywKKwkJCQkJCQkJCQkJ JmZpcnN0X2J1ZmZlciwgJm51bV9idWZmZXJzKTsKIAotCQlpZiAoKGludDMyKSAobmV4dF9w YXNzZXMgLSBzdHJhdGVneV9wYXNzZXMpID4gMCkKKwkJLyoKKwkJICogQ29tcHV0ZSBzdHJh dGVneV9kZWx0YSA9IGhvdyBtYW55IGJ1ZmZlcnMgaGF2ZSBiZWVuIHNjYW5uZWQgYnkgdGhl CisJCSAqIGNsb2NrIHN3ZWVwIHNpbmNlIGxhc3QgdGltZS4gIElmIGZpcnN0IHRpbWUgdGhy b3VnaCwgYXNzdW1lIG5vbmUuCisJCSAqIFRoZW4gc2VlIGlmIHdlIGFyZSBzdGlsbCBhaGVh ZCBvZiB0aGUgY2xvY2sgc3dlZXAsIGFuZCBpZiBzbywgaG93CisJCSAqIG1hbnkgYnVmZmVy cyB3ZSBjb3VsZCBzY2FuIGJlZm9yZSB3ZSdkIGNhdGNoIHVwIHdpdGggaXQgYW5kICJsYXAi CisJCSAqIGl0LiBOb3RlOiB3ZWlyZC1sb29raW5nIGNvZGluZyBvZiB4eHhfcGFzc2VzIGNv bXBhcmlzb25zIGFyZSB0bworCQkgKiBhdm9pZCBib2d1cyBiZWhhdmlvciB3aGVuIHRoZSBw YXNzZXMgY291bnRzIHdyYXAgYXJvdW5kLgorCQkgKi8KKwkJaWYgKHNhdmVkX2luZm9fdmFs aWQpCiAJCXsKLQkJCS8qIHdlJ3JlIG9uZSBwYXNzIGFoZWFkIG9mIHRoZSBzdHJhdGVneSBw b2ludCAqLwotCQkJYnVmc190b19sYXAgPSBzdHJhdGVneV9idWZfaWQgLSBuZXh0X3RvX2Ns ZWFuOworCQkJaW50MzIJCXBhc3Nlc19kZWx0YSA9IHN0cmF0ZWd5X3Bhc3NlcyAtIHByZXZf c3RyYXRlZ3lfcGFzc2VzW3BhcnRpdGlvbl07CisKKwkJCXN0cmF0ZWd5X2RlbHRhID0gc3Ry YXRlZ3lfYnVmX2lkIC0gcHJldl9zdHJhdGVneV9idWZfaWRbcGFydGl0aW9uXTsKKwkJCXN0 cmF0ZWd5X2RlbHRhICs9IChsb25nKSBwYXNzZXNfZGVsdGEgKiBudW1fYnVmZmVyczsKKwor CQkJQXNzZXJ0KHN0cmF0ZWd5X2RlbHRhID49IDApOworCisJCQlpZiAoKGludDMyKSAobmV4 dF9wYXNzZXNbcGFydGl0aW9uXSAtIHN0cmF0ZWd5X3Bhc3NlcykgPiAwKQorCQkJeworCQkJ CS8qIHdlJ3JlIG9uZSBwYXNzIGFoZWFkIG9mIHRoZSBzdHJhdGVneSBwb2ludCAqLworCQkJ CWJ1ZnNfdG9fbGFwID0gc3RyYXRlZ3lfYnVmX2lkIC0gbmV4dF90b19jbGVhbltwYXJ0aXRp b25dOwogI2lmZGVmIEJHV19ERUJVRwotCQkJZWxvZyhERUJVRzIsICJiZ3dyaXRlciBhaGVh ZDogYmd3ICV1LSV1IHN0cmF0ZWd5ICV1LSV1IGRlbHRhPSVsZCBsYXA9JWQiLAotCQkJCSBu ZXh0X3Bhc3NlcywgbmV4dF90b19jbGVhbiwKLQkJCQkgc3RyYXRlZ3lfcGFzc2VzLCBzdHJh dGVneV9idWZfaWQsCi0JCQkJIHN0cmF0ZWd5X2RlbHRhLCBidWZzX3RvX2xhcCk7CisJCQkJ ZWxvZyhERUJVRzIsICJiZ3dyaXRlciBhaGVhZDogYmd3ICV1LSV1IHN0cmF0ZWd5ICV1LSV1 IGRlbHRhPSVsZCBsYXA9JWQiLAorCQkJCQkgbmV4dF9wYXNzZXMsIG5leHRfdG9fY2xlYW4s CisJCQkJCSBzdHJhdGVneV9wYXNzZXMsIHN0cmF0ZWd5X2J1Zl9pZCwKKwkJCQkJIHN0cmF0 ZWd5X2RlbHRhLCBidWZzX3RvX2xhcCk7CiAjZW5kaWYKLQkJfQotCQllbHNlIGlmIChuZXh0 X3Bhc3NlcyA9PSBzdHJhdGVneV9wYXNzZXMgJiYKLQkJCQkgbmV4dF90b19jbGVhbiA+PSBz dHJhdGVneV9idWZfaWQpCi0JCXsKLQkJCS8qIG9uIHNhbWUgcGFzcywgYnV0IGFoZWFkIG9y IGF0IGxlYXN0IG5vdCBiZWhpbmQgKi8KLQkJCWJ1ZnNfdG9fbGFwID0gTkJ1ZmZlcnMgLSAo bmV4dF90b19jbGVhbiAtIHN0cmF0ZWd5X2J1Zl9pZCk7CisJCQl9CisJCQllbHNlIGlmIChu ZXh0X3Bhc3Nlc1twYXJ0aXRpb25dID09IHN0cmF0ZWd5X3Bhc3NlcyAmJgorCQkJCQkgbmV4 dF90b19jbGVhbltwYXJ0aXRpb25dID49IHN0cmF0ZWd5X2J1Zl9pZCkKKwkJCXsKKwkJCQkv KiBvbiBzYW1lIHBhc3MsIGJ1dCBhaGVhZCBvciBhdCBsZWFzdCBub3QgYmVoaW5kICovCisJ CQkJYnVmc190b19sYXAgPSBudW1fYnVmZmVycyAtIChuZXh0X3RvX2NsZWFuW3BhcnRpdGlv bl0gLSBzdHJhdGVneV9idWZfaWQpOworI2lmZGVmIEJHV19ERUJVRworCQkJCWVsb2coREVC VUcyLCAiYmd3cml0ZXIgYWhlYWQ6IGJndyAldS0ldSBzdHJhdGVneSAldS0ldSBkZWx0YT0l bGQgbGFwPSVkIiwKKwkJCQkJIG5leHRfcGFzc2VzLCBuZXh0X3RvX2NsZWFuLAorCQkJCQkg c3RyYXRlZ3lfcGFzc2VzLCBzdHJhdGVneV9idWZfaWQsCisJCQkJCSBzdHJhdGVneV9kZWx0 YSwgYnVmc190b19sYXApOworI2VuZGlmCisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJLyoK KwkJCQkgKiBXZSdyZSBiZWhpbmQsIHNvIHNraXAgZm9yd2FyZCB0byB0aGUgc3RyYXRlZ3kg cG9pbnQgYW5kCisJCQkJICogc3RhcnQgY2xlYW5pbmcgZnJvbSB0aGVyZS4KKwkJCQkgKi8K ICNpZmRlZiBCR1dfREVCVUcKLQkJCWVsb2coREVCVUcyLCAiYmd3cml0ZXIgYWhlYWQ6IGJn dyAldS0ldSBzdHJhdGVneSAldS0ldSBkZWx0YT0lbGQgbGFwPSVkIiwKLQkJCQkgbmV4dF9w YXNzZXMsIG5leHRfdG9fY2xlYW4sCi0JCQkJIHN0cmF0ZWd5X3Bhc3Nlcywgc3RyYXRlZ3lf YnVmX2lkLAotCQkJCSBzdHJhdGVneV9kZWx0YSwgYnVmc190b19sYXApOworCQkJCWVsb2co REVCVUcyLCAiYmd3cml0ZXIgYmVoaW5kOiBiZ3cgJXUtJXUgc3RyYXRlZ3kgJXUtJXUgZGVs dGE9JWxkIiwKKwkJCQkJIG5leHRfcGFzc2VzLCBuZXh0X3RvX2NsZWFuLAorCQkJCQkgc3Ry YXRlZ3lfcGFzc2VzLCBzdHJhdGVneV9idWZfaWQsCisJCQkJCSBzdHJhdGVneV9kZWx0YSk7 CiAjZW5kaWYKKwkJCQluZXh0X3RvX2NsZWFuW3BhcnRpdGlvbl0gPSBzdHJhdGVneV9idWZf aWQ7CisJCQkJbmV4dF9wYXNzZXNbcGFydGl0aW9uXSA9IHN0cmF0ZWd5X3Bhc3NlczsKKwkJ CQlidWZzX3RvX2xhcCA9IG51bV9idWZmZXJzOworCQkJfQogCQl9CiAJCWVsc2UKIAkJewog CQkJLyoKLQkJCSAqIFdlJ3JlIGJlaGluZCwgc28gc2tpcCBmb3J3YXJkIHRvIHRoZSBzdHJh dGVneSBwb2ludCBhbmQgc3RhcnQKLQkJCSAqIGNsZWFuaW5nIGZyb20gdGhlcmUuCisJCQkg KiBJbml0aWFsaXppbmcgYXQgc3RhcnR1cCBvciBhZnRlciBMUlUgc2Nhbm5pbmcgaGFkIGJl ZW4gb2ZmLgorCQkJICogQWx3YXlzIHN0YXJ0IGF0IHRoZSBzdHJhdGVneSBwb2ludC4KIAkJ CSAqLwogI2lmZGVmIEJHV19ERUJVRwotCQkJZWxvZyhERUJVRzIsICJiZ3dyaXRlciBiZWhp bmQ6IGJndyAldS0ldSBzdHJhdGVneSAldS0ldSBkZWx0YT0lbGQiLAotCQkJCSBuZXh0X3Bh c3NlcywgbmV4dF90b19jbGVhbiwKLQkJCQkgc3RyYXRlZ3lfcGFzc2VzLCBzdHJhdGVneV9i dWZfaWQsCi0JCQkJIHN0cmF0ZWd5X2RlbHRhKTsKKwkJCWVsb2coREVCVUcyLCAiYmd3cml0 ZXIgaW5pdGlhbGl6aW5nOiBzdHJhdGVneSAldS0ldSIsCisJCQkJIHN0cmF0ZWd5X3Bhc3Nl cywgc3RyYXRlZ3lfYnVmX2lkKTsKICNlbmRpZgotCQkJbmV4dF90b19jbGVhbiA9IHN0cmF0 ZWd5X2J1Zl9pZDsKLQkJCW5leHRfcGFzc2VzID0gc3RyYXRlZ3lfcGFzc2VzOwotCQkJYnVm c190b19sYXAgPSBOQnVmZmVyczsKKwkJCXN0cmF0ZWd5X2RlbHRhID0gMDsKKwkJCW5leHRf dG9fY2xlYW5bcGFydGl0aW9uXSA9IHN0cmF0ZWd5X2J1Zl9pZDsKKwkJCW5leHRfcGFzc2Vz W3BhcnRpdGlvbl0gPSBzdHJhdGVneV9wYXNzZXM7CisJCQlidWZzX3RvX2xhcCA9IG51bV9i dWZmZXJzOwogCQl9Ci0JfQotCWVsc2UKLQl7Ci0JCS8qCi0JCSAqIEluaXRpYWxpemluZyBh dCBzdGFydHVwIG9yIGFmdGVyIExSVSBzY2FubmluZyBoYWQgYmVlbiBvZmYuIEFsd2F5cwot CQkgKiBzdGFydCBhdCB0aGUgc3RyYXRlZ3kgcG9pbnQuCi0JCSAqLwotI2lmZGVmIEJHV19E RUJVRwotCQllbG9nKERFQlVHMiwgImJnd3JpdGVyIGluaXRpYWxpemluZzogc3RyYXRlZ3kg JXUtJXUiLAotCQkJIHN0cmF0ZWd5X3Bhc3Nlcywgc3RyYXRlZ3lfYnVmX2lkKTsKLSNlbmRp ZgotCQlzdHJhdGVneV9kZWx0YSA9IDA7Ci0JCW5leHRfdG9fY2xlYW4gPSBzdHJhdGVneV9i dWZfaWQ7Ci0JCW5leHRfcGFzc2VzID0gc3RyYXRlZ3lfcGFzc2VzOwotCQlidWZzX3RvX2xh cCA9IE5CdWZmZXJzOwotCX0KIAotCS8qIFVwZGF0ZSBzYXZlZCBpbmZvIGZvciBuZXh0IHRp bWUgKi8KLQlwcmV2X3N0cmF0ZWd5X2J1Zl9pZCA9IHN0cmF0ZWd5X2J1Zl9pZDsKLQlwcmV2 X3N0cmF0ZWd5X3Bhc3NlcyA9IHN0cmF0ZWd5X3Bhc3NlczsKLQlzYXZlZF9pbmZvX3ZhbGlk ID0gdHJ1ZTsKKwkJLyogVXBkYXRlIHNhdmVkIGluZm8gZm9yIG5leHQgdGltZSAqLworCQlw cmV2X3N0cmF0ZWd5X2J1Zl9pZFtwYXJ0aXRpb25dID0gc3RyYXRlZ3lfYnVmX2lkOworCQlw cmV2X3N0cmF0ZWd5X3Bhc3Nlc1twYXJ0aXRpb25dID0gc3RyYXRlZ3lfcGFzc2VzOworCQkv KiBGSVhNRSBoYXMgdG8gaGFwcGVuIGFmdGVyIGFsbCBwYXJ0aXRpb25zICovCisJCS8qIHNh dmVkX2luZm9fdmFsaWQgPSB0cnVlOyAqLwogCi0JLyoKLQkgKiBDb21wdXRlIGhvdyBtYW55 IGJ1ZmZlcnMgaGFkIHRvIGJlIHNjYW5uZWQgZm9yIGVhY2ggbmV3IGFsbG9jYXRpb24sIGll LAotCSAqIDEvZGVuc2l0eSBvZiByZXVzYWJsZSBidWZmZXJzLCBhbmQgdHJhY2sgYSBtb3Zp bmcgYXZlcmFnZSBvZiB0aGF0LgotCSAqCi0JICogSWYgdGhlIHN0cmF0ZWd5IHBvaW50IGRp ZG4ndCBtb3ZlLCB3ZSBkb24ndCB1cGRhdGUgdGhlIGRlbnNpdHkgZXN0aW1hdGUKLQkgKi8K LQlpZiAoc3RyYXRlZ3lfZGVsdGEgPiAwICYmIHJlY2VudF9hbGxvYyA+IDApCi0JewotCQlz Y2Fuc19wZXJfYWxsb2MgPSAoZmxvYXQpIHN0cmF0ZWd5X2RlbHRhIC8gKGZsb2F0KSByZWNl bnRfYWxsb2M7Ci0JCXNtb290aGVkX2RlbnNpdHkgKz0gKHNjYW5zX3Blcl9hbGxvYyAtIHNt b290aGVkX2RlbnNpdHkpIC8KLQkJCXNtb290aGluZ19zYW1wbGVzOwotCX0KKwkJLyoKKwkJ ICogQ29tcHV0ZSBob3cgbWFueSBidWZmZXJzIGhhZCB0byBiZSBzY2FubmVkIGZvciBlYWNo IG5ldyBhbGxvY2F0aW9uLAorCQkgKiBpZSwgMS9kZW5zaXR5IG9mIHJldXNhYmxlIGJ1ZmZl cnMsIGFuZCB0cmFjayBhIG1vdmluZyBhdmVyYWdlIG9mCisJCSAqIHRoYXQuCisJCSAqCisJ CSAqIElmIHRoZSBzdHJhdGVneSBwb2ludCBkaWRuJ3QgbW92ZSwgd2UgZG9uJ3QgdXBkYXRl IHRoZSBkZW5zaXR5CisJCSAqIGVzdGltYXRlCisJCSAqLworCQlpZiAoc3RyYXRlZ3lfZGVs dGEgPiAwICYmIHJlY2VudF9hbGxvY19wYXJ0aXRpb24gPiAwKQorCQl7CisJCQlzY2Fuc19w ZXJfYWxsb2MgPSAoZmxvYXQpIHN0cmF0ZWd5X2RlbHRhIC8gKGZsb2F0KSByZWNlbnRfYWxs b2NfcGFydGl0aW9uOworCQkJc21vb3RoZWRfZGVuc2l0eSArPSAoc2NhbnNfcGVyX2FsbG9j IC0gc21vb3RoZWRfZGVuc2l0eSkgLworCQkJCXNtb290aGluZ19zYW1wbGVzOworCQl9CiAK LQkvKgotCSAqIEVzdGltYXRlIGhvdyBtYW55IHJldXNhYmxlIGJ1ZmZlcnMgdGhlcmUgYXJl IGJldHdlZW4gdGhlIGN1cnJlbnQKLQkgKiBzdHJhdGVneSBwb2ludCBhbmQgd2hlcmUgd2Un dmUgc2Nhbm5lZCBhaGVhZCB0bywgYmFzZWQgb24gdGhlIHNtb290aGVkCi0JICogZGVuc2l0 eSBlc3RpbWF0ZS4KLQkgKi8KLQlidWZzX2FoZWFkID0gTkJ1ZmZlcnMgLSBidWZzX3RvX2xh cDsKLQlyZXVzYWJsZV9idWZmZXJzX2VzdCA9IChmbG9hdCkgYnVmc19haGVhZCAvIHNtb290 aGVkX2RlbnNpdHk7CisJCS8qCisJCSAqIEVzdGltYXRlIGhvdyBtYW55IHJldXNhYmxlIGJ1 ZmZlcnMgdGhlcmUgYXJlIGJldHdlZW4gdGhlIGN1cnJlbnQKKwkJICogc3RyYXRlZ3kgcG9p bnQgYW5kIHdoZXJlIHdlJ3ZlIHNjYW5uZWQgYWhlYWQgdG8sIGJhc2VkIG9uIHRoZQorCQkg KiBzbW9vdGhlZCBkZW5zaXR5IGVzdGltYXRlLgorCQkgKi8KKwkJYnVmc19haGVhZCA9IG51 bV9idWZmZXJzIC0gYnVmc190b19sYXA7CisJCXJldXNhYmxlX2J1ZmZlcnNfZXN0ID0gKGZs b2F0KSBidWZzX2FoZWFkIC8gc21vb3RoZWRfZGVuc2l0eTsKIAotCS8qCi0JICogVHJhY2sg YSBtb3ZpbmcgYXZlcmFnZSBvZiByZWNlbnQgYnVmZmVyIGFsbG9jYXRpb25zLiAgSGVyZSwg cmF0aGVyIHRoYW4KLQkgKiBhIHRydWUgYXZlcmFnZSB3ZSB3YW50IGEgZmFzdC1hdHRhY2ss IHNsb3ctZGVjbGluZSBiZWhhdmlvcjogd2UKLQkgKiBpbW1lZGlhdGVseSBmb2xsb3cgYW55 IGluY3JlYXNlLgotCSAqLwotCWlmIChzbW9vdGhlZF9hbGxvYyA8PSAoZmxvYXQpIHJlY2Vu dF9hbGxvYykKLQkJc21vb3RoZWRfYWxsb2MgPSByZWNlbnRfYWxsb2M7Ci0JZWxzZQotCQlz bW9vdGhlZF9hbGxvYyArPSAoKGZsb2F0KSByZWNlbnRfYWxsb2MgLSBzbW9vdGhlZF9hbGxv YykgLwotCQkJc21vb3RoaW5nX3NhbXBsZXM7CisJCS8qCisJCSAqIFRyYWNrIGEgbW92aW5n IGF2ZXJhZ2Ugb2YgcmVjZW50IGJ1ZmZlciBhbGxvY2F0aW9ucy4gIEhlcmUsIHJhdGhlcgor CQkgKiB0aGFuIGEgdHJ1ZSBhdmVyYWdlIHdlIHdhbnQgYSBmYXN0LWF0dGFjaywgc2xvdy1k ZWNsaW5lIGJlaGF2aW9yOgorCQkgKiB3ZSBpbW1lZGlhdGVseSBmb2xsb3cgYW55IGluY3Jl YXNlLgorCQkgKi8KKwkJaWYgKHNtb290aGVkX2FsbG9jIDw9IChmbG9hdCkgcmVjZW50X2Fs bG9jX3BhcnRpdGlvbikKKwkJCXNtb290aGVkX2FsbG9jID0gcmVjZW50X2FsbG9jX3BhcnRp dGlvbjsKKwkJZWxzZQorCQkJc21vb3RoZWRfYWxsb2MgKz0gKChmbG9hdCkgcmVjZW50X2Fs bG9jX3BhcnRpdGlvbiAtIHNtb290aGVkX2FsbG9jKSAvCisJCQkJc21vb3RoaW5nX3NhbXBs ZXM7CiAKLQkvKiBTY2FsZSB0aGUgZXN0aW1hdGUgYnkgYSBHVUMgdG8gYWxsb3cgbW9yZSBh Z2dyZXNzaXZlIHR1bmluZy4gKi8KLQl1cGNvbWluZ19hbGxvY19lc3QgPSAoaW50KSAoc21v b3RoZWRfYWxsb2MgKiBiZ3dyaXRlcl9scnVfbXVsdGlwbGllcik7CisJCS8qIFNjYWxlIHRo ZSBlc3RpbWF0ZSBieSBhIEdVQyB0byBhbGxvdyBtb3JlIGFnZ3Jlc3NpdmUgdHVuaW5nLiAq LworCQl1cGNvbWluZ19hbGxvY19lc3QgPSAoaW50KSAoc21vb3RoZWRfYWxsb2MgKiBiZ3dy aXRlcl9scnVfbXVsdGlwbGllcik7CiAKLQkvKgotCSAqIElmIHJlY2VudF9hbGxvYyByZW1h aW5zIGF0IHplcm8gZm9yIG1hbnkgY3ljbGVzLCBzbW9vdGhlZF9hbGxvYyB3aWxsCi0JICog ZXZlbnR1YWxseSB1bmRlcmZsb3cgdG8gemVybywgYW5kIHRoZSB1bmRlcmZsb3dzIHByb2R1 Y2UgYW5ub3lpbmcKLQkgKiBrZXJuZWwgd2FybmluZ3Mgb24gc29tZSBwbGF0Zm9ybXMuICBP bmNlIHVwY29taW5nX2FsbG9jX2VzdCBoYXMgZ29uZSB0bwotCSAqIHplcm8sIHRoZXJlJ3Mg bm8gcG9pbnQgaW4gdHJhY2tpbmcgc21hbGxlciBhbmQgc21hbGxlciB2YWx1ZXMgb2YKLQkg KiBzbW9vdGhlZF9hbGxvYywgc28ganVzdCByZXNldCBpdCB0byBleGFjdGx5IHplcm8gdG8g YXZvaWQgdGhpcwotCSAqIHN5bmRyb21lLiAgSXQgd2lsbCBwb3AgYmFjayB1cCBhcyBzb29u IGFzIHJlY2VudF9hbGxvYyBpbmNyZWFzZXMuCi0JICovCi0JaWYgKHVwY29taW5nX2FsbG9j X2VzdCA9PSAwKQotCQlzbW9vdGhlZF9hbGxvYyA9IDA7CisJCS8qCisJCSAqIElmIHJlY2Vu dF9hbGxvYyByZW1haW5zIGF0IHplcm8gZm9yIG1hbnkgY3ljbGVzLCBzbW9vdGhlZF9hbGxv YworCQkgKiB3aWxsIGV2ZW50dWFsbHkgdW5kZXJmbG93IHRvIHplcm8sIGFuZCB0aGUgdW5k ZXJmbG93cyBwcm9kdWNlCisJCSAqIGFubm95aW5nIGtlcm5lbCB3YXJuaW5ncyBvbiBzb21l IHBsYXRmb3Jtcy4gIE9uY2UKKwkJICogdXBjb21pbmdfYWxsb2NfZXN0IGhhcyBnb25lIHRv IHplcm8sIHRoZXJlJ3Mgbm8gcG9pbnQgaW4gdHJhY2tpbmcKKwkJICogc21hbGxlciBhbmQg c21hbGxlciB2YWx1ZXMgb2Ygc21vb3RoZWRfYWxsb2MsIHNvIGp1c3QgcmVzZXQgaXQgdG8K KwkJICogZXhhY3RseSB6ZXJvIHRvIGF2b2lkIHRoaXMgc3luZHJvbWUuICBJdCB3aWxsIHBv cCBiYWNrIHVwIGFzIHNvb24KKwkJICogYXMgcmVjZW50X2FsbG9jIGluY3JlYXNlcy4KKwkJ ICovCisJCWlmICh1cGNvbWluZ19hbGxvY19lc3QgPT0gMCkKKwkJCXNtb290aGVkX2FsbG9j ID0gMDsKIAotCS8qCi0JICogRXZlbiBpbiBjYXNlcyB3aGVyZSB0aGVyZSdzIGJlZW4gbGl0 dGxlIG9yIG5vIGJ1ZmZlciBhbGxvY2F0aW9uCi0JICogYWN0aXZpdHksIHdlIHdhbnQgdG8g bWFrZSBhIHNtYWxsIGFtb3VudCBvZiBwcm9ncmVzcyB0aHJvdWdoIHRoZSBidWZmZXIKLQkg KiBjYWNoZSBzbyB0aGF0IGFzIG1hbnkgcmV1c2FibGUgYnVmZmVycyBhcyBwb3NzaWJsZSBh cmUgY2xlYW4gYWZ0ZXIgYW4KLQkgKiBpZGxlIHBlcmlvZC4KLQkgKgotCSAqIChzY2FuX3do b2xlX3Bvb2xfbWlsbGlzZWNvbmRzIC8gQmdXcml0ZXJEZWxheSkgY29tcHV0ZXMgaG93IG1h bnkgdGltZXMKLQkgKiB0aGUgQkdXIHdpbGwgYmUgY2FsbGVkIGR1cmluZyB0aGUgc2Nhbl93 aG9sZV9wb29sIHRpbWU7IHNsaWNlIHRoZQotCSAqIGJ1ZmZlciBwb29sIGludG8gdGhhdCBt YW55IHNlY3Rpb25zLgotCSAqLwotCW1pbl9zY2FuX2J1ZmZlcnMgPSAoaW50KSAoTkJ1ZmZl cnMgLyAoc2Nhbl93aG9sZV9wb29sX21pbGxpc2Vjb25kcyAvIEJnV3JpdGVyRGVsYXkpKTsK KwkJLyoKKwkJICogRXZlbiBpbiBjYXNlcyB3aGVyZSB0aGVyZSdzIGJlZW4gbGl0dGxlIG9y IG5vIGJ1ZmZlciBhbGxvY2F0aW9uCisJCSAqIGFjdGl2aXR5LCB3ZSB3YW50IHRvIG1ha2Ug YSBzbWFsbCBhbW91bnQgb2YgcHJvZ3Jlc3MgdGhyb3VnaCB0aGUKKwkJICogYnVmZmVyIGNh Y2hlIHNvIHRoYXQgYXMgbWFueSByZXVzYWJsZSBidWZmZXJzIGFzIHBvc3NpYmxlIGFyZSBj bGVhbgorCQkgKiBhZnRlciBhbiBpZGxlIHBlcmlvZC4KKwkJICoKKwkJICogKHNjYW5fd2hv bGVfcG9vbF9taWxsaXNlY29uZHMgLyBCZ1dyaXRlckRlbGF5KSBjb21wdXRlcyBob3cgbWFu eQorCQkgKiB0aW1lcyB0aGUgQkdXIHdpbGwgYmUgY2FsbGVkIGR1cmluZyB0aGUgc2Nhbl93 aG9sZV9wb29sIHRpbWU7IHNsaWNlCisJCSAqIHRoZSBidWZmZXIgcG9vbCBpbnRvIHRoYXQg bWFueSBzZWN0aW9ucy4KKwkJICovCisJCW1pbl9zY2FuX2J1ZmZlcnMgPSAoaW50KSAobnVt X2J1ZmZlcnMgLyAoc2Nhbl93aG9sZV9wb29sX21pbGxpc2Vjb25kcyAvIEJnV3JpdGVyRGVs YXkpKTsKIAotCWlmICh1cGNvbWluZ19hbGxvY19lc3QgPCAobWluX3NjYW5fYnVmZmVycyAr IHJldXNhYmxlX2J1ZmZlcnNfZXN0KSkKLQl7CisJCWlmICh1cGNvbWluZ19hbGxvY19lc3Qg PCAobWluX3NjYW5fYnVmZmVycyArIHJldXNhYmxlX2J1ZmZlcnNfZXN0KSkKKwkJewogI2lm ZGVmIEJHV19ERUJVRwotCQllbG9nKERFQlVHMiwgImJnd3JpdGVyOiBhbGxvY19lc3Q9JWQg dG9vIHNtYWxsLCB1c2luZyBtaW49JWQgKyByZXVzYWJsZV9lc3Q9JWQiLAotCQkJIHVwY29t aW5nX2FsbG9jX2VzdCwgbWluX3NjYW5fYnVmZmVycywgcmV1c2FibGVfYnVmZmVyc19lc3Qp OworCQkJZWxvZyhERUJVRzIsICJiZ3dyaXRlcjogYWxsb2NfZXN0PSVkIHRvbyBzbWFsbCwg dXNpbmcgbWluPSVkICsgcmV1c2FibGVfZXN0PSVkIiwKKwkJCQkgdXBjb21pbmdfYWxsb2Nf ZXN0LCBtaW5fc2Nhbl9idWZmZXJzLCByZXVzYWJsZV9idWZmZXJzX2VzdCk7CiAjZW5kaWYK LQkJdXBjb21pbmdfYWxsb2NfZXN0ID0gbWluX3NjYW5fYnVmZmVycyArIHJldXNhYmxlX2J1 ZmZlcnNfZXN0OwotCX0KLQotCS8qCi0JICogTm93IHdyaXRlIG91dCBkaXJ0eSByZXVzYWJs ZSBidWZmZXJzLCB3b3JraW5nIGZvcndhcmQgZnJvbSB0aGUKLQkgKiBuZXh0X3RvX2NsZWFu IHBvaW50LCB1bnRpbCB3ZSBoYXZlIGxhcHBlZCB0aGUgc3RyYXRlZ3kgc2Nhbiwgb3IgY2xl YW5lZAotCSAqIGVub3VnaCBidWZmZXJzIHRvIG1hdGNoIG91ciBlc3RpbWF0ZSBvZiB0aGUg bmV4dCBjeWNsZSdzIGFsbG9jYXRpb24KLQkgKiByZXF1aXJlbWVudHMsIG9yIGhpdCB0aGUg Ymd3cml0ZXJfbHJ1X21heHBhZ2VzIGxpbWl0LgotCSAqLworCQkJdXBjb21pbmdfYWxsb2Nf ZXN0ID0gbWluX3NjYW5fYnVmZmVycyArIHJldXNhYmxlX2J1ZmZlcnNfZXN0OworCQl9CiAK LQludW1fdG9fc2NhbiA9IGJ1ZnNfdG9fbGFwOwotCW51bV93cml0dGVuID0gMDsKLQlyZXVz YWJsZV9idWZmZXJzID0gcmV1c2FibGVfYnVmZmVyc19lc3Q7CisJCS8qCisJCSAqIE5vdyB3 cml0ZSBvdXQgZGlydHkgcmV1c2FibGUgYnVmZmVycywgd29ya2luZyBmb3J3YXJkIGZyb20g dGhlCisJCSAqIG5leHRfdG9fY2xlYW4gcG9pbnQsIHVudGlsIHdlIGhhdmUgbGFwcGVkIHRo ZSBzdHJhdGVneSBzY2FuLCBvcgorCQkgKiBjbGVhbmVkIGVub3VnaCBidWZmZXJzIHRvIG1h dGNoIG91ciBlc3RpbWF0ZSBvZiB0aGUgbmV4dCBjeWNsZSdzCisJCSAqIGFsbG9jYXRpb24g cmVxdWlyZW1lbnRzLCBvciBoaXQgdGhlIGJnd3JpdGVyX2xydV9tYXhwYWdlcyBsaW1pdC4K KwkJICovCiAKLQkvKiBFeGVjdXRlIHRoZSBMUlUgc2NhbiAqLwotCXdoaWxlIChudW1fdG9f c2NhbiA+IDAgJiYgcmV1c2FibGVfYnVmZmVycyA8IHVwY29taW5nX2FsbG9jX2VzdCkKLQl7 Ci0JCWludAkJCXN5bmNfc3RhdGUgPSBTeW5jT25lQnVmZmVyKG5leHRfdG9fY2xlYW4sIHRy dWUsCi0JCQkJCQkJCQkJCSAgIHdiX2NvbnRleHQpOworCQludW1fdG9fc2NhbiA9IGJ1ZnNf dG9fbGFwOworCQludW1fd3JpdHRlbiA9IDA7CisJCXJldXNhYmxlX2J1ZmZlcnMgPSByZXVz YWJsZV9idWZmZXJzX2VzdDsKIAotCQlpZiAoKytuZXh0X3RvX2NsZWFuID49IE5CdWZmZXJz KQorCQkvKiBFeGVjdXRlIHRoZSBMUlUgc2NhbiAqLworCQl3aGlsZSAobnVtX3RvX3NjYW4g PiAwICYmIHJldXNhYmxlX2J1ZmZlcnMgPCB1cGNvbWluZ19hbGxvY19lc3QpCiAJCXsKLQkJ CW5leHRfdG9fY2xlYW4gPSAwOwotCQkJbmV4dF9wYXNzZXMrKzsKLQkJfQotCQludW1fdG9f c2Nhbi0tOworCQkJaW50CQkJc3luY19zdGF0ZSA9IFN5bmNPbmVCdWZmZXIobmV4dF90b19j bGVhbltwYXJ0aXRpb25dLCB0cnVlLAorCQkJCQkJCQkJCQkJICAgd2JfY29udGV4dCk7CiAK LQkJaWYgKHN5bmNfc3RhdGUgJiBCVUZfV1JJVFRFTikKLQkJewotCQkJcmV1c2FibGVfYnVm ZmVycysrOwotCQkJaWYgKCsrbnVtX3dyaXR0ZW4gPj0gYmd3cml0ZXJfbHJ1X21heHBhZ2Vz KQorCQkJaWYgKCsrbmV4dF90b19jbGVhbltwYXJ0aXRpb25dID49IChmaXJzdF9idWZmZXIg KyBudW1fYnVmZmVycykpCiAJCQl7Ci0JCQkJUGVuZGluZ0JnV3JpdGVyU3RhdHMubWF4d3Jp dHRlbl9jbGVhbisrOwotCQkJCWJyZWFrOworCQkJCW5leHRfdG9fY2xlYW5bcGFydGl0aW9u XSA9IGZpcnN0X2J1ZmZlcjsKKwkJCQluZXh0X3Bhc3Nlc1twYXJ0aXRpb25dKys7CisJCQl9 CisJCQludW1fdG9fc2Nhbi0tOworCisJCQlpZiAoc3luY19zdGF0ZSAmIEJVRl9XUklUVEVO KQorCQkJeworCQkJCXJldXNhYmxlX2J1ZmZlcnMrKzsKKwkJCQlpZiAoKytudW1fd3JpdHRl biA+PSAoYmd3cml0ZXJfbHJ1X21heHBhZ2VzIC8gbnVtX3BhcnRpdGlvbnMpKQorCQkJCXsK KwkJCQkJUGVuZGluZ0JnV3JpdGVyU3RhdHMubWF4d3JpdHRlbl9jbGVhbisrOworCQkJCQli cmVhazsKKwkJCQl9CiAJCQl9CisJCQllbHNlIGlmIChzeW5jX3N0YXRlICYgQlVGX1JFVVNB QkxFKQorCQkJCXJldXNhYmxlX2J1ZmZlcnMrKzsKIAkJfQotCQllbHNlIGlmIChzeW5jX3N0 YXRlICYgQlVGX1JFVVNBQkxFKQotCQkJcmV1c2FibGVfYnVmZmVycysrOwotCX0KIAotCVBl bmRpbmdCZ1dyaXRlclN0YXRzLmJ1Zl93cml0dGVuX2NsZWFuICs9IG51bV93cml0dGVuOwor CQlQZW5kaW5nQmdXcml0ZXJTdGF0cy5idWZfd3JpdHRlbl9jbGVhbiArPSBudW1fd3JpdHRl bjsKIAogI2lmZGVmIEJHV19ERUJVRwotCWVsb2coREVCVUcxLCAiYmd3cml0ZXI6IHJlY2Vu dF9hbGxvYz0ldSBzbW9vdGhlZD0lLjJmIGRlbHRhPSVsZCBhaGVhZD0lZCBkZW5zaXR5PSUu MmYgcmV1c2FibGVfZXN0PSVkIHVwY29taW5nX2VzdD0lZCBzY2FubmVkPSVkIHdyb3RlPSVk IHJldXNhYmxlPSVkIiwKLQkJIHJlY2VudF9hbGxvYywgc21vb3RoZWRfYWxsb2MsIHN0cmF0 ZWd5X2RlbHRhLCBidWZzX2FoZWFkLAotCQkgc21vb3RoZWRfZGVuc2l0eSwgcmV1c2FibGVf YnVmZmVyc19lc3QsIHVwY29taW5nX2FsbG9jX2VzdCwKLQkJIGJ1ZnNfdG9fbGFwIC0gbnVt X3RvX3NjYW4sCi0JCSBudW1fd3JpdHRlbiwKLQkJIHJldXNhYmxlX2J1ZmZlcnMgLSByZXVz YWJsZV9idWZmZXJzX2VzdCk7CisJCWVsb2coREVCVUcxLCAiYmd3cml0ZXI6IHJlY2VudF9h bGxvYz0ldSBzbW9vdGhlZD0lLjJmIGRlbHRhPSVsZCBhaGVhZD0lZCBkZW5zaXR5PSUuMmYg cmV1c2FibGVfZXN0PSVkIHVwY29taW5nX2VzdD0lZCBzY2FubmVkPSVkIHdyb3RlPSVkIHJl dXNhYmxlPSVkIiwKKwkJCSByZWNlbnRfYWxsb2NfcGFydGl0aW9uLCBzbW9vdGhlZF9hbGxv Yywgc3RyYXRlZ3lfZGVsdGEsIGJ1ZnNfYWhlYWQsCisJCQkgc21vb3RoZWRfZGVuc2l0eSwg cmV1c2FibGVfYnVmZmVyc19lc3QsIHVwY29taW5nX2FsbG9jX2VzdCwKKwkJCSBidWZzX3Rv X2xhcCAtIG51bV90b19zY2FuLAorCQkJIG51bV93cml0dGVuLAorCQkJIHJldXNhYmxlX2J1 ZmZlcnMgLSByZXVzYWJsZV9idWZmZXJzX2VzdCk7CiAjZW5kaWYKIAotCS8qCi0JICogQ29u c2lkZXIgdGhlIGFib3ZlIHNjYW4gYXMgYmVpbmcgbGlrZSBhIG5ldyBhbGxvY2F0aW9uIHNj YW4uCi0JICogQ2hhcmFjdGVyaXplIGl0cyBkZW5zaXR5IGFuZCB1cGRhdGUgdGhlIHNtb290 aGVkIG9uZSBiYXNlZCBvbiBpdC4gVGhpcwotCSAqIGVmZmVjdGl2ZWx5IGhhbHZlcyB0aGUg bW92aW5nIGF2ZXJhZ2UgcGVyaW9kIGluIGNhc2VzIHdoZXJlIGJvdGggdGhlCi0JICogc3Ry YXRlZ3kgYW5kIHRoZSBiYWNrZ3JvdW5kIHdyaXRlciBhcmUgZG9pbmcgc29tZSB1c2VmdWwg c2Nhbm5pbmcsCi0JICogd2hpY2ggaXMgaGVscGZ1bCBiZWNhdXNlIGEgbG9uZyBtZW1vcnkg aXNuJ3QgYXMgZGVzaXJhYmxlIG9uIHRoZQotCSAqIGRlbnNpdHkgZXN0aW1hdGVzLgotCSAq LwotCW5ld19zdHJhdGVneV9kZWx0YSA9IGJ1ZnNfdG9fbGFwIC0gbnVtX3RvX3NjYW47Ci0J bmV3X3JlY2VudF9hbGxvYyA9IHJldXNhYmxlX2J1ZmZlcnMgLSByZXVzYWJsZV9idWZmZXJz X2VzdDsKLQlpZiAobmV3X3N0cmF0ZWd5X2RlbHRhID4gMCAmJiBuZXdfcmVjZW50X2FsbG9j ID4gMCkKLQl7Ci0JCXNjYW5zX3Blcl9hbGxvYyA9IChmbG9hdCkgbmV3X3N0cmF0ZWd5X2Rl bHRhIC8gKGZsb2F0KSBuZXdfcmVjZW50X2FsbG9jOwotCQlzbW9vdGhlZF9kZW5zaXR5ICs9 IChzY2Fuc19wZXJfYWxsb2MgLSBzbW9vdGhlZF9kZW5zaXR5KSAvCi0JCQlzbW9vdGhpbmdf c2FtcGxlczsKKwkJLyoKKwkJICogQ29uc2lkZXIgdGhlIGFib3ZlIHNjYW4gYXMgYmVpbmcg bGlrZSBhIG5ldyBhbGxvY2F0aW9uIHNjYW4uCisJCSAqIENoYXJhY3Rlcml6ZSBpdHMgZGVu c2l0eSBhbmQgdXBkYXRlIHRoZSBzbW9vdGhlZCBvbmUgYmFzZWQgb24gaXQuCisJCSAqIFRo aXMgZWZmZWN0aXZlbHkgaGFsdmVzIHRoZSBtb3ZpbmcgYXZlcmFnZSBwZXJpb2QgaW4gY2Fz ZXMgd2hlcmUKKwkJICogYm90aCB0aGUgc3RyYXRlZ3kgYW5kIHRoZSBiYWNrZ3JvdW5kIHdy aXRlciBhcmUgZG9pbmcgc29tZSB1c2VmdWwKKwkJICogc2Nhbm5pbmcsIHdoaWNoIGlzIGhl bHBmdWwgYmVjYXVzZSBhIGxvbmcgbWVtb3J5IGlzbid0IGFzIGRlc2lyYWJsZQorCQkgKiBv biB0aGUgZGVuc2l0eSBlc3RpbWF0ZXMuCisJCSAqLworCQluZXdfc3RyYXRlZ3lfZGVsdGEg PSBidWZzX3RvX2xhcCAtIG51bV90b19zY2FuOworCQluZXdfcmVjZW50X2FsbG9jID0gcmV1 c2FibGVfYnVmZmVycyAtIHJldXNhYmxlX2J1ZmZlcnNfZXN0OworCQlpZiAobmV3X3N0cmF0 ZWd5X2RlbHRhID4gMCAmJiBuZXdfcmVjZW50X2FsbG9jID4gMCkKKwkJeworCQkJc2NhbnNf cGVyX2FsbG9jID0gKGZsb2F0KSBuZXdfc3RyYXRlZ3lfZGVsdGEgLyAoZmxvYXQpIG5ld19y ZWNlbnRfYWxsb2M7CisJCQlzbW9vdGhlZF9kZW5zaXR5ICs9IChzY2Fuc19wZXJfYWxsb2Mg LSBzbW9vdGhlZF9kZW5zaXR5KSAvCisJCQkJc21vb3RoaW5nX3NhbXBsZXM7CiAKICNpZmRl ZiBCR1dfREVCVUcKLQkJZWxvZyhERUJVRzIsICJiZ3dyaXRlcjogY2xlYW5lciBkZW5zaXR5 IGFsbG9jPSV1IHNjYW49JWxkIGRlbnNpdHk9JS4yZiBuZXcgc21vb3RoZWQ9JS4yZiIsCi0J CQkgbmV3X3JlY2VudF9hbGxvYywgbmV3X3N0cmF0ZWd5X2RlbHRhLAotCQkJIHNjYW5zX3Bl cl9hbGxvYywgc21vb3RoZWRfZGVuc2l0eSk7CisJCQllbG9nKERFQlVHMiwgImJnd3JpdGVy OiBjbGVhbmVyIGRlbnNpdHkgYWxsb2M9JXUgc2Nhbj0lbGQgZGVuc2l0eT0lLjJmIG5ldyBz bW9vdGhlZD0lLjJmIiwKKwkJCQkgbmV3X3JlY2VudF9hbGxvYywgbmV3X3N0cmF0ZWd5X2Rl bHRhLAorCQkJCSBzY2Fuc19wZXJfYWxsb2MsIHNtb290aGVkX2RlbnNpdHkpOwogI2VuZGlm CisJCX0KKworCQkvKiBoaWJlcm5hdGUgaWYgYWxsIHBhcnRpdGlvbnMgY2FuIGhpYmVybmF0 ZSAqLworCQloaWJlcm5hdGUgJj0gKGJ1ZnNfdG9fbGFwID09IDAgJiYgcmVjZW50X2FsbG9j X3BhcnRpdGlvbiA9PSAwKTsKIAl9CiAKKwkvKiBub3cgdGhhdCB3ZSd2ZSBzY2FubmVkIGFs bCBwYXJ0aXRpb25zLCBtYXJrIHRoZSBjYWNoZWQgaW5mbyBhcyB2YWxpZCAqLworCXNhdmVk X2luZm9fdmFsaWQgPSB0cnVlOworCiAJLyogUmV0dXJuIHRydWUgaWYgT0sgdG8gaGliZXJu YXRlICovCi0JcmV0dXJuIChidWZzX3RvX2xhcCA9PSAwICYmIHJlY2VudF9hbGxvYyA9PSAw KTsKKwlyZXR1cm4gaGliZXJuYXRlOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvc3RvcmFnZS9idWZmZXIvZnJlZWxpc3QuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVm ZmVyL2ZyZWVsaXN0LmMKaW5kZXggYzNmYmQ2NTFkZDUuLmZmMDJkYzhlMDBiIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9mcmVlbGlzdC5jCisrKyBiL3NyYy9i YWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2ZyZWVsaXN0LmMKQEAgLTYzLDE3ICs2MywyNyBAQCB0 eXBlZGVmIHN0cnVjdCBCdWZmZXJTdHJhdGVneUZyZWVsaXN0CiAjZGVmaW5lIE1JTl9GUkVF TElTVF9QQVJUSVRJT05TCQk0CiAKIC8qCi0gKiBUaGUgc2hhcmVkIGZyZWVsaXN0IGNvbnRy b2wgaW5mb3JtYXRpb24uCisgKiBJbmZvcm1hdGlvbiBhYm91dCBvbmUgcGFydGl0aW9uIG9m IHRoZSBDbG9ja1N3ZWVwIChvbiBhIHN1YnNldCBvZiBidWZmZXJzKS4KKyAqCisgKiBYWFgg U2hvdWxkIGJlIGNhcmVmdWwgdG8gYWxpZ24gdGhpcyB0byBjYWNoZWxpbmVzLCBldGMuCiAg Ki8KIHR5cGVkZWYgc3RydWN0CiB7CiAJLyogU3BpbmxvY2s6IHByb3RlY3RzIHRoZSB2YWx1 ZXMgYmVsb3cgKi8KLQlzbG9ja190CQlidWZmZXJfc3RyYXRlZ3lfbG9jazsKKwlzbG9ja190 CQljbG9ja19zd2VlcF9sb2NrOworCisJLyogcmFuZ2UgZm9yIHRoaXMgY2xvY2sgd2VlcCBw YXJ0aXRpb24gKi8KKwlpbnQzMgkJZmlyc3RCdWZmZXI7CisJaW50MzIJCW51bUJ1ZmZlcnM7 CiAKIAkvKgogCSAqIENsb2NrIHN3ZWVwIGhhbmQ6IGluZGV4IG9mIG5leHQgYnVmZmVyIHRv IGNvbnNpZGVyIGdyYWJiaW5nLiBOb3RlIHRoYXQKIAkgKiB0aGlzIGlzbid0IGEgY29uY3Jl dGUgYnVmZmVyIC0gd2Ugb25seSBldmVyIGluY3JlYXNlIHRoZSB2YWx1ZS4gU28sIHRvCiAJ ICogZ2V0IGFuIGFjdHVhbCBidWZmZXIsIGl0IG5lZWRzIHRvIGJlIHVzZWQgbW9kdWxvIE5C dWZmZXJzLgorCSAqCisJICogWFhYIFRoaXMgaXMgcmVsYXRpdmUgdG8gZmlyc3RCdWZmZXIs IHNvIG5lZWRzIHRvIGJlIG9mZnNldCBwcm9wZXJseS4KKwkgKgorCSAqIFhYWCBmaXJzdEJ1 ZmZlciArIChuZXh0VmljdGltQnVmZmVyICUgbnVtQnVmZmVycykKIAkgKi8KIAlwZ19hdG9t aWNfdWludDMyIG5leHRWaWN0aW1CdWZmZXI7CiAKQEAgLTgzLDYgKzkzLDE1IEBAIHR5cGVk ZWYgc3RydWN0CiAJICovCiAJdWludDMyCQljb21wbGV0ZVBhc3NlczsgLyogQ29tcGxldGUg Y3ljbGVzIG9mIHRoZSBjbG9jayBzd2VlcCAqLwogCXBnX2F0b21pY191aW50MzIgbnVtQnVm ZmVyQWxsb2NzOwkvKiBCdWZmZXJzIGFsbG9jYXRlZCBzaW5jZSBsYXN0IHJlc2V0ICovCit9 IENsb2NrU3dlZXA7CisKKy8qCisgKiBUaGUgc2hhcmVkIGZyZWVsaXN0IGNvbnRyb2wgaW5m b3JtYXRpb24uCisgKi8KK3R5cGVkZWYgc3RydWN0Cit7CisJLyogU3BpbmxvY2s6IHByb3Rl Y3RzIHRoZSB2YWx1ZXMgYmVsb3cgKi8KKwlzbG9ja190CQlidWZmZXJfc3RyYXRlZ3lfbG9j azsKIAogCS8qCiAJICogQmd3b3JrZXIgcHJvY2VzcyB0byBiZSBub3RpZmllZCB1cG9uIGFj dGl2aXR5IG9yIC0xIGlmIG5vbmUuIFNlZQpAQCAtOTksNiArMTE4LDkgQEAgdHlwZWRlZiBz dHJ1Y3QKIAlpbnQJCQludW1fcGFydGl0aW9uczsKIAlpbnQJCQludW1fcGFydGl0aW9uc19w ZXJfbm9kZTsKIAorCS8qIGNsb2Nrc3dlZXAgcGFydGl0aW9ucyAqLworCUNsb2NrU3dlZXAg KnN3ZWVwczsKKwogCUJ1ZmZlclN0cmF0ZWd5RnJlZWxpc3QgZnJlZWxpc3RzW0ZMRVhJQkxF X0FSUkFZX01FTUJFUl07CiB9IEJ1ZmZlclN0cmF0ZWd5Q29udHJvbDsKIApAQCAtMTM4LDYg KzE2MCw3IEBAIHN0YXRpYyBCdWZmZXJEZXNjICpHZXRCdWZmZXJGcm9tUmluZyhCdWZmZXJB Y2Nlc3NTdHJhdGVneSBzdHJhdGVneSwKIAkJCQkJCQkJCSB1aW50MzIgKmJ1Zl9zdGF0ZSk7 CiBzdGF0aWMgdm9pZCBBZGRCdWZmZXJUb1JpbmcoQnVmZmVyQWNjZXNzU3RyYXRlZ3kgc3Ry YXRlZ3ksCiAJCQkJCQkJQnVmZmVyRGVzYyAqYnVmKTsKK3N0YXRpYyBDbG9ja1N3ZWVwICpD aG9vc2VDbG9ja1N3ZWVwKHZvaWQpOwogCiAvKgogICogQ2xvY2tTd2VlcFRpY2sgLSBIZWxw ZXIgcm91dGluZSBmb3IgU3RyYXRlZ3lHZXRCdWZmZXIoKQpAQCAtMTQ5LDYgKzE3Miw3IEBA IHN0YXRpYyBpbmxpbmUgdWludDMyCiBDbG9ja1N3ZWVwVGljayh2b2lkKQogewogCXVpbnQz MgkJdmljdGltOworCUNsb2NrU3dlZXAgKnN3ZWVwID0gQ2hvb3NlQ2xvY2tTd2VlcCgpOwog CiAJLyoKIAkgKiBBdG9taWNhbGx5IG1vdmUgaGFuZCBhaGVhZCBvbmUgYnVmZmVyIC0gaWYg dGhlcmUncyBzZXZlcmFsIHByb2Nlc3NlcwpAQCAtMTU2LDE0ICsxODAsMTQgQEAgQ2xvY2tT d2VlcFRpY2sodm9pZCkKIAkgKiBhcHBhcmVudCBvcmRlci4KIAkgKi8KIAl2aWN0aW0gPQot CQlwZ19hdG9taWNfZmV0Y2hfYWRkX3UzMigmU3RyYXRlZ3lDb250cm9sLT5uZXh0VmljdGlt QnVmZmVyLCAxKTsKKwkJcGdfYXRvbWljX2ZldGNoX2FkZF91MzIoJnN3ZWVwLT5uZXh0Vmlj dGltQnVmZmVyLCAxKTsKIAotCWlmICh2aWN0aW0gPj0gTkJ1ZmZlcnMpCisJaWYgKHZpY3Rp bSA+PSBzd2VlcC0+bnVtQnVmZmVycykKIAl7CiAJCXVpbnQzMgkJb3JpZ2luYWxWaWN0aW0g PSB2aWN0aW07CiAKIAkJLyogYWx3YXlzIHdyYXAgd2hhdCB3ZSBsb29rIHVwIGluIEJ1ZmZl ckRlc2NyaXB0b3JzICovCi0JCXZpY3RpbSA9IHZpY3RpbSAlIE5CdWZmZXJzOworCQl2aWN0 aW0gPSB2aWN0aW0gJSBzd2VlcC0+bnVtQnVmZmVyczsKIAogCQkvKgogCQkgKiBJZiB3ZSdy ZSB0aGUgb25lIHRoYXQganVzdCBjYXVzZWQgYSB3cmFwYXJvdW5kLCBmb3JjZQpAQCAtMTg5 LDE5ICsyMTMsMjMgQEAgQ2xvY2tTd2VlcFRpY2sodm9pZCkKIAkJCQkgKiBjb3VsZCBsZWFk IHRvIGFuIG92ZXJmbG93IG9mIG5leHRWaWN0aW1CdWZmZXJzLCBidXQgdGhhdCdzCiAJCQkJ ICogaGlnaGx5IHVubGlrZWx5IGFuZCB3b3VsZG4ndCBiZSBwYXJ0aWN1bGFybHkgaGFybWZ1 bC4KIAkJCQkgKi8KLQkJCQlTcGluTG9ja0FjcXVpcmUoJlN0cmF0ZWd5Q29udHJvbC0+YnVm ZmVyX3N0cmF0ZWd5X2xvY2spOworCQkJCVNwaW5Mb2NrQWNxdWlyZSgmc3dlZXAtPmNsb2Nr X3N3ZWVwX2xvY2spOwogCi0JCQkJd3JhcHBlZCA9IGV4cGVjdGVkICUgTkJ1ZmZlcnM7CisJ CQkJd3JhcHBlZCA9IGV4cGVjdGVkICUgc3dlZXAtPm51bUJ1ZmZlcnM7CiAKLQkJCQlzdWNj ZXNzID0gcGdfYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2VfdTMyKCZTdHJhdGVneUNvbnRyb2wt Pm5leHRWaWN0aW1CdWZmZXIsCisJCQkJc3VjY2VzcyA9IHBnX2F0b21pY19jb21wYXJlX2V4 Y2hhbmdlX3UzMigmc3dlZXAtPm5leHRWaWN0aW1CdWZmZXIsCiAJCQkJCQkJCQkJCQkJCSAm ZXhwZWN0ZWQsIHdyYXBwZWQpOwogCQkJCWlmIChzdWNjZXNzKQotCQkJCQlTdHJhdGVneUNv bnRyb2wtPmNvbXBsZXRlUGFzc2VzKys7Ci0JCQkJU3BpbkxvY2tSZWxlYXNlKCZTdHJhdGVn eUNvbnRyb2wtPmJ1ZmZlcl9zdHJhdGVneV9sb2NrKTsKKwkJCQkJc3dlZXAtPmNvbXBsZXRl UGFzc2VzKys7CisJCQkJU3BpbkxvY2tSZWxlYXNlKCZzd2VlcC0+Y2xvY2tfc3dlZXBfbG9j ayk7CiAJCQl9CiAJCX0KIAl9Ci0JcmV0dXJuIHZpY3RpbTsKKworCS8qIFhYWCBidWZmZXIg SURzIGFyZSAxLWJhc2VkLCB3ZSdyZSBjYWxjdWxhdGluZyAwLWJhc2VkIGluZGV4ZXMgKi8K KwlBc3NlcnQoQnVmZmVySXNWYWxpZCgxICsgc3dlZXAtPmZpcnN0QnVmZmVyICsgKHZpY3Rp bSAlIHN3ZWVwLT5udW1CdWZmZXJzKSkpOworCisJcmV0dXJuIHN3ZWVwLT5maXJzdEJ1ZmZl ciArIHZpY3RpbTsKIH0KIAogc3RhdGljIGludApAQCAtMjU4LDYgKzI4NiwyOCBAQCBjYWxj dWxhdGVfcGFydGl0aW9uX2luZGV4KCkKIAlyZXR1cm4gaW5kZXg7CiB9CiAKKy8qCisgKiBD aG9vc2VDbG9ja1N3ZWVwCisgKgkJcGljayBhIGNsb2Nrc3dlZXAgcGFydGl0aW9uIGJhc2Vk IG9uIE5VTUEgbm9kZSBhbmQgQ1BVCisgKgorICogVGhlIG51bWJlciBvZiBjbG9ja3N3ZWVw IHBhcnRpdGlvbnMgbWF5IG5vdCBtYXRjaCB0aGUgbnVtYmVyIG9mIE5VTUEKKyAqIG5vZGVz LCBidXQgaXQgc2hvdWxkIG5vdCBiZSBsb3dlci4gRWFjaCBwYXJ0aXRpb24gc2hvdWxkIGJl IG1hcHBlZCB0bworICogYSBzaW5nbGUgTlVNQSBub2RlLCBidXQgYSBub2RlIG1heSBoYXZl IG11bHRpcGxlIHBhcnRpdGlvbnMuIElmIHRoZXJlCisgKiBhcmUgbXVsdGlwbGUgcGFydGl0 aW9ucyBwZXIgbm9kZSAoYWxsIG5vZGVzIGhhdmUgdGhlIHNhbWUgbnVtYmVyIG9mCisgKiBw YXJ0aXRpb25zKSwgd2UgcGljayB0aGUgcGFydGl0aW9uIHVzaW5nIENQVS4KKyAqCisgKiBY WFggTWF5YmUgd2Ugc2hvdWxkIGRvIGJvdGggdGhlIHRvdGFsIGFuZCAicGVyIGdyb3VwIiBj b3VudHMgYSBwb3dlciBvZgorICogdHdvPyBUaGF0J2QgYWxsb3cgdXNpbmcgc2hpZnRzIGlu c3RlYWQgb2YgZGl2aXNpb25zIGluIHRoZSBjYWxjdWxhdGlvbiwKKyAqIGFuZCB0aGF0J3Mg Y2hlYXBlci4gQnV0IGhvdyB3b3VsZCB0aGF0IGRlYWwgd2l0aCBvZGQgbnVtYmVyIG9mIG5v ZGVzPworICovCitzdGF0aWMgQ2xvY2tTd2VlcCAqCitDaG9vc2VDbG9ja1N3ZWVwKHZvaWQp Cit7CisJaW50CQkJaW5kZXggPSBjYWxjdWxhdGVfcGFydGl0aW9uX2luZGV4KCk7CisKKwly ZXR1cm4gJlN0cmF0ZWd5Q29udHJvbC0+c3dlZXBzW2luZGV4XTsKK30KKwogLyoKICAqIENo b29zZUZyZWVMaXN0CiAgKgkJUGljayB0aGUgYnVmZmVyIGZyZWVsaXN0IHRvIHVzZSwgZGVw ZW5kaW5nIG9uIHRoZSBDUFUgYW5kIE5VTUEgbm9kZS4KQEAgLTM3NCw3ICs0MjQsNyBAQCBT dHJhdGVneUdldEJ1ZmZlcihCdWZmZXJBY2Nlc3NTdHJhdGVneSBzdHJhdGVneSwgdWludDMy ICpidWZfc3RhdGUsIGJvb2wgKmZyb21fcgogCSAqIHRoZSByYXRlIG9mIGJ1ZmZlciBjb25z dW1wdGlvbi4gIE5vdGUgdGhhdCBidWZmZXJzIHJlY3ljbGVkIGJ5IGEKIAkgKiBzdHJhdGVn eSBvYmplY3QgYXJlIGludGVudGlvbmFsbHkgbm90IGNvdW50ZWQgaGVyZS4KIAkgKi8KLQlw Z19hdG9taWNfZmV0Y2hfYWRkX3UzMigmU3RyYXRlZ3lDb250cm9sLT5udW1CdWZmZXJBbGxv Y3MsIDEpOworCXBnX2F0b21pY19mZXRjaF9hZGRfdTMyKCZDaG9vc2VDbG9ja1N3ZWVwKCkt Pm51bUJ1ZmZlckFsbG9jcywgMSk7CiAKIAkvKgogCSAqIEZpcnN0IGNoZWNrLCB3aXRob3V0 IGFjcXVpcmluZyB0aGUgbG9jaywgd2hldGhlciB0aGVyZSdzIGJ1ZmZlcnMgaW4gdGhlCkBA IC00NDUsMTMgKzQ5NSwxNyBAQCBTdHJhdGVneUdldEJ1ZmZlcihCdWZmZXJBY2Nlc3NTdHJh dGVneSBzdHJhdGVneSwgdWludDMyICpidWZfc3RhdGUsIGJvb2wgKmZyb21fcgogCS8qCiAJ ICogTm90aGluZyBvbiB0aGUgZnJlZWxpc3QsIHNvIHJ1biB0aGUgImNsb2NrIHN3ZWVwIiBh bGdvcml0aG0KIAkgKgotCSAqIFhYWCBTaG91bGQgd2UgYWxzbyBtYWtlIHRoaXMgTlVNQS1h d2FyZSwgdG8gb25seSBhY2Nlc3MgYnVmZmVycyBmcm9tCi0JICogdGhlIHNhbWUgTlVNQSBu b2RlPyBUaGF0J2QgcHJvYmFibHkgbWVhbiB3ZSBuZWVkIHRvIG1ha2UgdGhlIGNsb2NrCi0J ICogc3dlZXAgTlVNQS1hd2FyZSwgcGVyaGFwcyBieSBoYXZpbmcgbXVsdGlwbGUgY2xvY2sg c3dlZXBzLCBlYWNoIGZvciBhCi0JICogc3Vic2V0IG9mIGJ1ZmZlcnMuIEJ1dCB0aGF0IGFs c28gbWVhbnMgZWFjaCBwcm9jZXNzIGNvdWxkICJzd2VlcCIgb25seQotCSAqIGEgZnJhY3Rp b24gb2YgYnVmZmVycywgZXZlbiBpZiB0aGUgb3RoZXIgYnVmZmVycyBhcmUgYmV0dGVyIGNh bmRpZGF0ZXMKLQkgKiBmb3IgZXZpY3Rpb24uIFdvdWxkIHRoYXQgYWxzbyBtZWFuIHdlJ2Qg aGF2ZSBtdWx0aXBsZSBiZ3dyaXRlcnMsIG9uZQotCSAqIGZvciBlYWNoIG5vZGUsIG9yIHdv dWxkIG9uZSBiZ3dyaXRlciBoYW5kbGUgYWxsIG9mIHRoYXQ/CisJICogWFhYIE5vdGUgdGhh dCBDbG9ja1N3ZWVwVGljaygpIGlzIE5VTUEtYXdhcmUsIGkuZS4gaXQgb25seSBsb29rcyBh dAorCSAqIGJ1ZmZlcnMgZnJvbSBhIHNpbmdsZSBwYXJ0aXRpb24sIGFsaWduZWQgd2l0aCB0 aGUgTlVNQSBub2RlLiBUaGF0IG1lYW5zCisJICogaXQgb25seSBhY2Nlc3NlcyBidWZmZXJz IGZyb20gdGhlIHNhbWUgTlVNQSBub2RlLgorCSAqCisJICogWFhYIFRoYXQgYWxzbyBtZWFu cyBlYWNoIHByb2Nlc3MgInN3ZWVwcyIgb25seSBhIGZyYWN0aW9uIG9mIGJ1ZmZlcnMsCisJ ICogZXZlbiBpZiB0aGUgb3RoZXIgYnVmZmVycyBhcmUgYmV0dGVyIGNhbmRpZGF0ZXMgZm9y IGV2aWN0aW9uLiBNYXliZQorCSAqIHRoZXJlIHNob3VsZCBiZSBzb21lIGxvZ2ljIHRvICJz dGVhbCIgYnVmZmVycyBmcm9tIG90aGVyIGZyZWVsaXN0cyBvcgorCSAqIG90aGVyIG5vZGVz PworCSAqCisJICogWFhYIFdvdWxkIHRoYXQgYWxzbyBtZWFuIHdlJ2QgaGF2ZSBtdWx0aXBs ZSBiZ3dyaXRlcnMsIG9uZSBmb3IgZWFjaAorCSAqIG5vZGUsIG9yIHdvdWxkIG9uZSBiZ3dy aXRlciBoYW5kbGUgYWxsIG9mIHRoYXQ/CiAJICovCiAJdHJ5Y291bnRlciA9IE5CdWZmZXJz OwogCWZvciAoOzspCkBAIC01MzMsNiArNTg3LDQxIEBAIFN0cmF0ZWd5RnJlZUJ1ZmZlcihC dWZmZXJEZXNjICpidWYpCiAJU3BpbkxvY2tSZWxlYXNlKCZmcmVlbGlzdC0+ZnJlZWxpc3Rf bG9jayk7CiB9CiAKKy8qCisgKiBTdHJhdGVneVN5bmNTdGFydCAtLSBwcmVwYXJlIGZvciBz eW5jIG9mIGFsbCBwYXJ0aXRpb25zCisgKgorICogRGV0ZXJtaW5lIHRoZSBudW1iZXIgb2Yg Y2xvY2tzd2VlcCBwYXJ0aXRpb25zLCBhbmQgY2FsY3VsYXRlIHRoZSByZWNlbnQKKyAqIGJ1 ZmZlcnMgYWxsb2NzIChhcyBhIHN1bSBvZiBhbGwgdGhlIHBhcnRpdGlvbnMpLiBUaGlzIGFs bG93cyBCZ0J1ZmZlclN5bmMKKyAqIHRvIGNhbGN1bGF0ZSBhdmVyYWdlIG51bWJlciBvZiBh bGxvY2F0aW9ucyBwZXIgcGFydGl0aW9uIGZvciB0aGUgbmV4dAorICogc3luYyBjeWNsZS4K KyAqCisgKiBJbiBhZGRpdGlvbiBpdCByZXR1cm5zIHRoZSBjb3VudCBvZiByZWNlbnQgYnVm ZmVyIGFsbG9jcywgd2hpY2ggaXMgYSB0b3RhbAorICogc3VtbWVkIGZyb20gYWxsIHBhcnRp dGlvbnMuIFRoZSBhbGxvYyBjb3VudHMgYXJlIHJlc2V0IGFmdGVyIGJlaW5nIHJlYWQsCisg KiBhcyB0aGUgcGFydGl0aW9ucyBhcmUgd2Fsa2VkLgorICovCit2b2lkCitTdHJhdGVneVN5 bmNQcmVwYXJlKGludCAqbnVtX3BhcnRzLCB1aW50MzIgKm51bV9idWZfYWxsb2MpCit7CisJ Km51bV9idWZfYWxsb2MgPSAwOworCSpudW1fcGFydHMgPSBTdHJhdGVneUNvbnRyb2wtPm51 bV9wYXJ0aXRpb25zOworCisJLyoKKwkgKiBXZSBsb2NrIHRoZSBwYXJ0aXRpb25zIG9uZSBi eSBvbmUsIHNvIG5vdCBleGFjbHkgaW4gc3luYywgYnV0IHRoYXQKKwkgKiBzaG91bGQgYmUg ZmluZS4gV2UncmUgb25seSBsb29raW5nIGZvciBoZXVyaXN0aWNzIGFueXdheS4KKwkgKi8K Kwlmb3IgKGludCBpID0gMDsgaSA8IFN0cmF0ZWd5Q29udHJvbC0+bnVtX3BhcnRpdGlvbnM7 IGkrKykKKwl7CisJCUNsb2NrU3dlZXAgKnN3ZWVwID0gJlN0cmF0ZWd5Q29udHJvbC0+c3dl ZXBzW2ldOworCisJCVNwaW5Mb2NrQWNxdWlyZSgmc3dlZXAtPmNsb2NrX3N3ZWVwX2xvY2sp OworCQlpZiAobnVtX2J1Zl9hbGxvYykKKwkJeworCQkJKm51bV9idWZfYWxsb2MgKz0gcGdf YXRvbWljX2V4Y2hhbmdlX3UzMigmc3dlZXAtPm51bUJ1ZmZlckFsbG9jcywgMCk7CisJCX0K KwkJU3BpbkxvY2tSZWxlYXNlKCZzd2VlcC0+Y2xvY2tfc3dlZXBfbG9jayk7CisJfQorfQor CiAvKgogICogU3RyYXRlZ3lTeW5jU3RhcnQgLS0gdGVsbCBCZ0J1ZmZlclN5bmMgd2hlcmUg dG8gc3RhcnQgc3luY2luZwogICoKQEAgLTU0MCwzNyArNjI5LDQ0IEBAIFN0cmF0ZWd5RnJl ZUJ1ZmZlcihCdWZmZXJEZXNjICpidWYpCiAgKiBCZ0J1ZmZlclN5bmMoKSB3aWxsIHByb2Nl ZWQgY2lyY3VsYXJseSBhcm91bmQgdGhlIGJ1ZmZlciBhcnJheSBmcm9tIHRoZXJlLgogICoK ICAqIEluIGFkZGl0aW9uLCB3ZSByZXR1cm4gdGhlIGNvbXBsZXRlZC1wYXNzIGNvdW50ICh3 aGljaCBpcyBlZmZlY3RpdmVseQotICogdGhlIGhpZ2hlci1vcmRlciBiaXRzIG9mIG5leHRW aWN0aW1CdWZmZXIpIGFuZCB0aGUgY291bnQgb2YgcmVjZW50IGJ1ZmZlcgotICogYWxsb2Nz IGlmIG5vbi1OVUxMIHBvaW50ZXJzIGFyZSBwYXNzZWQuICBUaGUgYWxsb2MgY291bnQgaXMg cmVzZXQgYWZ0ZXIKLSAqIGJlaW5nIHJlYWQuCisgKiB0aGUgaGlnaGVyLW9yZGVyIGJpdHMg b2YgbmV4dFZpY3RpbUJ1ZmZlcikuCisgKgorICogVGhpcyBvbmx5IGNvbnNpZGVycyBhIHNp bmdsZSBjbG9ja3N3ZWVwIHBhcnRpdGlvbiwgYXMgQmdCdWZmZXJTeW5jIGxvb2tzCisgKiBh dCB0aGVtIG9uZSBieSBvbmUuCiAgKi8KIGludAotU3RyYXRlZ3lTeW5jU3RhcnQodWludDMy ICpjb21wbGV0ZV9wYXNzZXMsIHVpbnQzMiAqbnVtX2J1Zl9hbGxvYykKK1N0cmF0ZWd5U3lu Y1N0YXJ0KGludCBwYXJ0aXRpb24sIHVpbnQzMiAqY29tcGxldGVfcGFzc2VzLAorCQkJCSAg aW50ICpmaXJzdF9idWZmZXIsIGludCAqbnVtX2J1ZmZlcnMpCiB7CiAJdWludDMyCQluZXh0 VmljdGltQnVmZmVyOwogCWludAkJCXJlc3VsdDsKKwlDbG9ja1N3ZWVwICpzd2VlcCA9ICZT dHJhdGVneUNvbnRyb2wtPnN3ZWVwc1twYXJ0aXRpb25dOwogCi0JU3BpbkxvY2tBY3F1aXJl KCZTdHJhdGVneUNvbnRyb2wtPmJ1ZmZlcl9zdHJhdGVneV9sb2NrKTsKLQluZXh0VmljdGlt QnVmZmVyID0gcGdfYXRvbWljX3JlYWRfdTMyKCZTdHJhdGVneUNvbnRyb2wtPm5leHRWaWN0 aW1CdWZmZXIpOwotCXJlc3VsdCA9IG5leHRWaWN0aW1CdWZmZXIgJSBOQnVmZmVyczsKKwlB c3NlcnQoKHBhcnRpdGlvbiA+PSAwKSAmJiAocGFydGl0aW9uIDwgU3RyYXRlZ3lDb250cm9s LT5udW1fcGFydGl0aW9ucykpOworCisJU3BpbkxvY2tBY3F1aXJlKCZzd2VlcC0+Y2xvY2tf c3dlZXBfbG9jayk7CisJbmV4dFZpY3RpbUJ1ZmZlciA9IHBnX2F0b21pY19yZWFkX3UzMigm c3dlZXAtPm5leHRWaWN0aW1CdWZmZXIpOworCXJlc3VsdCA9IG5leHRWaWN0aW1CdWZmZXIg JSBzd2VlcC0+bnVtQnVmZmVyczsKKworCSpmaXJzdF9idWZmZXIgPSBzd2VlcC0+Zmlyc3RC dWZmZXI7CisJKm51bV9idWZmZXJzID0gc3dlZXAtPm51bUJ1ZmZlcnM7CiAKIAlpZiAoY29t cGxldGVfcGFzc2VzKQogCXsKLQkJKmNvbXBsZXRlX3Bhc3NlcyA9IFN0cmF0ZWd5Q29udHJv bC0+Y29tcGxldGVQYXNzZXM7CisJCSpjb21wbGV0ZV9wYXNzZXMgPSBzd2VlcC0+Y29tcGxl dGVQYXNzZXM7CiAKIAkJLyoKIAkJICogQWRkaXRpb25hbGx5IGFkZCB0aGUgbnVtYmVyIG9m IHdyYXBhcm91bmRzIHRoYXQgaGFwcGVuZWQgYmVmb3JlCiAJCSAqIGNvbXBsZXRlUGFzc2Vz IGNvdWxkIGJlIGluY3JlbWVudGVkLiBDLmYuIENsb2NrU3dlZXBUaWNrKCkuCiAJCSAqLwot CQkqY29tcGxldGVfcGFzc2VzICs9IG5leHRWaWN0aW1CdWZmZXIgLyBOQnVmZmVyczsKKwkJ KmNvbXBsZXRlX3Bhc3NlcyArPSBuZXh0VmljdGltQnVmZmVyIC8gc3dlZXAtPm51bUJ1ZmZl cnM7CiAJfQorCVNwaW5Mb2NrUmVsZWFzZSgmc3dlZXAtPmNsb2NrX3N3ZWVwX2xvY2spOwog Ci0JaWYgKG51bV9idWZfYWxsb2MpCi0JewotCQkqbnVtX2J1Zl9hbGxvYyA9IHBnX2F0b21p Y19leGNoYW5nZV91MzIoJlN0cmF0ZWd5Q29udHJvbC0+bnVtQnVmZmVyQWxsb2NzLCAwKTsK LQl9Ci0JU3BpbkxvY2tSZWxlYXNlKCZTdHJhdGVneUNvbnRyb2wtPmJ1ZmZlcl9zdHJhdGVn eV9sb2NrKTsKLQlyZXR1cm4gcmVzdWx0OworCS8qIFhYWCBidWZmZXIgSURzIHN0YXJ0IGF0 IDEsIHdlJ3JlIGNhbGN1bGF0aW5nIDAtYmFzZWQgaW5kZXhlcyAqLworCUFzc2VydChCdWZm ZXJJc1ZhbGlkKDEgKyBzd2VlcC0+Zmlyc3RCdWZmZXIgKyByZXN1bHQpKTsKKworCXJldHVy biBzd2VlcC0+Zmlyc3RCdWZmZXIgKyByZXN1bHQ7CiB9CiAKIC8qCkBAIC02NTgsNiArNzU0 LDEwIEBAIFN0cmF0ZWd5U2htZW1TaXplKHZvaWQpCiAJc2l6ZSA9IGFkZF9zaXplKHNpemUs IE1BWEFMSUdOKG11bF9zaXplKHNpemVvZihCdWZmZXJTdHJhdGVneUZyZWVsaXN0KSwKIAkJ CQkJCQkJCQkJbnVtX3BhcnRpdGlvbnMpKSk7CiAKKwkvKiBzaXplIG9mIGNsb2Nrc3dlZXAg cGFydGl0aW9ucyAoYXQgbGVhc3Qgb25lIHBlciBOVU1BIG5vZGUpICovCisJc2l6ZSA9IGFk ZF9zaXplKHNpemUsIE1BWEFMSUdOKG11bF9zaXplKHNpemVvZihDbG9ja1N3ZWVwKSwKKwkJ CQkJCQkJCQkJbnVtX3BhcnRpdGlvbnMpKSk7CisKIAlyZXR1cm4gc2l6ZTsKIH0KIApAQCAt Njc2LDYgKzc3Niw3IEBAIFN0cmF0ZWd5SW5pdGlhbGl6ZShib29sIGluaXQpCiAJaW50CQkJ bnVtX25vZGVzOwogCWludAkJCW51bV9wYXJ0aXRpb25zOwogCWludAkJCW51bV9wYXJ0aXRp b25zX3Blcl9ub2RlOworCWNoYXIJICAgKnB0cjsKIAogCS8qICovCiAJQnVmZmVyUGFydGl0 aW9uUGFyYW1zKCZudW1fcGFydGl0aW9ucywgJm51bV9ub2Rlcyk7CkBAIC03MDMsNyArODA0 LDggQEAgU3RyYXRlZ3lJbml0aWFsaXplKGJvb2wgaW5pdCkKIAlTdHJhdGVneUNvbnRyb2wg PSAoQnVmZmVyU3RyYXRlZ3lDb250cm9sICopCiAJCVNobWVtSW5pdFN0cnVjdCgiQnVmZmVy IFN0cmF0ZWd5IFN0YXR1cyIsCiAJCQkJCQlNQVhBTElHTihvZmZzZXRvZihCdWZmZXJTdHJh dGVneUNvbnRyb2wsIGZyZWVsaXN0cykpICsKLQkJCQkJCU1BWEFMSUdOKHNpemVvZihCdWZm ZXJTdHJhdGVneUZyZWVsaXN0KSAqIG51bV9wYXJ0aXRpb25zKSwKKwkJCQkJCU1BWEFMSUdO KHNpemVvZihCdWZmZXJTdHJhdGVneUZyZWVsaXN0KSAqIG51bV9wYXJ0aXRpb25zKSArCisJ CQkJCQlNQVhBTElHTihzaXplb2YoQ2xvY2tTd2VlcCkgKiBudW1fcGFydGl0aW9ucyksCiAJ CQkJCQkmZm91bmQpOwogCiAJaWYgKCFmb3VuZCkKQEAgLTcxOCwxMiArODIwLDQxIEBAIFN0 cmF0ZWd5SW5pdGlhbGl6ZShib29sIGluaXQpCiAKIAkJU3BpbkxvY2tJbml0KCZTdHJhdGVn eUNvbnRyb2wtPmJ1ZmZlcl9zdHJhdGVneV9sb2NrKTsKIAotCQkvKiBJbml0aWFsaXplIHRo ZSBjbG9jayBzd2VlcCBwb2ludGVyICovCi0JCXBnX2F0b21pY19pbml0X3UzMigmU3RyYXRl Z3lDb250cm9sLT5uZXh0VmljdGltQnVmZmVyLCAwKTsKKwkJLyogaGF2ZSB0byBwb2ludCB0 aGUgc3dlZXBzIGFycmF5IHRvIHJpZ2h0IGFmdGVyIHRoZSBmcmVlbGlzdHMgKi8KKwkJcHRy ID0gKGNoYXIgKikgU3RyYXRlZ3lDb250cm9sICsKKwkJCU1BWEFMSUdOKG9mZnNldG9mKEJ1 ZmZlclN0cmF0ZWd5Q29udHJvbCwgZnJlZWxpc3RzKSkgKworCQkJTUFYQUxJR04oc2l6ZW9m KEJ1ZmZlclN0cmF0ZWd5RnJlZWxpc3QpICogbnVtX3BhcnRpdGlvbnMpOworCQlTdHJhdGVn eUNvbnRyb2wtPnN3ZWVwcyA9IChDbG9ja1N3ZWVwICopIHB0cjsKKworCQkvKiBJbml0aWFs aXplIHRoZSBjbG9jayBzd2VlcCBwb2ludGVycyAoZm9yIGFsbCBwYXJ0aXRpb25zKSAqLwor CQlmb3IgKGludCBpID0gMDsgaSA8IG51bV9wYXJ0aXRpb25zOyBpKyspCisJCXsKKwkJCWlu dAkJCW5vZGUsCisJCQkJCQludW1fYnVmZmVycywKKwkJCQkJCWZpcnN0X2J1ZmZlciwKKwkJ CQkJCWxhc3RfYnVmZmVyOworCisJCQlTcGluTG9ja0luaXQoJlN0cmF0ZWd5Q29udHJvbC0+ c3dlZXBzW2ldLmNsb2NrX3N3ZWVwX2xvY2spOworCisJCQlwZ19hdG9taWNfaW5pdF91MzIo JlN0cmF0ZWd5Q29udHJvbC0+c3dlZXBzW2ldLm5leHRWaWN0aW1CdWZmZXIsIDApOwogCi0J CS8qIENsZWFyIHN0YXRpc3RpY3MgKi8KLQkJU3RyYXRlZ3lDb250cm9sLT5jb21wbGV0ZVBh c3NlcyA9IDA7Ci0JCXBnX2F0b21pY19pbml0X3UzMigmU3RyYXRlZ3lDb250cm9sLT5udW1C dWZmZXJBbGxvY3MsIDApOworCQkJLyogZ2V0IGluZm8gYWJvdXQgdGhlIGJ1ZmZlciBwYXJ0 aXRpb24gKi8KKwkJCUJ1ZmZlclBhcnRpdGlvbkdldChpLCAmbm9kZSwgJm51bV9idWZmZXJz LAorCQkJCQkJCSAgICZmaXJzdF9idWZmZXIsICZsYXN0X2J1ZmZlcik7CisKKwkJCS8qCisJ CQkgKiBGSVhNRSBUaGlzIG1heSBub3QgcXVpdGUgcmlnaHQsIGJlY2F1c2UgaWYgTkJ1ZmZl cnMgaXMgbm90IGEKKwkJCSAqIHBlcmZlY3QgbXVsdGlwbGUgb2YgbnVtQnVmZmVycywgdGhl IGxhc3QgcGFydGl0aW9uIHdpbGwgaGF2ZQorCQkJICogbnVtQnVmZmVycyBzZXQgdG9vIGhp Z2guIGJ1Zl9pbml0IGhhbmRsZXMgdGhpcyBieSB0cmFja2luZyB0aGUKKwkJCSAqIHJlbWFp bmluZyBudW1iZXIgb2YgYnVmZmVycywgYW5kIG5vdCBvdmVyZmxvd2luZy4KKwkJCSAqLwor CQkJU3RyYXRlZ3lDb250cm9sLT5zd2VlcHNbaV0ubnVtQnVmZmVycyA9IG51bV9idWZmZXJz OworCQkJU3RyYXRlZ3lDb250cm9sLT5zd2VlcHNbaV0uZmlyc3RCdWZmZXIgPSBmaXJzdF9i dWZmZXI7CisKKwkJCS8qIENsZWFyIHN0YXRpc3RpY3MgKi8KKwkJCVN0cmF0ZWd5Q29udHJv bC0+c3dlZXBzW2ldLmNvbXBsZXRlUGFzc2VzID0gMDsKKwkJCXBnX2F0b21pY19pbml0X3Uz MigmU3RyYXRlZ3lDb250cm9sLT5zd2VlcHNbaV0ubnVtQnVmZmVyQWxsb2NzLCAwKTsKKwkJ fQogCiAJCS8qIE5vIHBlbmRpbmcgbm90aWZpY2F0aW9uICovCiAJCVN0cmF0ZWd5Q29udHJv bC0+Ymd3cHJvY25vID0gLTE7CkBAIC03NzEsNyArOTAyLDYgQEAgU3RyYXRlZ3lJbml0aWFs aXplKGJvb2wgaW5pdCkKIAkJCQlidWYtPmZyZWVOZXh0ID0gZnJlZWxpc3QtPmZpcnN0RnJl ZUJ1ZmZlcjsKIAkJCQlmcmVlbGlzdC0+Zmlyc3RGcmVlQnVmZmVyID0gaTsKIAkJCX0KLQog CQl9CiAJfQogCWVsc2UKQEAgLTExMTEsOSArMTI0MSwxMSBAQCBTdHJhdGVneVJlamVjdEJ1 ZmZlcihCdWZmZXJBY2Nlc3NTdHJhdGVneSBzdHJhdGVneSwgQnVmZmVyRGVzYyAqYnVmLCBi b29sIGZyb21fcgogfQogCiB2b2lkCi1GcmVlbGlzdFBhcnRpdGlvbkdldEluZm8oaW50IGlk eCwgdWludDY0ICpjb25zdW1lZCwgdWludDY0ICpyZW1haW4sIHVpbnQ2NCAqYWN0dWFsbHlf ZnJlZSkKK0ZyZWVsaXN0UGFydGl0aW9uR2V0SW5mbyhpbnQgaWR4LCB1aW50NjQgKmNvbnN1 bWVkLCB1aW50NjQgKnJlbWFpbiwgdWludDY0ICphY3R1YWxseV9mcmVlLAorCQkJCQkJIHVp bnQzMiAqY29tcGxldGVfcGFzc2VzLCB1aW50MzIgKmJ1ZmZlcl9hbGxvY3MsIHVpbnQzMiAq bmV4dF92aWN0aW1fYnVmZmVyKQogewogCUJ1ZmZlclN0cmF0ZWd5RnJlZWxpc3QgKmZyZWVs aXN0OworCUNsb2NrU3dlZXAgKnN3ZWVwOwogCWludAkJCWN1cjsKIAogCS8qIHN0YXRzICov CkBAIC0xMTIzLDYgKzEyNTUsNyBAQCBGcmVlbGlzdFBhcnRpdGlvbkdldEluZm8oaW50IGlk eCwgdWludDY0ICpjb25zdW1lZCwgdWludDY0ICpyZW1haW4sIHVpbnQ2NCAqYWN0dQogCUFz c2VydCgoaWR4ID49IDApICYmIChpZHggPCBTdHJhdGVneUNvbnRyb2wtPm51bV9wYXJ0aXRp b25zKSk7CiAKIAlmcmVlbGlzdCA9ICZTdHJhdGVneUNvbnRyb2wtPmZyZWVsaXN0c1tpZHhd OworCXN3ZWVwID0gJlN0cmF0ZWd5Q29udHJvbC0+c3dlZXBzW2lkeF07CiAKIAkvKiBzdGF0 ICovCiAJU3BpbkxvY2tBY3F1aXJlKCZmcmVlbGlzdC0+ZnJlZWxpc3RfbG9jayk7CkBAIC0x MTUyLDQgKzEyODUsMTEgQEAgRnJlZWxpc3RQYXJ0aXRpb25HZXRJbmZvKGludCBpZHgsIHVp bnQ2NCAqY29uc3VtZWQsIHVpbnQ2NCAqcmVtYWluLCB1aW50NjQgKmFjdHUKIAogCSpyZW1h aW4gPSBjbnRfcmVtYWluOwogCSphY3R1YWxseV9mcmVlID0gY250X2ZyZWU7CisKKwkvKiBn ZXQgdGhlIGNsb2Nrc3dlZXAgc3RhdHMgdG9vICovCisJKmNvbXBsZXRlX3Bhc3NlcyA9IHN3 ZWVwLT5jb21wbGV0ZVBhc3NlczsKKwkqYnVmZmVyX2FsbG9jcyA9IHBnX2F0b21pY19yZWFk X3UzMigmc3dlZXAtPm51bUJ1ZmZlckFsbG9jcyk7CisJKm5leHRfdmljdGltX2J1ZmZlciA9 IHBnX2F0b21pY19yZWFkX3UzMigmc3dlZXAtPm5leHRWaWN0aW1CdWZmZXIpOworCisJKm5l eHRfdmljdGltX2J1ZmZlciA9IHN3ZWVwLT5maXJzdEJ1ZmZlciArICgqbmV4dF92aWN0aW1f YnVmZmVyICUgc3dlZXAtPm51bUJ1ZmZlcnMpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvc3RvcmFnZS9idWZfaW50ZXJuYWxzLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2J1Zl9p bnRlcm5hbHMuaAppbmRleCA5ZGZiZWNiOWZlNC4uOTA3YjE2MGI0ZjcgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL3N0b3JhZ2UvYnVmX2ludGVybmFscy5oCisrKyBiL3NyYy9pbmNsdWRl L3N0b3JhZ2UvYnVmX2ludGVybmFscy5oCkBAIC00NDksNyArNDQ5LDkgQEAgZXh0ZXJuIHZv aWQgU3RyYXRlZ3lGcmVlQnVmZmVyKEJ1ZmZlckRlc2MgKmJ1Zik7CiBleHRlcm4gYm9vbCBT dHJhdGVneVJlamVjdEJ1ZmZlcihCdWZmZXJBY2Nlc3NTdHJhdGVneSBzdHJhdGVneSwKIAkJ CQkJCQkJIEJ1ZmZlckRlc2MgKmJ1ZiwgYm9vbCBmcm9tX3JpbmcpOwogCi1leHRlcm4gaW50 CVN0cmF0ZWd5U3luY1N0YXJ0KHVpbnQzMiAqY29tcGxldGVfcGFzc2VzLCB1aW50MzIgKm51 bV9idWZfYWxsb2MpOworZXh0ZXJuIHZvaWQgU3RyYXRlZ3lTeW5jUHJlcGFyZShpbnQgKm51 bV9wYXJ0cywgdWludDMyICpudW1fYnVmX2FsbG9jKTsKK2V4dGVybiBpbnQJU3RyYXRlZ3lT eW5jU3RhcnQoaW50IHBhcnRpdGlvbiwgdWludDMyICpjb21wbGV0ZV9wYXNzZXMsCisJCQkJ CQkJICBpbnQgKmZpcnN0X2J1ZmZlciwgaW50ICpudW1fYnVmZmVycyk7CiBleHRlcm4gdm9p ZCBTdHJhdGVneU5vdGlmeUJnV3JpdGVyKGludCBiZ3dwcm9jbm8pOwogCiBleHRlcm4gU2l6 ZSBTdHJhdGVneVNobWVtU2l6ZSh2b2lkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0 b3JhZ2UvYnVmbWdyLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2J1Zm1nci5oCmluZGV4IGRm MTI3Mjc0MTkwLi41Mzg1NWQ0YmUyMyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFn ZS9idWZtZ3IuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2J1Zm1nci5oCkBAIC0zNDks NyArMzQ5LDEwIEBAIGV4dGVybiBpbnQJR2V0QWNjZXNzU3RyYXRlZ3lQaW5MaW1pdChCdWZm ZXJBY2Nlc3NTdHJhdGVneSBzdHJhdGVneSk7CiBleHRlcm4gdm9pZCBGcmVlQWNjZXNzU3Ry YXRlZ3koQnVmZmVyQWNjZXNzU3RyYXRlZ3kgc3RyYXRlZ3kpOwogZXh0ZXJuIHZvaWQgRnJl ZWxpc3RQYXJ0aXRpb25HZXRJbmZvKGludCBpZHgsCiAJCQkJCQkJCQkgdWludDY0ICpjb25z dW1lZCwgdWludDY0ICpyZW1haW4sCi0JCQkJCQkJCQkgdWludDY0ICphY3R1YWxseV9mcmVl KTsKKwkJCQkJCQkJCSB1aW50NjQgKmFjdHVhbGx5X2ZyZWUsCisJCQkJCQkJCQkgdWludDMy ICpjb21wbGV0ZV9wYXNzZXMsCisJCQkJCQkJCQkgdWludDMyICpidWZmZXJfYWxsb2NzLAor CQkJCQkJCQkJIHVpbnQzMiAqbmV4dF92aWN0aW1fYnVmZmVyKTsKIAogLyogaW5saW5lIGZ1 bmN0aW9ucyAqLwogCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMu bGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IGM2OTVjZmE3 NmU4Li5hMzhkZDhkNjI0MiAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVk ZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTQy OCw2ICs0MjgsNyBAQCBDbGllbnRDZXJ0TmFtZQogQ2xpZW50Q29ubmVjdGlvbkluZm8KIENs aWVudERhdGEKIENsaWVudFNvY2tldAorQ2xvY2tTd2VlcAogQ2xvbmVQdHJUeXBlCiBDbG9z ZVBvcnRhbFN0bXQKIENsb3NlUHRyVHlwZQotLSAKMi41MC4xCgo= --------------ffSr0c8hlIKbvluiJSw5Id5o Content-Type: text/x-patch; charset=UTF-8; name="v3-0004-NUMA-partition-buffer-freelist.patch" Content-Disposition: attachment; filename="v3-0004-NUMA-partition-buffer-freelist.patch" Content-Transfer-Encoding: base64 RnJvbSAwNmE0M2Q1NDQ5OGFiNTA0OWMxMmE0NThjZmJkNGZlM2IzYjE2OGMyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQHZvbmRyYS5tZT4K RGF0ZTogVGh1LCAyMiBNYXkgMjAyNSAxODozODo0MSArMDIwMApTdWJqZWN0OiBbUEFUQ0gg djMgNC83XSBOVU1BOiBwYXJ0aXRpb24gYnVmZmVyIGZyZWVsaXN0CgpJbnN0ZWFkIG9mIGEg c2luZ2xlIGJ1ZmZlciBmcmVlbGlzdCwgcGFydGl0aW9uIGludG8gbXVsdGlwbGUgc21hbGxl cgpsaXN0cywgdG8gcmVkdWNlIGxvY2sgY29udGVudGlvbiwgYW5kIHRvIHNwcmVhZCB0aGUg YnVmZmVycyBvdmVyIGFsbApOVU1BIG5vZGVzIG1vcmUgZXZlbmx5LgoKVGhpcyB1c2VzIHRo ZSBidWZmZXIgcGFydGl0aW9uaW5nIHNjaGVtZSBpbnRyb2R1Y2VkIGJ5IHRoZSBlYXJsaWVy CnBhdGNoLCBpLmUuIHRoZSBwYXJ0aXRpb25zIHdpbGwgImFsaWduIiB3aXRoIE5VTUEgbm9k ZXMsIGV0Yy4KCkl0IGFsc28gZXh0ZW5kcyB0aGUgInBnX2J1ZmZlcmNhY2hlX3BhcnRpdGlv bnMiIHZpZXcsIHRvIGluY2x1ZGUKaW5mb3JtYXRpb24gYWJvdXQgZWFjaCBmcmVlbGlzdCAo bnVtYmVyIG9mIGNvbnN1bWVkZCBidWZmZXJzLCAuLi4pLgoKV2hlbiBhbGxvY2F0aW5nIGEg YnVmZmVyLCBpdCdzIHRha2VuIGZyb20gdGhlIGNvcnJlY3QgZnJlZWxpc3QgKHNhbWUKTlVN QSBub2RlKS4KCk5vdGU6IFRoaXMgaXMgKHByb2JhYmx5KSBtb3JlIGltcG9ydGFudCB0aGFu IHBhcnRpdGlvbmluZyBQcm9jQXJyYXkuCi0tLQogLi4uL3BnX2J1ZmZlcmNhY2hlLS0xLjYt LTEuNy5zcWwgICAgICAgICAgICAgIHwgICAyICstCiBjb250cmliL3BnX2J1ZmZlcmNhY2hl L3BnX2J1ZmZlcmNhY2hlX3BhZ2VzLmMgfCAgMjQgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2Uv YnVmZmVyL2ZyZWVsaXN0LmMgICAgICAgICB8IDM2MCArKysrKysrKysrKysrKysrLS0KIHNy Yy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jICAgICAgICAgICAgICB8ICAgMSArCiBz cmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYyAgICAgICAgICAgfCAgMTAgKwog c3JjL2luY2x1ZGUvbWlzY2FkbWluLmggICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsK IHNyYy9pbmNsdWRlL3N0b3JhZ2UvYnVmbWdyLmggICAgICAgICAgICAgICAgICB8ICAgNCAr LQogNyBmaWxlcyBjaGFuZ2VkLCAzNzIgaW5zZXJ0aW9ucygrKSwgMzAgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ19idWZmZXJjYWNoZS9wZ19idWZmZXJjYWNoZS0t MS42LS0xLjcuc3FsIGIvY29udHJpYi9wZ19idWZmZXJjYWNoZS9wZ19idWZmZXJjYWNoZS0t MS42LS0xLjcuc3FsCmluZGV4IGJkOTcyNDZmNmFiLi4zODcxYzI2MTUyOCAxMDA2NDQKLS0t IGEvY29udHJpYi9wZ19idWZmZXJjYWNoZS9wZ19idWZmZXJjYWNoZS0tMS42LS0xLjcuc3Fs CisrKyBiL2NvbnRyaWIvcGdfYnVmZmVyY2FjaGUvcGdfYnVmZmVyY2FjaGUtLTEuNi0tMS43 LnNxbApAQCAtMTIsNyArMTIsNyBAQCBMQU5HVUFHRSBDIFBBUkFMTEVMIFNBRkU7CiAtLSBD cmVhdGUgYSB2aWV3IGZvciBjb252ZW5pZW50IGFjY2Vzcy4KIENSRUFURSBWSUVXIHBnX2J1 ZmZlcmNhY2hlX3BhcnRpdGlvbnMgQVMKIAlTRUxFQ1QgUC4qIEZST00gcGdfYnVmZmVyY2Fj aGVfcGFydGl0aW9ucygpIEFTIFAKLQkocGFydGl0aW9uIGludGVnZXIsIG51bWFfbm9kZSBp bnRlZ2VyLCBudW1fYnVmZmVycyBpbnRlZ2VyLCBmaXJzdF9idWZmZXIgaW50ZWdlciwgbGFz dF9idWZmZXIgaW50ZWdlcik7CisJKHBhcnRpdGlvbiBpbnRlZ2VyLCBudW1hX25vZGUgaW50 ZWdlciwgbnVtX2J1ZmZlcnMgaW50ZWdlciwgZmlyc3RfYnVmZmVyIGludGVnZXIsIGxhc3Rf YnVmZmVyIGludGVnZXIsIGJ1ZmZlcnNfY29uc3VtZWQgYmlnaW50LCBidWZmZXJzX3JlbWFp biBiaWdpbnQsIGJ1ZmZlcnNfZnJlZSBiaWdpbnQpOwogCiAtLSBEb24ndCB3YW50IHRoZXNl IHRvIGJlIGF2YWlsYWJsZSB0byBwdWJsaWMuCiBSRVZPS0UgQUxMIE9OIEZVTkNUSU9OIHBn X2J1ZmZlcmNhY2hlX3BhcnRpdGlvbnMoKSBGUk9NIFBVQkxJQzsKZGlmZiAtLWdpdCBhL2Nv bnRyaWIvcGdfYnVmZmVyY2FjaGUvcGdfYnVmZmVyY2FjaGVfcGFnZXMuYyBiL2NvbnRyaWIv cGdfYnVmZmVyY2FjaGUvcGdfYnVmZmVyY2FjaGVfcGFnZXMuYwppbmRleCA4YmFhN2M3YjU0 My4uNjY4YWRhOGM0N2IgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdfYnVmZmVyY2FjaGUvcGdf YnVmZmVyY2FjaGVfcGFnZXMuYworKysgYi9jb250cmliL3BnX2J1ZmZlcmNhY2hlL3BnX2J1 ZmZlcmNhY2hlX3BhZ2VzLmMKQEAgLTI3LDcgKzI3LDcgQEAKICNkZWZpbmUgTlVNX0JVRkZF UkNBQ0hFX0VWSUNUX0FMTF9FTEVNIDMKIAogI2RlZmluZSBOVU1fQlVGRkVSQ0FDSEVfTlVN QV9FTEVNCTMKLSNkZWZpbmUgTlVNX0JVRkZFUkNBQ0hFX1BBUlRJVElPTlNfRUxFTQk1Cisj ZGVmaW5lIE5VTV9CVUZGRVJDQUNIRV9QQVJUSVRJT05TX0VMRU0JOAogCiBQR19NT0RVTEVf TUFHSUNfRVhUKAogCQkJCQkubmFtZSA9ICJwZ19idWZmZXJjYWNoZSIsCkBAIC04MTIsNiAr ODEyLDEyIEBAIHBnX2J1ZmZlcmNhY2hlX3BhcnRpdGlvbnMoUEdfRlVOQ1RJT05fQVJHUykK IAkJCQkJCSAgIElOVDRPSUQsIC0xLCAwKTsKIAkJVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGxl ZGVzYywgKEF0dHJOdW1iZXIpIDUsICJsYXN0X2J1ZmZlciIsCiAJCQkJCQkgICBJTlQ0T0lE LCAtMSwgMCk7CisJCVR1cGxlRGVzY0luaXRFbnRyeSh0dXBsZWRlc2MsIChBdHRyTnVtYmVy KSA2LCAiYnVmZmVyc19jb25zdW1lZCIsCisJCQkJCQkgICBJTlQ4T0lELCAtMSwgMCk7CisJ CVR1cGxlRGVzY0luaXRFbnRyeSh0dXBsZWRlc2MsIChBdHRyTnVtYmVyKSA3LCAiYnVmZmVy c19yZW1haW4iLAorCQkJCQkJICAgSU5UOE9JRCwgLTEsIDApOworCQlUdXBsZURlc2NJbml0 RW50cnkodHVwbGVkZXNjLCAoQXR0ck51bWJlcikgOCwgImJ1ZmZlcnNfZnJlZSIsCisJCQkJ CQkgICBJTlQ4T0lELCAtMSwgMCk7CiAKIAkJZnVuY2N0eC0+dXNlcl9mY3R4ID0gQmxlc3NU dXBsZURlc2ModHVwbGVkZXNjKTsKIApAQCAtODMzLDEyICs4MzksMTkgQEAgcGdfYnVmZmVy Y2FjaGVfcGFydGl0aW9ucyhQR19GVU5DVElPTl9BUkdTKQogCQkJCQlmaXJzdF9idWZmZXIs CiAJCQkJCWxhc3RfYnVmZmVyOwogCisJCXVpbnQ2NAkJYnVmZmVyc19jb25zdW1lZCwKKwkJ CQkJYnVmZmVyc19yZW1haW4sCisJCQkJCWJ1ZmZlcnNfZnJlZTsKKwogCQlEYXR1bQkJdmFs dWVzW05VTV9CVUZGRVJDQUNIRV9QQVJUSVRJT05TX0VMRU1dOwogCQlib29sCQludWxsc1tO VU1fQlVGRkVSQ0FDSEVfUEFSVElUSU9OU19FTEVNXTsKIAogCQlCdWZmZXJQYXJ0aXRpb25H ZXQoaSwgJm51bWFfbm9kZSwgJm51bV9idWZmZXJzLAogCQkJCQkJICAgJmZpcnN0X2J1ZmZl ciwgJmxhc3RfYnVmZmVyKTsKIAorCQlGcmVlbGlzdFBhcnRpdGlvbkdldEluZm8oaSwgJmJ1 ZmZlcnNfY29uc3VtZWQsICZidWZmZXJzX3JlbWFpbiwKKwkJCQkJCQkJICZidWZmZXJzX2Zy ZWUpOworCiAJCXZhbHVlc1swXSA9IEludDMyR2V0RGF0dW0oaSk7CiAJCW51bGxzWzBdID0g ZmFsc2U7CiAKQEAgLTg1NCw2ICs4NjcsMTUgQEAgcGdfYnVmZmVyY2FjaGVfcGFydGl0aW9u cyhQR19GVU5DVElPTl9BUkdTKQogCQl2YWx1ZXNbNF0gPSBJbnQzMkdldERhdHVtKGxhc3Rf YnVmZmVyKTsKIAkJbnVsbHNbNF0gPSBmYWxzZTsKIAorCQl2YWx1ZXNbNV0gPSBJbnQ2NEdl dERhdHVtKGJ1ZmZlcnNfY29uc3VtZWQpOworCQludWxsc1s1XSA9IGZhbHNlOworCisJCXZh bHVlc1s2XSA9IEludDY0R2V0RGF0dW0oYnVmZmVyc19yZW1haW4pOworCQludWxsc1s2XSA9 IGZhbHNlOworCisJCXZhbHVlc1s3XSA9IEludDY0R2V0RGF0dW0oYnVmZmVyc19mcmVlKTsK KwkJbnVsbHNbN10gPSBmYWxzZTsKKwogCQkvKiBCdWlsZCBhbmQgcmV0dXJuIHRoZSB0dXBs ZS4gKi8KIAkJdHVwbGUgPSBoZWFwX2Zvcm1fdHVwbGUoKFR1cGxlRGVzYykgZnVuY2N0eC0+ dXNlcl9mY3R4LCB2YWx1ZXMsIG51bGxzKTsKIAkJcmVzdWx0ID0gSGVhcFR1cGxlR2V0RGF0 dW0odHVwbGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvZnJl ZWxpc3QuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2ZyZWVsaXN0LmMKaW5kZXgg ZTA0NjUyNmMxNDkuLmMzZmJkNjUxZGQ1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9y YWdlL2J1ZmZlci9mcmVlbGlzdC5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVy L2ZyZWVsaXN0LmMKQEAgLTE1LDE0ICsxNSw1MiBAQAogICovCiAjaW5jbHVkZSAicG9zdGdy ZXMuaCIKIAorI2luY2x1ZGUgPHNjaGVkLmg+CisjaW5jbHVkZSA8c3lzL3N5c2luZm8uaD4K KworI2lmZGVmIFVTRV9MSUJOVU1BCisjaW5jbHVkZSA8bnVtYS5oPgorI2luY2x1ZGUgPG51 bWFpZi5oPgorI2VuZGlmCisKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJwb3J0 L2F0b21pY3MuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zl9pbnRlcm5hbHMuaCIKICNpbmNs dWRlICJzdG9yYWdlL2J1Zm1nci5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9wcm9jLmgiCiAKICNkZWZpbmUgSU5UX0FDQ0VTU19PTkNFKHZhcikJ KChpbnQpKCooKHZvbGF0aWxlIGludCAqKSYodmFyKSkpKQogCisvKgorICogUmVwcmVzZW50 cyBvbmUgZnJlZWxpc3QgcGFydGl0aW9uLgorICovCit0eXBlZGVmIHN0cnVjdCBCdWZmZXJT dHJhdGVneUZyZWVsaXN0Cit7CisJLyogU3BpbmxvY2s6IHByb3RlY3RzIHRoZSB2YWx1ZXMg YmVsb3cgKi8KKwlzbG9ja190CQlmcmVlbGlzdF9sb2NrOworCisJLyoKKwkgKiBYWFggTm90 IHN1cmUgd2h5IHRoaXMgbmVlZHMgdG8gYmUgYWxpZ25lZCBsaWtlIHRoaXMuIE5lZWQgdG8g YXNrCisJICogQW5kcmVzLgorCSAqLworCWludAkJCWZpcnN0RnJlZUJ1ZmZlciBfX2F0dHJp YnV0ZV9fKChhbGlnbmVkKDY0KSkpOwkvKiBIZWFkIG9mIGxpc3Qgb2YKKwkJCQkJCQkJCQkJ CQkJCQkgKiB1bnVzZWQgYnVmZmVycyAqLworCisJLyogTnVtYmVyIG9mIGJ1ZmZlcnMgY29u c3VtZWQgZnJvbSB0aGlzIGxpc3QuICovCisJdWludDY0CQljb25zdW1lZDsKK30JCQlCdWZm ZXJTdHJhdGVneUZyZWVsaXN0OworCisvKgorICogVGhlIG1pbmltdW0gbnVtYmVyIG9mIHBh cnRpdGlvbnMgd2Ugd2FudCB0byBoYXZlLiBXZSB3YW50IGF0IGxlYXN0IHRoaXMKKyAqIG51 bWJlciBvZiBwYXJ0aXRpb25zLCBldmVuIG9uIG5vbi1OVU1BIHN5c3RlbSwgYXMgaXQgaGVs cHMgd2l0aCBjb250ZW50aW9uCisgKiBmb3IgYnVmZmVycy4gQnV0IHdpdGggbXVsdGlwbGUg TlVNQSBub2Rlcywgd2Ugd2FudCBhIHNlcGFyYXRlIHBhcnRpdGlvbiBwZXIKKyAqIG5vZGUu IEJ1dCB3ZSBtYXkgZ2V0IG11bHRpcGxlIHBhcnRpdGlvbnMgcGVyIG5vZGUsIGZvciBsb3cg bm9kZSBjb3VudC4KKyAqCisgKiBXaXRoIG11bHRpcGxlIHBhcnRpdGlvbnMgcGVyIE5VTUEg bm9kZSwgd2UgcGljayB0aGUgcGFydGl0aW9uIGJhc2VkIG9uIENQVQorICogKG9yIHNvbWUg b3RoZXIgcGFyYW1ldGVyKS4KKyAqLworI2RlZmluZSBNSU5fRlJFRUxJU1RfUEFSVElUSU9O UwkJNAogCiAvKgogICogVGhlIHNoYXJlZCBmcmVlbGlzdCBjb250cm9sIGluZm9ybWF0aW9u LgpAQCAtMzksOCArNzcsNiBAQCB0eXBlZGVmIHN0cnVjdAogCSAqLwogCXBnX2F0b21pY191 aW50MzIgbmV4dFZpY3RpbUJ1ZmZlcjsKIAotCWludAkJCWZpcnN0RnJlZUJ1ZmZlcjsJLyog SGVhZCBvZiBsaXN0IG9mIHVudXNlZCBidWZmZXJzICovCi0KIAkvKgogCSAqIFN0YXRpc3Rp Y3MuICBUaGVzZSBjb3VudGVycyBzaG91bGQgYmUgd2lkZSBlbm91Z2ggdGhhdCB0aGV5IGNh bid0CiAJICogb3ZlcmZsb3cgZHVyaW5nIGEgc2luZ2xlIGJnd3JpdGVyIGN5Y2xlLgpAQCAt NTEsOCArODcsMTkgQEAgdHlwZWRlZiBzdHJ1Y3QKIAkvKgogCSAqIEJnd29ya2VyIHByb2Nl c3MgdG8gYmUgbm90aWZpZWQgdXBvbiBhY3Rpdml0eSBvciAtMSBpZiBub25lLiBTZWUKIAkg KiBTdHJhdGVneU5vdGlmeUJnV3JpdGVyLgorCSAqCisJICogWFhYIE5vdCBzdXJlIHdoeSB0 aGlzIG5lZWRzIHRvIGJlIGFsaWduZWQgbGlrZSB0aGlzLiBOZWVkIHRvIGFzaworCSAqIEFu ZHJlcy4gQWxzbywgc2hvdWxkbid0IHRoZSBhbGlnbm1lbnQgYmUgc3BlY2lmaWVkIGFmdGVy LCBsaWtlIGZvcgorCSAqICJjb25zdW1lZCI/CiAJICovCi0JaW50CQkJYmd3cHJvY25vOwor CWludAkJCV9fYXR0cmlidXRlX18oKGFsaWduZWQoNjQpKSkgYmd3cHJvY25vOworCisJLyog aW5mbyBhYm91dCBmcmVlbGlzdCBwYXJ0aXRpb25pbmcgKi8KKwlpbnQJCQludW1fbm9kZXM7 CQkvKiBlZmZlY3RpdmVseSBudW1iZXIgb2YgTlVNQSBub2RlcyAqLworCWludAkJCW51bV9w YXJ0aXRpb25zOworCWludAkJCW51bV9wYXJ0aXRpb25zX3Blcl9ub2RlOworCisJQnVmZmVy U3RyYXRlZ3lGcmVlbGlzdCBmcmVlbGlzdHNbRkxFWElCTEVfQVJSQVlfTUVNQkVSXTsKIH0g QnVmZmVyU3RyYXRlZ3lDb250cm9sOwogCiAvKiBQb2ludGVycyB0byBzaGFyZWQgc3RhdGUg Ki8KQEAgLTE1Nyw2ICsyMDQsODggQEAgQ2xvY2tTd2VlcFRpY2sodm9pZCkKIAlyZXR1cm4g dmljdGltOwogfQogCitzdGF0aWMgaW50CitjYWxjdWxhdGVfcGFydGl0aW9uX2luZGV4KCkK K3sKKwlpbnQJCQlyYzsKKwl1bnNpZ25lZAljcHU7CisJdW5zaWduZWQJbm9kZTsKKwlpbnQJ CQlpbmRleDsKKworCUFzc2VydChTdHJhdGVneUNvbnRyb2wtPm51bV9wYXJ0aXRpb25zID09 CisJCSAgIChTdHJhdGVneUNvbnRyb2wtPm51bV9ub2RlcyAqIFN0cmF0ZWd5Q29udHJvbC0+ bnVtX3BhcnRpdGlvbnNfcGVyX25vZGUpKTsKKworCS8qCisJICogZnJlZWxpc3QgaXMgcGFy dGl0aW9uZWQsIHNvIGRldGVybWluZSB0aGUgQ1BVL05VTUEgbm9kZSwgYW5kIHBpY2sgYQor CSAqIGxpc3QgYmFzZWQgb24gdGhhdC4KKwkgKi8KKwlyYyA9IGdldGNwdSgmY3B1LCAmbm9k ZSk7CisJaWYgKHJjICE9IDApCisJCWVsb2coRVJST1IsICJnZXRjcHUgZmFpbGVkOiAlbSIp OworCisJLyoKKwkgKiBYWFggV2Ugc2hvdWxkJ3QgZ2V0IG5vZGVzIHRoYXQgd2UgaGF2ZW4n dCBjb25zaWRlcmVkIHdoaWxlIGJ1aWxkaW5nIHRoZQorCSAqIHBhcnRpdGlvbnMuIE1heWJl IGlmIHdlIGFsbG93IHRoaXMgKGUuZy4gZHVlIHRvIHN1cHBvcnQgYWRqdXN0aW5nIHRoZQor CSAqIE5VTUEgc3R1ZmYgYXQgcnVudGltZSksIHdlIHNob3VsZCBqdXN0IGRvIG91ciBiZXN0 IHRvIG1pbmltaXplIHRoZQorCSAqIGNvbmZsaWN0cyBzb21laG93LiBCdXQgaXQnbGwgbWFr ZSB0aGUgbWFwcGluZyBoYXJkZXIsIHNvIGZvciBub3cgd2UKKwkgKiBpZ25vcmUgaXQuCisJ ICovCisJaWYgKG5vZGUgPiBTdHJhdGVneUNvbnRyb2wtPm51bV9ub2RlcykKKwkJZWxvZyhF UlJPUiwgIm5vZGUgb3V0IG9mIHJhbmdlOiAlZCA+ICV1IiwgY3B1LCBTdHJhdGVneUNvbnRy b2wtPm51bV9ub2Rlcyk7CisKKwkvKgorCSAqIEZpbmQgdGhlIHBhcnRpdGlvbi4gSWYgd2Ug aGF2ZSBhIHNpbmdsZSBwYXJ0aXRpb24gcGVyIG5vZGUsIHdlIGNhbgorCSAqIGNhbGN1bGF0 ZSB0aGUgaW5kZXggZGlyZWN0bHkgZnJvbSBub2RlLiBPdGhlcndpc2Ugd2UgbmVlZCB0byBk byB0d28KKwkgKiBzdGVwcywgdXNpbmcgbm9kZSBhbmQgdGhlbiBjcHUuCisJICovCisJaWYg KFN0cmF0ZWd5Q29udHJvbC0+bnVtX3BhcnRpdGlvbnNfcGVyX25vZGUgPT0gMSkKKwl7CisJ CWluZGV4ID0gKG5vZGUgJSBTdHJhdGVneUNvbnRyb2wtPm51bV9wYXJ0aXRpb25zKTsKKwl9 CisJZWxzZQorCXsKKwkJaW50CQkJaW5kZXhfZ3JvdXAsCisJCQkJCWluZGV4X3BhcnQ7CisK KwkJLyogdHdvIHN0ZXBzIC0gY2FsY3VsYXRlIGdyb3VwIGZyb20gbm9kZSwgcGFydGl0aW9u IGZyb20gY3B1ICovCisJCWluZGV4X2dyb3VwID0gKG5vZGUgJSBTdHJhdGVneUNvbnRyb2wt Pm51bV9ub2Rlcyk7CisJCWluZGV4X3BhcnQgPSAoY3B1ICUgU3RyYXRlZ3lDb250cm9sLT5u dW1fcGFydGl0aW9uc19wZXJfbm9kZSk7CisKKwkJaW5kZXggPSAoaW5kZXhfZ3JvdXAgKiBT dHJhdGVneUNvbnRyb2wtPm51bV9wYXJ0aXRpb25zX3Blcl9ub2RlKQorCQkJKyBpbmRleF9w YXJ0OworCX0KKworCXJldHVybiBpbmRleDsKK30KKworLyoKKyAqIENob29zZUZyZWVMaXN0 CisgKgkJUGljayB0aGUgYnVmZmVyIGZyZWVsaXN0IHRvIHVzZSwgZGVwZW5kaW5nIG9uIHRo ZSBDUFUgYW5kIE5VTUEgbm9kZS4KKyAqCisgKiBXaXRob3V0IHBhcnRpdGlvbmVkIGZyZWVs aXN0cyAobnVtYV9wYXJ0aXRpb25fZnJlZWxpc3Q9ZmFsc2UpLCB0aGVyZSdzIG9ubHkKKyAq IGEgc2luZ2xlIGZyZWVsaXN0LCBzbyB1c2UgdGhhdC4KKyAqCisgKiBXaXRoIHBhcnRpdGlv bmVkIGZyZWVsaXN0cywgd2UgaGF2ZSBtdWx0aXBsZSB3YXlzIGhvdyB0byBwaWNrIHRoZSBm cmVlbGlzdAorICogZm9yIHRoZSBiYWNrZW5kOgorICoKKyAqIC0gb25lIGZyZWVsaXN0IHBl ciBDUFUsIHVzZSB0aGUgZnJlZWxpc3QgZm9yIENQVSB0aGUgdGFzayBleGVjdXRlcyBvbgor ICoKKyAqIC0gb25lIGZyZWVsaXN0IHBlciBOVU1BIG5vZGUsIHVzZSB0aGUgZnJlZWxpc3Qg Zm9yIG5vZGUgdGFzayBleGVjdXRlcyBvbgorICoKKyAqIC0gdXNlIGZpeGVkIG51bWJlciBv ZiBmcmVlbGlzdHMsIG1hcCBwcm9jZXNzZXMgdG8gbGlzdHMgYmFzZWQgb24gUElECisgKgor ICogVGhlcmUgbWF5IGJlIHNvbWUgb3RoZXIgc3RyYXRlZ2llcywgbm90IHN1cmUuIFRoZSBp bXBvcnRhbnQgdGhpbmcgaXMgdGhpcworICogbmVlZHMgdG8gYmUgcmVmcmVjbGVkIGR1cmlu ZyBpbml0aWFsaXphdGlvbiwgaS5lLiB3ZSBuZWVkIHRvIGNyZWF0ZSB0aGUKKyAqIHJpZ2h0 IG51bWJlciBvZiBsaXN0cy4KKyAqLworc3RhdGljIEJ1ZmZlclN0cmF0ZWd5RnJlZWxpc3Qg KgorQ2hvb3NlRnJlZUxpc3Qodm9pZCkKK3sKKwlpbnQJCQlpbmRleCA9IGNhbGN1bGF0ZV9w YXJ0aXRpb25faW5kZXgoKTsKKworCXJldHVybiAmU3RyYXRlZ3lDb250cm9sLT5mcmVlbGlz dHNbaW5kZXhdOworfQorCiAvKgogICogaGF2ZV9mcmVlX2J1ZmZlciAtLSBhIGxvY2tsZXNz IGNoZWNrIHRvIHNlZSBpZiB0aGVyZSBpcyBhIGZyZWUgYnVmZmVyIGluCiAgKgkJCQkJICAg YnVmZmVyIHBvb2wuCkBAIC0xNjgsMTAgKzI5NywxMyBAQCBDbG9ja1N3ZWVwVGljayh2b2lk KQogYm9vbAogaGF2ZV9mcmVlX2J1ZmZlcih2b2lkKQogewotCWlmIChTdHJhdGVneUNvbnRy b2wtPmZpcnN0RnJlZUJ1ZmZlciA+PSAwKQotCQlyZXR1cm4gdHJ1ZTsKLQllbHNlCi0JCXJl dHVybiBmYWxzZTsKKwlmb3IgKGludCBpID0gMDsgaSA8IFN0cmF0ZWd5Q29udHJvbC0+bnVt X3BhcnRpdGlvbnM7IGkrKykKKwl7CisJCWlmIChTdHJhdGVneUNvbnRyb2wtPmZyZWVsaXN0 c1tpXS5maXJzdEZyZWVCdWZmZXIgPj0gMCkKKwkJCXJldHVybiB0cnVlOworCX0KKworCXJl dHVybiBmYWxzZTsKIH0KIAogLyoKQEAgLTE5Myw2ICszMjUsNyBAQCBTdHJhdGVneUdldEJ1 ZmZlcihCdWZmZXJBY2Nlc3NTdHJhdGVneSBzdHJhdGVneSwgdWludDMyICpidWZfc3RhdGUs IGJvb2wgKmZyb21fcgogCWludAkJCWJnd3Byb2NubzsKIAlpbnQJCQl0cnljb3VudGVyOwog CXVpbnQzMgkJbG9jYWxfYnVmX3N0YXRlOwkvKiB0byBhdm9pZCByZXBlYXRlZCAoZGUtKXJl ZmVyZW5jaW5nICovCisJQnVmZmVyU3RyYXRlZ3lGcmVlbGlzdCAqZnJlZWxpc3Q7CiAKIAkq ZnJvbV9yaW5nID0gZmFsc2U7CiAKQEAgLTI1OSwzMSArMzkyLDM1IEBAIFN0cmF0ZWd5R2V0 QnVmZmVyKEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5LCB1aW50MzIgKmJ1Zl9zdGF0 ZSwgYm9vbCAqZnJvbV9yCiAJICogYnVmZmVyX3N0cmF0ZWd5X2xvY2sgbm90IHRoZSBpbmRp dmlkdWFsIGJ1ZmZlciBzcGlubG9ja3MsIHNvIGl0J3MgT0sgdG8KIAkgKiBtYW5pcHVsYXRl IHRoZW0gd2l0aG91dCBob2xkaW5nIHRoZSBzcGlubG9jay4KIAkgKi8KLQlpZiAoU3RyYXRl Z3lDb250cm9sLT5maXJzdEZyZWVCdWZmZXIgPj0gMCkKKwlmcmVlbGlzdCA9IENob29zZUZy ZWVMaXN0KCk7CisJaWYgKGZyZWVsaXN0LT5maXJzdEZyZWVCdWZmZXIgPj0gMCkKIAl7CiAJ CXdoaWxlICh0cnVlKQogCQl7CiAJCQkvKiBBY3F1aXJlIHRoZSBzcGlubG9jayB0byByZW1v dmUgZWxlbWVudCBmcm9tIHRoZSBmcmVlbGlzdCAqLwotCQkJU3BpbkxvY2tBY3F1aXJlKCZT dHJhdGVneUNvbnRyb2wtPmJ1ZmZlcl9zdHJhdGVneV9sb2NrKTsKKwkJCVNwaW5Mb2NrQWNx dWlyZSgmZnJlZWxpc3QtPmZyZWVsaXN0X2xvY2spOwogCi0JCQlpZiAoU3RyYXRlZ3lDb250 cm9sLT5maXJzdEZyZWVCdWZmZXIgPCAwKQorCQkJaWYgKGZyZWVsaXN0LT5maXJzdEZyZWVC dWZmZXIgPCAwKQogCQkJewotCQkJCVNwaW5Mb2NrUmVsZWFzZSgmU3RyYXRlZ3lDb250cm9s LT5idWZmZXJfc3RyYXRlZ3lfbG9jayk7CisJCQkJU3BpbkxvY2tSZWxlYXNlKCZmcmVlbGlz dC0+ZnJlZWxpc3RfbG9jayk7CiAJCQkJYnJlYWs7CiAJCQl9CiAKLQkJCWJ1ZiA9IEdldEJ1 ZmZlckRlc2NyaXB0b3IoU3RyYXRlZ3lDb250cm9sLT5maXJzdEZyZWVCdWZmZXIpOworCQkJ YnVmID0gR2V0QnVmZmVyRGVzY3JpcHRvcihmcmVlbGlzdC0+Zmlyc3RGcmVlQnVmZmVyKTsK IAkJCUFzc2VydChidWYtPmZyZWVOZXh0ICE9IEZSRUVORVhUX05PVF9JTl9MSVNUKTsKIAog CQkJLyogVW5jb25kaXRpb25hbGx5IHJlbW92ZSBidWZmZXIgZnJvbSBmcmVlbGlzdCAqLwot CQkJU3RyYXRlZ3lDb250cm9sLT5maXJzdEZyZWVCdWZmZXIgPSBidWYtPmZyZWVOZXh0Owor CQkJZnJlZWxpc3QtPmZpcnN0RnJlZUJ1ZmZlciA9IGJ1Zi0+ZnJlZU5leHQ7CiAJCQlidWYt PmZyZWVOZXh0ID0gRlJFRU5FWFRfTk9UX0lOX0xJU1Q7CiAKKwkJCS8qIGluY3JlbWVudCBu dW1iZXIgb2YgYnVmZmVycyB3ZSBjb25zdW1lZCBmcm9tIHRoaXMgbGlzdCAqLworCQkJZnJl ZWxpc3QtPmNvbnN1bWVkKys7CisKIAkJCS8qCiAJCQkgKiBSZWxlYXNlIHRoZSBsb2NrIHNv IHNvbWVvbmUgZWxzZSBjYW4gYWNjZXNzIHRoZSBmcmVlbGlzdCB3aGlsZQogCQkJICogd2Ug Y2hlY2sgb3V0IHRoaXMgYnVmZmVyLgogCQkJICovCi0JCQlTcGluTG9ja1JlbGVhc2UoJlN0 cmF0ZWd5Q29udHJvbC0+YnVmZmVyX3N0cmF0ZWd5X2xvY2spOworCQkJU3BpbkxvY2tSZWxl YXNlKCZmcmVlbGlzdC0+ZnJlZWxpc3RfbG9jayk7CiAKIAkJCS8qCiAJCQkgKiBJZiB0aGUg YnVmZmVyIGlzIHBpbm5lZCBvciBoYXMgYSBub256ZXJvIHVzYWdlX2NvdW50LCB3ZSBjYW5u b3QKQEAgLTMwNSw3ICs0NDIsMTcgQEAgU3RyYXRlZ3lHZXRCdWZmZXIoQnVmZmVyQWNjZXNz U3RyYXRlZ3kgc3RyYXRlZ3ksIHVpbnQzMiAqYnVmX3N0YXRlLCBib29sICpmcm9tX3IKIAkJ fQogCX0KIAotCS8qIE5vdGhpbmcgb24gdGhlIGZyZWVsaXN0LCBzbyBydW4gdGhlICJjbG9j ayBzd2VlcCIgYWxnb3JpdGhtICovCisJLyoKKwkgKiBOb3RoaW5nIG9uIHRoZSBmcmVlbGlz dCwgc28gcnVuIHRoZSAiY2xvY2sgc3dlZXAiIGFsZ29yaXRobQorCSAqCisJICogWFhYIFNo b3VsZCB3ZSBhbHNvIG1ha2UgdGhpcyBOVU1BLWF3YXJlLCB0byBvbmx5IGFjY2VzcyBidWZm ZXJzIGZyb20KKwkgKiB0aGUgc2FtZSBOVU1BIG5vZGU/IFRoYXQnZCBwcm9iYWJseSBtZWFu IHdlIG5lZWQgdG8gbWFrZSB0aGUgY2xvY2sKKwkgKiBzd2VlcCBOVU1BLWF3YXJlLCBwZXJo YXBzIGJ5IGhhdmluZyBtdWx0aXBsZSBjbG9jayBzd2VlcHMsIGVhY2ggZm9yIGEKKwkgKiBz dWJzZXQgb2YgYnVmZmVycy4gQnV0IHRoYXQgYWxzbyBtZWFucyBlYWNoIHByb2Nlc3MgY291 bGQgInN3ZWVwIiBvbmx5CisJICogYSBmcmFjdGlvbiBvZiBidWZmZXJzLCBldmVuIGlmIHRo ZSBvdGhlciBidWZmZXJzIGFyZSBiZXR0ZXIgY2FuZGlkYXRlcworCSAqIGZvciBldmljdGlv bi4gV291bGQgdGhhdCBhbHNvIG1lYW4gd2UnZCBoYXZlIG11bHRpcGxlIGJnd3JpdGVycywg b25lCisJICogZm9yIGVhY2ggbm9kZSwgb3Igd291bGQgb25lIGJnd3JpdGVyIGhhbmRsZSBh bGwgb2YgdGhhdD8KKwkgKi8KIAl0cnljb3VudGVyID0gTkJ1ZmZlcnM7CiAJZm9yICg7OykK IAl7CkBAIC0zNTYsNyArNTAzLDIyIEBAIFN0cmF0ZWd5R2V0QnVmZmVyKEJ1ZmZlckFjY2Vz c1N0cmF0ZWd5IHN0cmF0ZWd5LCB1aW50MzIgKmJ1Zl9zdGF0ZSwgYm9vbCAqZnJvbV9yCiB2 b2lkCiBTdHJhdGVneUZyZWVCdWZmZXIoQnVmZmVyRGVzYyAqYnVmKQogewotCVNwaW5Mb2Nr QWNxdWlyZSgmU3RyYXRlZ3lDb250cm9sLT5idWZmZXJfc3RyYXRlZ3lfbG9jayk7CisJQnVm ZmVyU3RyYXRlZ3lGcmVlbGlzdCAqZnJlZWxpc3Q7CisKKwkvKgorCSAqIFdlIGRvbid0IHdh bnQgdG8gY2FsbCBDaG9vc2VGcmVlTGlzdCgpIGFnYWluLCBiZWNhdXNlIHdlIG1pZ2h0IGdl dCBhCisJICogY29tcGxldGVseSBkaWZmZXJlbnQgZnJlZWxpc3QgLSBlaXRoZXIgYSBkaWZm ZXJlbnQgcGFydGl0aW9uIGluIHRoZQorCSAqIHNhbWUgZ3JvdXAsIG9yIGV2ZW4gYSBkaWZm ZXJlbnQgZ3JvdXAgaWYgdGhlIE5VTUEgbm9kZSBjaGFuZ2VkLiBCdXQgd2UKKwkgKiBjYW4g Y2FsY3VsYXRlIHRoZSBwcm9wZXIgZnJlZWxpc3QgZnJvbSB0aGUgYnVmZmVyIGlkLgorCSAq LworCWludAkJCWluZGV4ID0gKEJ1ZmZlckdldE5vZGUoYnVmLT5idWZfaWQpICogU3RyYXRl Z3lDb250cm9sLT5udW1fcGFydGl0aW9uc19wZXJfbm9kZSkKKwkJKyAoYnVmLT5idWZfaWQg JSBTdHJhdGVneUNvbnRyb2wtPm51bV9wYXJ0aXRpb25zX3Blcl9ub2RlKTsKKworCUFzc2Vy dCgoaW5kZXggPj0gMCkgJiYgKGluZGV4IDwgU3RyYXRlZ3lDb250cm9sLT5udW1fcGFydGl0 aW9ucykpOworCisJZnJlZWxpc3QgPSAmU3RyYXRlZ3lDb250cm9sLT5mcmVlbGlzdHNbaW5k ZXhdOworCisJU3BpbkxvY2tBY3F1aXJlKCZmcmVlbGlzdC0+ZnJlZWxpc3RfbG9jayk7CiAK IAkvKgogCSAqIEl0IGlzIHBvc3NpYmxlIHRoYXQgd2UgYXJlIHRvbGQgdG8gcHV0IHNvbWV0 aGluZyBpbiB0aGUgZnJlZWxpc3QgdGhhdApAQCAtMzY0LDExICs1MjYsMTEgQEAgU3RyYXRl Z3lGcmVlQnVmZmVyKEJ1ZmZlckRlc2MgKmJ1ZikKIAkgKi8KIAlpZiAoYnVmLT5mcmVlTmV4 dCA9PSBGUkVFTkVYVF9OT1RfSU5fTElTVCkKIAl7Ci0JCWJ1Zi0+ZnJlZU5leHQgPSBTdHJh dGVneUNvbnRyb2wtPmZpcnN0RnJlZUJ1ZmZlcjsKLQkJU3RyYXRlZ3lDb250cm9sLT5maXJz dEZyZWVCdWZmZXIgPSBidWYtPmJ1Zl9pZDsKKwkJYnVmLT5mcmVlTmV4dCA9IGZyZWVsaXN0 LT5maXJzdEZyZWVCdWZmZXI7CisJCWZyZWVsaXN0LT5maXJzdEZyZWVCdWZmZXIgPSBidWYt PmJ1Zl9pZDsKIAl9CiAKLQlTcGluTG9ja1JlbGVhc2UoJlN0cmF0ZWd5Q29udHJvbC0+YnVm ZmVyX3N0cmF0ZWd5X2xvY2spOworCVNwaW5Mb2NrUmVsZWFzZSgmZnJlZWxpc3QtPmZyZWVs aXN0X2xvY2spOwogfQogCiAvKgpAQCAtNDMyLDYgKzU5NCw0MiBAQCBTdHJhdGVneU5vdGlm eUJnV3JpdGVyKGludCBiZ3dwcm9jbm8pCiAJU3BpbkxvY2tSZWxlYXNlKCZTdHJhdGVneUNv bnRyb2wtPmJ1ZmZlcl9zdHJhdGVneV9sb2NrKTsKIH0KIAorLyogcHJpbnRzIHNvbWUgZGVi dWcgaW5mbyAvIHN0YXRzIGFib3V0IGZyZWVsaXN0cyBhdCBzaHV0ZG93biAqLworc3RhdGlj IHZvaWQKK2ZyZWVsaXN0X2JlZm9yZV9zaG1lbV9leGl0KGludCBjb2RlLCBEYXR1bSBhcmcp Cit7CisJZm9yIChpbnQgcCA9IDA7IHAgPCBTdHJhdGVneUNvbnRyb2wtPm51bV9wYXJ0aXRp b25zOyBwKyspCisJeworCQlCdWZmZXJTdHJhdGVneUZyZWVsaXN0ICpmcmVlbGlzdCA9ICZT dHJhdGVneUNvbnRyb2wtPmZyZWVsaXN0c1twXTsKKwkJdWludDY0CQlyZW1haW4gPSAwOwor CQl1aW50NjQJCWFjdHVhbGx5X2ZyZWUgPSAwOworCQlpbnQJCQljdXIgPSBmcmVlbGlzdC0+ Zmlyc3RGcmVlQnVmZmVyOworCisJCXdoaWxlIChjdXIgPj0gMCkKKwkJeworCQkJdWludDMy CQlsb2NhbF9idWZfc3RhdGU7CisJCQlCdWZmZXJEZXNjICpidWY7CisKKwkJCWJ1ZiA9IEdl dEJ1ZmZlckRlc2NyaXB0b3IoY3VyKTsKKworCQkJcmVtYWluKys7CisKKwkJCWxvY2FsX2J1 Zl9zdGF0ZSA9IExvY2tCdWZIZHIoYnVmKTsKKworCQkJaWYgKCEobG9jYWxfYnVmX3N0YXRl ICYgQk1fVEFHX1ZBTElEKSkKKwkJCQlhY3R1YWxseV9mcmVlKys7CisKKwkJCVVubG9ja0J1 ZkhkcihidWYsIGxvY2FsX2J1Zl9zdGF0ZSk7CisKKwkJCWN1ciA9IGJ1Zi0+ZnJlZU5leHQ7 CisJCX0KKwkJZWxvZyhMT0csICJOVU1BOiBmcmVlbGlzdCBwYXJ0aXRpb24gJWQsIGZpcnN0 RjogJWQ6IGNvbnN1bWVkOiAlbHUsIHJlbWFpbjogJWx1LCBhY3R1YWxseSBmcmVlOiAlbHUi LAorCQkJIHAsCisJCQkgZnJlZWxpc3QtPmZpcnN0RnJlZUJ1ZmZlciwKKwkJCSBmcmVlbGlz dC0+Y29uc3VtZWQsCisJCQkgcmVtYWluLCBhY3R1YWxseV9mcmVlKTsKKwl9Cit9CiAKIC8q CiAgKiBTdHJhdGVneVNobWVtU2l6ZQpAQCAtNDQ1LDEyICs2NDMsMjAgQEAgU2l6ZQogU3Ry YXRlZ3lTaG1lbVNpemUodm9pZCkKIHsKIAlTaXplCQlzaXplID0gMDsKKwlpbnQJCQludW1f cGFydGl0aW9uczsKKwlpbnQJCQludW1fbm9kZXM7CisKKwlCdWZmZXJQYXJ0aXRpb25QYXJh bXMoJm51bV9wYXJ0aXRpb25zLCAmbnVtX25vZGVzKTsKIAogCS8qIHNpemUgb2YgbG9va3Vw IGhhc2ggdGFibGUgLi4uIHNlZSBjb21tZW50IGluIFN0cmF0ZWd5SW5pdGlhbGl6ZSAqLwog CXNpemUgPSBhZGRfc2l6ZShzaXplLCBCdWZUYWJsZVNobWVtU2l6ZShOQnVmZmVycyArIE5V TV9CVUZGRVJfUEFSVElUSU9OUykpOwogCiAJLyogc2l6ZSBvZiB0aGUgc2hhcmVkIHJlcGxh Y2VtZW50IHN0cmF0ZWd5IGNvbnRyb2wgYmxvY2sgKi8KLQlzaXplID0gYWRkX3NpemUoc2l6 ZSwgTUFYQUxJR04oc2l6ZW9mKEJ1ZmZlclN0cmF0ZWd5Q29udHJvbCkpKTsKKwlzaXplID0g YWRkX3NpemUoc2l6ZSwgTUFYQUxJR04ob2Zmc2V0b2YoQnVmZmVyU3RyYXRlZ3lDb250cm9s LCBmcmVlbGlzdHMpKSk7CisKKwkvKiBzaXplIG9mIGZyZWVsaXN0IHBhcnRpdGlvbnMgKGF0 IGxlYXN0IG9uZSBwZXIgTlVNQSBub2RlKSAqLworCXNpemUgPSBhZGRfc2l6ZShzaXplLCBN QVhBTElHTihtdWxfc2l6ZShzaXplb2YoQnVmZmVyU3RyYXRlZ3lGcmVlbGlzdCksCisJCQkJ CQkJCQkJCW51bV9wYXJ0aXRpb25zKSkpOwogCiAJcmV0dXJuIHNpemU7CiB9CkBAIC00Njcs NiArNjczLDE4IEBAIFN0cmF0ZWd5SW5pdGlhbGl6ZShib29sIGluaXQpCiB7CiAJYm9vbAkJ Zm91bmQ7CiAKKwlpbnQJCQludW1fbm9kZXM7CisJaW50CQkJbnVtX3BhcnRpdGlvbnM7CisJ aW50CQkJbnVtX3BhcnRpdGlvbnNfcGVyX25vZGU7CisKKwkvKiAqLworCUJ1ZmZlclBhcnRp dGlvblBhcmFtcygmbnVtX3BhcnRpdGlvbnMsICZudW1fbm9kZXMpOworCisJLyogYWx3YXlz IGEgbXVsdGlwbGUgb2YgTlVNQSBub2RlcyAqLworCUFzc2VydChudW1fcGFydGl0aW9ucyAl IG51bV9ub2RlcyA9PSAwKTsKKworCW51bV9wYXJ0aXRpb25zX3Blcl9ub2RlID0gKG51bV9w YXJ0aXRpb25zIC8gbnVtX25vZGVzKTsKKwogCS8qCiAJICogSW5pdGlhbGl6ZSB0aGUgc2hh cmVkIGJ1ZmZlciBsb29rdXAgaGFzaHRhYmxlLgogCSAqCkBAIC00ODQsNyArNzAyLDggQEAg U3RyYXRlZ3lJbml0aWFsaXplKGJvb2wgaW5pdCkKIAkgKi8KIAlTdHJhdGVneUNvbnRyb2wg PSAoQnVmZmVyU3RyYXRlZ3lDb250cm9sICopCiAJCVNobWVtSW5pdFN0cnVjdCgiQnVmZmVy IFN0cmF0ZWd5IFN0YXR1cyIsCi0JCQkJCQlzaXplb2YoQnVmZmVyU3RyYXRlZ3lDb250cm9s KSwKKwkJCQkJCU1BWEFMSUdOKG9mZnNldG9mKEJ1ZmZlclN0cmF0ZWd5Q29udHJvbCwgZnJl ZWxpc3RzKSkgKworCQkJCQkJTUFYQUxJR04oc2l6ZW9mKEJ1ZmZlclN0cmF0ZWd5RnJlZWxp c3QpICogbnVtX3BhcnRpdGlvbnMpLAogCQkJCQkJJmZvdW5kKTsKIAogCWlmICghZm91bmQp CkBAIC00OTQsMTMgKzcxMywxMCBAQCBTdHJhdGVneUluaXRpYWxpemUoYm9vbCBpbml0KQog CQkgKi8KIAkJQXNzZXJ0KGluaXQpOwogCi0JCVNwaW5Mb2NrSW5pdCgmU3RyYXRlZ3lDb250 cm9sLT5idWZmZXJfc3RyYXRlZ3lfbG9jayk7CisJCS8qIHJlZ2lzdGVyIGNhbGxiYWNrIHRv IGR1bXAgc29tZSBzdGF0cyBvbiBleGl0ICovCisJCWJlZm9yZV9zaG1lbV9leGl0KGZyZWVs aXN0X2JlZm9yZV9zaG1lbV9leGl0LCAwKTsKIAotCQkvKgotCQkgKiBHcmFiIHRoZSB3aG9s ZSBsaW5rZWQgbGlzdCBvZiBmcmVlIGJ1ZmZlcnMgZm9yIG91ciBzdHJhdGVneS4gV2UKLQkJ ICogYXNzdW1lIGl0IHdhcyBwcmV2aW91c2x5IHNldCB1cCBieSBCdWZmZXJNYW5hZ2VyU2ht ZW1Jbml0KCkuCi0JCSAqLwotCQlTdHJhdGVneUNvbnRyb2wtPmZpcnN0RnJlZUJ1ZmZlciA9 IDA7CisJCVNwaW5Mb2NrSW5pdCgmU3RyYXRlZ3lDb250cm9sLT5idWZmZXJfc3RyYXRlZ3lf bG9jayk7CiAKIAkJLyogSW5pdGlhbGl6ZSB0aGUgY2xvY2sgc3dlZXAgcG9pbnRlciAqLwog CQlwZ19hdG9taWNfaW5pdF91MzIoJlN0cmF0ZWd5Q29udHJvbC0+bmV4dFZpY3RpbUJ1ZmZl ciwgMCk7CkBAIC01MTEsNiArNzI3LDUyIEBAIFN0cmF0ZWd5SW5pdGlhbGl6ZShib29sIGlu aXQpCiAKIAkJLyogTm8gcGVuZGluZyBub3RpZmljYXRpb24gKi8KIAkJU3RyYXRlZ3lDb250 cm9sLT5iZ3dwcm9jbm8gPSAtMTsKKworCQkvKiBpbml0aWFsaXplIHRoZSBwYXJ0aXRpb25l ZCBjbG9ja3N3ZWVwICovCisJCVN0cmF0ZWd5Q29udHJvbC0+bnVtX3BhcnRpdGlvbnMgPSBu dW1fcGFydGl0aW9uczsKKwkJU3RyYXRlZ3lDb250cm9sLT5udW1fbm9kZXMgPSBudW1fbm9k ZXM7CisJCVN0cmF0ZWd5Q29udHJvbC0+bnVtX3BhcnRpdGlvbnNfcGVyX25vZGUgPSBudW1f cGFydGl0aW9uc19wZXJfbm9kZTsKKworCQkvKgorCQkgKiBSZWJ1aWxkIHRoZSBmcmVlbGlz dCAtIHJpZ2h0IG5vdyBhbGwgYnVmZmVycyBhcmUgaW4gb25lIGh1Z2UgbGlzdCwKKwkJICog d2Ugd2FudCB0byByZXdvcmsgdGhhdCBpbnRvIG11bHRpcGxlIGxpc3RzLiBTdGFydCBieSBp bml0aWFsaXppbmcKKwkJICogdGhlIHN0cmF0ZWd5IHRvIGhhdmUgZW1wdHkgbGlzdHMuCisJ CSAqLworCQlmb3IgKGludCBuZnJlZWxpc3QgPSAwOyBuZnJlZWxpc3QgPCBudW1fcGFydGl0 aW9uczsgbmZyZWVsaXN0KyspCisJCXsKKwkJCWludAkJCW5vZGUsCisJCQkJCQludW1fYnVm ZmVycywKKwkJCQkJCWZpcnN0X2J1ZmZlciwKKwkJCQkJCWxhc3RfYnVmZmVyOworCisJCQlC dWZmZXJTdHJhdGVneUZyZWVsaXN0ICpmcmVlbGlzdDsKKworCQkJZnJlZWxpc3QgPSAmU3Ry YXRlZ3lDb250cm9sLT5mcmVlbGlzdHNbbmZyZWVsaXN0XTsKKworCQkJZnJlZWxpc3QtPmZp cnN0RnJlZUJ1ZmZlciA9IEZSRUVORVhUX0VORF9PRl9MSVNUOworCisJCQlTcGluTG9ja0lu aXQoJmZyZWVsaXN0LT5mcmVlbGlzdF9sb2NrKTsKKworCQkJLyogZ2V0IGluZm8gYWJvdXQg dGhlIGJ1ZmZlciBwYXJ0aXRpb24gKi8KKwkJCUJ1ZmZlclBhcnRpdGlvbkdldChuZnJlZWxp c3QsICZub2RlLAorCQkJCQkJCSAgICZudW1fYnVmZmVycywgJmZpcnN0X2J1ZmZlciwgJmxh c3RfYnVmZmVyKTsKKworCQkJLyoKKwkJCSAqIFdhbGsgdGhyb3VnaCBidWZmZXJzIGZvciBl YWNoIHBhcnRpdGlvbiwgYWRkIHRoZW0gdG8gdGhlIGxpc3QuCisJCQkgKiBXYWxrIGZyb20g dGhlIGVuZCwgYmVjYXVzZSB3ZSdyZSBhZGRpbmcgdGhlIGJ1ZmZlcnMgdG8gdGhlCisJCQkg KiBiZWdpbm5pbmcuCisJCQkgKi8KKworCQkJZm9yIChpbnQgaSA9IGxhc3RfYnVmZmVyOyBp ID49IGZpcnN0X2J1ZmZlcjsgaS0tKQorCQkJeworCQkJCUJ1ZmZlckRlc2MgKmJ1ZiA9IEdl dEJ1ZmZlckRlc2NyaXB0b3IoaSk7CisKKwkJCQkvKiBhZGQgdG8gdGhlIGZyZWVsaXN0ICov CisJCQkJYnVmLT5mcmVlTmV4dCA9IGZyZWVsaXN0LT5maXJzdEZyZWVCdWZmZXI7CisJCQkJ ZnJlZWxpc3QtPmZpcnN0RnJlZUJ1ZmZlciA9IGk7CisJCQl9CisKKwkJfQogCX0KIAllbHNl CiAJCUFzc2VydCghaW5pdCk7CkBAIC04NDcsMyArMTEwOSw0NyBAQCBTdHJhdGVneVJlamVj dEJ1ZmZlcihCdWZmZXJBY2Nlc3NTdHJhdGVneSBzdHJhdGVneSwgQnVmZmVyRGVzYyAqYnVm LCBib29sIGZyb21fcgogCiAJcmV0dXJuIHRydWU7CiB9CisKK3ZvaWQKK0ZyZWVsaXN0UGFy dGl0aW9uR2V0SW5mbyhpbnQgaWR4LCB1aW50NjQgKmNvbnN1bWVkLCB1aW50NjQgKnJlbWFp biwgdWludDY0ICphY3R1YWxseV9mcmVlKQoreworCUJ1ZmZlclN0cmF0ZWd5RnJlZWxpc3Qg KmZyZWVsaXN0OworCWludAkJCWN1cjsKKworCS8qIHN0YXRzICovCisJdWludDY0CQljbnRf cmVtYWluID0gMDsKKwl1aW50NjQJCWNudF9mcmVlID0gMDsKKworCUFzc2VydCgoaWR4ID49 IDApICYmIChpZHggPCBTdHJhdGVneUNvbnRyb2wtPm51bV9wYXJ0aXRpb25zKSk7CisKKwlm cmVlbGlzdCA9ICZTdHJhdGVneUNvbnRyb2wtPmZyZWVsaXN0c1tpZHhdOworCisJLyogc3Rh dCAqLworCVNwaW5Mb2NrQWNxdWlyZSgmZnJlZWxpc3QtPmZyZWVsaXN0X2xvY2spOworCisJ KmNvbnN1bWVkID0gZnJlZWxpc3QtPmNvbnN1bWVkOworCisJY3VyID0gZnJlZWxpc3QtPmZp cnN0RnJlZUJ1ZmZlcjsKKwl3aGlsZSAoY3VyID49IDApCisJeworCQl1aW50MzIJCWxvY2Fs X2J1Zl9zdGF0ZTsKKwkJQnVmZmVyRGVzYyAqYnVmOworCisJCWJ1ZiA9IEdldEJ1ZmZlckRl c2NyaXB0b3IoY3VyKTsKKworCQljbnRfcmVtYWluKys7CisKKwkJbG9jYWxfYnVmX3N0YXRl ID0gTG9ja0J1ZkhkcihidWYpOworCisJCWlmICghKGxvY2FsX2J1Zl9zdGF0ZSAmIEJNX1RB R19WQUxJRCkpCisJCQljbnRfZnJlZSsrOworCisJCVVubG9ja0J1ZkhkcihidWYsIGxvY2Fs X2J1Zl9zdGF0ZSk7CisKKwkJY3VyID0gYnVmLT5mcmVlTmV4dDsKKwl9CisJU3BpbkxvY2tS ZWxlYXNlKCZmcmVlbGlzdC0+ZnJlZWxpc3RfbG9jayk7CisKKwkqcmVtYWluID0gY250X3Jl bWFpbjsKKwkqYWN0dWFsbHlfZnJlZSA9IGNudF9mcmVlOworfQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMgYi9zcmMvYmFja2VuZC91dGlscy9pbml0 L2dsb2JhbHMuYwppbmRleCBmNTM1OWRiMzY1Ni4uYTExYmM3MWEzODYgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2luaXQvZ2xvYmFscy5jCkBAIC0xNDgsNiArMTQ4LDcgQEAgaW50CQkJTWF4QmFja2Vu ZHMgPSAwOwogLyogTlVNQSBzdHVmZiAqLwogYm9vbAkJbnVtYV9idWZmZXJzX2ludGVybGVh dmUgPSBmYWxzZTsKIGJvb2wJCW51bWFfbG9jYWxhbGxvYyA9IGZhbHNlOworYm9vbAkJbnVt YV9wYXJ0aXRpb25fZnJlZWxpc3QgPSBmYWxzZTsKIAogLyogR1VDIHBhcmFtZXRlcnMgZm9y IHZhY3V1bSAqLwogaW50CQkJVmFjdXVtQnVmZmVyVXNhZ2VMaW1pdCA9IDIwNDg7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYyBiL3NyYy9iYWNr ZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCmluZGV4IGEyMWYyMDgwMGZiLi4wNTUyZWQ2 MmNjNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMK KysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKQEAgLTIxMzYsNiAr MjEzNiwxNiBAQCBzdHJ1Y3QgY29uZmlnX2Jvb2wgQ29uZmlndXJlTmFtZXNCb29sW10gPQog CQlOVUxMLCBOVUxMLCBOVUxMCiAJfSwKIAorCXsKKwkJeyJudW1hX3BhcnRpdGlvbl9mcmVl bGlzdCIsIFBHQ19QT1NUTUFTVEVSLCBERVZFTE9QRVJfT1BUSU9OUywKKwkJCWdldHRleHRf bm9vcCgiRW5hYmxlcyBidWZmZXIgZnJlZWxpc3RzIHRvIGJlIHBhcnRpdGlvbmVkIHBlciBO VU1BIG5vZGUuIiksCisJCQlnZXR0ZXh0X25vb3AoIldoZW4gZW5hYmxlZCwgd2UgY3JlYXRl IGEgc2VwYXJhdGUgZnJlZWxpc3QgcGVyIE5VTUEgbm9kZS4iKSwKKwkJfSwKKwkJJm51bWFf cGFydGl0aW9uX2ZyZWVsaXN0LAorCQlmYWxzZSwKKwkJTlVMTCwgTlVMTCwgTlVMTAorCX0s CisKIAl7CiAJCXsic3luY19yZXBsaWNhdGlvbl9zbG90cyIsIFBHQ19TSUdIVVAsIFJFUExJ Q0FUSU9OX1NUQU5EQlksCiAJCQlnZXR0ZXh0X25vb3AoIkVuYWJsZXMgYSBwaHlzaWNhbCBz dGFuZGJ5IHRvIHN5bmNocm9uaXplIGxvZ2ljYWwgZmFpbG92ZXIgcmVwbGljYXRpb24gc2xv dHMgZnJvbSB0aGUgcHJpbWFyeSBzZXJ2ZXIuIiksCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9taXNjYWRtaW4uaCBiL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oCmluZGV4IDY5Mjg3MWE0 MDFmLi42NmJhZjJiZjMzZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmgK KysrIGIvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmgKQEAgLTE4MCw2ICsxODAsNyBAQCBleHRl cm4gUEdETExJTVBPUlQgaW50IG1heF9wYXJhbGxlbF93b3JrZXJzOwogCiBleHRlcm4gUEdE TExJTVBPUlQgYm9vbCBudW1hX2J1ZmZlcnNfaW50ZXJsZWF2ZTsKIGV4dGVybiBQR0RMTElN UE9SVCBib29sIG51bWFfbG9jYWxhbGxvYzsKK2V4dGVybiBQR0RMTElNUE9SVCBib29sIG51 bWFfcGFydGl0aW9uX2ZyZWVsaXN0OwogCiBleHRlcm4gUEdETExJTVBPUlQgaW50IGNvbW1p dF90aW1lc3RhbXBfYnVmZmVyczsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgbXVsdGl4YWN0 X21lbWJlcl9idWZmZXJzOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9idWZt Z3IuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvYnVmbWdyLmgKaW5kZXggZGVhZjRmMTlmYTQu LmRmMTI3Mjc0MTkwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2J1Zm1nci5o CisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvYnVmbWdyLmgKQEAgLTM0Nyw3ICszNDcsOSBA QCBleHRlcm4gaW50CUdldEFjY2Vzc1N0cmF0ZWd5QnVmZmVyQ291bnQoQnVmZmVyQWNjZXNz U3RyYXRlZ3kgc3RyYXRlZ3kpOwogZXh0ZXJuIGludAlHZXRBY2Nlc3NTdHJhdGVneVBpbkxp bWl0KEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5KTsKIAogZXh0ZXJuIHZvaWQgRnJl ZUFjY2Vzc1N0cmF0ZWd5KEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5KTsKLQorZXh0 ZXJuIHZvaWQgRnJlZWxpc3RQYXJ0aXRpb25HZXRJbmZvKGludCBpZHgsCisJCQkJCQkJCQkg dWludDY0ICpjb25zdW1lZCwgdWludDY0ICpyZW1haW4sCisJCQkJCQkJCQkgdWludDY0ICph Y3R1YWxseV9mcmVlKTsKIAogLyogaW5saW5lIGZ1bmN0aW9ucyAqLwogCi0tIAoyLjUwLjEK Cg== --------------ffSr0c8hlIKbvluiJSw5Id5o Content-Type: text/x-patch; charset=UTF-8; name="v3-0003-freelist-Don-t-track-tail-of-a-freelist.patch" Content-Disposition: attachment; filename="v3-0003-freelist-Don-t-track-tail-of-a-freelist.patch" Content-Transfer-Encoding: base64 RnJvbSAzYzdkYmJlYzRlZTM5NTdjOTJiZjY0NzYwNTc2OGJlYjU0NzNmNjZiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXMgRnJldW5kIDxhbmRyZXNAYW5hcmF6ZWwu ZGU+CkRhdGU6IE1vbiwgMTQgT2N0IDIwMjQgMTQ6MTA6MTMgLTA0MDAKU3ViamVjdDogW1BB VENIIHYzIDMvN10gZnJlZWxpc3Q6IERvbid0IHRyYWNrIHRhaWwgb2YgYSBmcmVlbGlzdAoK VGhlIGZyZWVsaXN0IHRhaWwgaXNuJ3QgY3VycmVudGx5IHVzZWQsIG1ha2luZyBpdCB1bm5l Y2Vzc2FyeSBvdmVyaGVhZC4KU28ganVzdCBkb24ndCBkbyB0aGF0LgotLS0KIHNyYy9iYWNr ZW5kL3N0b3JhZ2UvYnVmZmVyL2ZyZWVsaXN0LmMgfCA5IC0tLS0tLS0tLQogMSBmaWxlIGNo YW5nZWQsIDkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFn ZS9idWZmZXIvZnJlZWxpc3QuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2ZyZWVs aXN0LmMKaW5kZXggMDE5MDliZTAyNzIuLmUwNDY1MjZjMTQ5IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9zdG9yYWdlL2J1ZmZlci9mcmVlbGlzdC5jCisrKyBiL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvYnVmZmVyL2ZyZWVsaXN0LmMKQEAgLTQwLDEyICs0MCw2IEBAIHR5cGVkZWYgc3Ry dWN0CiAJcGdfYXRvbWljX3VpbnQzMiBuZXh0VmljdGltQnVmZmVyOwogCiAJaW50CQkJZmly c3RGcmVlQnVmZmVyOwkvKiBIZWFkIG9mIGxpc3Qgb2YgdW51c2VkIGJ1ZmZlcnMgKi8KLQlp bnQJCQlsYXN0RnJlZUJ1ZmZlcjsgLyogVGFpbCBvZiBsaXN0IG9mIHVudXNlZCBidWZmZXJz ICovCi0KLQkvKgotCSAqIE5PVEU6IGxhc3RGcmVlQnVmZmVyIGlzIHVuZGVmaW5lZCB3aGVu IGZpcnN0RnJlZUJ1ZmZlciBpcyAtMSAodGhhdCBpcywKLQkgKiB3aGVuIHRoZSBsaXN0IGlz IGVtcHR5KQotCSAqLwogCiAJLyoKIAkgKiBTdGF0aXN0aWNzLiAgVGhlc2UgY291bnRlcnMg c2hvdWxkIGJlIHdpZGUgZW5vdWdoIHRoYXQgdGhleSBjYW4ndApAQCAtMzcxLDggKzM2NSw2 IEBAIFN0cmF0ZWd5RnJlZUJ1ZmZlcihCdWZmZXJEZXNjICpidWYpCiAJaWYgKGJ1Zi0+ZnJl ZU5leHQgPT0gRlJFRU5FWFRfTk9UX0lOX0xJU1QpCiAJewogCQlidWYtPmZyZWVOZXh0ID0g U3RyYXRlZ3lDb250cm9sLT5maXJzdEZyZWVCdWZmZXI7Ci0JCWlmIChidWYtPmZyZWVOZXh0 IDwgMCkKLQkJCVN0cmF0ZWd5Q29udHJvbC0+bGFzdEZyZWVCdWZmZXIgPSBidWYtPmJ1Zl9p ZDsKIAkJU3RyYXRlZ3lDb250cm9sLT5maXJzdEZyZWVCdWZmZXIgPSBidWYtPmJ1Zl9pZDsK IAl9CiAKQEAgLTUwOSw3ICs1MDEsNiBAQCBTdHJhdGVneUluaXRpYWxpemUoYm9vbCBpbml0 KQogCQkgKiBhc3N1bWUgaXQgd2FzIHByZXZpb3VzbHkgc2V0IHVwIGJ5IEJ1ZmZlck1hbmFn ZXJTaG1lbUluaXQoKS4KIAkJICovCiAJCVN0cmF0ZWd5Q29udHJvbC0+Zmlyc3RGcmVlQnVm ZmVyID0gMDsKLQkJU3RyYXRlZ3lDb250cm9sLT5sYXN0RnJlZUJ1ZmZlciA9IE5CdWZmZXJz IC0gMTsKIAogCQkvKiBJbml0aWFsaXplIHRoZSBjbG9jayBzd2VlcCBwb2ludGVyICovCiAJ CXBnX2F0b21pY19pbml0X3UzMigmU3RyYXRlZ3lDb250cm9sLT5uZXh0VmljdGltQnVmZmVy LCAwKTsKLS0gCjIuNTAuMQoK --------------ffSr0c8hlIKbvluiJSw5Id5o Content-Type: text/x-patch; charset=UTF-8; name="v3-0002-NUMA-localalloc.patch" Content-Disposition: attachment; filename="v3-0002-NUMA-localalloc.patch" Content-Transfer-Encoding: base64 RnJvbSBkMDhhOTRiMGY1NGE0YzQ5ODZkMzUxZjk4MjY5OTA1YmI1MTE2MjRjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQHZvbmRyYS5tZT4K RGF0ZTogVGh1LCAyMiBNYXkgMjAyNSAxODoyNzowNiArMDIwMApTdWJqZWN0OiBbUEFUQ0gg djMgMi83XSBOVU1BOiBsb2NhbGFsbG9jCgpTZXQgdGhlIGRlZmF1bHQgYWxsb2NhdGlvbiBw b2xpY3kgdG8gImxvY2FsYWxsb2MiLCB3aGljaCBtZWFucyBmcm9tIHRoZQpsb2NhbCBOVU1B IG5vZGUuIFRoaXMgaXMgdXNlZnVsIGZvciBwcm9jZXNzLXByaXZhdGUgbWVtb3J5LCB3aGlj aCBpcyBub3QKZ29pbmcgdG8gYmUgc2hhcmVkIHdpdGggb3RoZXIgbm9kZXMsIGFuZCBpcyBy ZWxhdGl2ZWx5IHNob3J0LWxpdmVkIChzbwp3ZSdyZSB1bmxpa2VseSB0byBoYXZlIGlzc3Vl cyBpZiB0aGUgcHJvY2VzcyBnZXRzIG1vdmVkIGJ5IHNjaGVkdWxlcikuCgpUaGlzIHNldHMg ZGVmYXVsdCBmb3IgdGhlIHdob2xlIHByb2Nlc3MsIGZvciBhbGwgZnV0dXJlIGFsbG9jYXRp b25zLiBCdXQKdGhhdCdzIGZpbmUsIHdlJ3ZlIGFscmVhZHkgcG9wdWxhdGVkIHRoZSBzaGFy ZWQgbWVtb3J5IGVhcmxpZXIgKGJ5CmludGVybGVhdmluZyBpdCBleHBsaWNpdGx5KS4gT3Ro ZXJ3aXNlIHdlJ2QgdHJpZ2dlciBwYWdlIGZhdWx0IGFuZCBpdCdkCmJlIGFsbG9jYXRlZCBv biBsb2NhbCBub2RlLgoKWFhYIFRoaXMgcGF0Y2ggbWF5IG5vdCBiZSBuZWNlc3NhcnksIGFz IHdlIG5vdyBsb2NhdGUgbWVtb3J5IHRvIG5vZGVzCnVzaW5nIGV4cGxpY2l0IG51bWFfdG9u b2RlX21lbW9yeSgpIGNhbGxzLCBhbmQgbm90IGJ5IGludGVybGVhdmluZy4gQnV0Cml0J3Mg dXNlZnVsIGZvciBleHBlcmltZW50cyBkdXJpbmcgZGV2ZWxvcG1lbnQsIHNvIEknbSBrZWVw aW5nIGl0LgotLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jICAgIHwgIDEg Kwogc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9taXNjaW5pdC5jICAgfCAxNyArKysrKysrKysr KysrKysrKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgfCAxMCArKysr KysrKysrCiBzcmMvaW5jbHVkZS9taXNjYWRtaW4uaCAgICAgICAgICAgICB8ICAxICsKIDQg ZmlsZXMgY2hhbmdlZCwgMjkgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9i YWxzLmMKaW5kZXggODc2Y2I2NGNmNjYuLmY1MzU5ZGIzNjU2IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9p bml0L2dsb2JhbHMuYwpAQCAtMTQ3LDYgKzE0Nyw3IEBAIGludAkJCU1heEJhY2tlbmRzID0g MDsKIAogLyogTlVNQSBzdHVmZiAqLwogYm9vbAkJbnVtYV9idWZmZXJzX2ludGVybGVhdmUg PSBmYWxzZTsKK2Jvb2wJCW51bWFfbG9jYWxhbGxvYyA9IGZhbHNlOwogCiAvKiBHVUMgcGFy YW1ldGVycyBmb3IgdmFjdXVtICovCiBpbnQJCQlWYWN1dW1CdWZmZXJVc2FnZUxpbWl0ID0g MjA0ODsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvbWlzY2luaXQuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvbWlzY2luaXQuYwppbmRleCA0M2I0ZGJjY2MzZC4u MDc5OTc0OTQ0ZTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvbWlzY2lu aXQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9pbml0L21pc2Npbml0LmMKQEAgLTI4LDYg KzI4LDEwIEBACiAjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+CiAjaW5jbHVkZSA8dXRpbWUuaD4K IAorI2lmZGVmIFVTRV9MSUJOVU1BCisjaW5jbHVkZSA8bnVtYS5oPgorI2VuZGlmCisKICNp bmNsdWRlICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3BhcmFs bGVsLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19hdXRoaWQuaCIKQEAgLTE2NCw2ICsxNjgs MTkgQEAgSW5pdFBvc3RtYXN0ZXJDaGlsZCh2b2lkKQogCQkJCShlcnJjb2RlX2Zvcl9zb2Nr ZXRfYWNjZXNzKCksCiAJCQkJIGVycm1zZ19pbnRlcm5hbCgiY291bGQgbm90IHNldCBwb3N0 bWFzdGVyIGRlYXRoIG1vbml0b3JpbmcgcGlwZSB0byBGRF9DTE9FWEVDIG1vZGU6ICVtIikp KTsKICNlbmRpZgorCisjaWZkZWYgVVNFX0xJQk5VTUEKKworCS8qCisJICogU2V0IHRoZSBk ZWZhdWx0IGFsbG9jYXRpb24gcG9saWN5IHRvIGxvY2FsIG5vZGUsIHdoZXJlIHRoZSB0YXNr IGlzCisJICogZXhlY3V0aW5nIGF0IHRoZSB0aW1lIG9mIGEgcGFnZSBmYXVsdC4KKwkgKgor CSAqIFhYWCBJIGJlbGlldmUgdGhpcyBpcyBub3QgbmVjZXNzYXJ5LCBub3cgdGhhdCB3ZSBk b24ndCB1c2UgYXV0b21hdGljCisJICogaW50ZXJsZWF2aW5nIChudW1hX3NldF9pbnRlcmxl YXZlX21hc2spLgorCSAqLworCWlmIChudW1hX2xvY2FsYWxsb2MpCisJCW51bWFfc2V0X2xv Y2FsYWxsb2MoKTsKKyNlbmRpZgogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190 YWJsZXMuYwppbmRleCA5NTcwMDg3YWE2MC4uYTIxZjIwODAwZmIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0 aWxzL21pc2MvZ3VjX3RhYmxlcy5jCkBAIC0yMTI2LDYgKzIxMjYsMTYgQEAgc3RydWN0IGNv bmZpZ19ib29sIENvbmZpZ3VyZU5hbWVzQm9vbFtdID0KIAkJTlVMTCwgTlVMTCwgTlVMTAog CX0sCiAKKwl7CisJCXsibnVtYV9sb2NhbGFsbG9jIiwgUEdDX1BPU1RNQVNURVIsIERFVkVM T1BFUl9PUFRJT05TLAorCQkJZ2V0dGV4dF9ub29wKCJFbmFibGVzIHNldHRpbmcgdGhlIGRl ZmF1bHQgYWxsb2NhdGlvbiBwb2xpY3kgdG8gbG9jYWwgbm9kZS4iKSwKKwkJCWdldHRleHRf bm9vcCgiV2hlbiBlbmFibGVkLCBhbGxvY2F0ZSBmcm9tIHRoZSBub2RlIHdoZXJlIHRoZSB0 YXNrIGlzIGV4ZWN1dGluZy4iKSwKKwkJfSwKKwkJJm51bWFfbG9jYWxhbGxvYywKKwkJZmFs c2UsCisJCU5VTEwsIE5VTEwsIE5VTEwKKwl9LAorCiAJewogCQl7InN5bmNfcmVwbGljYXRp b25fc2xvdHMiLCBQR0NfU0lHSFVQLCBSRVBMSUNBVElPTl9TVEFOREJZLAogCQkJZ2V0dGV4 dF9ub29wKCJFbmFibGVzIGEgcGh5c2ljYWwgc3RhbmRieSB0byBzeW5jaHJvbml6ZSBsb2dp Y2FsIGZhaWxvdmVyIHJlcGxpY2F0aW9uIHNsb3RzIGZyb20gdGhlIHByaW1hcnkgc2VydmVy LiIpLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmggYi9zcmMvaW5jbHVk ZS9taXNjYWRtaW4uaAppbmRleCAwMTRhNjA3OWFmMi4uNjkyODcxYTQwMWYgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oCisrKyBiL3NyYy9pbmNsdWRlL21pc2NhZG1p bi5oCkBAIC0xNzksNiArMTc5LDcgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIGludCBtYXhfd29y a2VyX3Byb2Nlc3NlczsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgbWF4X3BhcmFsbGVsX3dv cmtlcnM7CiAKIGV4dGVybiBQR0RMTElNUE9SVCBib29sIG51bWFfYnVmZmVyc19pbnRlcmxl YXZlOworZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgbnVtYV9sb2NhbGFsbG9jOwogCiBleHRl cm4gUEdETExJTVBPUlQgaW50IGNvbW1pdF90aW1lc3RhbXBfYnVmZmVyczsKIGV4dGVybiBQ R0RMTElNUE9SVCBpbnQgbXVsdGl4YWN0X21lbWJlcl9idWZmZXJzOwotLSAKMi41MC4xCgo= --------------ffSr0c8hlIKbvluiJSw5Id5o Content-Type: text/x-patch; charset=UTF-8; name="v3-0001-NUMA-interleaving-buffers.patch" Content-Disposition: attachment; filename="v3-0001-NUMA-interleaving-buffers.patch" Content-Transfer-Encoding: base64 RnJvbSBmMGViMWFmNmZkY2ZkN2RhYWUyNjk1MmRkYzIyMzk1MjMzM2Y2YWYyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQHZvbmRyYS5tZT4K RGF0ZTogTW9uLCAyOCBKdWwgMjAyNSAxNDowMTozNyArMDIwMApTdWJqZWN0OiBbUEFUQ0gg djMgMS83XSBOVU1BOiBpbnRlcmxlYXZpbmcgYnVmZmVycwoKRW5zdXJlIHNoYXJlZCBidWZm ZXJzIGFyZSBhbGxvY2F0ZWQgZnJvbSBhbGwgTlVNQSBub2RlcywgaW4gYSBiYWxhbmNlZAp3 YXksIGluc3RlYWQgb2YganVzdCB1c2luZyB0aGUgbm9kZSB3aGVyZSBQb3N0Z3JlcyBpbml0 aWFsbHkgc3RhcnRzLCBvcgp3aGVyZSB0aGUga2VybmVsIGRlY2lkZXMgdG8gbWlncmF0ZSB0 aGUgcGFnZSwgZXRjLiBXaXRoIHByZS13YXJtaW5nCnBlcmZvcm1lZCBieSBhIHNpbmdsZSBi YWNrZW5kLCB0aGlzIGNhbiBlYXNpbHkgcmVzdWx0IGluIHNldmVyZWx5CnVuYmFsYW5jZWQg bWVtb3J5IGRpc3RyaWJ1dGlvbiAod2l0aCBtb3N0IGZyb20gYSBzaW5nbGUgTlVNQSBub2Rl KS4KClRoZSBrZXJuZWwgd291bGQgZXZlbnR1YWxseSBtb3ZlIHNvbWUgb2YgdGhlIG1lbW9y eSB0byBvdGhlciBub2RlcwoodGhhbmtzIHRvIHpvbmVfcmVjbGFpbSksIGJ1dCB0aGF0IHRl bmRzIHRvIHRha2UgYSBsb25nIHRpbWUuIFNvIHRoaXMKcGF0Y2ggaW1wcm92ZXMgcHJlZGlj dGFiaWxpdHksIHJlZHVjZXMgdGhlIHRpbWUgbmVlZGVkIGZvciB3YXJtdXAKZHVyaW5nIGJl bmNobWFya2luZywgZXRjLiAgSXQncyBsZXNzIGRlcGVuZGVudCBvbiB3aGF0IHRoZSBDUFUK c2NoZWR1bGVyIGRvZXMsIGV0Yy4KCkZ1cnRoZXJtb3JlLCB0aGUgYnVmZmVycyBhcmUgbWFw cGVkIHRvIE5VTUEgbm9kZXMgaW4gYSBkZXRlcm1pbmlzdGljCndheSwgc28gdGhpcyBhbHNv IGFsbG93cyBmdXJ0aGVyIGltcHJvdmVtZW50cyBsaWtlIGJhY2tlbmRzIHVzaW5nCmJ1ZmZl cnMgZnJvbSB0aGUgc2FtZSBOVU1BIG5vZGUuCgpUaGUgZWZmZWN0IGlzIHNpbWlsYXIgdG8K CiAgICAgbnVtYWN0bCAtLWludGVybGVhdmU9YWxsCgpidXQgdGhlcmUncyBhIG51bWJlciBv ZiBpbXBvcnRhbnQgZGlmZmVyZW5jZXMuCgpGaXJzdGx5LCBpdCdzIGFwcGxpZWQgb25seSB0 byBzaGFyZWQgYnVmZmVycyAoYW5kIGFsc28gdG8gZGVzY3JpcHRvcnMpLApub3QgdG8gdGhl IHdob2xlIHNoYXJlZCBtZW1vcnkgc2VnbWVudC4gSXQncyBub3QgY2xlYXIgd2UnZCB3YW50 IHRvIHVzZQppbnRlcmxlYXZpbmcgZm9yIGFsbCBwYXJ0cywgc3RvcmluZyBlbnRyaWVzIHdp dGggZGlmZmVyZW50IHNpemVzIGFuZApsaWZlIGN5Y2xlcyAoZS5nLiBQcm9jQXJyYXkgbWF5 IG5lZWQgZGlmZmVyZW50IGFwcHJvYWNoKS4KClNlY29uZGx5LCBpdCBjb25zaWRlcnMgdGhl IHBhZ2UgYW5kIGJsb2NrIHNpemUsIGFuZCBtYWtlcyBzdXJlIHRvIGFsd2F5cwpwdXQgdGhl IHdob2xlIGJ1ZmZlciBvbiBhIHNpbmdsZSBOVU1BIG5vZGUgKGV2ZW4gaWYgaXQgaGFwcGVu cyB0byB1c2UKbXVsdGlwbGUgbWVtb3J5IHBhZ2VzKSwgYW5kIHRvIGtlZXAgdGhlIGJ1ZmZl ciBhbmQgaXQncyBkZXNjcmlwdG9yIG9uCnRoZSBzYW1lIE5VTUEgbm9kZS4gVGhlIHNlcmlv dXNuZXNzL2xpa2VsaWhvb2Qgb2YgdGhlc2UgaXNzdWVzIGRlcGVuZHMKb24gdGhlIG1lbW9y eSBwYWdlIHNpemUgKHJlZ3VsYXIgdnMuIGh1Z2UgcGFnZXMpLgoKVGhlIG1hcHBpbmcgb2Yg bWVtb3J5IHRvIE5VTUEgbm9kZXMgaGFwcGVucyBpbiBsYXJnZXIgY2h1bmtzLiBUaGlzIGlz CnJlcXVpcmVkIHRvIGhhbmRsZSBidWZmZXIgZGVzY3JpcHRvcnMgKHdoaWNoIGFyZSBzbWFs bGVyIHRoYW4gYnVmZmVycyksCmFuZCBzbyBtYW55IG1vcmUgZml0IG9udG8gYSBzaW5nbGUg bWVtb3J5IHBhZ2UuCgpUaGUgbnVtYmVyIG9mIGJ1ZmZlciBkZXNjcmlwdG9ycyBwZXIgbWVt b3J5IHBhZ2UgZGV0ZXJtaW5lcyB0aGUgc21hbGxlc3QKbnVtYmVyIG9mIGJ1ZmZlcnMgdGhh dCBjYW4gYmUgcGxhY2VkIG9uIGEgTlVNQSBub2RlLiBXaXRoIDJNQiBodWdlIHBhZ2VzCnRo aXMgaXMgMjU2TUIsIHdpdGggNEtCIHBhZ2VzIHRoaXMgaXMgNTEyS0IpLiBOb2RlcyBnZXQg YSBtdWx0aXBsZSBvZgp0aGlzLCBhbmQgd2UgdHJ5IHRvIGtlZXAgdGhlIG5vZGVzIGJhbGFu Y2VkIC0gdGhlIGxhc3Qgbm9kZSBjYW4gZ2V0IGxlc3MKbWVtb3J5LCB0aG91Z2guCgpUaGUg ImJ1ZmZlciBwYXJ0aXRpb25zIiBtYXkgbm90IGJlIDE6MSB3aXRoIE5VTUEgbm9kZXMuIFRo ZXJlJ3MgYQptaW5pbWFsIG51bWJlciBvZiBwYXJ0aXRpb25zIChkZWZhdWx0OiA0KSB0aGF0 IHdpbGwgYmUgY3JlYXRlZCBldmVuIHdpdGgKZmV3ZXIgTlVNQSBub2Rlcywgb3Igbm8gTlVN QSBhdCBhbGwuIEVhY2ggbm9kZSBnZXRzIHRoZSBzYW1lIG51bWJlciBvZgpwYXJ0aXRpb25z LCB0byBrZWVwIHRoaW5ncyBzaW1wbGUuIEZvciBleGFtcGxlLCB3aXRoIDIgbm9kZXMgdGhl cmUnbGwgYmUKNCBwYXJ0aXRpb25zLCB3aXRoIGVhY2ggbm9kZSBnZXR0aW5nIDIgb2YgdGhl bS4gV2l0aCAzIG5vZGVzIHRoZXJlJ2xsIGJlCjYgcGFydGl0aW9ucyAoYWdhaW4sIDIgcGVy IG5vZGUpLgoKVGhlIHBhdGNoIGludHJvZHVjZXMgYSBzaW1wbGUgInJlZ2lzdHJ5IiBvZiBi dWZmZXIgcGFydGl0aW9ucywga2VlcGluZwp0cmFjayBvZiB0aGUgZmlyc3QvbGFzdCBidWZm ZXIsIE5VTUEgbm9kZSwgZXRjLiBUaGlzIHNlcnZlcyBhcyBhIHNvdXJjZQpvZiB0cnV0aCwg Ym90aCBmb3IgdGhpcyBwYXRjaCBhbmQgZm9yIGxhdGVyIHBhdGNoZXMgYnVpbGRpbmcgb24g dGhpcwpzYW1lIGJ1ZmZlciBwYXJ0aXRpb24gc3RydWN0dXJlLgoKV2l0aCB0aGUgZmVhdHVy ZSBkaXNhYmxlZCAoR1VDIHNldCB0byAnb2ZmJyksIHRoZXJlJ2xsIGJlIGEgc2luZ2xlCnBh cnRpdGlvbiBmb3IgYWxsIHRoZSBidWZmZXJzIChhbmQgaXQgd29uJ3QgYmUgbWFwcGVkIHRv IGEgTlVNQSBub2RlKS4KCk5vdGVzOgoKKiBUaGUgZmVhdHVyZSBpcyBlbmFibGVkIGJ5IG51 bWFfYnVmZmVyc19pbnRlcmxlYXZlIEdVQyAoZGVmYXVsdDogZmFsc2UpCgoqIEl0J3Mgbm90 IGNsZWFyIHdlIHdhbnQgdG8gZW5hYmxlIGludGVybGVhdmluZyBmb3IgYWxsIHNoYXJlZCBt ZW1vcnkuCiAgV2UgcHJvYmFibHkgd2FudCB0aGF0IGZvciBzaGFyZWQgYnVmZmVycywgYnV0 IG1heWJlIG5vdCBmb3IgUHJvY0FycmF5CiAgb3IgZnJlZWxpc3RzLgoKKiBTaW1pbGFyIHF1 ZXN0aW9ucyBhcmUgYWJvdXQgaHVnZSBwYWdlcyAtIGluIGdlbmVyYWwgaXQncyBhIGdvb2Qg aWRlYSwKICBidXQgbWF5YmUgaXQncyBub3QgcXVpdGUgZ29vZCBmb3IgUHJvY0FycmF5LiBJ dCdzIHNvbWV3aGF0ZSBzZXBhcmF0ZQogIGZyb20gTlVNQSwgYnV0IG5vdCBlbnRpcmVseSBi ZWNhdXNlIE5VTUEgd29ya3Mgb24gcGFnZSBncmFudWxhcml0eS4KICBQR1BST0MgZW50cmll cyBhcmUgfjhLQiwgc28gdG9vIGxhcmdlIGZvciBpbnRlcmxlYXZpbmcgd2l0aCA0SyBwYWdl cywKICBhcyB3ZSBkb24ndCB3YW50IHRvIHNwbGl0IHRoZSBlbnRyeSB0byBtdWx0aXBsZSBu b2Rlcy4gQnV0IGNvdWxkIGJlCiAgZG9uZSBleHBsaWNpdGx5LCBieSBzcGVjaWZ5aW5nIHdo aWNoIG5vZGUgdG8gdXNlIGZvciB0aGUgcGFnZXMuCgoqIFdlIGNvdWxkIHBhcnRpdGlvbiBQ cm9jQXJyYXksIHdpdGggb25lIHBhcnRpdGlvbiBwZXIgTlVNQSBub2RlLCBhbmQKICB0aGVu IGF0IGNvbm5lY3Rpb24gdGltZSBwaWNrIGEgbm9kZSBmcm9tIHRoZSBzYW1lIG5vZGUuIFRo ZSBwcm9jZXNzCiAgY291bGQgbWlncmF0ZSB0byBzb21lIG90aGVyIG5vZGUgbGF0ZXIsIGVz cGVjaWFsbHkgZm9yIGxvbmctbGl2ZWQKICBjb25uZWN0aW9ucywgYnV0IHRoZXJlJ3Mgbm8g cGVyZmVjdCBzb2x1dGlvbiwgTWF5YmUgd2UgY291bGQgc2V0CiAgYWZmaW5pdHkgdG8gY29y ZXMgZnJvbSB0aGUgc2FtZSBub2RlLCBvciBzb21ldGhpbmcgbGlrZSB0aGF0PwotLS0KIGNv bnRyaWIvcGdfYnVmZmVyY2FjaGUvTWFrZWZpbGUgICAgICAgICAgICAgICB8ICAgMiArLQog Li4uL3BnX2J1ZmZlcmNhY2hlLS0xLjYtLTEuNy5zcWwgICAgICAgICAgICAgIHwgIDIyICsK IGNvbnRyaWIvcGdfYnVmZmVyY2FjaGUvcGdfYnVmZmVyY2FjaGUuY29udHJvbCB8ICAgMiAr LQogY29udHJpYi9wZ19idWZmZXJjYWNoZS9wZ19idWZmZXJjYWNoZV9wYWdlcy5jIHwgIDky ICsrKwogc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmX2luaXQuYyAgICAgICAgIHwg NjI2ICsrKysrKysrKysrKysrKysrLQogc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxz LmMgICAgICAgICAgICAgIHwgICAzICsKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3Rh Ymxlcy5jICAgICAgICAgICB8ICAxMCArCiBzcmMvaW5jbHVkZS9taXNjYWRtaW4uaCAgICAg ICAgICAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2luY2x1ZGUvc3RvcmFnZS9idWZfaW50 ZXJuYWxzLmggICAgICAgICAgIHwgICA2ICsKIHNyYy9pbmNsdWRlL3N0b3JhZ2UvYnVmbWdy LmggICAgICAgICAgICAgICAgICB8ICAxNSArCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRl ZnMubGlzdCAgICAgICAgICAgICAgfCAgIDIgKwogMTEgZmlsZXMgY2hhbmdlZCwgNzcxIGlu c2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGNvbnRy aWIvcGdfYnVmZmVyY2FjaGUvcGdfYnVmZmVyY2FjaGUtLTEuNi0tMS43LnNxbAoKZGlmZiAt LWdpdCBhL2NvbnRyaWIvcGdfYnVmZmVyY2FjaGUvTWFrZWZpbGUgYi9jb250cmliL3BnX2J1 ZmZlcmNhY2hlL01ha2VmaWxlCmluZGV4IDVmNzQ4NTQzZTJlLi4wZTYxOGY2NmFlYyAxMDA2 NDQKLS0tIGEvY29udHJpYi9wZ19idWZmZXJjYWNoZS9NYWtlZmlsZQorKysgYi9jb250cmli L3BnX2J1ZmZlcmNhY2hlL01ha2VmaWxlCkBAIC05LDcgKzksNyBAQCBFWFRFTlNJT04gPSBw Z19idWZmZXJjYWNoZQogREFUQSA9IHBnX2J1ZmZlcmNhY2hlLS0xLjIuc3FsIHBnX2J1ZmZl cmNhY2hlLS0xLjItLTEuMy5zcWwgXAogCXBnX2J1ZmZlcmNhY2hlLS0xLjEtLTEuMi5zcWwg cGdfYnVmZmVyY2FjaGUtLTEuMC0tMS4xLnNxbCBcCiAJcGdfYnVmZmVyY2FjaGUtLTEuMy0t MS40LnNxbCBwZ19idWZmZXJjYWNoZS0tMS40LS0xLjUuc3FsIFwKLQlwZ19idWZmZXJjYWNo ZS0tMS41LS0xLjYuc3FsCisJcGdfYnVmZmVyY2FjaGUtLTEuNS0tMS42LnNxbCBwZ19idWZm ZXJjYWNoZS0tMS42LS0xLjcuc3FsCiBQR0ZJTEVERVNDID0gInBnX2J1ZmZlcmNhY2hlIC0g bW9uaXRvcmluZyBvZiBzaGFyZWQgYnVmZmVyIGNhY2hlIGluIHJlYWwtdGltZSIKIAogUkVH UkVTUyA9IHBnX2J1ZmZlcmNhY2hlIHBnX2J1ZmZlcmNhY2hlX251bWEKZGlmZiAtLWdpdCBh L2NvbnRyaWIvcGdfYnVmZmVyY2FjaGUvcGdfYnVmZmVyY2FjaGUtLTEuNi0tMS43LnNxbCBi L2NvbnRyaWIvcGdfYnVmZmVyY2FjaGUvcGdfYnVmZmVyY2FjaGUtLTEuNi0tMS43LnNxbApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYmQ5NzI0NmY2YWIKLS0t IC9kZXYvbnVsbAorKysgYi9jb250cmliL3BnX2J1ZmZlcmNhY2hlL3BnX2J1ZmZlcmNhY2hl LS0xLjYtLTEuNy5zcWwKQEAgLTAsMCArMSwyMiBAQAorLyogY29udHJpYi9wZ19idWZmZXJj YWNoZS9wZ19idWZmZXJjYWNoZS0tMS42LS0xLjcuc3FsICovCisKKy0tIGNvbXBsYWluIGlm IHNjcmlwdCBpcyBzb3VyY2VkIGluIHBzcWwsIHJhdGhlciB0aGFuIHZpYSBDUkVBVEUgRVhU RU5TSU9OCitcZWNobyBVc2UgIkFMVEVSIEVYVEVOU0lPTiBwZ19idWZmZXJjYWNoZSBVUERB VEUgVE8gJzEuNyciIHRvIGxvYWQgdGhpcyBmaWxlLiBccXVpdAorCistLSBSZWdpc3RlciB0 aGUgbmV3IGZ1bmN0aW9ucy4KK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIHBnX2J1ZmZl cmNhY2hlX3BhcnRpdGlvbnMoKQorUkVUVVJOUyBTRVRPRiBSRUNPUkQKK0FTICdNT0RVTEVf UEFUSE5BTUUnLCAncGdfYnVmZmVyY2FjaGVfcGFydGl0aW9ucycKK0xBTkdVQUdFIEMgUEFS QUxMRUwgU0FGRTsKKworLS0gQ3JlYXRlIGEgdmlldyBmb3IgY29udmVuaWVudCBhY2Nlc3Mu CitDUkVBVEUgVklFVyBwZ19idWZmZXJjYWNoZV9wYXJ0aXRpb25zIEFTCisJU0VMRUNUIFAu KiBGUk9NIHBnX2J1ZmZlcmNhY2hlX3BhcnRpdGlvbnMoKSBBUyBQCisJKHBhcnRpdGlvbiBp bnRlZ2VyLCBudW1hX25vZGUgaW50ZWdlciwgbnVtX2J1ZmZlcnMgaW50ZWdlciwgZmlyc3Rf YnVmZmVyIGludGVnZXIsIGxhc3RfYnVmZmVyIGludGVnZXIpOworCistLSBEb24ndCB3YW50 IHRoZXNlIHRvIGJlIGF2YWlsYWJsZSB0byBwdWJsaWMuCitSRVZPS0UgQUxMIE9OIEZVTkNU SU9OIHBnX2J1ZmZlcmNhY2hlX3BhcnRpdGlvbnMoKSBGUk9NIFBVQkxJQzsKK1JFVk9LRSBB TEwgT04gcGdfYnVmZmVyY2FjaGVfcGFydGl0aW9ucyBGUk9NIFBVQkxJQzsKKworR1JBTlQg RVhFQ1VURSBPTiBGVU5DVElPTiBwZ19idWZmZXJjYWNoZV9wYXJ0aXRpb25zKCkgVE8gcGdf bW9uaXRvcjsKK0dSQU5UIFNFTEVDVCBPTiBwZ19idWZmZXJjYWNoZV9wYXJ0aXRpb25zIFRP IHBnX21vbml0b3I7CmRpZmYgLS1naXQgYS9jb250cmliL3BnX2J1ZmZlcmNhY2hlL3BnX2J1 ZmZlcmNhY2hlLmNvbnRyb2wgYi9jb250cmliL3BnX2J1ZmZlcmNhY2hlL3BnX2J1ZmZlcmNh Y2hlLmNvbnRyb2wKaW5kZXggYjAzMGJhM2E2ZmEuLjExNDk5NTUwOTQ1IDEwMDY0NAotLS0g YS9jb250cmliL3BnX2J1ZmZlcmNhY2hlL3BnX2J1ZmZlcmNhY2hlLmNvbnRyb2wKKysrIGIv Y29udHJpYi9wZ19idWZmZXJjYWNoZS9wZ19idWZmZXJjYWNoZS5jb250cm9sCkBAIC0xLDUg KzEsNSBAQAogIyBwZ19idWZmZXJjYWNoZSBleHRlbnNpb24KIGNvbW1lbnQgPSAnZXhhbWlu ZSB0aGUgc2hhcmVkIGJ1ZmZlciBjYWNoZScKLWRlZmF1bHRfdmVyc2lvbiA9ICcxLjYnCitk ZWZhdWx0X3ZlcnNpb24gPSAnMS43JwogbW9kdWxlX3BhdGhuYW1lID0gJyRsaWJkaXIvcGdf YnVmZmVyY2FjaGUnCiByZWxvY2F0YWJsZSA9IHRydWUKZGlmZiAtLWdpdCBhL2NvbnRyaWIv cGdfYnVmZmVyY2FjaGUvcGdfYnVmZmVyY2FjaGVfcGFnZXMuYyBiL2NvbnRyaWIvcGdfYnVm ZmVyY2FjaGUvcGdfYnVmZmVyY2FjaGVfcGFnZXMuYwppbmRleCBhZTAyOTFlNmU5Ni4uOGJh YTdjN2I1NDMgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdfYnVmZmVyY2FjaGUvcGdfYnVmZmVy Y2FjaGVfcGFnZXMuYworKysgYi9jb250cmliL3BnX2J1ZmZlcmNhY2hlL3BnX2J1ZmZlcmNh Y2hlX3BhZ2VzLmMKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgTlVNX0JVRkZFUkNBQ0hF X0VWSUNUX0FMTF9FTEVNIDMKIAogI2RlZmluZSBOVU1fQlVGRkVSQ0FDSEVfTlVNQV9FTEVN CTMKKyNkZWZpbmUgTlVNX0JVRkZFUkNBQ0hFX1BBUlRJVElPTlNfRUxFTQk1CiAKIFBHX01P RFVMRV9NQUdJQ19FWFQoCiAJCQkJCS5uYW1lID0gInBnX2J1ZmZlcmNhY2hlIiwKQEAgLTEw MCw2ICsxMDEsNyBAQCBQR19GVU5DVElPTl9JTkZPX1YxKHBnX2J1ZmZlcmNhY2hlX3VzYWdl X2NvdW50cyk7CiBQR19GVU5DVElPTl9JTkZPX1YxKHBnX2J1ZmZlcmNhY2hlX2V2aWN0KTsK IFBHX0ZVTkNUSU9OX0lORk9fVjEocGdfYnVmZmVyY2FjaGVfZXZpY3RfcmVsYXRpb24pOwog UEdfRlVOQ1RJT05fSU5GT19WMShwZ19idWZmZXJjYWNoZV9ldmljdF9hbGwpOworUEdfRlVO Q1RJT05fSU5GT19WMShwZ19idWZmZXJjYWNoZV9wYXJ0aXRpb25zKTsKIAogCiAvKiBPbmx5 IG5lZWQgdG8gdG91Y2ggbWVtb3J5IG9uY2UgcGVyIGJhY2tlbmQgcHJvY2VzcyBsaWZldGlt ZSAqLwpAQCAtNzcxLDMgKzc3Myw5MyBAQCBwZ19idWZmZXJjYWNoZV9ldmljdF9hbGwoUEdf RlVOQ1RJT05fQVJHUykKIAogCVBHX1JFVFVSTl9EQVRVTShyZXN1bHQpOwogfQorCisvKgor ICogSW5xdWlyZSBhYm91dCBwYXJ0aXRpb25pbmcgb2YgYnVmZmVycyBiZXR3ZWVuIE5VTUEg bm9kZXMuCisgKi8KK0RhdHVtCitwZ19idWZmZXJjYWNoZV9wYXJ0aXRpb25zKFBHX0ZVTkNU SU9OX0FSR1MpCit7CisJRnVuY0NhbGxDb250ZXh0ICpmdW5jY3R4OworCU1lbW9yeUNvbnRl eHQgb2xkY29udGV4dDsKKwlUdXBsZURlc2MJdHVwbGVkZXNjOworCVR1cGxlRGVzYwlleHBl Y3RlZF90dXBsZWRlc2M7CisJSGVhcFR1cGxlCXR1cGxlOworCURhdHVtCQlyZXN1bHQ7CisK KwlpZiAoU1JGX0lTX0ZJUlNUQ0FMTCgpKQorCXsKKwkJZnVuY2N0eCA9IFNSRl9GSVJTVENB TExfSU5JVCgpOworCisJCS8qIFN3aXRjaCBjb250ZXh0IHdoZW4gYWxsb2NhdGluZyBzdHVm ZiB0byBiZSB1c2VkIGluIGxhdGVyIGNhbGxzICovCisJCW9sZGNvbnRleHQgPSBNZW1vcnlD b250ZXh0U3dpdGNoVG8oZnVuY2N0eC0+bXVsdGlfY2FsbF9tZW1vcnlfY3R4KTsKKworCQlp ZiAoZ2V0X2NhbGxfcmVzdWx0X3R5cGUoZmNpbmZvLCBOVUxMLCAmZXhwZWN0ZWRfdHVwbGVk ZXNjKSAhPSBUWVBFRlVOQ19DT01QT1NJVEUpCisJCQllbG9nKEVSUk9SLCAicmV0dXJuIHR5 cGUgbXVzdCBiZSBhIHJvdyB0eXBlIik7CisKKwkJaWYgKGV4cGVjdGVkX3R1cGxlZGVzYy0+ bmF0dHMgIT0gTlVNX0JVRkZFUkNBQ0hFX1BBUlRJVElPTlNfRUxFTSkKKwkJCWVsb2coRVJS T1IsICJpbmNvcnJlY3QgbnVtYmVyIG9mIG91dHB1dCBhcmd1bWVudHMiKTsKKworCQkvKiBD b25zdHJ1Y3QgYSB0dXBsZSBkZXNjcmlwdG9yIGZvciB0aGUgcmVzdWx0IHJvd3MuICovCisJ CXR1cGxlZGVzYyA9IENyZWF0ZVRlbXBsYXRlVHVwbGVEZXNjKGV4cGVjdGVkX3R1cGxlZGVz Yy0+bmF0dHMpOworCQlUdXBsZURlc2NJbml0RW50cnkodHVwbGVkZXNjLCAoQXR0ck51bWJl cikgMSwgInBhcnRpdGlvbiIsCisJCQkJCQkgICBJTlQ0T0lELCAtMSwgMCk7CisJCVR1cGxl RGVzY0luaXRFbnRyeSh0dXBsZWRlc2MsIChBdHRyTnVtYmVyKSAyLCAibnVtYV9ub2RlIiwK KwkJCQkJCSAgIElOVDRPSUQsIC0xLCAwKTsKKwkJVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGxl ZGVzYywgKEF0dHJOdW1iZXIpIDMsICJudW1fYnVmZmVycyIsCisJCQkJCQkgICBJTlQ0T0lE LCAtMSwgMCk7CisJCVR1cGxlRGVzY0luaXRFbnRyeSh0dXBsZWRlc2MsIChBdHRyTnVtYmVy KSA0LCAiZmlyc3RfYnVmZmVyIiwKKwkJCQkJCSAgIElOVDRPSUQsIC0xLCAwKTsKKwkJVHVw bGVEZXNjSW5pdEVudHJ5KHR1cGxlZGVzYywgKEF0dHJOdW1iZXIpIDUsICJsYXN0X2J1ZmZl ciIsCisJCQkJCQkgICBJTlQ0T0lELCAtMSwgMCk7CisKKwkJZnVuY2N0eC0+dXNlcl9mY3R4 ID0gQmxlc3NUdXBsZURlc2ModHVwbGVkZXNjKTsKKworCQkvKiBSZXR1cm4gdG8gb3JpZ2lu YWwgY29udGV4dCB3aGVuIGFsbG9jYXRpbmcgdHJhbnNpZW50IG1lbW9yeSAqLworCQlNZW1v cnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CisKKwkJLyogU2V0IG1heCBjYWxscyBh bmQgcmVtZW1iZXIgdGhlIHVzZXIgZnVuY3Rpb24gY29udGV4dC4gKi8KKwkJZnVuY2N0eC0+ bWF4X2NhbGxzID0gQnVmZmVyUGFydGl0aW9uQ291bnQoKTsKKwl9CisKKwlmdW5jY3R4ID0g U1JGX1BFUkNBTExfU0VUVVAoKTsKKworCWlmIChmdW5jY3R4LT5jYWxsX2NudHIgPCBmdW5j Y3R4LT5tYXhfY2FsbHMpCisJeworCQl1aW50MzIJCWkgPSBmdW5jY3R4LT5jYWxsX2NudHI7 CisKKwkJaW50CQkJbnVtYV9ub2RlLAorCQkJCQludW1fYnVmZmVycywKKwkJCQkJZmlyc3Rf YnVmZmVyLAorCQkJCQlsYXN0X2J1ZmZlcjsKKworCQlEYXR1bQkJdmFsdWVzW05VTV9CVUZG RVJDQUNIRV9QQVJUSVRJT05TX0VMRU1dOworCQlib29sCQludWxsc1tOVU1fQlVGRkVSQ0FD SEVfUEFSVElUSU9OU19FTEVNXTsKKworCQlCdWZmZXJQYXJ0aXRpb25HZXQoaSwgJm51bWFf bm9kZSwgJm51bV9idWZmZXJzLAorCQkJCQkJICAgJmZpcnN0X2J1ZmZlciwgJmxhc3RfYnVm ZmVyKTsKKworCQl2YWx1ZXNbMF0gPSBJbnQzMkdldERhdHVtKGkpOworCQludWxsc1swXSA9 IGZhbHNlOworCisJCXZhbHVlc1sxXSA9IEludDMyR2V0RGF0dW0obnVtYV9ub2RlKTsKKwkJ bnVsbHNbMV0gPSBmYWxzZTsKKworCQl2YWx1ZXNbMl0gPSBJbnQzMkdldERhdHVtKG51bV9i dWZmZXJzKTsKKwkJbnVsbHNbMl0gPSBmYWxzZTsKKworCQl2YWx1ZXNbM10gPSBJbnQzMkdl dERhdHVtKGZpcnN0X2J1ZmZlcik7CisJCW51bGxzWzNdID0gZmFsc2U7CisKKwkJdmFsdWVz WzRdID0gSW50MzJHZXREYXR1bShsYXN0X2J1ZmZlcik7CisJCW51bGxzWzRdID0gZmFsc2U7 CisKKwkJLyogQnVpbGQgYW5kIHJldHVybiB0aGUgdHVwbGUuICovCisJCXR1cGxlID0gaGVh cF9mb3JtX3R1cGxlKChUdXBsZURlc2MpIGZ1bmNjdHgtPnVzZXJfZmN0eCwgdmFsdWVzLCBu dWxscyk7CisJCXJlc3VsdCA9IEhlYXBUdXBsZUdldERhdHVtKHR1cGxlKTsKKworCQlTUkZf UkVUVVJOX05FWFQoZnVuY2N0eCwgcmVzdWx0KTsKKwl9CisJZWxzZQorCQlTUkZfUkVUVVJO X0RPTkUoZnVuY2N0eCk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1 ZmZlci9idWZfaW5pdC5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmX2luaXQu YwppbmRleCBlZDFkYzQ4OGE0Mi4uNWI2NWE4NTViMjkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zl9pbml0LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFn ZS9idWZmZXIvYnVmX2luaXQuYwpAQCAtMTQsOSArMTQsMTcgQEAKICAqLwogI2luY2x1ZGUg InBvc3RncmVzLmgiCiAKKyNpZmRlZiBVU0VfTElCTlVNQQorI2luY2x1ZGUgPG51bWEuaD4K KyNpbmNsdWRlIDxudW1haWYuaD4KKyNlbmRpZgorCisjaW5jbHVkZSAicG9ydC9wZ19udW1h LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9haW8uaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zl9p bnRlcm5hbHMuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgorI2luY2x1ZGUgInN0 b3JhZ2UvcGdfc2htZW0uaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKIAogQnVmZmVy RGVzY1BhZGRlZCAqQnVmZmVyRGVzY3JpcHRvcnM7CiBjaGFyCSAgICpCdWZmZXJCbG9ja3M7 CkBAIC0yNCw2ICszMiwxOSBAQCBDb25kaXRpb25WYXJpYWJsZU1pbmltYWxseVBhZGRlZCAq QnVmZmVySU9DVkFycmF5OwogV3JpdGViYWNrQ29udGV4dCBCYWNrZW5kV3JpdGViYWNrQ29u dGV4dDsKIENrcHRTb3J0SXRlbSAqQ2twdEJ1ZmZlcklkczsKIAorQnVmZmVyUGFydGl0aW9u cyAqQnVmZmVyUGFydGl0aW9uc0FycmF5OworCitzdGF0aWMgU2l6ZSBnZXRfbWVtb3J5X3Bh Z2Vfc2l6ZSh2b2lkKTsKK3N0YXRpYyB2b2lkIGJ1ZmZlcl9wYXJ0aXRpb25zX3ByZXBhcmUo dm9pZCk7CitzdGF0aWMgdm9pZCBidWZmZXJfcGFydGl0aW9uc19pbml0KHZvaWQpOworCisv KiBudW1iZXIgb2YgTlVNQSBub2RlcyAoYXMgcmV0dXJuZWQgYnkgbnVtYV9udW1fY29uZmln dXJlZF9ub2RlcykgKi8KK3N0YXRpYyBpbnQJbnVtYV9ub2RlcyA9IC0xOwkvKiBudW1iZXIg b2Ygbm9kZXMgd2hlbiBzaXppbmcgKi8KK3N0YXRpYyBTaXplIG51bWFfcGFnZV9zaXplID0g MDsgLyogcGFnZSB1c2VkIHRvIHNpemUgcGFydGl0aW9ucyAqLworc3RhdGljIGJvb2wgbnVt YV9jYW5fcGFydGl0aW9uID0gZmFsc2U7IC8qIGNhbiBtYXAgdG8gTlVNQSBub2Rlcz8gKi8K K3N0YXRpYyBpbnQJbnVtYV9idWZmZXJzX3Blcl9ub2RlID0gLTE7IC8qIGJ1ZmZlcnMgcGVy IG5vZGUgKi8KK3N0YXRpYyBpbnQJbnVtYV9wYXJ0aXRpb25zID0gMDsJLyogdG90YWwgKG11 bHRpcGxlIG9mIG5vZGVzKSAqLworCiAKIC8qCiAgKiBEYXRhIFN0cnVjdHVyZXM6CkBAIC03 MCwxOSArOTEsODkgQEAgQnVmZmVyTWFuYWdlclNobWVtSW5pdCh2b2lkKQogCWJvb2wJCWZv dW5kQnVmcywKIAkJCQlmb3VuZERlc2NzLAogCQkJCWZvdW5kSU9DViwKLQkJCQlmb3VuZEJ1 ZkNrcHQ7CisJCQkJZm91bmRCdWZDa3B0LAorCQkJCWZvdW5kUGFydHM7CisJU2l6ZQkJbWVt X3BhZ2Vfc2l6ZTsKKwlTaXplCQlidWZmZXJfYWxpZ247CisKKwkvKgorCSAqIFhYWCBBIGJp dCB3ZWlyZC4gRG8gd2UgbmVlZCB0byB3b3JyeSBhYm91dCBwb3N0bWFzdGVyPyBDb3VsZCB0 aGlzIGV2ZW4KKwkgKiBydW4gb3V0c2lkZSBwb3N0bWFzdGVyPyBJIGRvbid0IHRoaW5rIHNv LgorCSAqCisJICogWFhYIEFub3RoZXIgaXNzdWUgaXMgd2UgbWF5IGdldCBkaWZmZXJlbnQg dmFsdWVzIHRoYW4gd2hlbiBzaXppbmcgdGhlCisJICogdGhlIG1lbW9yeSwgYmVjYXVzZSBh dCB0aGF0IHBvaW50IHdlIGRpZG4ndCBrbm93IGlmIHdlIGdldCBodWdlIHBhZ2VzLAorCSAq IHNvIHdlIGFzc3VtZWQgd2Ugd2lsbC4gU2hvdWxkbid0IGNhdXNlIGNyYXNoZXMsIGJ1dCB3 ZSBtaWdodCBhbGxvY2F0ZQorCSAqIHNoYXJlZCBtZW1vcnkgYW5kIHRoZW4gbm90IHVzZSBz b21lIG9mIGl0IChiZWNhdXNlIG9mIHRoZSBhbGlnbm1lbnQKKwkgKiB0aGF0IHdlIGRvbid0 IGFjdHVhbGx5IG5lZWQpLiBOb3Qgc3VyZSBhYm91dCBiZXR0ZXIgd2F5LCBnb29kIGZvciBu b3cuCisJICovCisJaWYgKElzVW5kZXJQb3N0bWFzdGVyKQorCQltZW1fcGFnZV9zaXplID0g cGdfZ2V0X3NobWVtX3BhZ2VzaXplKCk7CisJZWxzZQorCQltZW1fcGFnZV9zaXplID0gZ2V0 X21lbW9yeV9wYWdlX3NpemUoKTsKKworCS8qCisJICogV2l0aCBOVU1BIHdlIG5lZWQgdG8g ZW5zdXJlIHRoZSBidWZmZXJzIGFyZSBwcm9wZXJseSBhbGlnbmVkIG5vdCBqdXN0CisJICog dG8gUEdfSU9fQUxJR05fU0laRSwgYnV0IGFsc28gdG8gbWVtb3J5IHBhZ2Ugc2l6ZSwgYmVj YXVzZSBOVU1BIHdvcmtzCisJICogb24gcGFnZSBncmFudWxhcml0eSwgYW5kIHdlIGRvbid0 IHdhbnQgYSBidWZmZXIgdG8gZ2V0IHNwbGl0IHRvCisJICogbXVsdGlwbGUgbm9kZXMgKHdo ZW4gdXNpbmcgbXVsdGlwbGUgbWVtb3J5IHBhZ2VzKS4KKwkgKgorCSAqIFdlIGFsc28gZG9u J3Qgd2FudCB0byBpbnRlcmZlcmUgd2l0aCBvdGhlciBwYXJ0cyBvZiBzaGFyZWQgbWVtb3J5 LAorCSAqIHdoaWNoIGNvdWxkIGVhc2lseSBoYXBwZW4gd2l0aCBodWdlIHBhZ2VzIChlLmcu IHdpdGggZGF0YSBzdG9yZWQgYmVmb3JlCisJICogYnVmZmVycykuCisJICoKKwkgKiBXZSBk byB0aGlzIGJ5IGFsaWduaW5nIHRvIHRoZSBsYXJnZXIgb2YgdGhlIHR3byB2YWx1ZXMgKHdl IGtub3cgYm90aAorCSAqIGFyZSBwb3dlci1vZi10d28gdmFsdWVzLCBzbyB0aGUgbGFyZ2Vy IHZhbHVlIGlzIGF1dG9tYXRpY2FsbHkgYQorCSAqIG11bHRpcGxlIG9mIHRoZSBsZXNzZXIg b25lKS4KKwkgKgorCSAqIFhYWCBNYXliZSB0aGVyZSdzIGEgd2F5IHRvIHVzZSBsZXNzIGFs aWdubWVudD8KKwkgKgorCSAqIFhYWCBNYXliZSB3aXRoIChtZW1fcGFnZV9zaXplID4gUEdf SU9fQUxJR05fU0laRSksIHdlIGRvbid0IG5lZWQgdG8KKwkgKiBhbGlnbiB0byBtZW1fcGFn ZV9zaXplPyBFc3BlY2lhbGx5IGZvciB2ZXJ5IGxhcmdlIGh1Z2UgcGFnZXMgKGUuZy4gMUdC KQorCSAqIHRoYXQgZG9lc24ndCBzZWVtIHF1aXRlIHdvcnRoIGl0LiBNYXliZSB3ZSBzaG91 bGQgc2ltcGx5IGFsaWduIHRvCisJICogQkxDS1NaLCBzbyB0aGF0IGJ1ZmZlcnMgZG9uJ3Qg Z2V0IHNwbGl0PyBTdGlsbCwgd2UgbWlnaHQgaW50ZXJmZXJlIHdpdGgKKwkgKiBvdGhlciBz dHVmZiBzdG9yZWQgaW4gc2hhcmVkIG1lbW9yeSB0aGF0IHdlIHdhbnQgdG8gYWxsb2NhdGUg b24gYQorCSAqIHBhcnRpY3VsYXIgTlVNQSBub2RlIChlLmcuIFByb2NBcnJheSkuCisJICoK KwkgKiBYWFggTWF5YmUgd2l0aCAidG9vIGxhcmdlIiBodWdlIHBhZ2VzIHdlIHNob3VsZCBq dXN0IG5vdCBkbyB0aGlzLCBvcgorCSAqIG1heWJlIGRvIHRoaXMgb25seSBmb3Igc3VmZmlj aWVudGx5IGxhcmdlIGFyZWFzIChlLmcuIHNoYXJlZCBidWZmZXJzLAorCSAqIGJ1dCBub3Qg UHJvY0FycmF5KS4KKwkgKi8KKwlidWZmZXJfYWxpZ24gPSBNYXgobWVtX3BhZ2Vfc2l6ZSwg UEdfSU9fQUxJR05fU0laRSk7CisKKwkvKiBvbmUgcGFnZSBpcyBhIG11bHRpcGxlIG9mIHRo ZSBvdGhlciAqLworCUFzc2VydCgoKG1lbV9wYWdlX3NpemUgJSBQR19JT19BTElHTl9TSVpF KSA9PSAwKSB8fAorCQkgICAoKFBHX0lPX0FMSUdOX1NJWkUgJSBtZW1fcGFnZV9zaXplKSA9 PSAwKSk7CisKKwkvKiBhbGxvY2F0ZSB0aGUgcGFydGl0aW9uIHJlZ2lzdHJ5IGZpcnN0ICov CisJQnVmZmVyUGFydGl0aW9uc0FycmF5ID0gKEJ1ZmZlclBhcnRpdGlvbnMgKikKKwkJU2ht ZW1Jbml0U3RydWN0KCJCdWZmZXIgUGFydGl0aW9ucyIsCisJCQkJCQlvZmZzZXRvZihCdWZm ZXJQYXJ0aXRpb25zLCBwYXJ0aXRpb25zKSArCisJCQkJCQltdWxfc2l6ZShzaXplb2YoQnVm ZmVyUGFydGl0aW9uKSwgbnVtYV9wYXJ0aXRpb25zKSwKKwkJCQkJCSZmb3VuZFBhcnRzKTsK IAotCS8qIEFsaWduIGRlc2NyaXB0b3JzIHRvIGEgY2FjaGVsaW5lIGJvdW5kYXJ5LiAqLwor CS8qCisJICogQWxpZ24gZGVzY3JpcHRvcnMgdG8gYSBjYWNoZWxpbmUgYm91bmRhcnksIGFu ZCBtZW1vcnkgcGFnZS4KKwkgKgorCSAqIFdlIHdhbnQgdG8gZGlzdHJpYnV0ZSBib3RoIHRv IE5VTUEgbm9kZXMsIHNvIHRoYXQgZWFjaCBidWZmZXIgYW5kIGl0J3MKKwkgKiBkZXNjcmlw dG9yIGFyZSBvbiB0aGUgc2FtZSBOVU1BIG5vZGUuIFNvIHdlIGFsaWduIGJvdGggdGhlIHNh bWUgd2F5LgorCSAqCisJICogWFhYIFRoZSBtZW1vcnkgcGFnZSBpcyBhbHdheXMgbGFyZ2Vy IHRoYW4gY2FjaGVsaW5lLCBzbyB0aGUgY2FjaGVsaW5lCisJICogcmVmZXJlbmNlIGlzIGEg Yml0IHVubmVjZXNzYXJ5LgorCSAqCisJICogWFhYIEluIHByaW5jaXBsZSB3ZSBvbmx5IG5l ZWQgdG8gZG8gdGhpcyB3aXRoIE5VTUEsIG90aGVyd2lzZSB3ZSBjb3VsZAorCSAqIHN0aWxs IGFsaWduIGp1c3QgdG8gY2FjaGVsaW5lLCBhcyBiZWZvcmUuCisJICovCiAJQnVmZmVyRGVz Y3JpcHRvcnMgPSAoQnVmZmVyRGVzY1BhZGRlZCAqKQotCQlTaG1lbUluaXRTdHJ1Y3QoIkJ1 ZmZlciBEZXNjcmlwdG9ycyIsCi0JCQkJCQlOQnVmZmVycyAqIHNpemVvZihCdWZmZXJEZXNj UGFkZGVkKSwKLQkJCQkJCSZmb3VuZERlc2NzKTsKKwkJVFlQRUFMSUdOKGJ1ZmZlcl9hbGln biwKKwkJCQkgIFNobWVtSW5pdFN0cnVjdCgiQnVmZmVyIERlc2NyaXB0b3JzIiwKKwkJCQkJ CQkJICBOQnVmZmVycyAqIHNpemVvZihCdWZmZXJEZXNjUGFkZGVkKSArIGJ1ZmZlcl9hbGln biwKKwkJCQkJCQkJICAmZm91bmREZXNjcykpOwogCiAJLyogQWxpZ24gYnVmZmVyIHBvb2wg b24gSU8gcGFnZSBzaXplIGJvdW5kYXJ5LiAqLwogCUJ1ZmZlckJsb2NrcyA9IChjaGFyICop Ci0JCVRZUEVBTElHTihQR19JT19BTElHTl9TSVpFLAorCQlUWVBFQUxJR04oYnVmZmVyX2Fs aWduLAogCQkJCSAgU2htZW1Jbml0U3RydWN0KCJCdWZmZXIgQmxvY2tzIiwKLQkJCQkJCQkJ ICBOQnVmZmVycyAqIChTaXplKSBCTENLU1ogKyBQR19JT19BTElHTl9TSVpFLAorCQkJCQkJ CQkgIE5CdWZmZXJzICogKFNpemUpIEJMQ0tTWiArIGJ1ZmZlcl9hbGlnbiwKIAkJCQkJCQkJ ICAmZm91bmRCdWZzKSk7CiAKIAkvKiBBbGlnbiBjb25kaXRpb24gdmFyaWFibGVzIHRvIGNh Y2hlbGluZSBib3VuZGFyeS4gKi8KQEAgLTExMiw2ICsyMDMsMTIgQEAgQnVmZmVyTWFuYWdl clNobWVtSW5pdCh2b2lkKQogCXsKIAkJaW50CQkJaTsKIAorCQkvKgorCQkgKiBJbml0aWFs aXplIHRoZSByZWdpc3RyeSBvZiBidWZmZXIgcGFydGl0aW9ucywgYW5kIGFsc28gbW92ZSB0 aGUKKwkJICogbWVtb3J5IHRvIGRpZmZlcmVudCBOVU1BIG5vZGVzIChpZiBlbmFibGVkIGJ5 IEdVQykKKwkJICovCisJCWJ1ZmZlcl9wYXJ0aXRpb25zX2luaXQoKTsKKwogCQkvKgogCQkg KiBJbml0aWFsaXplIGFsbCB0aGUgYnVmZmVyIGhlYWRlcnMuCiAJCSAqLwpAQCAtMTQ0LDYg KzI0MSwxMSBAQCBCdWZmZXJNYW5hZ2VyU2htZW1Jbml0KHZvaWQpCiAJCUdldEJ1ZmZlckRl c2NyaXB0b3IoTkJ1ZmZlcnMgLSAxKS0+ZnJlZU5leHQgPSBGUkVFTkVYVF9FTkRfT0ZfTElT VDsKIAl9CiAKKwkvKgorCSAqIEFzIHRoaXMgcG9pbnQgd2UgaGF2ZSBhbGwgdGhlIGJ1ZmZl cnMgaW4gYSBzaW5nbGUgbG9uZyBmcmVlbGlzdC4gV2l0aAorCSAqIGZyZWVsaXN0IHBhcnRp dGlvbmluZyB3ZSByZWJ1aWxkIHRoZW0gaW4gU3RyYXRlZ3lJbml0aWFsaXplLgorCSAqLwor CiAJLyogSW5pdCBvdGhlciBzaGFyZWQgYnVmZmVyLW1hbmFnZW1lbnQgc3R1ZmYgKi8KIAlT dHJhdGVneUluaXRpYWxpemUoIWZvdW5kRGVzY3MpOwogCkBAIC0xNTIsMjQgKzI1NCw2OCBA QCBCdWZmZXJNYW5hZ2VyU2htZW1Jbml0KHZvaWQpCiAJCQkJCQkgJmJhY2tlbmRfZmx1c2hf YWZ0ZXIpOwogfQogCisvKgorICogRGV0ZXJtaW5lIHRoZSBzaXplIG9mIG1lbW9yeSBwYWdl LgorICoKKyAqIFhYWCBUaGlzIGlzIGEgYml0IHRyaWNreSwgYmVjYXVzZSB0aGUgcmVzdWx0 IGRlcGVuZHMgYXQgd2hpY2ggcG9pbnQgd2UgY2FsbAorICogdGhpcy4gQmVmb3JlIHRoZSBh bGxvY2F0aW9uIHdlIGRvbid0IGtub3cgaWYgd2Ugc3VjY2VlZCBpbiBhbGxvY2F0aW5nIGh1 Z2UKKyAqIHBhZ2VzIC0gYnV0IHdlIGhhdmUgdG8gc2l6ZSBldmVyeXRoaW5nIGZvciB0aGUg Y2hhbmNlIHRoYXQgd2Ugd2lsbC4gQW5kIHRoZW4KKyAqIGlmIHRoZSBodWdlIHBhZ2VzIGZh aWwgKHdpdGggJ2h1Z2VfcGFnZXM9dHJ5JyksIHdlJ2xsIHVzZSB0aGUgcmVndWxhciBtZW1v cnkKKyAqIHBhZ2VzLiBCdXQgYXQgdGhhdCBwb2ludCB3ZSBjYW4ndCBhZGp1c3QgdGhlIHNp emluZy4KKyAqCisgKiBYWFggTWF5YmUgd2l0aCBodWdlX3BhZ2VzPXRyeSB3ZSBzaG91bGQg ZG8gdGhlIHNpemluZyB0d2ljZSAtIGZpcnN0IHdpdGgKKyAqIGh1Z2UgcGFnZXMsIGFuZCBp ZiB0aGF0IGZhaWxzLCB0aGVuIHdpdGhvdXQgdGhlbS4gQnV0IG5vdCBmb3IgdGhpcyBwYXRj aC4KKyAqIFVwIHRvIHRoaXMgcG9pbnQgdGhlcmUgd2FzIG5vIHN1Y2ggZGVwZW5kZW5jeSBv biBodWdlIHBhZ2VzLgorICovCitzdGF0aWMgU2l6ZQorZ2V0X21lbW9yeV9wYWdlX3NpemUo dm9pZCkKK3sKKwlTaXplCQlvc19wYWdlX3NpemU7CisJU2l6ZQkJaHVnZV9wYWdlX3NpemU7 CisKKyNpZmRlZiBXSU4zMgorCVNZU1RFTV9JTkZPIHN5c2luZm87CisKKwlHZXRTeXN0ZW1J bmZvKCZzeXNpbmZvKTsKKwlvc19wYWdlX3NpemUgPSBzeXNpbmZvLmR3UGFnZVNpemU7Cisj ZWxzZQorCW9zX3BhZ2Vfc2l6ZSA9IHN5c2NvbmYoX1NDX1BBR0VTSVpFKTsKKyNlbmRpZgor CisJLyogYXNzdW1lIGh1Z2UgcGFnZXMgZ2V0IHVzZWQsIHVubGVzcyBIVUdFX1BBR0VTX09G RiAqLworCWlmIChodWdlX3BhZ2VzX3N0YXR1cyAhPSBIVUdFX1BBR0VTX09GRikKKwkJR2V0 SHVnZVBhZ2VTaXplKCZodWdlX3BhZ2Vfc2l6ZSwgTlVMTCk7CisJZWxzZQorCQlodWdlX3Bh Z2Vfc2l6ZSA9IDA7CisKKwlyZXR1cm4gTWF4KG9zX3BhZ2Vfc2l6ZSwgaHVnZV9wYWdlX3Np emUpOworfQorCiAvKgogICogQnVmZmVyTWFuYWdlclNobWVtU2l6ZQogICoKICAqIGNvbXB1 dGUgdGhlIHNpemUgb2Ygc2hhcmVkIG1lbW9yeSBmb3IgdGhlIGJ1ZmZlciBwb29sIGluY2x1 ZGluZwogICogZGF0YSBwYWdlcywgYnVmZmVyIGRlc2NyaXB0b3JzLCBoYXNoIHRhYmxlcywg ZXRjLgorICoKKyAqIFhYWCBDYWxsZWQgYmVmb3JlIGFsbG9jYXRpb24sIHNvIHdlIGRvbid0 IGtub3cgaWYgaHVnZSBwYWdlcyBnZXQgdXNlZCB5ZXQuCisgKiBTbyB3ZSBuZWVkIHRvIGFz c3VtZSBodWdlIHBhZ2VzIGdldCB1c2VkLCBhbmQgdXNlIGdldF9tZW1vcnlfcGFnZV9zaXpl KCkKKyAqIHRvIGNhbGN1bGF0ZSB0aGUgbGFyZ2VzdCBwb3NzaWJsZSBtZW1vcnkgcGFnZS4K ICAqLwogU2l6ZQogQnVmZmVyTWFuYWdlclNobWVtU2l6ZSh2b2lkKQogewogCVNpemUJCXNp emUgPSAwOwogCisJLyogY2FsY3VsYXRlIHBhcnRpdGlvbiBpbmZvIGZvciBidWZmZXJzICov CisJYnVmZmVyX3BhcnRpdGlvbnNfcHJlcGFyZSgpOworCiAJLyogc2l6ZSBvZiBidWZmZXIg ZGVzY3JpcHRvcnMgKi8KIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgbXVsX3NpemUoTkJ1ZmZl cnMsIHNpemVvZihCdWZmZXJEZXNjUGFkZGVkKSkpOwogCS8qIHRvIGFsbG93IGFsaWduaW5n IGJ1ZmZlciBkZXNjcmlwdG9ycyAqLwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBQR19DQUNI RV9MSU5FX1NJWkUpOworCXNpemUgPSBhZGRfc2l6ZShzaXplLCBNYXgobnVtYV9wYWdlX3Np emUsIFBHX0lPX0FMSUdOX1NJWkUpKTsKIAogCS8qIHNpemUgb2YgZGF0YSBwYWdlcywgcGx1 cyBhbGlnbm1lbnQgcGFkZGluZyAqLwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBQR19JT19B TElHTl9TSVpFKTsKKwlzaXplID0gYWRkX3NpemUoc2l6ZSwgTWF4KG51bWFfcGFnZV9zaXpl LCBQR19JT19BTElHTl9TSVpFKSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIG11bF9zaXpl KE5CdWZmZXJzLCBCTENLU1opKTsKIAogCS8qIHNpemUgb2Ygc3R1ZmYgY29udHJvbGxlZCBi eSBmcmVlbGlzdC5jICovCkBAIC0xODQsNSArMzMwLDQ2NyBAQCBCdWZmZXJNYW5hZ2VyU2ht ZW1TaXplKHZvaWQpCiAJLyogc2l6ZSBvZiBjaGVja3BvaW50IHNvcnQgYXJyYXkgaW4gYnVm bWdyLmMgKi8KIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgbXVsX3NpemUoTkJ1ZmZlcnMsIHNp emVvZihDa3B0U29ydEl0ZW0pKSk7CiAKKwkvKiBhY2NvdW50IGZvciByZWdpc3RyeSBvZiBO VU1BIHBhcnRpdGlvbnMgKi8KKwlzaXplID0gYWRkX3NpemUoc2l6ZSwgTUFYQUxJR04ob2Zm c2V0b2YoQnVmZmVyUGFydGl0aW9ucywgcGFydGl0aW9ucykgKworCQkJCQkJCQkgICBtdWxf c2l6ZShzaXplb2YoQnVmZmVyUGFydGl0aW9uKSwgbnVtYV9wYXJ0aXRpb25zKSkpOworCiAJ cmV0dXJuIHNpemU7CiB9CisKKy8qCisgKiBDYWxjdWxhdGUgdGhlIE5VTUEgbm9kZSBmb3Ig YSBnaXZlbiBidWZmZXIuCisgKi8KK2ludAorQnVmZmVyR2V0Tm9kZShCdWZmZXIgYnVmZmVy KQoreworCS8qIG5vdCBOVU1BIGludGVybGVhdmluZyAqLworCWlmIChudW1hX2J1ZmZlcnNf cGVyX25vZGUgPT0gLTEpCisJCXJldHVybiAwOworCisJcmV0dXJuIChidWZmZXIgLyBudW1h X2J1ZmZlcnNfcGVyX25vZGUpOworfQorCisvKgorICogcGdfbnVtYV9pbnRlcmxlYXZlX21l bW9yeQorICoJCW1vdmUgbWVtb3J5IHRvIGRpZmZlcmVudCBOVU1BIG5vZGVzIGluIGxhcmdl ciBjaHVua3MKKyAqCisgKiBzdGFydHB0ciAtIHN0YXJ0IG9mIHRoZSByZWdpb24gKHNob3Vs ZCBiZSBhbGlnbmVkIHRvIHBhZ2Ugc2l6ZSkKKyAqIGVuZHB0ciAtIGVuZCBvZiB0aGUgcmVn aW9uIChkb2Vzbid0IG5lZWQgdG8gYmUgYWxpZ25lZCkKKyAqIG1lbV9wYWdlX3NpemUgLSBz aXplIG9mIHRoZSBtZW1vcnkgcGFnZSBzaXplCisgKiBjaHVua19zaXplIC0gc2l6ZSBvZiB0 aGUgY2h1bmsgdG8gbW92ZSB0byBhIHNpbmdsZSBub2RlIChzaG91bGQgYmUgbXVsdGlwbGUK KyAqICAgICAgICAgICAgICBvZiBwYWdlIHNpemUKKyAqIG51bV9ub2RlcyAtIG51bWJlciBv ZiBub2RlcyB0byBhbGxvY2F0ZSBtZW1vcnkgdG8KKyAqCisgKiBYWFggTWF5YmUgdGhpcyBz aG91bGQgdXNlIG51bWFfdG9ub2RlX21lbW9yeSBhbmQgbnVtYV9wb2xpY2VfbWVtb3J5IGlu c3RlYWQ/CisgKiBUaGF0IG1pZ2h0IGJlIG1vcmUgZWZmaWNpZW50IHRoYW4gbnVtYV9tb3Zl X3BhZ2VzLCBhcyBpdCB3b3JrcyBvbiBsYXJnZXIKKyAqIGNodW5rcyBvZiBtZW1vcnksIG5v dCBpbmRpdmlkdWFsIHN5c3RlbSBwYWdlcywgSSB0aGluay4KKyAqCisgKiBYWFggVGhlICJp bnRlcmxlYXZlIiBuYW1lIGlzIG5vdCBxdWl0ZSBhY2N1cmF0ZSwgSSBndWVzcy4KKyAqLwor c3RhdGljIHZvaWQKK3BnX251bWFfbW92ZV90b19ub2RlKGNoYXIgKnN0YXJ0cHRyLCBjaGFy ICplbmRwdHIsIGludCBub2RlKQoreworCVNpemUJCW1lbV9wYWdlX3NpemU7CisJU2l6ZQkJ c3o7CisKKwkvKgorCSAqIEdldCB0aGUgImFjdHVhbCIgbWVtb3J5IHBhZ2Ugc2l6ZSwgbm90 IHRoZSBvbmUgd2UgdXNlZCBmb3Igc2l6aW5nLiBXZQorCSAqIG1pZ2h0IGhhdmUgdXNlZCBo dWdlIHBhZ2UgZm9yIHNpemluZywgYnV0IG9ubHkgZ2V0IHJlZ3VsYXIgcGFnZXMgd2hlbgor CSAqIGFsbG9jYXRpbmcsIHNvIHdlIG11c3QgdXNlIHRoZSBzbWFsbGVyIHBhZ2VzIGhlcmUu CisJICoKKwkgKiBYWFggQSBiaXQgd2VpcmQuIERvIHdlIG5lZWQgdG8gd29ycnkgYWJvdXQg cG9zdG1hc3Rlcj8gQ291bGQgdGhpcyBldmVuCisJICogcnVuIG91dHNpZGUgcG9zdG1hc3Rl cj8gSSBkb24ndCB0aGluayBzby4KKwkgKi8KKwlpZiAoSXNVbmRlclBvc3RtYXN0ZXIpCisJ CW1lbV9wYWdlX3NpemUgPSBwZ19nZXRfc2htZW1fcGFnZXNpemUoKTsKKwllbHNlCisJCW1l bV9wYWdlX3NpemUgPSBnZXRfbWVtb3J5X3BhZ2Vfc2l6ZSgpOworCisJQXNzZXJ0KChpbnQ2 NCkgc3RhcnRwdHIgJSBtZW1fcGFnZV9zaXplID09IDApOworCisJc3ogPSAoZW5kcHRyIC0g c3RhcnRwdHIpOworCW51bWFfdG9ub2RlX21lbW9yeShzdGFydHB0ciwgc3osIG5vZGUpOwor fQorCisKKyNkZWZpbmUgTUlOX0JVRkZFUl9QQVJUSVRJT05TCTQKKworLyoKKyAqIGJ1ZmZl cl9wYXJ0aXRpb25zX3ByZXBhcmUKKyAqCQlDYWxjdWxhdGUgcGFyYW1ldGVycyBmb3IgcGFy dGl0aW9uaW5nIGJ1ZmZlcnMuCisgKgorICogV2Ugd2FudCB0byBzcGxpdCB0aGUgc2hhcmVk IGJ1ZmZlcnMgaW50byBtdWx0aXBsZSBwYXJ0aXRpb25zLCBvZiByb3VnaGx5CisgKiB0aGUg c2FtZSBzaXplLiBUaGlzIGlzIG1lYW50IHRvIHNlcnZlIG11bHRpcGxlIHB1cnBvc2VzLiBX ZSB3YW50IHRvIG1hcAorICogdGhlIHBhcnRpdGlvbnMgdG8gZGlmZmVyZW50IE5VTUEgbm9k ZXMsIHRvIGJhbGFuY2UgbWVtb3J5IHVzYWdlLCBhbmQKKyAqIGFsbG93IHBhcnRpdGlvbmlu ZyBzb21lIGRhdGEgc3RydWN0dXJlcyBidWlsdCBvbiB0b3Agb2YgYnVmZmVycywgdG8gZ2l2 ZQorICogcHJlZmVyZW5jZSB0byBsb2NhbCBhY2Nlc3MgKGJ1ZmZlcnMgb24gdGhlIHNhbWUg TlVNQSBub2RlKS4gVGhpcyBhcHBsaWVzCisgKiBtb3N0bHkgdG8gZnJlZWxpc3RzIGFuZCBj bG9ja3N3ZWVwLgorICoKKyAqIFdlIG1heSB3YW50IHRvIHVzZSBwYXJ0aXRpb25pbmcgZXZl biBvbiBub24tTlVNQSBzeXN0ZW1zLCBvciB3aGVuIHJ1bm5pbmcKKyAqIG9uIGEgc2luZ2xl IE5VTUEgbm9kZS4gUGFydGl0aW9uaW5nIHRoZSBmcmVlbGlzdC9jbG9ja3N3ZWVwIGlzIGJl bmVmaWNpYWwKKyAqIGV2ZW4gd2l0aG91dCB0aGUgTlVNQSBlZmZlY3RzLgorICoKKyAqIFNv IHdlIHRyeSB0byBhbHdheXMgYnVpbGQgYXQgbGVhc3QgNCBwYXJ0aXRpb25zIChNSU5fQlVG RkVSX1BBUlRJVElPTlMpCisgKiBpbiB0b3RhbCwgb3IgYXQgbGVhc3Qgb25lIHBhcnRpdGlv biBwZXIgTlVNQSBub2RlLiBXZSBhbHdheXMgY3JlYXRlIHRoZQorICogc2FtZSBudW1iZXIg b2YgcGFydGl0aW9ucyBwZXIgTlVNQSBub2RlLgorICoKKyAqIFNvbWUgZXhhbXBsZXM6Cisg KgorICogLSBub24tTlVNQSBzeXN0ZW0gKG9yIDEgTlVNQSBub2RlKTogNCBwYXJ0aXRpb25z IGZvciB0aGUgc2luZ2xlIG5vZGUKKyAqCisgKiAtIDIgTlVNQSBub2RlczogNCBwYXJ0aXRp b25zLCAyIGZvciBlYWNoIG5vZGUKKyAqCisgKiAtIDMgTlVNQSBub2RlczogNiBwYXJ0aXRp b25zLCAyIGZvciBlYWNoIG5vZGUKKyAqCisgKiAtIDQrIE5VTUEgbm9kZXM6IG9uZSBwYXJ0 aXRpb24gcGVyIG5vZGUKKyAqCisgKiBOVU1BIHdvcmtzIG9uIHRoZSBtZW1vcnktcGFnZSBn cmFudWxhcml0eSwgd2hpY2ggZGV0ZXJtaW5lcyB0aGUgc21hbGxlc3QKKyAqIGFtb3VudCBv ZiBtZW1vcnkgd2UgY2FuIGFsbG9jYXRlIHRvIHNpbmdsZSBub2RlLiBUaGlzIGlzIGRldGVy bWluZWQgYnkKKyAqIGhvdyBtYW55IEJ1ZmZlckRlc2NyaXB0b3JzIGZpdCBvbnRvIGEgc2lu Z2xlIG1lbW9yeSBwYWdlLCBzbyB0aGlzIGRlcGVuZHMKKyAqIG9uIGh1Z2UgcGFnZSBzdXBw b3J0LiBXaXRoIDJNQiBodWdlIHBhZ2VzICh0eXBpY2FsIG9uIHg4NiBMaW51eCksIHRoaXMg aXMKKyAqIDMyNzY4IGJ1ZmZlcnMgKDI1Nk1CKS4gV2l0aCByZWd1bGFyIDRrQiBwYWdlcywg aXQncyA2NCBidWZmZXJzICg1MTJLQikuCisgKgorICogTm90ZTogVGhpcyBpcyBkZXRlcm1p bmVkIGJlZm9yZSB0aGUgYWxsb2NhdGlvbiwgaS5lLiB3ZSBkb24ndCBrbm93IGlmIHRoZQor ICogYWxsb2NhdGlvbiBnb3QgdG8gdXNlIGh1Z2UgcGFnZXMuIFNvIHVubGVzcyBodWdlX3Bh Z2VzPW9mZiB3ZSBhc3N1bWUgd2UncmUKKyAqIHVzaW5nIGh1Z2UgcGFnZXMuCisgKgorICog VGhpcyBtaW5pbWFsIHNpemUgcmVxdWlyZW1lbnQgb25seSBtYXR0ZXJzIGZvciB0aGUgcGVy LW5vZGUgYW1vdW50IG9mCisgKiBtZW1vcnksIG5vdCBmb3IgdGhlIGluZGl2aWR1YWwgcGFy dGl0aW9ucy4gVGhlIHBhcnRpdGlvbnMgZm9yIHRoZSBzYW1lCisgKiBub2RlIGFyZSBhIGNv bnRpZ3VvdXMgY2h1bmsgb2YgbWVtb3J5LCB3aGljaCBjYW4gYmUgc3BsaXQgYXJiaXRyYXJp bHksCisgKiBpdCdzIGluZGVwZW5kZW50IG9mIHRoZSBOVU1BIGdyYW51bGFyaXR5LgorICoK KyAqIFhYWCBUaGlzIHBhdGNoIG9ubHkgaW1wbGVtZW50cyBwbGFjaW5nIHRoZSBidWZmZXJz IG9udG8gZGlmZmVyZW50IE5VTUEKKyAqIG5vZGVzLiBUaGUgZnJlZWxpc3QvY2xvY2tzd2Vl cCBwYXJ0aXRpb25pbmcgaXMgaW1wbGVtZW50ZWQgaW4gc2VwYXJhdGUKKyAqIHBhdGNoZXMg bGF0ZXIgaW4gdGhlIHBhdGNoIHNlcmllcy4gVGhvc2UgcGF0Y2hlcyBob3dldmVyIHVzZSB0 aGUgc2FtZQorICogYnVmZmVyIHBhcnRpdGlvbiByZWdpc3RyeSwgdG8gYWxpZ24gdGhlIHBh cnRpdGlvbnMuCisgKgorICoKKyAqIFhYWCBUaGlzIG5lZWRzIHRvIGNvbnNpZGVyIHRoZSBt aW5pbXVtIGNodW5rIHNpemUsIGkuZS4gd2UgY2FuJ3Qgc3BsaXQKKyAqIGJ1ZmZlcnMgYmV5 b25kIHNvbWUgcG9pbnQsIGF0IHNvbWUgcG9pbnQgaXQgZ2V0cyB3ZSBydW4gaW50byB0aGUg c2l6ZSBvZgorICogYnVmZmVyIGRlc2NyaXB0b3JzLiBOb3Qgc3VyZSBpZiB3ZSBzaG91bGQg Z2l2ZSBwcmVmZXJlbmNlIHRvIG9uZSBvZiB0aGVzZQorICogKHByb2JhYmx5IGF0IGxlYXN0 IHByaW50IGEgd2FybmluZykuCisgKgorICogWFhYIFdlIHdhbnQgdG8gZG8gdGhpcyBldmVu IHdpdGggbnVtYV9idWZmZXJzX2ludGVybGVhdmU9ZmFsc2UsIHNvIHRoYXQgdGhlCisgKiBv dGhlciBwYXRjaGVzIGNhbiBkbyB0aGVpciBwYXJ0aXRpb25pbmcuIEJ1dCBpbiB0aGF0IGNh c2Ugd2UgZG9uJ3QgbmVlZCB0bworICogZW5mb3JjZSB0aGUgbWluIGNodW5rIHNpemUgKHBy b2JhYmx5KT8KKyAqCisgKiBYWFggV2UgbmVlZCB0byBvbmx5IGNhbGwgdGhpcyBvbmNlLCB3 aGVuIHNpemluZyB0aGUgbWVtb3J5LiBCdXQgYXQgdGhhdAorICogcG9pbnQgd2UgZG9uJ3Qg a25vdyBpZiB3ZSBnZXQgdG8gdXNlIGh1Z2UgcGFnZXMgb3Igbm90ICh1bmxlc3Mgd2hlbiBo dWdlCisgKiBwYWdlcyBhcmUgZGlzYWJsZWQpLiBXZSdsbCBwcm9jZWVkIGFzIGlmIHRoZSBo dWdlIHBhZ2VzIHdlcmUgdXNlZCwgYW5kIHdlCisgKiBtYXkgaGF2ZSB0byB1c2UgbGFyZ2Vy IHBhcnRpdGlvbnMuIE1heWJlIHRoZXJlJ3Mgc29tZSBzb3J0IG9mIGZhbGxiYWNrLAorICog YnV0IGZvciBub3cgd2Ugc2ltcGx5IGRpc2FibGUgdGhlIE5VTUEgcGFydGl0aW9uaW5nIC0g aXQgc2ltcGx5IG1lYW5zIHRoZQorICogc2hhcmVkIGJ1ZmZlcnMgYXJlIHRvbyBzbWFsbC4K KyAqCisgKiBYWFggV2UgZG9uJ3QgbmVlZCB0byBtYWtlIGVhY2ggcGFydGl0aW9uIGEgbXVs dGlwbGUgb2YgbWluX3BhcnRpdGlvbl9zaXplLgorICogVGhhdCdzIHNvbWV0aGluZyB3ZSBu ZWVkIHRvIGRvIGZvciBhIG5vZGUgKGJlY2F1c2UgTlVNQSB3b3JrcyBhdCBncmFudWxhcml0 eQorICogb2YgcGFnZXMpLCBidXQgcGFydGl0aW9ucyBmb3IgYSBzaW5nbGUgbm9kZSBjYW4g c3BsaXQgdGhhdCBhcmJpdHJhcmlseS4KKyAqIEFsdGhvdWdoIGtlZXBpbmcgdGhlIHNpemVz IHBvd2VyLW9mLXR3byB3b3VsZCBhbGxvdyBjYWxjdWxhdGluZyBldmVyeXRoaW5nCisgKiBh cyBzaGlmdC9tYXNrLCB3aXRob3V0IGV4cGVuc2l2ZSBkaXZpc2lvbi9tb2R1bG8gb3BlcmF0 aW9ucy4KKyAqLworc3RhdGljIHZvaWQKK2J1ZmZlcl9wYXJ0aXRpb25zX3ByZXBhcmUodm9p ZCkKK3sKKwkvKgorCSAqIE1pbmltdW0gbnVtYmVyIG9mIGJ1ZmZlcnMgd2UgY2FuIGFsbG9j YXRlIHRvIGEgTlVNQSBub2RlIChkZXRlcm1pbmVkIGJ5CisJICogaG93IG1hbnkgQnVmZmVy RGVzY3JpcHRvcnMgZml0IG9udG8gYSBtZW1vcnkgcGFnZSkuCisJICovCisJaW50CQkJbWlu X25vZGVfYnVmZmVyczsKKworCS8qCisJICogTWF4aW11bSBudW1iZXIgb2Ygbm9kZXMgd2Ug Y2FuIHNwbGl0IHNoYXJlZCBidWZmZXJzIHRvLCBhc3N1bWluZyBlYWNoCisJICogbm9kZSBn ZXRzIHRoZSBzbWFsbGVzdCBhbGxvY2F0YWJsZSBjaHVuayAodGhlIGxhc3Qgbm9kZSBjYW4g Z2V0IGEKKwkgKiBzbWFsbGVyIGFtb3VudCBvZiBtZW1vcnksIG5vdCB0aGUgZnVsbCBjaHVu aykuCisJICovCisJaW50CQkJbWF4X25vZGVzOworCisJLyoKKwkgKiBIb3cgbWFueSBwYXJ0 aXRpb25zIHRvIGNyZWF0ZSBwZXIgbm9kZS4gQ291bGQgYmUgbW9yZSB0aGFuIDEgZm9yIHNt YWxsCisJICogbnVtYmVyIG9mIG5vZGVzIChvZiBub24tTlVNQSBzeXN0ZW1zKS4KKwkgKi8K KwlpbnQJCQludW1fcGFydGl0aW9uc19wZXJfbm9kZTsKKworCS8qIGJhaWwgb3V0IGlmIGFs cmVhZHkgaW5pdGlhbGl6ZWQgKGNhbGN1bGF0ZSBvbmx5IG9uY2UpICovCisJaWYgKG51bWFf bm9kZXMgIT0gLTEpCisJCXJldHVybjsKKworCS8qIFhYWCBvbmx5IGdpdmVzIHVzIHRoZSBu dW1iZXIsIHRoZSBub2RlcyBtYXkgbm90IGJlIDAsIDEsIDIsIC4uLiAqLworCW51bWFfbm9k ZXMgPSBudW1hX251bV9jb25maWd1cmVkX25vZGVzKCk7CisKKwkvKiBYWFggY2FuIHRoaXMg aGFwcGVuPyAqLworCWlmIChudW1hX25vZGVzIDwgMSkKKwkJbnVtYV9ub2RlcyA9IDE7CisK KwllbG9nKFdBUk5JTkcsICJJc1VuZGVyUG9zdG1hc3RlciAlZCIsIElzVW5kZXJQb3N0bWFz dGVyKTsKKworCS8qCisJICogWFhYIEEgYml0IHdlaXJkLiBEbyB3ZSBuZWVkIHRvIHdvcnJ5 IGFib3V0IHBvc3RtYXN0ZXI/IENvdWxkIHRoaXMgZXZlbgorCSAqIHJ1biBvdXRzaWRlIHBv c3RtYXN0ZXI/IEkgZG9uJ3QgdGhpbmsgc28uCisJICoKKwkgKiBYWFggQW5vdGhlciBpc3N1 ZSBpcyB3ZSBtYXkgZ2V0IGRpZmZlcmVudCB2YWx1ZXMgdGhhbiB3aGVuIHNpemluZyB0aGUK KwkgKiB0aGUgbWVtb3J5LCBiZWNhdXNlIGF0IHRoYXQgcG9pbnQgd2UgZGlkbid0IGtub3cg aWYgd2UgZ2V0IGh1Z2UgcGFnZXMsCisJICogc28gd2UgYXNzdW1lZCB3ZSB3aWxsLiBTaG91 bGRuJ3QgY2F1c2UgY3Jhc2hlcywgYnV0IHdlIG1pZ2h0IGFsbG9jYXRlCisJICogc2hhcmVk IG1lbW9yeSBhbmQgdGhlbiBub3QgdXNlIHNvbWUgb2YgaXQgKGJlY2F1c2Ugb2YgdGhlIGFs aWdubWVudAorCSAqIHRoYXQgd2UgZG9uJ3QgYWN0dWFsbHkgbmVlZCkuIE5vdCBzdXJlIGFi b3V0IGJldHRlciB3YXksIGdvb2QgZm9yIG5vdy4KKwkgKi8KKwlpZiAoSXNVbmRlclBvc3Rt YXN0ZXIpCisJCW51bWFfcGFnZV9zaXplID0gcGdfZ2V0X3NobWVtX3BhZ2VzaXplKCk7CisJ ZWxzZQorCQludW1hX3BhZ2Vfc2l6ZSA9IGdldF9tZW1vcnlfcGFnZV9zaXplKCk7CisKKwkv KiBtYWtlIHN1cmUgdGhlIGNodW5rcyB3aWxsIGFsaWduIG5pY2VseSAqLworCUFzc2VydChC TENLU1ogJSBzaXplb2YoQnVmZmVyRGVzY1BhZGRlZCkgPT0gMCk7CisJQXNzZXJ0KG51bWFf cGFnZV9zaXplICUgc2l6ZW9mKEJ1ZmZlckRlc2NQYWRkZWQpID09IDApOworCUFzc2VydCgo KEJMQ0tTWiAlIG51bWFfcGFnZV9zaXplKSA9PSAwKSB8fCAoKG51bWFfcGFnZV9zaXplICUg QkxDS1NaKSA9PSAwKSk7CisKKwkvKgorCSAqIFRoZSBtaW5pbXVtIG51bWJlciBvZiBidWZm ZXJzIHdlIGNhbiBhbGxvY2F0ZSBmcm9tIGEgc2luZ2xlIG5vZGUsIHVzaW5nCisJICogdGhl IG1lbW9yeSBwYWdlIHNpemUgKGRldGVybWluZWQgYnkgYnVmZmVyIGRlc2NyaXB0b3JzKS4g TlVNQSBhbGxvY2F0ZXMKKwkgKiBtZW1vcnkgaW4gcGFnZXMsIGFuZCB3ZSBuZWVkIHRvIGRv IHRoYXQgZm9yIGJvdGggYnVmZmVycyBhbmQKKwkgKiBkZXNjcmlwdG9ycyBhdCB0aGUgc2Ft ZSB0aW1lLgorCSAqCisJICogSW4gcHJhY3RpY2UgdGhlIEJMQ0tTWiBkb2Vzbid0IHJlYWxs eSBtYXR0ZXIsIGJlY2F1c2UgaXQncyBtdWNoIGxhcmdlcgorCSAqIHRoYW4gQnVmZmVyRGVz Y1BhZGRlZCwgc28gdGhlIHJlc3VsdCBpcyBkZXRlcm1pbmVkIGJ1ZmZlciBkZXNjcmlwdG9y cy4KKwkgKi8KKwltaW5fbm9kZV9idWZmZXJzID0gKG51bWFfcGFnZV9zaXplIC8gc2l6ZW9m KEJ1ZmZlckRlc2NQYWRkZWQpKTsKKworCS8qCisJICogTWF4aW11bSBudW1iZXIgb2Ygbm9k ZXMgKGVhY2ggZ2V0dGluZyBtaW5fbm9kZV9idWZmZXJzKSB3ZSBjYW4gaGFuZGxlCisJICog Z2l2ZW4gdGhlIGN1cnJlbnQgc2hhcmVkIGJ1ZmZlcnMgc2l6ZS4gVGhlIGxhc3Qgbm9kZSBp cyBhbGxvd2VkIHRvIGJlCisJICogc21hbGxlciAoaGFsZiBvZiB0aGUgb3RoZXIgbm9kZXMp LgorCSAqLworCW1heF9ub2RlcyA9IChOQnVmZmVycyArIChtaW5fbm9kZV9idWZmZXJzIC8g MikpIC8gbWluX25vZGVfYnVmZmVyczsKKworCS8qCisJICogQ2FuIHdlIGFjdHVhbGx5IGRv IE5VTUEgcGFydGl0aW9uaW5nIHdpdGggdGhlc2Ugc2V0dGluZ3M/IElmIHdlIGNhbid0CisJ ICogaGFuZGxlIHRoZSBjdXJyZW50IG51bWJlciBvZiBub2RlcywgdGhlbiBuby4KKwkgKgor CSAqIFhYWCBUaGlzIHNob3VsZG4ndCBiZSBhIGJpZyBpc3N1ZSBpbiBwcmFjdGljZS4gTlVN QSBzeXN0ZW1zIHR5cGljYWxseQorCSAqIHJ1biB3aXRoIGxhcmdlIHNoYXJlZCBidWZmZXJz LCB3aGljaCBhbHNvIG1ha2VzIHRoZSBpbWJhbGFuY2UgaXNzdWVzCisJICogZmFpcmx5IHNp Z25pZmljYW50IChpdCdzIHF1aWNrIHRvIHJlYmFsYW5jZSAxMjhNQiwgbXVjaCBzbG93ZXIg dG8gZG8KKwkgKiB0aGF0IGZvciAyNTZHQikuCisJICovCisJbnVtYV9jYW5fcGFydGl0aW9u ID0gdHJ1ZTsJLyogYXNzdW1lIHdlIGNhbiBhbGxvY2F0ZSB0byBub2RlcyAqLworCWlmIChu dW1hX25vZGVzID4gbWF4X25vZGVzKQorCXsKKwkJZWxvZyhXQVJOSU5HLCAic2hhcmVkIGJ1 ZmZlcnMgdG9vIHNtYWxsIGZvciAlZCBub2RlcyAobWF4IG5vZGVzICVkKSIsCisJCQkgbnVt YV9ub2RlcywgbWF4X25vZGVzKTsKKwkJbnVtYV9jYW5fcGFydGl0aW9uID0gZmFsc2U7CisJ fQorCisJLyoKKwkgKiBXZSBrbm93IHdlIGNhbiBwYXJ0aXRpb24gdG8gdGhlIGRlc2lyZWQg bnVtYmVyIG9mIG5vZGVzLCBub3cgaXQncyB0aW1lCisJICogdG8gZmlndXJlIG91dCBob3cg bWFueSBwYXJ0aXRpb25zIHdlIG5lZWQgcGVyIG5vZGUuIFdlIHNpbXBseSBhZGQKKwkgKiBw YXJ0aXRpb25zIHBlciBub2RlIHVudGlsIHdlIHJlYWNoIE1JTl9CVUZGRVJfUEFSVElUSU9O Uy4KKwkgKgorCSAqIFhYWCBNYXliZSB3ZSBzaG91bGQgbWFrZSBzdXJlIHRvIGtlZXAgdGhl IGFjdHVhbCBwYXJ0aXRpb24gc2l6ZSBhIHBvd2VyCisJICogb2YgMiwgdG8gbWFrZSB0aGUg Y2FsY3VsYXRpb25zIHNpbXBsZXIgKHNoaWZ0IGluc3RlYWQgb2YgbW9kKS4KKwkgKi8KKwlu dW1fcGFydGl0aW9uc19wZXJfbm9kZSA9IDE7CisKKwl3aGlsZSAobnVtYV9ub2RlcyAqIG51 bV9wYXJ0aXRpb25zX3Blcl9ub2RlIDwgTUlOX0JVRkZFUl9QQVJUSVRJT05TKQorCQludW1f cGFydGl0aW9uc19wZXJfbm9kZSsrOworCisJLyogbm93IHdlIGtub3cgdGhlIHRvdGFsIG51 bWJlciBvZiBwYXJ0aXRpb25zICovCisJbnVtYV9wYXJ0aXRpb25zID0gKG51bWFfbm9kZXMg KiBudW1fcGFydGl0aW9uc19wZXJfbm9kZSk7CisKKwkvKgorCSAqIEZpbmFsbHksIGNhbGN1 bGF0ZSBob3cgbWFueSBidWZmZXJzIHdlJ2xsIGFzc2lnbiB0byBhIHNpbmdsZSBOVU1BIG5v ZGUuCisJICogSWYgd2UgaGF2ZSBvbmx5IGEgc2luZ2xlIG5vZGUsIG9yIGNhbid0IG1hcCB0 byB0aGF0IG1hbnkgbm9kZXMsIGp1c3QKKwkgKiB0YWtlIGEgImZhaXIgc2hhcmUiIG9mIGJ1 ZmZlcnMuCisJICoKKwkgKiBYWFggSW4gYm90aCBjYXNlcyB0aGUgbGFzdCBub2RlIGNhbiBn ZXQgZmV3ZXIgYnVmZmVycy4KKwkgKi8KKwlpZiAoIW51bWFfY2FuX3BhcnRpdGlvbikKKwl7 CisJCW51bWFfYnVmZmVyc19wZXJfbm9kZSA9IChOQnVmZmVycyArIChudW1hX25vZGVzIC0g MSkpIC8gbnVtYV9ub2RlczsKKwl9CisJZWxzZQorCXsKKwkJbnVtYV9idWZmZXJzX3Blcl9u b2RlID0gbWluX25vZGVfYnVmZmVyczsKKwkJd2hpbGUgKG51bWFfYnVmZmVyc19wZXJfbm9k ZSAqIG51bWFfbm9kZXMgPCBOQnVmZmVycykKKwkJCW51bWFfYnVmZmVyc19wZXJfbm9kZSAr PSBtaW5fbm9kZV9idWZmZXJzOworCisJCS8qIHRoZSBsYXN0IG5vZGUgc2hvdWxkIGdldCBh dCBsZWFzdCBzb21lIGJ1ZmZlcnMgKi8KKwkJQXNzZXJ0KE5CdWZmZXJzIC0gKG51bWFfbm9k ZXMgLSAxKSAqIG51bWFfYnVmZmVyc19wZXJfbm9kZSA+IDApOworCX0KKworCWVsb2coTE9H LCAiTlVNQTogYnVmZmVycyAlZCBwYXJ0aXRpb25zICVkIG51bV9ub2RlcyAlZCBwZXJfbm9k ZSAlZCBidWZmZXJzX3Blcl9ub2RlICVkIChtaW4gJWQpIiwKKwkJIE5CdWZmZXJzLCBudW1h X3BhcnRpdGlvbnMsIG51bWFfbm9kZXMsIG51bV9wYXJ0aXRpb25zX3Blcl9ub2RlLAorCQkg bnVtYV9idWZmZXJzX3Blcl9ub2RlLCBtaW5fbm9kZV9idWZmZXJzKTsKK30KKworc3RhdGlj IHZvaWQKK0Fzc2VydENoZWNrQnVmZmVyUGFydGl0aW9ucyh2b2lkKQoreworI2lmZGVmIFVT RV9BU1NFUlRfQ0hFQ0tJTkcKKwlpbnQJCQludW1fYnVmZmVycyA9IDA7CisKKwlmb3IgKGlu dCBpID0gMDsgaSA8IG51bWFfcGFydGl0aW9uczsgaSsrKQorCXsKKwkJQnVmZmVyUGFydGl0 aW9uICpwYXJ0ID0gJkJ1ZmZlclBhcnRpdGlvbnNBcnJheS0+cGFydGl0aW9uc1tpXTsKKwor CQkvKgorCQkgKiBXZSBjYW4gZ2V0IGEgc2luZ2xlLWJ1ZmZlciBwYXJ0aXRpb24sIGlmIHRo ZSBzaXppbmcgZm9yY2VzIHRoZSBsYXN0CisJCSAqIHBhcnRpdGlvbiB0byBiZSBqdXN0IG9u ZSBidWZmZXIuIEJ1dCBpdCdzIHVubGlrZWx5IChhbmQKKwkJICogdW5kZXNpcmFibGUpLgor CQkgKi8KKwkJQXNzZXJ0KHBhcnQtPmZpcnN0X2J1ZmZlciA8PSBwYXJ0LT5sYXN0X2J1ZmZl cik7CisJCUFzc2VydCgocGFydC0+bGFzdF9idWZmZXIgLSBwYXJ0LT5maXJzdF9idWZmZXIg KyAxKSA9PSBwYXJ0LT5udW1fYnVmZmVycyk7CisKKwkJbnVtX2J1ZmZlcnMgKz0gcGFydC0+ bnVtX2J1ZmZlcnM7CisKKwkJLyoKKwkJICogVGhlIGZpcnN0IHBhcnRpdGlvbiBuZWVkcyB0 byBzdGFydCBvbiBidWZmZXIgMC4gTGF0ZXIgcGFydGl0aW9ucworCQkgKiBuZWVkIHRvIGJl IGNvbnRpZ3VvdXMsIHdpdGhvdXQgc2tpcHBpbmcgYW55IGJ1ZmZlcnMuCisJCSAqLworCQlp ZiAoaSA9PSAwKQorCQl7CisJCQlBc3NlcnQocGFydC0+Zmlyc3RfYnVmZmVyID09IDApOwor CQl9CisJCWVsc2UKKwkJeworCQkJQnVmZmVyUGFydGl0aW9uICpwcmV2ID0gJkJ1ZmZlclBh cnRpdGlvbnNBcnJheS0+cGFydGl0aW9uc1tpIC0gMV07CisKKwkJCUFzc2VydCgocGFydC0+ Zmlyc3RfYnVmZmVyIC0gMSkgPT0gcHJldi0+bGFzdF9idWZmZXIpOworCQl9CisKKwkJLyog dGhlIGxhc3QgcGFydGl0aW9uIG5lZWRzIHRvIGVuZCBvbiBidWZmZXIgKE5CdWZmZXJzIC0g MSkgKi8KKwkJaWYgKGkgPT0gKG51bWFfcGFydGl0aW9ucyAtIDEpKQorCQl7CisJCQlBc3Nl cnQocGFydC0+bGFzdF9idWZmZXIgPT0gKE5CdWZmZXJzIC0gMSkpOworCQl9CisJfQorCisJ QXNzZXJ0KG51bV9idWZmZXJzID09IE5CdWZmZXJzKTsKKyNlbmRpZgorfQorCitzdGF0aWMg dm9pZAorYnVmZmVyX3BhcnRpdGlvbnNfaW5pdCh2b2lkKQoreworCWludAkJCXJlbWFpbmlu Z19idWZmZXJzID0gTkJ1ZmZlcnM7CisJaW50CQkJYnVmZmVyID0gMDsKKwlpbnQJCQlwYXJ0 c19wZXJfbm9kZSA9IChudW1hX3BhcnRpdGlvbnMgLyBudW1hX25vZGVzKTsKKwljaGFyCSAg ICpidWZmZXJzX3B0ciwKKwkJCSAgICpkZXNjcmlwdG9yc19wdHI7CisKKwlCdWZmZXJQYXJ0 aXRpb25zQXJyYXktPm5wYXJ0aXRpb25zID0gbnVtYV9wYXJ0aXRpb25zOworCisJZm9yIChp bnQgbiA9IDA7IG4gPCBudW1hX25vZGVzOyBuKyspCisJeworCQkvKiBidWZmZXJzIHRoaXMg bm9kZSBzaG91bGQgZ2V0IChsYXN0IG5vZGUgY2FuIGdldCBmZXdlcikgKi8KKwkJaW50CQkJ bm9kZV9idWZmZXJzID0gTWluKHJlbWFpbmluZ19idWZmZXJzLCBudW1hX2J1ZmZlcnNfcGVy X25vZGUpOworCisJCS8qIHNwbGl0IG5vZGUgYnVmZmVycyBuZXR3ZWVuIHBhcnRpdGlvbnMg KGxhc3Qgb25lIGNhbiBnZXQgZmV3ZXIpICovCisJCWludAkJCXBhcnRfYnVmZmVycyA9IChu b2RlX2J1ZmZlcnMgKyAocGFydHNfcGVyX25vZGUgLSAxKSkgLyBwYXJ0c19wZXJfbm9kZTsK KworCQlyZW1haW5pbmdfYnVmZmVycyAtPSBub2RlX2J1ZmZlcnM7CisKKwkJQXNzZXJ0KChu b2RlX2J1ZmZlcnMgPiAwKSAmJiAobm9kZV9idWZmZXJzIDw9IE5CdWZmZXJzKSk7CisJCUFz c2VydCgobiA+PSAwKSAmJiAobiA8IG51bWFfbm9kZXMpKTsKKworCQlmb3IgKGludCBwID0g MDsgcCA8IHBhcnRzX3Blcl9ub2RlOyBwKyspCisJCXsKKwkJCWludAkJCWlkeCA9IChuICog cGFydHNfcGVyX25vZGUpICsgcDsKKwkJCUJ1ZmZlclBhcnRpdGlvbiAqcGFydCA9ICZCdWZm ZXJQYXJ0aXRpb25zQXJyYXktPnBhcnRpdGlvbnNbaWR4XTsKKwkJCWludAkJCW51bV9idWZm ZXJzID0gTWluKG5vZGVfYnVmZmVycywgcGFydF9idWZmZXJzKTsKKworCQkJQXNzZXJ0KChp ZHggPj0gMCkgJiYgKGlkeCA8IG51bWFfcGFydGl0aW9ucykpOworCQkJQXNzZXJ0KChidWZm ZXIgPj0gMCkgJiYgKGJ1ZmZlciA8IE5CdWZmZXJzKSk7CisJCQlBc3NlcnQoKG51bV9idWZm ZXJzID4gMCkgJiYgKG51bV9idWZmZXJzIDw9IHBhcnRfYnVmZmVycykpOworCisJCQkvKiBY WFggd2Ugc2hvdWxkIGdldCB0aGUgYWN0dWFsIG5vZGUgSUQgZnJvbSB0aGUgbWFzayAqLwor CQkJcGFydC0+bnVtYV9ub2RlID0gbjsKKworCQkJcGFydC0+bnVtX2J1ZmZlcnMgPSBudW1f YnVmZmVyczsKKwkJCXBhcnQtPmZpcnN0X2J1ZmZlciA9IGJ1ZmZlcjsKKwkJCXBhcnQtPmxh c3RfYnVmZmVyID0gYnVmZmVyICsgKG51bV9idWZmZXJzIC0gMSk7CisKKwkJCWVsb2coTE9H LCAiTlVNQTogYnVmZmVyICVkIG5vZGUgJWQgcGFydGl0aW9uICVkIGJ1ZmZlcnMgJWQgZmly c3QgJWQgbGFzdCAlZCIsIGlkeCwgbiwgcCwgbnVtX2J1ZmZlcnMsIGJ1ZmZlciwgYnVmZmVy ICsgKG51bV9idWZmZXJzIC0gMSkpOworCisJCQlidWZmZXIgKz0gbnVtX2J1ZmZlcnM7CisJ CQlub2RlX2J1ZmZlcnMgLT0gcGFydF9idWZmZXJzOworCQl9CisJfQorCisJQXNzZXJ0Q2hl Y2tCdWZmZXJQYXJ0aXRpb25zKCk7CisKKwkvKgorCSAqIFdpdGggYnVmZmVycyBpbnRlcmxl YXZpbmcgZGlzYWJsZWQgKG9yIGNhbid0IHBhcnRpdGlvbiwgYmVjYXVzZSBvZgorCSAqIHNo YXJlZCBidWZmZXJzIGJlaW5nIHRvbyBzbWFsbCksIHdlJ3JlIGRvbmUuCisJICovCisJaWYg KCFudW1hX2J1ZmZlcnNfaW50ZXJsZWF2ZSB8fCAhbnVtYV9jYW5fcGFydGl0aW9uKQorCQly ZXR1cm47CisKKwkvKgorCSAqIEFzc2lnbiBjaHVua3Mgb2YgYnVmZmVycyBhbmQgYnVmZmVy IGRlc2NyaXB0b3JzIHRvIHRoZSBhdmFpbGFibGUgTlVNQQorCSAqIG5vZGVzLiBXZSBjYW4n dCB1c2UgdGhlIHJlZ3VsYXIgaW50ZXJsZWF2aW5nLCBiZWNhdXNlIHdpdGggcmVndWxhcgor CSAqIG1lbW9yeSBwYWdlcyAoc21hbGxlciB0aGFuIEJMQ0tTWikgd2UnZCBzcGxpdCBhbGwg YnVmZmVycyB0byBtdWx0aXBsZQorCSAqIE5VTUEgbm9kZXMuIEFuZCB3ZSBkb24ndCB3YW50 IHRoYXQuCisJICoKKwkgKiBCdXQgZXZlbiB3aXRoIGh1Z2UgcGFnZXMgaXQgc2VlbXMgbGlr ZSBhIGdvb2QgaWRlYSB0byBub3QgaGF2ZSBtYXBwaW5nCisJICogZm9yIGVhY2ggcGFnZS4K KwkgKgorCSAqIFNvIHdlIGFsd2F5cyBhc3NpZ24gYSBsYXJnZXIgY29udGlndW91cyBjaHVu ayBvZiBidWZmZXJzIHRvIHRoZSBzYW1lCisJICogTlVNQSBub2RlLCBhcyBjYWxjdWxhdGVk IGJ5IGNob29zZV9jaHVua19idWZmZXJzKCkuIFdlIHRyeSB0byBrZWVwIHRoZQorCSAqIGNo dW5rcyBsYXJnZSBlbm91Z2ggdG8gd29yayBib3RoIGZvciBidWZmZXJzIGFuZCBidWZmZXIg ZGVzY3JpcHRvcnMsCisJICogYnV0IG5vdCB0b28gbGFyZ2UuIFNlZSB0aGUgY29tbWVudHMg YXQgY2hvb3NlX2NodW5rX2J1ZmZlcnMoKSBmb3IKKwkgKiBkZXRhaWxzLgorCSAqCisJICog VGhhbmtzIHRvIHRoZSBlYXJsaWVyIGFsaWdubWVudCAodG8gbWVtb3J5IHBhZ2UgZXRjLiks IHdlIGtub3cgdGhlCisJICogYnVmZmVycyB3b24ndCBnZXQgc3BsaXQsIGV0Yy4KKwkgKgor CSAqIFRoaXMgYWxzbyBtYWtlcyBpdCBlYXNpZXIgLyBzdHJhaWdodGZvcndhcmQgdG8gY2Fs Y3VsYXRlIHdoaWNoIE5VTUEKKwkgKiBub2RlIGEgYnVmZmVyIGJlbG9uZ3MgdG8gKGl0J3Mg YSBtYXR0ZXIgb2YgZGl2aWRlICsgbW9kKS4gU2VlCisJICogQnVmZmVyR2V0Tm9kZSgpLgor CSAqCisJICogV2UgbmVlZCB0byBhY2NvdW50IGZvciBwYXJ0aXRpb25zIGJlaW5nIG9mIGRp ZmZlcmVudCBsZW5ndGgsIHdoZW4gdGhlCisJICogTkJ1ZmZlcnMgaXMgbm90IG5pY2VseSBk aXZpc2libGUuIFRvIGRvIHRoYXQgd2Uga2VlcCB0cmFjayBvZiB0aGUgc3RhcnQKKwkgKiBv ZiB0aGUgbmV4dCBwYXJ0aXRpb24uCisJICovCisJYnVmZmVyc19wdHIgPSBCdWZmZXJCbG9j a3M7CisJZGVzY3JpcHRvcnNfcHRyID0gKGNoYXIgKikgQnVmZmVyRGVzY3JpcHRvcnM7CisK Kwlmb3IgKGludCBpID0gMDsgaSA8IG51bWFfcGFydGl0aW9uczsgaSsrKQorCXsKKwkJQnVm ZmVyUGFydGl0aW9uICpwYXJ0ID0gJkJ1ZmZlclBhcnRpdGlvbnNBcnJheS0+cGFydGl0aW9u c1tpXTsKKwkJY2hhcgkgICAqc3RhcnRwdHIsCisJCQkJICAgKmVuZHB0cjsKKworCQkvKiBm aXJzdCBtYXAgYnVmZmVycyAqLworCQlzdGFydHB0ciA9IGJ1ZmZlcnNfcHRyOworCQllbmRw dHIgPSBzdGFydHB0ciArICgoU2l6ZSkgcGFydC0+bnVtX2J1ZmZlcnMgKiBCTENLU1opOwor CQlidWZmZXJzX3B0ciA9IGVuZHB0cjsJLyogc3RhcnQgb2YgdGhlIG5leHQgcGFydGl0aW9u ICovCisKKwkJZWxvZyhMT0csICJOVU1BOiBidWZmZXJfcGFydGl0aW9uc19pbml0OiAlZCA9 PiAlZCBidWZmZXJzICVkIHN0YXJ0ICVwIGVuZCAlcCAoc2l6ZSAlbGQpIiwKKwkJCSBpLCBw YXJ0LT5udW1hX25vZGUsIHBhcnQtPm51bV9idWZmZXJzLCBzdGFydHB0ciwgZW5kcHRyLCAo ZW5kcHRyIC0gc3RhcnRwdHIpKTsKKworCQlwZ19udW1hX21vdmVfdG9fbm9kZShzdGFydHB0 ciwgZW5kcHRyLCBwYXJ0LT5udW1hX25vZGUpOworCisJCS8qIG5vdyBkbyB0aGUgc2FtZSBm b3IgYnVmZmVyIGRlc2NyaXB0b3JzICovCisJCXN0YXJ0cHRyID0gZGVzY3JpcHRvcnNfcHRy OworCQllbmRwdHIgPSBzdGFydHB0ciArICgoU2l6ZSkgcGFydC0+bnVtX2J1ZmZlcnMgKiBz aXplb2YoQnVmZmVyRGVzY1BhZGRlZCkpOworCQlkZXNjcmlwdG9yc19wdHIgPSBlbmRwdHI7 CisKKwkJZWxvZyhMT0csICJOVU1BOiBidWZmZXJfcGFydGl0aW9uc19pbml0OiAlZCA9PiAl ZCBkZXNjcmlwdG9ycyAlZCBzdGFydCAlcCBlbmQgJXAgKHNpemUgJWxkKSIsCisJCQkgaSwg cGFydC0+bnVtYV9ub2RlLCBwYXJ0LT5udW1fYnVmZmVycywgc3RhcnRwdHIsIGVuZHB0ciwg KGVuZHB0ciAtIHN0YXJ0cHRyKSk7CisKKwkJcGdfbnVtYV9tb3ZlX3RvX25vZGUoc3RhcnRw dHIsIGVuZHB0ciwgcGFydC0+bnVtYV9ub2RlKTsKKwl9CisKKwkvKiB3ZSBzaG91bGQgaGF2 ZSBjb25zdW1lZCB0aGUgYXJyYXlzIGV4YWN0bHkgKi8KKwlBc3NlcnQoYnVmZmVyc19wdHIg PT0gQnVmZmVyQmxvY2tzICsgKFNpemUpIE5CdWZmZXJzICogQkxDS1NaKTsKKwlBc3NlcnQo ZGVzY3JpcHRvcnNfcHRyID09IChjaGFyICopIEJ1ZmZlckRlc2NyaXB0b3JzICsgKFNpemUp IE5CdWZmZXJzICogc2l6ZW9mKEJ1ZmZlckRlc2NQYWRkZWQpKTsKK30KKworaW50CitCdWZm ZXJQYXJ0aXRpb25Db3VudCh2b2lkKQoreworCXJldHVybiBCdWZmZXJQYXJ0aXRpb25zQXJy YXktPm5wYXJ0aXRpb25zOworfQorCit2b2lkCitCdWZmZXJQYXJ0aXRpb25HZXQoaW50IGlk eCwgaW50ICpub2RlLCBpbnQgKm51bV9idWZmZXJzLAorCQkJCSAgIGludCAqZmlyc3RfYnVm ZmVyLCBpbnQgKmxhc3RfYnVmZmVyKQoreworCWlmICgoaWR4ID49IDApICYmIChpZHggPCBC dWZmZXJQYXJ0aXRpb25zQXJyYXktPm5wYXJ0aXRpb25zKSkKKwl7CisJCUJ1ZmZlclBhcnRp dGlvbiAqcGFydCA9ICZCdWZmZXJQYXJ0aXRpb25zQXJyYXktPnBhcnRpdGlvbnNbaWR4XTsK KworCQkqbm9kZSA9IHBhcnQtPm51bWFfbm9kZTsKKwkJKm51bV9idWZmZXJzID0gcGFydC0+ bnVtX2J1ZmZlcnM7CisJCSpmaXJzdF9idWZmZXIgPSBwYXJ0LT5maXJzdF9idWZmZXI7CisJ CSpsYXN0X2J1ZmZlciA9IHBhcnQtPmxhc3RfYnVmZmVyOworCisJCXJldHVybjsKKwl9CisK KwllbG9nKEVSUk9SLCAiaW52YWxpZCBwYXJ0aXRpb24gaW5kZXgiKTsKK30KKwordm9pZAor QnVmZmVyUGFydGl0aW9uUGFyYW1zKGludCAqbnVtX3BhcnRpdGlvbnMsIGludCAqbnVtX25v ZGVzKQoreworCSpudW1fcGFydGl0aW9ucyA9IG51bWFfcGFydGl0aW9uczsKKwkqbnVtX25v ZGVzID0gbnVtYV9ub2RlczsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2lu aXQvZ2xvYmFscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMKaW5kZXgg ZDMxY2I0NWEwNTguLjg3NmNiNjRjZjY2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGls cy9pbml0L2dsb2JhbHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMu YwpAQCAtMTQ1LDYgKzE0NSw5IEBAIGludAkJCW1heF93b3JrZXJfcHJvY2Vzc2VzID0gODsK IGludAkJCW1heF9wYXJhbGxlbF93b3JrZXJzID0gODsKIGludAkJCU1heEJhY2tlbmRzID0g MDsKIAorLyogTlVNQSBzdHVmZiAqLworYm9vbAkJbnVtYV9idWZmZXJzX2ludGVybGVhdmUg PSBmYWxzZTsKKwogLyogR1VDIHBhcmFtZXRlcnMgZm9yIHZhY3V1bSAqLwogaW50CQkJVmFj dXVtQnVmZmVyVXNhZ2VMaW1pdCA9IDIwNDg7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNf dGFibGVzLmMKaW5kZXggZDE0YjE2NzhlN2YuLjk1NzAwODdhYTYwIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYworKysgYi9zcmMvYmFja2VuZC91 dGlscy9taXNjL2d1Y190YWJsZXMuYwpAQCAtMjExNiw2ICsyMTE2LDE2IEBAIHN0cnVjdCBj b25maWdfYm9vbCBDb25maWd1cmVOYW1lc0Jvb2xbXSA9CiAJCU5VTEwsIE5VTEwsIE5VTEwK IAl9LAogCisJeworCQl7Im51bWFfYnVmZmVyc19pbnRlcmxlYXZlIiwgUEdDX1BPU1RNQVNU RVIsIERFVkVMT1BFUl9PUFRJT05TLAorCQkJZ2V0dGV4dF9ub29wKCJFbmFibGVzIE5VTUEg aW50ZXJsZWF2aW5nIG9mIHNoYXJlZCBidWZmZXJzLiIpLAorCQkJZ2V0dGV4dF9ub29wKCJX aGVuIGVuYWJsZWQsIHRoZSBidWZmZXJzIGluIHNoYXJlZCBtZW1vcnkgYXJlIGludGVybGVh dmVkIHRvIGFsbCBOVU1BIG5vZGVzLiIpLAorCQl9LAorCQkmbnVtYV9idWZmZXJzX2ludGVy bGVhdmUsCisJCWZhbHNlLAorCQlOVUxMLCBOVUxMLCBOVUxMCisJfSwKKwogCXsKIAkJeyJz eW5jX3JlcGxpY2F0aW9uX3Nsb3RzIiwgUEdDX1NJR0hVUCwgUkVQTElDQVRJT05fU1RBTkRC WSwKIAkJCWdldHRleHRfbm9vcCgiRW5hYmxlcyBhIHBoeXNpY2FsIHN0YW5kYnkgdG8gc3lu Y2hyb25pemUgbG9naWNhbCBmYWlsb3ZlciByZXBsaWNhdGlvbiBzbG90cyBmcm9tIHRoZSBw cmltYXJ5IHNlcnZlci4iKSwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5o IGIvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmgKaW5kZXggMWJlZjk4NDcxYzMuLjAxNGE2MDc5 YWYyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaAorKysgYi9zcmMvaW5j bHVkZS9taXNjYWRtaW4uaApAQCAtMTc4LDYgKzE3OCw4IEBAIGV4dGVybiBQR0RMTElNUE9S VCBpbnQgTWF4Q29ubmVjdGlvbnM7CiBleHRlcm4gUEdETExJTVBPUlQgaW50IG1heF93b3Jr ZXJfcHJvY2Vzc2VzOwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBtYXhfcGFyYWxsZWxfd29y a2VyczsKIAorZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgbnVtYV9idWZmZXJzX2ludGVybGVh dmU7CisKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgY29tbWl0X3RpbWVzdGFtcF9idWZmZXJz OwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBtdWx0aXhhY3RfbWVtYmVyX2J1ZmZlcnM7CiBl eHRlcm4gUEdETExJTVBPUlQgaW50IG11bHRpeGFjdF9vZmZzZXRfYnVmZmVyczsKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvYnVmX2ludGVybmFscy5oIGIvc3JjL2luY2x1 ZGUvc3RvcmFnZS9idWZfaW50ZXJuYWxzLmgKaW5kZXggNTJhNzFiMTM4ZjcuLjlkZmJlY2I5 ZmU0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2J1Zl9pbnRlcm5hbHMuaAor KysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2J1Zl9pbnRlcm5hbHMuaApAQCAtMzIzLDYgKzMy Myw3IEBAIHR5cGVkZWYgc3RydWN0IFdyaXRlYmFja0NvbnRleHQKIAogLyogaW4gYnVmX2lu aXQuYyAqLwogZXh0ZXJuIFBHRExMSU1QT1JUIEJ1ZmZlckRlc2NQYWRkZWQgKkJ1ZmZlckRl c2NyaXB0b3JzOworZXh0ZXJuIFBHRExMSU1QT1JUIEJ1ZmZlclBhcnRpdGlvbnMgKkJ1ZmZl clBhcnRpdGlvbnNBcnJheTsKIGV4dGVybiBQR0RMTElNUE9SVCBDb25kaXRpb25WYXJpYWJs ZU1pbmltYWxseVBhZGRlZCAqQnVmZmVySU9DVkFycmF5OwogZXh0ZXJuIFBHRExMSU1QT1JU IFdyaXRlYmFja0NvbnRleHQgQmFja2VuZFdyaXRlYmFja0NvbnRleHQ7CiAKQEAgLTQ5MSw0 ICs0OTIsOSBAQCBleHRlcm4gdm9pZCBEcm9wUmVsYXRpb25Mb2NhbEJ1ZmZlcnMoUmVsRmls ZUxvY2F0b3IgcmxvY2F0b3IsCiBleHRlcm4gdm9pZCBEcm9wUmVsYXRpb25BbGxMb2NhbEJ1 ZmZlcnMoUmVsRmlsZUxvY2F0b3IgcmxvY2F0b3IpOwogZXh0ZXJuIHZvaWQgQXRFT1hhY3Rf TG9jYWxCdWZmZXJzKGJvb2wgaXNDb21taXQpOwogCitleHRlcm4gaW50CUJ1ZmZlclBhcnRp dGlvbkNvdW50KHZvaWQpOworZXh0ZXJuIHZvaWQgQnVmZmVyUGFydGl0aW9uR2V0KGludCBp ZHgsIGludCAqbm9kZSwgaW50ICpudW1fYnVmZmVycywKKwkJCQkJCQkgICBpbnQgKmZpcnN0 X2J1ZmZlciwgaW50ICpsYXN0X2J1ZmZlcik7CitleHRlcm4gdm9pZCBCdWZmZXJQYXJ0aXRp b25QYXJhbXMoaW50ICpudW1fcGFydGl0aW9ucywgaW50ICpudW1fbm9kZXMpOworCiAjZW5k aWYJCQkJCQkJLyogQlVGTUdSX0lOVEVSTkFMU19IICovCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9zdG9yYWdlL2J1Zm1nci5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9idWZtZ3IuaApp bmRleCA0MWZkYzFlNzY5My4uZGVhZjRmMTlmYTQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L3N0b3JhZ2UvYnVmbWdyLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9idWZtZ3IuaApA QCAtMTQzLDYgKzE0MywyMCBAQCBzdHJ1Y3QgUmVhZEJ1ZmZlcnNPcGVyYXRpb24KIAogdHlw ZWRlZiBzdHJ1Y3QgUmVhZEJ1ZmZlcnNPcGVyYXRpb24gUmVhZEJ1ZmZlcnNPcGVyYXRpb247 CiAKK3R5cGVkZWYgc3RydWN0IEJ1ZmZlclBhcnRpdGlvbgoreworCWludAkJCW51bWFfbm9k ZTsKKwlpbnQJCQludW1fYnVmZmVyczsKKwlpbnQJCQlmaXJzdF9idWZmZXI7CisJaW50CQkJ bGFzdF9idWZmZXI7Cit9IEJ1ZmZlclBhcnRpdGlvbjsKKwordHlwZWRlZiBzdHJ1Y3QgQnVm ZmVyUGFydGl0aW9ucworeworCWludAkJCW5wYXJ0aXRpb25zOworCUJ1ZmZlclBhcnRpdGlv biBwYXJ0aXRpb25zW0ZMRVhJQkxFX0FSUkFZX01FTUJFUl07Cit9IEJ1ZmZlclBhcnRpdGlv bnM7CisKIC8qIGZvcndhcmQgZGVjbGFyZWQsIHRvIGF2b2lkIGhhdmluZyB0byBleHBvc2Ug YnVmX2ludGVybmFscy5oIGhlcmUgKi8KIHN0cnVjdCBXcml0ZWJhY2tDb250ZXh0OwogCkBA IC0zMTksNiArMzMzLDcgQEAgZXh0ZXJuIHZvaWQgRXZpY3RSZWxVbnBpbm5lZEJ1ZmZlcnMo UmVsYXRpb24gcmVsLAogLyogaW4gYnVmX2luaXQuYyAqLwogZXh0ZXJuIHZvaWQgQnVmZmVy TWFuYWdlclNobWVtSW5pdCh2b2lkKTsKIGV4dGVybiBTaXplIEJ1ZmZlck1hbmFnZXJTaG1l bVNpemUodm9pZCk7CitleHRlcm4gaW50CUJ1ZmZlckdldE5vZGUoQnVmZmVyIGJ1ZmZlcik7 CiAKIC8qIGluIGxvY2FsYnVmLmMgKi8KIGV4dGVybiB2b2lkIEF0UHJvY0V4aXRfTG9jYWxC dWZmZXJzKHZvaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZz Lmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCAzZGFiYTI2 YjIzNy4uYzY5NWNmYTc2ZTggMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBl ZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0z NDYsNiArMzQ2LDggQEAgQnVmZmVyRGVzY1BhZGRlZAogQnVmZmVySGVhcFR1cGxlVGFibGVT bG90CiBCdWZmZXJMb29rdXBFbnQKIEJ1ZmZlck1hbmFnZXJSZWxhdGlvbgorQnVmZmVyUGFy dGl0aW9uCitCdWZmZXJQYXJ0aXRpb25zCiBCdWZmZXJTdHJhdGVneUNvbnRyb2wKIEJ1ZmZl clRhZwogQnVmZmVyVXNhZ2UKLS0gCjIuNTAuMQoK --------------ffSr0c8hlIKbvluiJSw5Id5o Content-Type: text/csv; charset=UTF-8; name="numa-hb176.csv" Content-Disposition: attachment; filename="numa-hb176.csv" Content-Transfer-Encoding: base64 c2hhcmVkX2J1ZmZlcnMgbW9kZSBidWlsZCBwaW5uaW5nIHRwcyB0cHNfMjUgdHBzXzUwIHRw c183NSB0cHNfOTUgdHBzXzk5IGxhdF9hdmcgbGF0X3N0ZGRldiBzYl93YXJtdXAgc2JfYmVu Y2htYXJrCjMyR0Igc2ltcGxlIG51bWEtMC1tYXN0ZXIgbm9uZSAyMDk0MDE0Ljc5NDc2NyAy MDczNTUwLjQgMjA4Mjc4OC42IDIxMDI2MzMuNCAyMTY3OTIwLjkgMjE4NDQ4NS40IDAuMDYx IDAuMDIwIDEwMC4wMCAxMDAuMDAKMzJHQiBzaW1wbGUgbnVtYS0wLW1hc3RlciByYW5kb20g MTI4NjI3MS45MzM0MjQgMTI4NDc1NC4wIDEyODY0OTQuNyAxMjg4Njc0LjEgMTI5MTE5Ny42 IDEyOTI0OTUuNyAwLjA5OSAwLjAzNiAxMDAuMDAgMTAwLjAwCjMyR0Igc2ltcGxlIG51bWEt MC1tYXN0ZXIgY29sb2NhdGVkIDIzODg4MTEuMjMyNTg3IDIzODMyODEuNyAyMzg5OTcyLjEg MjM5NjU5OC4zIDI0MDE5MTAuMyAyNDA0MjUzLjkgMC4wNTMgMC4wMTIgMTAwLjAwIDEwMC4w MAozMkdCIHNpbXBsZSBudW1hLTEtYnVmZmVycyBub25lIDIwNDcwMTkuNTc2OTMyIDIwMzM0 NjAuMCAyMDQyMjU3LjQgMjA1NTQ0OC40IDIwODU5MjUuOSAyMTE0NzY5LjQgMC4wNjIgMC4w MjQgMTAwLjAwIDEwMC4wMAozMkdCIHNpbXBsZSBudW1hLTEtYnVmZmVycyByYW5kb20gMTE5 MjUxMS4xMDQ2NDAgMTE5MTcxNC4yIDExOTI5ODIuMSAxMTk0MzkzLjcgMTE5NjI5OS4wIDEx OTc0ODEuNSAwLjEwNyAwLjAzNSAxMDAuMDAgMTAwLjAwCjMyR0Igc2ltcGxlIG51bWEtMS1i dWZmZXJzIGNvbG9jYXRlZCAyNDA1OTMyLjg5NjY3NSAyMzk4OTI1LjQgMjQwNzg4Ni42IDI0 MTU4NjkuNiAyNDIwMjIyLjQgMjQyMjI4MC44IDAuMDUzIDAuMDEyIDEwMC4wMCAxMDAuMDAK MzJHQiBzaW1wbGUgbnVtYS0yLWxvY2FsYWxsb2Mgbm9uZSAyMDY5ODQ4LjU1OTg1MyAyMDU1 NTE1LjcgMjA2NjY0Mi43IDIwNzkxODIuMCAyMTE1NTE3LjMgMjEzMDY4MC45IDAuMDYyIDAu MDI4IDEwMC4wMCAxMDAuMDAKMzJHQiBzaW1wbGUgbnVtYS0yLWxvY2FsYWxsb2MgcmFuZG9t IDEyMDY2NjkuMDMxODE5IDEyMDU3MjQuOCAxMjA3MDU0LjUgMTIwODU1OC43IDEyMTAzMzcu MyAxMjExMjI1LjMgMC4xMDYgMC4wMzQgMTAwLjAwIDEwMC4wMAozMkdCIHNpbXBsZSBudW1h LTItbG9jYWxhbGxvYyBjb2xvY2F0ZWQgMjM1NzU5MC43ODIzNjkgMjM1NDUzMS4zIDIzNTkw MDkuNyAyMzYzNTM2LjYgMjM2NzY0My4xIDIzNjg5MjUuOSAwLjA1NCAwLjAxMiAxMDAuMDAg MTAwLjAwCjMyR0Igc2ltcGxlIG51bWEtMy1uby10YWlsIG5vbmUgMjA3NjU5Mi44MDAzMzEg MjA1NjYwNi44IDIwNjkwNjYuMiAyMDg3NDQ2LjcgMjE0MDQ2Mi45IDIxNTkzNTkuOCAwLjA2 MSAwLjAyNSAxMDAuMDAgMTAwLjAwCjMyR0Igc2ltcGxlIG51bWEtMy1uby10YWlsIHJhbmRv bSAxMjAxNzQyLjA3MzUyMSAxMjIzMzQ2LjEgMTIyNDY5Ny4zIDEyMjYxODIuMCAxMjI3ODY0 LjAgMTIyODkyMy40IDAuMTA2IDAuMDM4IDEwMC4wMCAxMDAuMDAKMzJHQiBzaW1wbGUgbnVt YS0zLW5vLXRhaWwgY29sb2NhdGVkIDI0MDQ5NTIuMjgxNDYxIDIzOTc1MjguNSAyNDA2NTcx LjcgMjQxNDMyNy4yIDI0MTk3NjAuNyAyNDIyODM4LjMgMC4wNTMgMC4wMTIgMTAwLjAwIDEw MC4wMAozMkdCIHNpbXBsZSBudW1hLTQtZnJlZWxpc3Qgbm9uZSAyMTQ0OTI4LjgyNzI1MiAy MTI3OTk2LjUgMjE0MDI4Ny40IDIxNTY2NjguNyAyMjAwODY4LjQgMjIxNTExNy42IDAuMDYw IDAuMDQ5IDEwMC4wMCAxMDAuMDAKMzJHQiBzaW1wbGUgbnVtYS00LWZyZWVsaXN0IHJhbmRv bSAxMjYyNTczLjA1OTY4MCAxMjYyMjQ0LjUgMTI2MzQzNC4yIDEyNjQ3NDcuNCAxMjY2MTI3 LjkgMTI2NzE1Mi42IDAuMTAxIDAuMDU0IDEwMC4wMCAxMDAuMDAKMzJHQiBzaW1wbGUgbnVt YS00LWZyZWVsaXN0IGNvbG9jYXRlZCAyNDUyMDE1Ljc0NjQ3OSAyNDQ1ODAzLjQgMjQ1Mzcy MS4zIDI0NjEzMzQuNiAyNDY1NjE1LjYgMjQ2NjkyNC45IDAuMDUyIDAuMDQyIDEwMC4wMCAx MDAuMDAKMzJHQiBzaW1wbGUgbnVtYS01LWNsb2Nrc3dlZXAgbm9uZSAyMTQ3NzI3Ljk0NTQx NSAyMTMwODg5LjkgMjE0NjIwMy4zIDIxNjIxMzcuOSAyMTg5NjQ0LjUgMjIyNzY1OS42IDAu MDU5IDAuMDM1IDI1LjAwIDEwMC4wMAozMkdCIHNpbXBsZSBudW1hLTUtY2xvY2tzd2VlcCBy YW5kb20gMTI0MTMzOC43ODc1NTEgMTI0MTQxNi40IDEyNDIzOTEuMiAxMjQzMTY2LjYgMTI0 Mzk2NC4zIDEyNDQ2ODguMSAwLjEwMyAwLjA0NSAyNS4wMCAxMDAuMDAKMzJHQiBzaW1wbGUg bnVtYS01LWNsb2Nrc3dlZXAgY29sb2NhdGVkIDI1NDUxOTAuNzY5MTQ2IDI1NDU2ODEuMiAy NTQ2OTIyLjggMjU0Nzc1My4wIDI1NDg1OTUuMSAyNTQ5MTk1LjMgMC4wNTAgMC4wMjggMjUu MDAgMTAwLjAwCjMyR0Igc2ltcGxlIG51bWEtNi1wZ3Byb2Mgbm9uZSAyMTgwNDEwLjk2NDI5 OSAyMTU3OTI0LjUgMjE3MDkzMS42IDIxOTIyMTAuOSAyMjQ5MzMxLjAgMjI3MjM5MC45IDAu MDU5IDAuMDQ1IDI1LjAwIDEwMC4wMAozMkdCIHNpbXBsZSBudW1hLTYtcGdwcm9jIHJhbmRv bSAxMjQwNzk5LjQ1MjY4MiAxMjQwODQyLjMgMTI0MTYwNy41IDEyNDI0NzQuMiAxMjQzNDg4 LjEgMTI0MzkwMS4xIDAuMTAzIDAuMDQ1IDI1LjAwIDEwMC4wMAozMkdCIHNpbXBsZSBudW1h LTYtcGdwcm9jIGNvbG9jYXRlZCAyNjM2OTM0LjI3MTY5OCAyNjM3Mzc3LjkgMjYzODU4MS45 IDI2Mzk0NTcuMSAyNjQxMjI0LjEgMjY0MjI4Mi41IDAuMDQ4IDAuMDIzIDI1LjAwIDEwMC4w MAozMkdCIHNpbXBsZSBudW1hLTctcGlubmluZyBub25lIDIxMDE0NTIuOTE3NTg4IDIwOTA1 NDUuNSAyMTAzODU4LjQgMjExODk4Mi41IDIxMzA5MjMuOSAyMTM1NTk3LjggMC4wNjEgMC4w MzAgMjUuMDAgMTAwLjAwCjMyR0Igc2ltcGxlIG51bWEtNy1waW5uaW5nIHJhbmRvbSAxMjM4 OTE5LjUxMTA0NiAxMjM4ODUyLjYgMTIzOTcwOC40IDEyNDA0MTIuMSAxMjQxMzI5LjUgMTI0 MTc1Ny4yIDAuMTAzIDAuMDQ2IDI1LjAwIDEwMC4wMAozMkdCIHNpbXBsZSBudW1hLTctcGlu bmluZyBjb2xvY2F0ZWQgMjYxMjc5Ny4wMjc5ODAgMjYxMzMwMi40IDI2MTQzMDguMiAyNjE1 MDM1LjMgMjYxNjA1Ny4wIDI2MTY0OTcuMiAwLjA0OSAwLjAzMSAyNS4wMCAxMDAuMDAKMzJH QiBwcmVwYXJlZCBudW1hLTAtbWFzdGVyIG5vbmUgMjYwMDI2NS4wMzU3MTkgMjU5NDE3NS4x IDI2MDM2NTcuOCAyNjE0Mjk4LjIgMjYyNzY1NS45IDI2MzkwNzkuOCAwLjA0OSAwLjAzMiAx MDAuMDAgMTAwLjAwCjMyR0IgcHJlcGFyZWQgbnVtYS0wLW1hc3RlciByYW5kb20gNjA5Mjc4 LjU3MzgzOSA2MDE5NzMuOSA2MDg3MzQuOCA2MTU2ODcuNyA2MjYzOTIuMSA2NDMxODMuNCAw LjIwOSAwLjA4MiAxMDAuMDAgMTAwLjAwCjMyR0IgcHJlcGFyZWQgbnVtYS0wLW1hc3RlciBj b2xvY2F0ZWQgMjkzNjE4OC4wMDI0MzggMjkzMTA3MS43IDI5MzcxNDkuMSAyOTQyNzkzLjUg Mjk1MTA5MS4yIDI5NTUyMjEuNyAwLjA0MyAwLjAxNSAxMDAuMDAgMTAwLjAwCjMyR0IgcHJl cGFyZWQgbnVtYS0xLWJ1ZmZlcnMgbm9uZSAyNTU2NDgzLjAyNjU2NiAyNTQ3ODM5LjcgMjU1 ODA5OC40IDI1Njg1NjMuOCAyNTgyMTk5LjQgMjU5NzE2MC40IDAuMDUwIDAuMDM0IDEwMC4w MCAxMDAuMDAKMzJHQiBwcmVwYXJlZCBudW1hLTEtYnVmZmVycyByYW5kb20gNjQzMjY0LjA5 ODQ1OCA2Mzg3MzMuNyA2NDUzMjUuOCA2NTEzMzguMSA2NTc1MTEuNyA2NTk4MjguMyAwLjE5 OCAwLjA4NiAxMDAuMDAgMTAwLjAwCjMyR0IgcHJlcGFyZWQgbnVtYS0xLWJ1ZmZlcnMgY29s b2NhdGVkIDI4OTYyNDUuODI0ODAyIDI4ODU3NTUuOSAyODk2ODQyLjIgMjkwNjY0MC42IDI5 MTgwNTQuOSAyOTIyNDI3LjYgMC4wNDQgMC4wMTQgMTAwLjAwIDEwMC4wMAozMkdCIHByZXBh cmVkIG51bWEtMi1sb2NhbGFsbG9jIG5vbmUgMjU5NTQzMC4xNjk1NjggMjU4NDQ2Mi44IDI1 OTc3ODguOCAyNjA5MDI3LjEgMjYyMzM1OC4yIDI2MzU5NjkuNCAwLjA0OSAwLjAzNCAxMDAu MDAgMTAwLjAwCjMyR0IgcHJlcGFyZWQgbnVtYS0yLWxvY2FsYWxsb2MgcmFuZG9tIDU5NDY5 NS4xMjMzNzcgNTg5Mjk2LjAgNTkzNjE5LjMgNjAwNDE3LjYgNjA5NTM5LjIgNjEyMDkxLjAg MC4yMTQgMC4wODEgMTAwLjAwIDEwMC4wMAozMkdCIHByZXBhcmVkIG51bWEtMi1sb2NhbGFs bG9jIGNvbG9jYXRlZCAyOTE4Mjk3LjkyNjU4NyAyOTA5MTcxLjMgMjkxODQ4NC4zIDI5Mjc2 MzkuMyAyOTM4NTM2LjEgMjk0MzIxMy43IDAuMDQ0IDAuMDE0IDEwMC4wMCAxMDAuMDAKMzJH QiBwcmVwYXJlZCBudW1hLTMtbm8tdGFpbCBub25lIDI1NzIwMTAuNTI1MzAyIDI1NjE1MjQu NyAyNTc0OTIxLjUgMjU4NjAwMC43IDI2MDQwNzcuOCAyNjE3MTAzLjEgMC4wNTAgMC4wMzQg MTAwLjAwIDEwMC4wMAozMkdCIHByZXBhcmVkIG51bWEtMy1uby10YWlsIHJhbmRvbSA2MDcy MjUuNzM1MDc3IDU5ODY4MS45IDYwNDk4Ni40IDYxNTM2OC4zIDYyNzMxMC41IDYzNDIyNC45 IDAuMjEwIDAuMDgwIDEwMC4wMCAxMDAuMDAKMzJHQiBwcmVwYXJlZCBudW1hLTMtbm8tdGFp bCBjb2xvY2F0ZWQgMjkwMzM3Ny40Mjc2MzEgMjg5OTEwMy4wIDI5MDQ0NTEuMiAyOTA4OTYw LjUgMjkxNDk4Mi43IDI5MTkxMzkuNSAwLjA0NCAwLjAxNCAxMDAuMDAgMTAwLjAwCjMyR0Ig cHJlcGFyZWQgbnVtYS00LWZyZWVsaXN0IG5vbmUgMjY1NjA4MC4yMDAwMTkgMjY0NzA0Mi4y IDI2NTc5NzIuMyAyNjcxMzU4LjcgMjY5NDQwNS43IDI3MDc3NDEuNiAwLjA0OCAwLjA0MiAx MDAuMDAgMTAwLjAwCjMyR0IgcHJlcGFyZWQgbnVtYS00LWZyZWVsaXN0IHJhbmRvbSAxNDg3 Mjc3LjE1ODA1MyAxNDkyMTkwLjcgMTQ5MzY2OC45IDE0OTUxMjQuOCAxNDk2OTc5LjYgMTQ5 ODE1MC40IDAuMDg2IDAuMDQxIDEwMC4wMCAxMDAuMDAKMzJHQiBwcmVwYXJlZCBudW1hLTQt ZnJlZWxpc3QgY29sb2NhdGVkIDMwMzM5NjcuMTc2MDIxIDMwMjk5MjAuMSAzMDM0MzgyLjQg MzAzODYwOC4yIDMwNDU3MjAuNyAzMDQ3OTIyLjIgMC4wNDIgMC4wMjIgMTAwLjAwIDEwMC4w MAozMkdCIHByZXBhcmVkIG51bWEtNS1jbG9ja3N3ZWVwIG5vbmUgMjgzMjMxNy42MDkxMjgg MjgyMzQzNC41IDI4MzY3OTguNiAyODUxMTcwLjAgMjg3MjMxMS43IDI4ODUyNzIuMSAwLjA0 NSAwLjA0MSAyNS4wMCAxMDAuMDAKMzJHQiBwcmVwYXJlZCBudW1hLTUtY2xvY2tzd2VlcCBy YW5kb20gMTQ2MTI2My43MTM5ODMgMTQ4MDI1Ny43IDE0ODE2ODEuMCAxNDgyODM5LjAgMTQ4 NDM5MC4wIDE0ODU0MzYuNyAwLjA4NyAwLjA0NCAyNS4wMCAxMDAuMDAKMzJHQiBwcmVwYXJl ZCBudW1hLTUtY2xvY2tzd2VlcCBjb2xvY2F0ZWQgMzI4NzMxOS4wMzg4NzYgMzI4NzQ4OS42 IDMyODg4NzQuMCAzMjg5ODQ5LjMgMzI5MTI2NS42IDMyOTE3NjkuMCAwLjAzOSAwLjAyNCAy NS4wMCAxMDAuMDAKMzJHQiBwcmVwYXJlZCBudW1hLTYtcGdwcm9jIG5vbmUgMjg2NDczMS42 NjM1NDMgMjg1NjQ0OS45IDI4Njg0ODMuMiAyODgwODA3LjYgMjg5NzU4NS44IDI5MTIyNDAu NiAwLjA0NSAwLjA0MCAyNS4wMCAxMDAuMDAKMzJHQiBwcmVwYXJlZCBudW1hLTYtcGdwcm9j IHJhbmRvbSAxNDkwMzI0LjQ3MTg2NCAxNTA3Mzk5LjQgMTUwOTA0Mi4wIDE1MTAxNjcuMSAx NTExNjA3LjEgMTUxMjcyNi45IDAuMDg2IDAuMDQ0IDI1LjAwIDEwMC4wMAozMkdCIHByZXBh cmVkIG51bWEtNi1wZ3Byb2MgY29sb2NhdGVkIDMzMzI1MjEuMzkxOTc4IDMzMzMwMjMuNyAz MzMzOTgzLjAgMzMzNDgyMi4wIDMzMzYxNjYuMyAzMzM2NzQ1LjYgMC4wMzggMC4wMjggMjUu MDAgMTAwLjAwCjMyR0IgcHJlcGFyZWQgbnVtYS03LXBpbm5pbmcgbm9uZSAzMTk2NzQzLjk3 Mjg2OCAzMTk1OTY3LjkgMzIwNDc2OC43IDMyMTQ3MDcuMiAzMjI4NTgyLjQgMzIzNTQ0Ni4y IDAuMDQwIDAuMDMyIDI1LjAwIDEwMC4wMAozMkdCIHByZXBhcmVkIG51bWEtNy1waW5uaW5n IHJhbmRvbSAxNDk3NTkyLjk1MjQwNSAxNTE1MDQyLjggMTUxNjUxMy4xIDE1MTc3MTcuNCAx NTE5MTA1LjAgMTUxOTgzNy4wIDAuMDg1IDAuMDQzIDI1LjAwIDEwMC4wMAozMkdCIHByZXBh cmVkIG51bWEtNy1waW5uaW5nIGNvbG9jYXRlZCAzMzY2Nzg4LjA2NjAzMCAzMzY0ODIwLjkg MzM2NjI3MC42IDMzNzEyODMuNSAzMzc0MjI5LjUgMzM3NTY5Ni41IDAuMDM4IDAuMDIzIDI1 LjAwIDEwMC4wMAoxNkdCIHNpbXBsZSBudW1hLTAtbWFzdGVyIG5vbmUgMTgyNzA3OC40Njcz MTUgMTgxNzc1Ni4zIDE4MjU0NDMuMSAxODMyNTQzLjggMTg1OTY4Ni45IDE4NzA3ODkuMyAw LjA3MCAwLjAyNCAxMDAuMDAgMTAwLjAwCjE2R0Igc2ltcGxlIG51bWEtMC1tYXN0ZXIgcmFu ZG9tIDEyMDQwMTEuNzQ2NTY5IDEyMDMxMTYuMyAxMjA0NTAxLjcgMTIwNTg2MS44IDEyMDc5 NzguOCAxMjA4ODg4LjkgMC4xMDYgMC4wNTEgMTAwLjAwIDEwMC4wMAoxNkdCIHNpbXBsZSBu dW1hLTAtbWFzdGVyIGNvbG9jYXRlZCAyMDkxNDI5LjgzNTQzMiAyMDkxNzMyLjggMjA5MjQ5 Mi4zIDIwOTMwODkuNCAyMDk0MDAyLjcgMjA5NDQ4Ny4yIDAuMDYxIDAuMDE2IDEwMC4wMCAx MDAuMDAKMTZHQiBzaW1wbGUgbnVtYS0xLWJ1ZmZlcnMgbm9uZSAxODE4NjA3LjMyMDUxOSAx ODEwNTgwLjkgMTgxNzM2Ny42IDE4MjU0NjkuMSAxODQxMzQ4LjAgMTg1Mjc2OC43IDAuMDcw IDAuMDI5IDEwMC4wMCAxMDAuMDAKMTZHQiBzaW1wbGUgbnVtYS0xLWJ1ZmZlcnMgcmFuZG9t IDExMzc4MjEuNzkxNTQ3IDExMzY4MjkuMyAxMTM4NDM2LjEgMTEzOTczMy4yIDExNDExMTUu OSAxMTQyMDc1LjUgMC4xMTIgMC4wNDMgMTAwLjAwIDEwMC4wMAoxNkdCIHNpbXBsZSBudW1h LTEtYnVmZmVycyBjb2xvY2F0ZWQgMjA3MDQ1Ni45MjE0MjMgMjA3MDQwOC41IDIwNzEwMzEu MiAyMDcxNjI5LjYgMjA3MjY0Mi4wIDIwNzMwNzcuOSAwLjA2MiAwLjAxNSAxMDAuMDAgMTAw LjAwCjE2R0Igc2ltcGxlIG51bWEtMi1sb2NhbGFsbG9jIG5vbmUgMTgxNDMzNy45NjQzNjgg MTgwMjE1MC4xIDE4MDkxNTcuNiAxODE4ODM1LjQgMTg1OTIxMi4wIDE4NzkxNjcuNiAwLjA3 MCAwLjAzMCAxMDAuMDAgMTAwLjAwCjE2R0Igc2ltcGxlIG51bWEtMi1sb2NhbGFsbG9jIHJh bmRvbSAxMTQwMTM2LjIwOTg0MCAxMTM5MTM3LjUgMTE0MDQ3MS4zIDExNDE3NjQuMiAxMTQz MzM2LjUgMTE0NDY4OC40IDAuMTEyIDAuMDQ1IDEwMC4wMCAxMDAuMDAKMTZHQiBzaW1wbGUg bnVtYS0yLWxvY2FsYWxsb2MgY29sb2NhdGVkIDIwNDY3NDkuMjQ1MDQ1IDIwNDY3NDcuMyAy MDQ3MzQzLjMgMjA0NzkzNi41IDIwNDg2MjIuOSAyMDQ5MDkyLjggMC4wNjIgMC4wMTUgMTAw LjAwIDEwMC4wMAoxNkdCIHNpbXBsZSBudW1hLTMtbm8tdGFpbCBub25lIDE3ODg2NzcuNTkx NTExIDE3Nzk2NjguNyAxNzg2NzUyLjQgMTc5NDg2MS4zIDE4MTYzNDYuNyAxODM0NDUzLjIg MC4wNzEgMC4wMzcgMTAwLjAwIDEwMC4wMAoxNkdCIHNpbXBsZSBudW1hLTMtbm8tdGFpbCBy YW5kb20gMTE0NzgxNS43NjE1NDIgMTE0NjczOC41IDExNDgyODkuNSAxMTQ5NDk3LjUgMTE1 MTIwNi42IDExNTIzMDkuNiAwLjExMSAwLjA0NCAxMDAuMDAgMTAwLjAwCjE2R0Igc2ltcGxl IG51bWEtMy1uby10YWlsIGNvbG9jYXRlZCAyMDYzODU1LjE1OTU2MiAyMDYzNTg3LjIgMjA2 NDQwNS42IDIwNjUxNTMuMyAyMDY1ODE4LjQgMjA2Njk5NC41IDAuMDYyIDAuMDE1IDEwMC4w MCAxMDAuMDAKMTZHQiBzaW1wbGUgbnVtYS00LWZyZWVsaXN0IG5vbmUgMTg3Mjg3OS4xODM2 NzAgMTg2MTkxNC44IDE4NjkwODQuNCAxODc4Nzk5LjAgMTkxMzMxNy42IDE5MzMxNTkuMSAw LjA2OCAwLjAzMyAxMDAuMDAgMTAwLjAwCjE2R0Igc2ltcGxlIG51bWEtNC1mcmVlbGlzdCBy YW5kb20gMTIwNzcyOS4wMDk5NDYgMTIwNjYyMi4yIDEyMDgzMDUuMiAxMjA5NzI2LjYgMTIx MTYxOC41IDEyMTM3MTEuNSAwLjEwNiAwLjA1MyAxMDAuMDAgMTAwLjAwCjE2R0Igc2ltcGxl IG51bWEtNC1mcmVlbGlzdCBjb2xvY2F0ZWQgMjEzNTYyOC43NTgwNzcgMjEzNTQ0Ny42IDIx MzYwNTguOSAyMTM2Nzc0LjEgMjEzNzc0NC45IDIxMzgyNDIuOCAwLjA2MCAwLjAyNiAxMDAu MDAgMTAwLjAwCjE2R0Igc2ltcGxlIG51bWEtNS1jbG9ja3N3ZWVwIG5vbmUgMjAxNjk4My40 ODM5NTUgMjAwMjc2NC4yIDIwMTQwNjIuMiAyMDI2NDg3LjggMjA2MDM5Ni4xIDIwNjkzNzgu MiAwLjA2MyAwLjAzNCAyNS4wMCAxMDAuMDAKMTZHQiBzaW1wbGUgbnVtYS01LWNsb2Nrc3dl ZXAgcmFuZG9tIDEyMTU1MTcuNjk4NDI1IDEyMTQ0MTcuNiAxMjE1ODg1LjggMTIxNzQzNi4y IDEyMTkwMzQuMCAxMjIwMzkxLjEgMC4xMDUgMC4wNDIgMjUuMDAgMTAwLjAwCjE2R0Igc2lt cGxlIG51bWEtNS1jbG9ja3N3ZWVwIGNvbG9jYXRlZCAyMzY1Mzc3Ljk4OTUwOSAyMzY1MzQy LjMgMjM2NTg2Ny41IDIzNjYzNTYuOSAyMzY3MTc0LjMgMjM2NzgxMy40IDAuMDU0IDAuMDE1 IDI1LjAwIDEwMC4wMAoxNkdCIHNpbXBsZSBudW1hLTYtcGdwcm9jIG5vbmUgMTk4ODUxNy4y OTM0NDcgMTk3Njg1MS45IDE5ODU1NTAuMCAxOTk3NTAwLjEgMjAyMjExNi41IDIwNDAzNzMu OCAwLjA2NCAwLjAzOCAyNS4wMCAxMDAuMDAKMTZHQiBzaW1wbGUgbnVtYS02LXBncHJvYyBy YW5kb20gMTE3OTQ0MC41MDA4NzcgMTE3ODM3My4zIDExNzk5MjAuOSAxMTgxMTMyLjcgMTE4 MjkwNi41IDExODQxMDYuMyAwLjEwOCAwLjA0OCAyNS4wMSAxMDAuMDAKMTZHQiBzaW1wbGUg bnVtYS02LXBncHJvYyBjb2xvY2F0ZWQgMjM0NTI0Mi4zMzQ3ODYgMjM0NTIwNi41IDIzNDU3 NzUuMiAyMzQ2MzU3LjggMjM0NzIwNC4zIDIzNDc5ODcuNCAwLjA1NCAwLjAxNyAyNS4wMSAx MDAuMDAKMTZHQiBzaW1wbGUgbnVtYS03LXBpbm5pbmcgbm9uZSAyMTQzMTMxLjM3MTM2NyAy MTM3Mzc2LjQgMjE0NTUwMi43IDIxNTMzNzUuMSAyMTYwNjQxLjggMjE2MzUzNy4zIDAuMDYw IDAuMDI4IDI1LjAxIDEwMC4wMAoxNkdCIHNpbXBsZSBudW1hLTctcGlubmluZyByYW5kb20g MTE4ODY3MC4xNjE2MjMgMTE4NzU5Ni42IDExODkxMjIuOSAxMTkwNDE3LjEgMTE5MjA4NC4w IDExOTMzMjAuMyAwLjEwOCAwLjA0NSAyNS4wMCAxMDAuMDAKMTZHQiBzaW1wbGUgbnVtYS03 LXBpbm5pbmcgY29sb2NhdGVkIDI0MDMxMjAuOTAwOTA2IDI0MDI2NDAuNCAyNDAzMzQwLjQg MjQwNDE4Ny4wIDI0MDYzMjAuMCAyNDA3MzM2LjggMC4wNTMgMC4wMTYgMjUuMDEgMTAwLjAw CjE2R0IgcHJlcGFyZWQgbnVtYS0wLW1hc3RlciBub25lIDIyMjEwMDkuNzI4NTkwIDIyMTc0 NjMuNCAyMjI2MjkxLjIgMjIzNDAxMy40IDIyNDUzNzcuOCAyMjU2MTIwLjMgMC4wNTcgMC4w NDEgMTAwLjAwIDEwMC4wMAoxNkdCIHByZXBhcmVkIG51bWEtMC1tYXN0ZXIgcmFuZG9tIDYw MjUxMC4zNzg0NTcgNTkzMTg4LjYgNjAzOTI0LjkgNjEwMTMyLjcgNjE5MjQyLjUgNjMzMjkx LjMgMC4yMTIgMC4wOTEgMTAwLjAwIDEwMC4wMAoxNkdCIHByZXBhcmVkIG51bWEtMC1tYXN0 ZXIgY29sb2NhdGVkIDI0ODE5NzguNTgyMDU1IDI0ODE0ODIuOSAyNDgyNjUxLjMgMjQ4MzY5 OC4yIDI0ODQ5NjkuMyAyNDg1ODczLjIgMC4wNTEgMC4wMTggMTAwLjAwIDEwMC4wMAoxNkdC IHByZXBhcmVkIG51bWEtMS1idWZmZXJzIG5vbmUgMjE5MzU1NS45NjYwNjggMjE4OTkxMy42 IDIxOTgxNzEuOCAyMjA3MTYzLjEgMjIxODg1My4zIDIyMjkyMjkuMyAwLjA1OCAwLjA0MyAx MDAuMDAgMTAwLjAwCjE2R0IgcHJlcGFyZWQgbnVtYS0xLWJ1ZmZlcnMgcmFuZG9tIDYxMzE0 MS41MTgyNjggNjAzMDEyLjYgNjExNDA1LjMgNjIyNDc3LjEgNjMzMjE4LjEgNjQ4MDc2LjUg MC4yMDggMC4wNzggMTAwLjAwIDEwMC4wMAoxNkdCIHByZXBhcmVkIG51bWEtMS1idWZmZXJz IGNvbG9jYXRlZCAyNDk2NjQ2LjE2ODc5MSAyNDk2NjQ3LjAgMjQ5Nzc0MC4wIDI0OTg3MDMu MCAyNDk5NzY4LjUgMjUwMDE1Ni41IDAuMDUxIDAuMDE3IDEwMC4wMCAxMDAuMDAKMTZHQiBw cmVwYXJlZCBudW1hLTItbG9jYWxhbGxvYyBub25lIDIyMTMyNzcuNTA0NDc0IDIyMDg5NjIu MCAyMjE4MzgzLjIgMjIyNzcwMS4wIDIyMzk1MzYuNyAyMjUxMTQ0LjUgMC4wNTggMC4wNDMg MTAwLjAwIDEwMC4wMAoxNkdCIHByZXBhcmVkIG51bWEtMi1sb2NhbGFsbG9jIHJhbmRvbSA2 MTgzNTUuOTg1Mzc0IDYxMTkzNy41IDYxODE5OC45IDYyMzI0NS43IDYzNjg1Ny43IDY0NDkz My44IDAuMjA3IDAuMDgxIDEwMC4wMCAxMDAuMDAKMTZHQiBwcmVwYXJlZCBudW1hLTItbG9j YWxhbGxvYyBjb2xvY2F0ZWQgMjUwMjk4MS42NTY0NTkgMjUwMjcxMS41IDI1MDM1MjQuMCAy NTA0MzU4LjQgMjUwNTM4MS45IDI1MDY2ODUuMCAwLjA1MSAwLjAxNyAxMDAuMDAgMTAwLjAw CjE2R0IgcHJlcGFyZWQgbnVtYS0zLW5vLXRhaWwgbm9uZSAyMjExODQ5LjM5NDAxNCAyMjA2 NzEzLjcgMjIxNjQxOS4zIDIyMjU0ODUuNCAyMjM3NDQ1LjAgMjI0ODA2My41IDAuMDU4IDAu MDQzIDEwMC4wMCAxMDAuMDAKMTZHQiBwcmVwYXJlZCBudW1hLTMtbm8tdGFpbCByYW5kb20g NTc1MDAwLjYzOTkwNCA1NzA1MDIuNyA1NzY3NDEuMSA1ODAxMDAuOCA1ODU1MTAuNyA1OTA5 ODYuMiAwLjIyMiAwLjA5NiAxMDAuMDAgMTAwLjAwCjE2R0IgcHJlcGFyZWQgbnVtYS0zLW5v LXRhaWwgY29sb2NhdGVkIDI0NjA0NzQuODM4ODU2IDI0NjAwMjkuMiAyNDYxMDQ5LjQgMjQ2 MjAwMy45IDI0NjMxOTYuOSAyNDYzODMzLjIgMC4wNTIgMC4wMTggMTAwLjAwIDEwMC4wMAox NkdCIHByZXBhcmVkIG51bWEtNC1mcmVlbGlzdCBub25lIDIyODE3MjYuMDg0MjAyIDIyNzcx OTMuMiAyMjg4NDA0LjAgMjI5ODQ2NC45IDIzMTA3MTguNiAyMzE5MjQ5LjEgMC4wNTYgMC4w NDUgMTAwLjAwIDEwMC4wMAoxNkdCIHByZXBhcmVkIG51bWEtNC1mcmVlbGlzdCByYW5kb20g MTM5ODY2My42MTc3ODYgMTM5ODc5Ny4wIDE0MDA5MDguNyAxNDAzMTA1LjIgMTQwNjE1Mi40 IDE0MDkwNzQuNyAwLjA5MSAwLjA1MiAxMDAuMDAgMTAwLjAwCjE2R0IgcHJlcGFyZWQgbnVt YS00LWZyZWVsaXN0IGNvbG9jYXRlZCAyNjc5OTk1LjI5MjYzNyAyNjc5OTg1LjkgMjY4MDg2 Mi4wIDI2ODE1NDcuNCAyNjgyNjY1LjggMjY4MzQyOS40IDAuMDQ4IDAuMDI4IDEwMC4wMCAx MDAuMDAKMTZHQiBwcmVwYXJlZCBudW1hLTUtY2xvY2tzd2VlcCBub25lIDI1NDAwOTUuNjky NzQ1IDI1MzIzNDAuMiAyNTQ1OTQwLjMgMjU2MDc2Mi4zIDI1NzcxMzAuOCAyNTg5MzIxLjEg MC4wNTAgMC4wNDYgMjUuMDEgMTAwLjAwCjE2R0IgcHJlcGFyZWQgbnVtYS01LWNsb2Nrc3dl ZXAgcmFuZG9tIDE0NTM3MDcuMTg5MDY0IDE0NTkwNDUuMSAxNDYxMzIxLjggMTQ2MzU4Ni4y IDE0NjY1ODEuOCAxNDY3NzE0LjkgMC4wODggMC4wNTAgMjUuMDAgMTAwLjAwCjE2R0IgcHJl cGFyZWQgbnVtYS01LWNsb2Nrc3dlZXAgY29sb2NhdGVkIDI4Njg5MDguOTkwNTc0IDI4Njg0 NTkuMyAyODY5MzA1LjkgMjg2OTkzMS40IDI4NzA5NjIuNCAyODcyMDM5LjAgMC4wNDUgMC4w MTkgMjUuMDEgMTAwLjAwCjE2R0IgcHJlcGFyZWQgbnVtYS02LXBncHJvYyBub25lIDI1MTQ1 MzEuNzU0Njk3IDI1MDg0NzguNSAyNTIwMjMyLjAgMjUzMjcyNC40IDI1NTUzMzQuMiAyNTcy MTI4LjQgMC4wNTEgMC4wNTEgMjUuMDAgMTAwLjAwCjE2R0IgcHJlcGFyZWQgbnVtYS02LXBn cHJvYyByYW5kb20gMTQyMTk0Mi45NjIyMjkgMTQyNTQ3MS42IDE0MjcyNTEuNSAxNDI5MTg1 LjAgMTQzMjExOS40IDE0MzQyMTMuNiAwLjA5MCAwLjA0OCAyNS4wMSAxMDAuMDAKMTZHQiBw cmVwYXJlZCBudW1hLTYtcGdwcm9jIGNvbG9jYXRlZCAyODk1NDYwLjkwNDQ5NyAyODk0OTc3 LjQgMjg5NTc4My45IDI4OTY0NzMuMCAyODk3MzMxLjAgMjg5Nzc3NC4wIDAuMDQ0IDAuMDIw IDI1LjAxIDEwMC4wMAoxNkdCIHByZXBhcmVkIG51bWEtNy1waW5uaW5nIG5vbmUgMjU3MDI5 My4xNjIwNTIgMjU2NjU3NS41IDI1NzcyOTguMiAyNTg2MDMzLjYgMjU5NzY4My43IDI2MDU3 MDEuMCAwLjA1MCAwLjA0NSAyNS4wMSAxMDAuMDAKMTZHQiBwcmVwYXJlZCBudW1hLTctcGlu bmluZyByYW5kb20gMTQxOTQ2OS4zNTYyNDEgMTQyMjE0MC40IDE0MjQyODcuMSAxNDI1ODk1 LjAgMTQyOTAxNS4wIDE0MzE5MzcuMyAwLjA5MCAwLjA0OCAyNS4wMCAxMDAuMDAKMTZHQiBw cmVwYXJlZCBudW1hLTctcGlubmluZyBjb2xvY2F0ZWQgMjk2NTM5OS4zMDQyMjcgMjk2NDU5 Ny40IDI5NjU4NDIuNyAyOTY2OTgyLjMgMjk2ODI0MS4wIDI5NjkwODIuOSAwLjA0MyAwLjAx OCAyNS4wMCAxMDAuMDAKNDhHQiBzaW1wbGUgbnVtYS0wLW1hc3RlciBub25lIDIyNDA2MjYu NTEzMzk4IDIyMTcwNjMuNiAyMjM5MTk1LjMgMjI2NTcyMy43IDIzMDE1NDkuNSAyMzQxMDEy LjcgMC4wNTcgMC4xMTggODMuMDcgMTAwLjAwCjQ4R0Igc2ltcGxlIG51bWEtMC1tYXN0ZXIg cmFuZG9tIDEzMTg0NjguNzgxNTM5IDEzMTkwMDcuMiAxMzIwMTI2LjMgMTMyMTI3My41IDEz MjI4MjguNCAxMzIzNzM3LjIgMC4wOTcgMC4xNjIgODQuMDkgMTAwLjAwCjQ4R0Igc2ltcGxl IG51bWEtMC1tYXN0ZXIgY29sb2NhdGVkIDI2OTkzOTQuMTQ0NzgyIDI2ODg3NDcuOCAyNjk3 MTY4LjUgMjcxNjk4MC44IDI3MzE1ODEuMyAyNzMzODU0LjAgMC4wNDcgMC4xMDggODIuOTMg MTAwLjAwCjQ4R0Igc2ltcGxlIG51bWEtMS1idWZmZXJzIG5vbmUgMjI0NTE1NC44MDI4MzMg MjIyNjM0NC45IDIyNDA1NjMuNiAyMjYwNDMyLjEgMjMxNTQ3OC4zIDIzNDkyNzUuNiAwLjA1 NyAwLjEyMiA4My4zMSAxMDAuMDAKNDhHQiBzaW1wbGUgbnVtYS0xLWJ1ZmZlcnMgcmFuZG9t IDEyNjExNzIuNjE0MzY3IDEyNjIxNjIuNCAxMjYyODgwLjAgMTI2Mzk0MC43IDEyNjUwMjgu OCAxMjY1ODUwLjggMC4xMDEgMC4xNjQgODMuNTkgMTAwLjAwCjQ4R0Igc2ltcGxlIG51bWEt MS1idWZmZXJzIGNvbG9jYXRlZCAyNjUwNjIzLjI2MjE1MyAyNjQyMDUxLjYgMjY0ODQxNS43 IDI2Njg1NTUuMyAyNjgwMjA5LjMgMjY4Mzg2MS4zIDAuMDQ4IDAuMTA4IDgxLjkxIDEwMC4w MAo0OEdCIHNpbXBsZSBudW1hLTItbG9jYWxhbGxvYyBub25lIDIyNDkzNjcuNzgyMTQxIDIy Mjg2ODYuOCAyMjQ4NjA2LjggMjI3Mzc0Ni40IDIzMTIyNTkuNyAyMzMxNjUwLjMgMC4wNTcg MC4xMzYgODIuODcgMTAwLjAwCjQ4R0Igc2ltcGxlIG51bWEtMi1sb2NhbGFsbG9jIHJhbmRv bSAxMjQ0Njc0LjQwOTQwOSAxMjQ1MDI3LjYgMTI0NjM1OC43IDEyNDc1NTkuOSAxMjQ4ODM2 LjcgMTI0OTA5Ny4yIDAuMTAzIDAuMTY0IDgyLjcyIDEwMC4wMAo0OEdCIHNpbXBsZSBudW1h LTItbG9jYWxhbGxvYyBjb2xvY2F0ZWQgMjYxMTE5My4wMjE0MTMgMjYwMDY0Ny4wIDI2MDkz MzcuOCAyNjI4NjI0LjMgMjY0MDY4NC42IDI2NDM0MzUuMyAwLjA0OSAwLjEwOSA4Mi42NCAx MDAuMDAKNDhHQiBzaW1wbGUgbnVtYS0zLW5vLXRhaWwgbm9uZSAyMjY4MDA4LjU3MTE4NyAy MjQwNjE2LjYgMjI2MTg4NC45IDIyOTY3ODEuMyAyMzQ4NTI4LjAgMjM2ODI0My43IDAuMDU2 IDAuMTE5IDgyLjY2IDEwMC4wMAo0OEdCIHNpbXBsZSBudW1hLTMtbm8tdGFpbCByYW5kb20g MTIzMzAyNi44ODQyNzIgMTIzMzU0MC42IDEyMzQ4OTcuMSAxMjM2MDAyLjAgMTIzNzI2Mi43 IDEyMzc4NzIuOCAwLjEwNCAwLjE1OSA4Mi41NCAxMDAuMDAKNDhHQiBzaW1wbGUgbnVtYS0z LW5vLXRhaWwgY29sb2NhdGVkIDI2NTgxNTYuNjg0ODYxIDI2NTEyOTMuMCAyNjU2NTc0LjYg MjY3Mzg4Ni4yIDI2ODI3NzkuMCAyNjg0NDA1LjQgMC4wNDggMC4xMTQgODIuMTUgMTAwLjAw CjQ4R0Igc2ltcGxlIG51bWEtNC1mcmVlbGlzdCBub25lIDIyNTE1NzYuNjAzMDUwIDIyMzA1 NDIuMiAyMjQ0OTIwLjMgMjI3MDQ3My41IDIzMzcwNjEuNCAyMzUyNzM4LjUgMC4wNTcgMC4x NTAgODMuMDIgMTAwLjAwCjQ4R0Igc2ltcGxlIG51bWEtNC1mcmVlbGlzdCByYW5kb20gMTMw NzkzMy40MDcyMjcgMTMwODA5Mi44IDEzMDk4MDQuMyAxMzExMjk3LjYgMTMxMjUxMS4zIDEz MTMyOTYuOCAwLjA5OCAwLjEzNSA4Mi41NyAxMDAuMDAKNDhHQiBzaW1wbGUgbnVtYS00LWZy ZWVsaXN0IGNvbG9jYXRlZCAyNjAxNTM3LjU5NTUzNiAyNTg0NTU1LjcgMjU5ODM2Mi40IDI2 MjI3MDkuNSAyNjM4MDMxLjggMjY0MDI3Ny40IDAuMDQ5IDAuMDcyIDgxLjk3IDEwMC4wMAo0 OEdCIHNpbXBsZSBudW1hLTUtY2xvY2tzd2VlcCBub25lIDIyNDEzODIuMjQxMTU1IDIyMTg1 NDguMyAyMjM3MjQ4LjEgMjI2NTM1My44IDIyOTU4ODAuNyAyMzIzMTQ5LjAgMC4wNTcgMC4w MzggMjUuMDAgMTAwLjAwCjQ4R0Igc2ltcGxlIG51bWEtNS1jbG9ja3N3ZWVwIHJhbmRvbSAx MjYyNTE0LjMxNzMxMCAxMjYzMzU4LjkgMTI2NDA3Mi4wIDEyNjQ1OTIuNCAxMjY1MzU4LjYg MTI2NTUzNC4yIDAuMTAxIDAuMDUzIDI1LjAwIDEwMC4wMAo0OEdCIHNpbXBsZSBudW1hLTUt Y2xvY2tzd2VlcCBjb2xvY2F0ZWQgMjYxMDY2MS4zOTA0NjggMjYxMTczMC42IDI2MTI3Mjcu NyAyNjEzNzA5LjQgMjYxNDg4NC44IDI2MTU5NzAuMSAwLjA0OSAwLjAzMCAyNS4wMCAxMDAu MDAKNDhHQiBzaW1wbGUgbnVtYS02LXBncHJvYyBub25lIDIzMzYzMDUuMzczMjgwIDIzMDEy NzYuMCAyMzI0MTA3LjMgMjM2MDYzOS40IDI0MzYzMTguMSAyNDY2NjAyLjkgMC4wNTUgMC4w MzcgMjUuMDAgMTAwLjAwCjQ4R0Igc2ltcGxlIG51bWEtNi1wZ3Byb2MgcmFuZG9tIDEyNzMw MjEuMTM2OTA4IDEyNzM3NTQuOSAxMjc0NDYzLjAgMTI3NTA0OC43IDEyNzU3MzMuMSAxMjc1 OTgwLjcgMC4xMDAgMC4wNTQgMjUuMDAgMTAwLjAwCjQ4R0Igc2ltcGxlIG51bWEtNi1wZ3By b2MgY29sb2NhdGVkIDI3NzQxMDcuMjQzODk4IDI3NzU0NTUuNyAyNzc2OTE3LjggMjc3Nzk3 Ni4yIDI3NzkyOTguMiAyNzgwMTMxLjAgMC4wNDYgMC4wMzIgMjUuMDAgMTAwLjAwCjQ4R0Ig c2ltcGxlIG51bWEtNy1waW5uaW5nIG5vbmUgMjQxNTMxOC4wNDUwMjggMjQwNzY5MS4wIDI0 MjI2NjMuMiAyNDMzNTc4LjkgMjQ1MDE1Ni41IDI0Njc4NDEuMCAwLjA1MyAwLjA0MyAyNS4w MCAxMDAuMDAKNDhHQiBzaW1wbGUgbnVtYS03LXBpbm5pbmcgcmFuZG9tIDEyNTI0NjguNDgx ODYzIDEyNTMxMjkuMCAxMjUzNzk1LjUgMTI1NDM2Mi43IDEyNTQ5ODYuMiAxMjU1Nzc0Ljgg MC4xMDIgMC4wNTQgMjUuMDAgMTAwLjAwCjQ4R0Igc2ltcGxlIG51bWEtNy1waW5uaW5nIGNv bG9jYXRlZCAyNzgwMDAyLjk0NTM3MSAyNzgxNDQxLjUgMjc4MzA1NS44IDI3ODQwMjMuNSAy Nzg1MDQ2LjkgMjc4NTU5NS4zIDAuMDQ2IDAuMDI5IDI1LjAwIDEwMC4wMAo0OEdCIHByZXBh cmVkIG51bWEtMC1tYXN0ZXIgbm9uZSAyOTIzNDk2LjU1MTEyNiAyOTA1Nzc0LjQgMjkyMjQ2 NS40IDI5MzkyNTQuNiAyOTYzNTcyLjkgMjk4NDA4NC4wIDAuMDQ0IDAuMDI5IDEwMC4wMCAx MDAuMDAKNDhHQiBwcmVwYXJlZCBudW1hLTAtbWFzdGVyIHJhbmRvbSA1ODc2MDMuMjM1Mzgx IDU4MjM1Ni43IDU4NjUxNS4yIDU5MTc5MC4wIDU5ODA2NC42IDYyNzY0OS4yIDAuMjE4IDAu MDg3IDEwMC4wMCAxMDAuMDAKNDhHQiBwcmVwYXJlZCBudW1hLTAtbWFzdGVyIGNvbG9jYXRl ZCAzMjk5Nzk0LjExODQzNiAzMjg3NTUwLjAgMzI5NDA1NS45IDMzMDY2MzguMSAzMzMyOTg5 LjMgMzMzNTQxMy4wIDAuMDM5IDAuMDExIDEwMC4wMCAxMDAuMDAKNDhHQiBwcmVwYXJlZCBu dW1hLTEtYnVmZmVycyBub25lIDI4MzEyMzguNTI0OTQxIDI4MTQzMjcuNSAyODMwMTAzLjgg Mjg0Nzg5MC4xIDI4NzM5MjguNiAyODg4MDExLjIgMC4wNDUgMC4wMzAgMTAwLjAwIDEwMC4w MAo0OEdCIHByZXBhcmVkIG51bWEtMS1idWZmZXJzIHJhbmRvbSA2MDk3OTQuNTA3NDI4IDYw MjE0NC4wIDYwNzUxNi4zIDYxODMzNS4yIDYyNjMyMi4yIDYzMjI2MS40IDAuMjEwIDAuMDg0 IDEwMC4wMCAxMDAuMDAKNDhHQiBwcmVwYXJlZCBudW1hLTEtYnVmZmVycyBjb2xvY2F0ZWQg MzIzMTc3NC4wMDU2NzcgMzIxODMyOS41IDMyMjU1NTEuNCAzMjQ0NzE2LjIgMzI2MzgxNy44 IDMyNjkwMjQuOCAwLjAzOSAwLjAxMSAxMDAuMDAgMTAwLjAwCjQ4R0IgcHJlcGFyZWQgbnVt YS0yLWxvY2FsYWxsb2Mgbm9uZSAyODkwNjE1LjYyMzE0MiAyODcxNDU5LjAgMjg4OTg5My42 IDI5MDY3NzEuOCAyOTI4Nzc5LjcgMjk0OTEzNy4zIDAuMDQ0IDAuMDI5IDEwMC4wMCAxMDAu MDAKNDhHQiBwcmVwYXJlZCBudW1hLTItbG9jYWxhbGxvYyByYW5kb20gNTk3MjYzLjU5MjM4 MiA1ODk1NDguMiA1OTU0MzYuNSA2MDI0NjMuNiA2MTQ4MTguNyA2MjQ3MjAuMiAwLjIxNCAw LjA4NSAxMDAuMDAgMTAwLjAwCjQ4R0IgcHJlcGFyZWQgbnVtYS0yLWxvY2FsYWxsb2MgY29s b2NhdGVkIDMzMTMyNzcuNTI3NzE5IDMyOTgyMzkuNyAzMzA3MDkyLjUgMzMyNzUxMy4wIDMz NDUzMzcuMyAzMzUxNzM4LjkgMC4wMzkgMC4wMTEgMTAwLjAwIDEwMC4wMAo0OEdCIHByZXBh cmVkIG51bWEtMy1uby10YWlsIG5vbmUgMjg4MDI1Ny42OTQ1OTggMjg2MDE2Ny4yIDI4Nzc5 ODIuMyAyODk1Nzc1LjAgMjkyNTU0MC45IDI5NDIwNDUuMyAwLjA0NCAwLjAyOCAxMDAuMDAg MTAwLjAwCjQ4R0IgcHJlcGFyZWQgbnVtYS0zLW5vLXRhaWwgcmFuZG9tIDU5ODkzMi40NjY3 MDEgNTkzODM1LjYgNTk5NjU3LjQgNjA0MjQ3LjEgNjEwMTUxLjkgNjEzNDk2LjYgMC4yMTMg MC4wODQgMTAwLjAwIDEwMC4wMAo0OEdCIHByZXBhcmVkIG51bWEtMy1uby10YWlsIGNvbG9j YXRlZCAzMjQyNjI5LjQ2OTk0NyAzMjMwMDUyLjAgMzIzNjA5NC4zIDMyNTQ5NTcuNSAzMjc0 NDg0LjUgMzI3OTk0NC40IDAuMDM5IDAuMDExIDEwMC4wMCAxMDAuMDAKNDhHQiBwcmVwYXJl ZCBudW1hLTQtZnJlZWxpc3Qgbm9uZSAyOTIzMTI3Ljg1MjE5NSAyOTA4OTY4LjkgMjkyNjEy OS45IDI5NDcxMjcuNyAyOTc5NzQzLjMgMjk5NzcwMy4wIDAuMDQ0IDAuMTU3IDEwMC4wMCAx MDAuMDAKNDhHQiBwcmVwYXJlZCBudW1hLTQtZnJlZWxpc3QgcmFuZG9tIDE1MTMxMjkuNDEz NDc4IDE1MTUwOTUuNCAxNTE2NzM3LjIgMTUxODIxMi43IDE1MTk2MTUuNSAxNTIwMzQ4Ljgg MC4wODQgMC4xNTIgMTAwLjAwIDEwMC4wMAo0OEdCIHByZXBhcmVkIG51bWEtNC1mcmVlbGlz dCBjb2xvY2F0ZWQgMzM5NTI1Ni45MDEwMTcgMzM4NzU4Ny41IDMzOTA5NzMuNyAzNDA2MDE0 LjcgMzQyNTY5NS43IDM0MzExODguOSAwLjAzOCAwLjA3MCAxMDAuMDAgMTAwLjAwCjQ4R0Ig cHJlcGFyZWQgbnVtYS01LWNsb2Nrc3dlZXAgbm9uZSAyOTY1NDM3LjE0NTAzOCAyOTQ5OTI0 LjMgMjk2NTU2MC41IDI5ODU1OTkuNyAzMDA4Nzg4LjAgMzAyMDM2Ny4wIDAuMDQzIDAuMDQx IDI1LjAwIDEwMC4wMAo0OEdCIHByZXBhcmVkIG51bWEtNS1jbG9ja3N3ZWVwIHJhbmRvbSA2 MzI0NDkuMzE0NTY1IDYwMzc5Mi42IDYxMzk4Ni42IDYzODg4MC42IDc1ODE3OS4zIDgyNDQz NS4yIDAuMjAyIDAuMDk5IDI1LjAwIDEwMC4wMAo0OEdCIHByZXBhcmVkIG51bWEtNS1jbG9j a3N3ZWVwIGNvbG9jYXRlZCAzNDc2ODY1LjU2MTY2NCAzNDc3NDU4LjIgMzQ3ODkzMC40IDM0 ODAyOTMuNiAzNDgyMTUxLjMgMzQ4MzEyNi40IDAuMDM3IDAuMDI4IDI1LjAwIDEwMC4wMAo0 OEdCIHByZXBhcmVkIG51bWEtNi1wZ3Byb2Mgbm9uZSAzMDA1NTY5LjkyNzg2NSAyOTg5OTc2 LjkgMzAwNzU2Ni44IDMwMjM0MzQuOSAzMDUyMDQ5LjUgMzA3MzEwOC4wIDAuMDQyIDAuMDQx IDI1LjAwIDEwMC4wMAo0OEdCIHByZXBhcmVkIG51bWEtNi1wZ3Byb2MgcmFuZG9tIDYwNzY4 MC41NjIyNTMgNTc5NDA4LjkgNTg0ODAzLjggNjAwODE1LjIgNjg5ODk4LjQgOTc1NTMxLjQg MC4yMTAgMC4xMDQgMjUuMDAgMTAwLjAwCjQ4R0IgcHJlcGFyZWQgbnVtYS02LXBncHJvYyBj b2xvY2F0ZWQgMzQ4NjQ2Ny45MDU5OTMgMzQ4Nzg1NS40IDM0ODkxOTguNyAzNDkwMzI0LjEg MzQ5MjE5OS4zIDM0OTI4OTQuNiAwLjAzNyAwLjAzNSAyNS4wMCAxMDAuMDAKNDhHQiBwcmVw YXJlZCBudW1hLTctcGlubmluZyBub25lIDMxNzc4NjIuMTI0NDM3IDMxNzE3ODYuMiAzMTg1 ODc2LjcgMzIwMTM3OC4wIDMyMTQ0OTAuNiAzMjE2MTM3LjAgMC4wNDAgMC4wNDUgMjUuMDAg MTAwLjAwCjQ4R0IgcHJlcGFyZWQgbnVtYS03LXBpbm5pbmcgcmFuZG9tIDYyNjIxNC4wODM1 NjggNjAyMzg2LjIgNjEwNjk3LjUgNjE5MzM0LjMgNzQyMjQxLjIgOTA2NjE1LjEgMC4yMDQg MC4wOTUgMjUuMDAgMTAwLjAwCjQ4R0IgcHJlcGFyZWQgbnVtYS03LXBpbm5pbmcgY29sb2Nh dGVkIDM1NjIzOTAuNDg2NzUzIDM1NjMwMTYuNSAzNTY0MTk2LjggMzU2NTEzNS4wIDM1NjY2 MzkuMyAzNTY4MTUzLjIgMC4wMzYgMC4wMjkgMjUuMDAgMTAwLjAwCg== --------------ffSr0c8hlIKbvluiJSw5Id5o Content-Type: application/x-shellscript; name="run-huge-pages.sh" Content-Disposition: attachment; filename="run-huge-pages.sh" Content-Transfer-Encoding: base64 IyEvdXNyL2Jpbi9lbnYgYmFzaAoKc2V0IC1lCgpEQVRBRElSPS9tbnQvZGF0YS9kYXRhLW51 bWEKUEFUSF9PTEQ9JFBBVEgKCldBUk1VUF9DTElFTlRTPTEKV0FSTVVQX0RVUkFUSU9OPTMw MAoKQ0xJRU5UUz0xMjgKRFVSQVRJT049MzAwCgpUUz0kKGRhdGUgKyVZJW0lZC0lSCVNJVMp CkxBQkVMPSQxCgpPVVRESVI9JFRTLSRMQUJFTAoKbWtkaXIgJE9VVERJUgoKZWNobyAnc2hh cmVkX2J1ZmZlcnMgbW9kZSBidWlsZCBwaW5uaW5nIHRwcyB0cHNfMjUgdHBzXzUwIHRwc183 NSB0cHNfOTUgdHBzXzk5IGxhdF9hdmcgbGF0X3N0ZGRldiBzYl93YXJtdXAgc2JfYmVuY2ht YXJrJyA+PiAkT1VURElSL3Jlc3VsdHMuY3N2Cgpmb3Igc2IgaW4gMzJHQiAxNkdCIDQ4R0I7 IGRvCgoJZm9yIG0gaW4gc2ltcGxlIHByZXBhcmVkOyBkbwoKCQlmb3IgYiBpbiBudW1hLTAt bWFzdGVyIG51bWEtMS1idWZmZXJzIG51bWEtMi1sb2NhbGFsbG9jIG51bWEtMy1uby10YWls IG51bWEtNC1mcmVlbGlzdCBudW1hLTUtY2xvY2tzd2VlcCBudW1hLTYtcGdwcm9jIG51bWEt Ny1waW5uaW5nOyBkbwoKCQkJaWYgWyAiJGIiID09ICJudW1hLTAtbWFzdGVyIiBdOyB0aGVu CgoJCQkJY3AgcG9zdGdyZXNxbC5jb25mICREQVRBRElSCgkJCQllY2hvICJzaGFyZWRfYnVm ZmVycyA9ICRzYiIgPj4gJERBVEFESVIvcG9zdGdyZXNxbC5jb25mCgoJCQllbGlmIFsgIiRi IiA9PSAibnVtYS0xLWJ1ZmZlcnMiIF07IHRoZW4KCgkJCQllY2hvICJudW1hX2J1ZmZlcnNf aW50ZXJsZWF2ZSA9IG9uIiA+PiAkREFUQURJUi9wb3N0Z3Jlc3FsLmNvbmYKCgkJCWVsaWYg WyAiJGIiID09ICJudW1hLTItbG9jYWxhbGxvYyIgXTsgdGhlbgoKCQkJCWVjaG8gIm51bWFf bG9jYWxhbGxvYyA9IG9uIiA+PiAkREFUQURJUi9wb3N0Z3Jlc3FsLmNvbmYKCgkJCWVsaWYg WyAiJGIiID09ICJudW1hLTMtbm8tdGFpbCIgXTsgdGhlbgoKCQkJCSMgbm90aGluZyB0byBk byBoZXJlCgkJCQk6CgoJCQllbGlmIFsgIiRiIiA9PSAibnVtYS00LWZyZWVsaXN0IiBdOyB0 aGVuCgoJCQkJZWNobyAibnVtYV9wYXJ0aXRpb25fZnJlZWxpc3QgPSBvbiIgPj4gJERBVEFE SVIvcG9zdGdyZXNxbC5jb25mCgoJCQllbGlmIFsgIiRiIiA9PSAibnVtYS01LWNsb2Nrc3dl ZXAiIF07IHRoZW4KCgkJCQkjIG5vdGhpbmcgdG8gZG8gaGVyZQoJCQkJOgoKCQkJZWxpZiBb ICIkYiIgPT0gIm51bWEtNi1wZ3Byb2MiIF07IHRoZW4KCgkJCQllY2hvICJudW1hX3Byb2Nz X2ludGVybGVhdmUgPSBvbiIgPj4gJERBVEFESVIvcG9zdGdyZXNxbC5jb25mCgoJCQllbGlm IFsgIiRiIiA9PSAibnVtYS03LXBpbm5pbmciIF07IHRoZW4KCgkJCQllY2hvICJudW1hX3By b2NzX3BpbiA9IG9uIiA+PiAkREFUQURJUi9wb3N0Z3Jlc3FsLmNvbmYKCgkJCWZpCgoJCQll eHBvcnQgUEFUSD0vaG9tZS9henVyZXVzZXIvYnVpbGRzLyRiL2JpbjokUEFUSF9PTEQKCgkJ CWZvciBwaW4gaW4gbm9uZSByYW5kb20gY29sb2NhdGVkOyBkbwoKCQkJCWVjaG8gIj09PT09 PT09PT0gJHNiIC8gJG0gLyAkYiAvICRwaW4gPT09PT09PT09PSIKCgkJCQllY2hvICJodWdl X3BhZ2VzID0gb2ZmIiA+PiAkREFUQURJUi9wb3N0Z3Jlc3FsLmNvbmYKCQkJCXBnX2N0bCAt RCAkREFUQURJUiAtbCAkT1VURElSL3BnLSRiLmxvZyBzdGFydCA+PiAkT1VURElSL2RlYnVn LmxvZyAyPiYxCgoJCQkJbnBhZ2VzPSQocHNxbCAtdCAtQSB0ZXN0IC1jICJzaG93IHNoYXJl ZF9tZW1vcnlfc2l6ZV9pbl9odWdlX3BhZ2VzIikKCgkJCQllY2hvIG5wYWdlcyAkbnBhZ2Vz CgoJCQkJcGdfY3RsIC1EICREQVRBRElSIC1sICRPVVRESVIvcGctJGIubG9nIHN0b3AgPj4g JE9VVERJUi9kZWJ1Zy5sb2cgMj4mMQoKCQkJCXN1ZG8gLi9yZXNlcnZlLXBhZ2VzLnNoICQo KG5wYWdlcyArIDMwMDApKQoKCQkJCWVjaG8gImh1Z2VfcGFnZXMgPSBvbiIgPj4gJERBVEFE SVIvcG9zdGdyZXNxbC5jb25mCgkJCQlwZ19jdGwgLUQgJERBVEFESVIgLWwgJE9VVERJUi9w Zy0kYi5sb2cgc3RhcnQgPj4gJE9VVERJUi9kZWJ1Zy5sb2cgMj4mMQoKCQkJCXBzcWwgLXQg LUEgdGVzdCAtYyAic2hvdyBodWdlX3BhZ2VzX3N0YXR1cyIKCgkJCQljYXQgL3Byb2MvbWVt aW5mbyB8IGdyZXAgSHVnZVBhZ2VzCgoJCQkJbnVtYXN0YXQgLWNtCgoKCQkJCSMgdGhlIHdo b2xlIHdhcm11cCBpcyBkb25lIG9uIHRoZSBmaXJzdCBjb3JlIC8gbm9kZSwgdG8gbWFrZSBp dCB1bmJhbGFuY2VkCgoJCQkJIyBxdWVyeSB0aGUgTlVNQSBzdGF0ZSAodGhpcyBsaWtlbHkg YWxzbyBmb3JjZXMgYWxsb2NhdGlvbiB0byBhIHNpbmdsZSBub2RlKQoJCQkJbnVtYWN0bCAt LXBoeXNjcHViaW5kPTEgcHNxbCB0ZXN0IC1jICJzZWxlY3QgbnVtYV9ub2RlLCBjb3VudCgq KSBmcm9tIHBnX2J1ZmZlcmNhY2hlX251bWEgZ3JvdXAgYnkgbnVtYV9ub2RlIgoKCQkJCSMg d2FybXVwIHVzaW5nIGEgc2luZ2xlIGJhY2tlbmQsIHRvIGNhdXNlIGltYmFsYW5jZQoJCQkJ bnVtYWN0bCAtLXBoeXNjcHViaW5kPTEgcGdiZW5jaCAtTSAkbSAtUyAtYyAkV0FSTVVQX0NM SUVOVFMgLWogJFdBUk1VUF9DTElFTlRTIC1UICRXQVJNVVBfRFVSQVRJT04gLVAgMSB0ZXN0 ID4gJE9VVERJUi93YXJtdXAtJGItJHNiLSRtLSRwaW4ubG9nIDI+JjEKCgkJCQkJIyBxdWVy eSB0aGUgTlVNQSBzdGF0ZSAodGhpcyBsaWtlbHkgYWxzbyBmb3JjZXMgYWxsb2NhdGlvbiB0 byBhIHNpbmdsZSBub2RlKQoJCQkJCW51bWFjdGwgLS1waHlzY3B1YmluZD0xIHBzcWwgdGVz dCAtYyAic2VsZWN0IG51bWFfbm9kZSwgY291bnQoKikgZnJvbSBwZ19idWZmZXJjYWNoZV9u dW1hIGdyb3VwIGJ5IG51bWFfbm9kZSIKCgoJCQkJIyB3aGF0IGZyYWN0aW9uIG9mIHNoYXJl ZCBidWZmZXJzIGlzIHVzZWQgYWZ0ZXIgd2FybXVwPwoJCQkJc2Jfd2FybXVwPSQocHNxbCB0 ZXN0IC10IC1BIC1jICJzZWxlY3Qgcm91bmQoY291bnQocmVsZmlsZW5vZGUpICogMTAwLjAg LyBjb3VudCgqKSwgMikgZnJvbSBwZ19idWZmZXJjYWNoZSIpCgoKCQkJCWNhdCAvcHJvYy9t ZW1pbmZvIHwgZ3JlcCBIdWdlUGFnZXMKCgkJCQludW1hc3RhdCAtY20KCgoJCQkJIyBub3cg cnVuIGEgcHJvcGVyIGJlbmNobWFyayB3aXRoIG1hbnkgY2xpZW50cwoJCQkJaWYgWyAiJHBp biIgPT0gIm5vbmUiIF07IHRoZW4KCQkJCQlwZ2JlbmNoIC1NICRtIC1TIC1jICRDTElFTlRT IC1qICRDTElFTlRTIC1UICREVVJBVElPTiAtUCAxIHRlc3QgPiAkT1VURElSL3BnYmVuY2gt JGItJHNiLSRtLSRwaW4ubG9nIDI+JjEKCQkJCWVsc2UKCQkJCQlwZ2JlbmNoIC1NICRtIC1T IC1jICRDTElFTlRTIC1qICRDTElFTlRTIC1UICREVVJBVElPTiAtUCAxIC0tcGluLWNwdXMg JHBpbiB0ZXN0ID4gJE9VVERJUi9wZ2JlbmNoLSRiLSRzYi0kbS0kcGluLmxvZyAyPiYxCgkJ CQlmaQoKCQkJCXRwcz0kKGdyZXAgJ3RwcyA9ICcgJE9VVERJUi9wZ2JlbmNoLSRiLSRzYi0k bS0kcGluLmxvZyB8IGF3ayAne3ByaW50ICQzfScpCgkJCQlsYXRfYXZnPSQoZ3JlcCAnbGF0 ZW5jeSBhdmVyYWdlJyAkT1VURElSL3BnYmVuY2gtJGItJHNiLSRtLSRwaW4ubG9nIHwgYXdr ICd7cHJpbnQgJDR9JykKCQkJCWxhdF9zdGRkZXY9JChncmVwICdsYXRlbmN5IHN0ZGRldicg JE9VVERJUi9wZ2JlbmNoLSRiLSRzYi0kbS0kcGluLmxvZyB8IGF3ayAne3ByaW50ICQ0fScp CgoJCQkJIyBjYWxjdWxhdGUgVFBTIHBlcmNlbnRpbGVzCgkJCQljPSQoZ3JlcCBwcm9ncmVz cyAkT1VURElSL3BnYmVuY2gtJGItJHNiLSRtLSRwaW4ubG9nIHwgd2MgLWwpCgkJCQl0cHNf MjU9JChncmVwIHByb2dyZXNzICRPVVRESVIvcGdiZW5jaC0kYi0kc2ItJG0tJHBpbi5sb2cg fCBhd2sgJ3twcmludCAkNH0nIHwgc29ydCAtbiB8IGhlYWQgLW4gJCgoYy80KSkgfCB0YWls IC1uIDEpCgkJCQl0cHNfNTA9JChncmVwIHByb2dyZXNzICRPVVRESVIvcGdiZW5jaC0kYi0k c2ItJG0tJHBpbi5sb2cgfCBhd2sgJ3twcmludCAkNH0nIHwgc29ydCAtbiB8IGhlYWQgLW4g JCgoYy8yKSkgfCB0YWlsIC1uIDEpCgkJCQl0cHNfNzU9JChncmVwIHByb2dyZXNzICRPVVRE SVIvcGdiZW5jaC0kYi0kc2ItJG0tJHBpbi5sb2cgfCBhd2sgJ3twcmludCAkNH0nIHwgc29y dCAtbiB8IGhlYWQgLW4gJCgoYyozLzQpKSB8IHRhaWwgLW4gMSkKCQkJCXRwc185NT0kKGdy ZXAgcHJvZ3Jlc3MgJE9VVERJUi9wZ2JlbmNoLSRiLSRzYi0kbS0kcGluLmxvZyB8IGF3ayAn e3ByaW50ICQ0fScgfCBzb3J0IC1uIHwgaGVhZCAtbiAkKChjKjk1LzEwMCkpIHwgdGFpbCAt biAxKQoJCQkJdHBzXzk5PSQoZ3JlcCBwcm9ncmVzcyAkT1VURElSL3BnYmVuY2gtJGItJHNi LSRtLSRwaW4ubG9nIHwgYXdrICd7cHJpbnQgJDR9JyB8IHNvcnQgLW4gfCBoZWFkIC1uICQo KGMqOTkvMTAwKSkgfCB0YWlsIC1uIDEpCgoJCQkJc2JfYmVuY2htYXJrPSQocHNxbCB0ZXN0 IC10IC1BIC1jICJzZWxlY3Qgcm91bmQoY291bnQocmVsZmlsZW5vZGUpICogMTAwLjAgLyBj b3VudCgqKSwgMikgZnJvbSBwZ19idWZmZXJjYWNoZSIpCgoJCQkJZWNobyAkc2IgJG0gJGIg JHBpbiAkdHBzICR0cHNfMjUgJHRwc181MCAkdHBzXzc1ICR0cHNfOTUgJHRwc185OSAkbGF0 X2F2ZyAkbGF0X3N0ZGRldiAkc2Jfd2FybXVwICRzYl9iZW5jaG1hcmsgPj4gJE9VVERJUi9y ZXN1bHRzLmNzdgoKCQkJCXBnX2N0bCAtRCAkREFUQURJUiAtbCAkT1VURElSL3BnLSRiLmxv ZyBzdG9wID4+ICRPVVRESVIvZGVidWcubG9nIDI+JjEKCgkJCWRvbmUKCgkJZG9uZQoKCWRv bmUKCmRvbmUK --------------ffSr0c8hlIKbvluiJSw5Id5o Content-Type: text/csv; charset=UTF-8; name="numa-xeon.csv" Content-Disposition: attachment; filename="numa-xeon.csv" Content-Transfer-Encoding: base64 c2hhcmVkX2J1ZmZlcnMgbW9kZSBidWlsZCB0cHMgdHBzXzI1IHRwc181MCB0cHNfNzUgdHBz Xzk1IHRwc185OSBsYXRfYXZnIGxhdF9zdGRkZXYgc2Jfd2FybXVwIHNiX2JlbmNobWFyawox NkdCIHNpbXBsZSBudW1hLTAtbWFzdGVyIG5vbmUgNDM1NjYwLjgzNTg0OSA0MzY1NjkuNyA0 MzcyMDcuMCA0Mzc3NjkuMSA0Mzg0NTIuNyA0MzkwODAuOSAwLjEwMSAwLjAxMSAxMDAuMDAg MTAwLjAwCjE2R0Igc2ltcGxlIG51bWEtMC1tYXN0ZXIgcmFuZG9tIDQzNTA3OS40NTczNjkg NDM3MTE5LjMgNDM3NTA2LjEgNDM3NzU2LjMgNDM4MTM0LjAgNDM4MjkxLjUgMC4xMDEgMC4w MjQgMTAwLjAwIDEwMC4wMAoxNkdCIHNpbXBsZSBudW1hLTAtbWFzdGVyIGNvbG9jYXRlZCA0 MzYzNTguNzIyNDUyIDQzNzQwNi42IDQzNzYxNS4zIDQzNzg3NC4wIDQzODA0Ni4zIDQzODEx NS4zIDAuMTAwIDAuMDEzIDEwMC4wMCAxMDAuMDAKMTZHQiBzaW1wbGUgbnVtYS0xLWJ1ZmZl cnMgbm9uZSA0Mzk0MjcuMzcyNDIyIDQ0MDM2NS45IDQ0MDk5Ny43IDQ0MTYyMi43IDQ0MjY5 My40IDQ0MzIyNS4wIDAuMTAwIDAuMDEwIDEwMC4wMCAxMDAuMDAKMTZHQiBzaW1wbGUgbnVt YS0xLWJ1ZmZlcnMgcmFuZG9tIDQzNTAyNy44NDA0NzAgNDM3MzcxLjggNDM3NTQ4LjYgNDM3 Njc0LjQgNDM3ODM1LjEgNDM3OTc3LjEgMC4xMDEgMC4wMjQgMTAwLjAwIDEwMC4wMAoxNkdC IHNpbXBsZSBudW1hLTEtYnVmZmVycyBjb2xvY2F0ZWQgNDUwNTk1LjI5MTAzOCA0NTE0MTIu NiA0NTE4OTYuMiA0NTIyNjkuOSA0NTI3MDYuOCA0NTI5MjYuNCAwLjA5NyAwLjAxNCAxMDAu MDAgMTAwLjAwCjE2R0Igc2ltcGxlIG51bWEtMi1sb2NhbGFsbG9jIG5vbmUgNDM2MTM0LjE4 ODc0NyA0MzcxMTguOCA0Mzc2NzQuNCA0MzgxMDkuNSA0MzkxMjguNSA0Mzk2NTUuMSAwLjEw MSAwLjAxMSAxMDAuMDAgMTAwLjAwCjE2R0Igc2ltcGxlIG51bWEtMi1sb2NhbGFsbG9jIHJh bmRvbSA0Mzc1NzIuNDYwMDk1IDQzOTY2NS41IDQ0MDAyOS4yIDQ0MDI1Ny43IDQ0MDUxNy4z IDQ0MDY3OS42IDAuMTAwIDAuMDIzIDEwMC4wMCAxMDAuMDAKMTZHQiBzaW1wbGUgbnVtYS0y LWxvY2FsYWxsb2MgY29sb2NhdGVkIDQ0NDMwMC40NzE2NjAgNDQ1NDA2LjkgNDQ1NjE4LjAg NDQ1ODI1LjAgNDQ2MDk0LjYgNDQ2MjQ2LjQgMC4wOTkgMC4wMTQgMTAwLjAwIDEwMC4wMAox NkdCIHNpbXBsZSBudW1hLTMtbm8tdGFpbCBub25lIDQ0Mjk2Ni4wMTg5OTcgNDQzODY4LjQg NDQ0NTIxLjMgNDQ1MTgzLjIgNDQ2MDQ4LjMgNDQ2NjU2LjcgMC4wOTkgMC4wMjMgMTAwLjAw IDEwMC4wMAoxNkdCIHNpbXBsZSBudW1hLTMtbm8tdGFpbCByYW5kb20gNDI0NDgxLjczOTM0 OSA0MjY1NzIuNyA0MjY3NjkuOCA0MjY5ODYuMSA0MjcxNTguOCA0MjcyNTUuOCAwLjEwMyAw LjAyNCAxMDAuMDAgMTAwLjAwCjE2R0Igc2ltcGxlIG51bWEtMy1uby10YWlsIGNvbG9jYXRl ZCA0NDY1MTAuNjcwODA4IDQ0Nzc0My4wIDQ0Nzk5Ni4yIDQ0ODIyNC4yIDQ0ODQ4My42IDQ0 ODY2NS44IDAuMDk4IDAuMDE0IDEwMC4wMCAxMDAuMDAKMTZHQiBzaW1wbGUgbnVtYS00LWZy ZWVsaXN0IG5vbmUgNDM0MjIxLjcyNTgyMiA0MzUyMzQuMyA0MzU4NjcuMSA0MzY0NTYuOSA0 MzcxODAuOCA0Mzc2ODIuNyAwLjEwMSAwLjAyNCAxMDAuMDAgMTAwLjAwCjE2R0Igc2ltcGxl IG51bWEtNC1mcmVlbGlzdCByYW5kb20gNDMzMTUyLjUwNDk1OSA0MzU1MzQuOSA0MzU4MTAu MyA0MzYwNzIuOCA0MzY0MTYuNSA0MzY1NzguMCAwLjEwMSAwLjAyOCAxMDAuMDAgMTAwLjAw CjE2R0Igc2ltcGxlIG51bWEtNC1mcmVlbGlzdCBjb2xvY2F0ZWQgNDU1NjIyLjU5NTI4MSA0 NTY4MzIuMCA0NTcxMDIuOCA0NTczNDEuOCA0NTc2NjUuMSA0NTc4ODIuMyAwLjA5NiAwLjAx OSAxMDAuMDAgMTAwLjAwCjE2R0Igc2ltcGxlIG51bWEtNS1jbG9ja3N3ZWVwIG5vbmUgNDQw ODE0LjMyNzUyOSA0NDE5OTkuOCA0NDI0NzcuMSA0NDMwOTEuMSA0NDM4MzYuMiA0NDQ2ODcu MCAwLjA5OSAwLjAxNSA1MC4wMCAxMDAuMDAKMTZHQiBzaW1wbGUgbnVtYS01LWNsb2Nrc3dl ZXAgcmFuZG9tIDQzMjA5OC45NzQ3ODMgNDM0NTA5LjMgNDM0NzMwLjAgNDM0ODcxLjcgNDM1 MDYwLjggNDM1MTgwLjAgMC4xMDIgMC4wMjcgMjUuMDEgMTAwLjAwCjE2R0Igc2ltcGxlIG51 bWEtNS1jbG9ja3N3ZWVwIGNvbG9jYXRlZCA0NDcxMjMuOTY3NzE1IDQ0ODQyNS40IDQ0ODU4 My40IDQ0ODc3NC44IDQ0ODk1Ny40IDQ0OTA0Mi42IDAuMDk4IDAuMDE4IDUwLjAwIDEwMC4w MAoxNkdCIHNpbXBsZSBudW1hLTYtcGdwcm9jIG5vbmUgNDQ0NTQyLjE1MTU5NyA0NDU4MjYu MyA0NDYzNTYuMSA0NDY4NTYuOSA0NDc2ODEuNSA0NDgyODcuMSAwLjA5OSAwLjAxNyAyNS4w MSAxMDAuMDAKMTZHQiBzaW1wbGUgbnVtYS02LXBncHJvYyByYW5kb20gNDM3ODI4LjkwNjYx NSA0NDAzNzMuNiA0NDA2ODkuNSA0NDA4NDYuNiA0NDEwNTguMiA0NDExNzguMCAwLjEwMCAw LjAyOCAyNS4wMSAxMDAuMDAKMTZHQiBzaW1wbGUgbnVtYS02LXBncHJvYyBjb2xvY2F0ZWQg NDU1MDQyLjUzODA1NCA0NTY1NzAuNiA0NTY3MTIuMiA0NTY4NDkuOCA0NTcwMTEuMyA0NTcx MDcuNSAwLjA5NiAwLjAxNyA1MC4wMSAxMDAuMDAKMTZHQiBzaW1wbGUgbnVtYS03LXBpbm5p bmcgbm9uZSA0NDE2NzIuOTI2NDE2IDQ0MjgwNC41IDQ0MzQzMi43IDQ0NDEwNS4wIDQ0NTEy OC4wIDQ0NjAzOS4xIDAuMDk5IDAuMDE3IDI2Ljg2IDEwMC4wMAoxNkdCIHNpbXBsZSBudW1h LTctcGlubmluZyByYW5kb20gNDI2MjIzLjA0NTIyNCA0Mjg0NzcuOSA0Mjg2NzcuNCA0Mjg4 NTEuMCA0MjkwMzYuMiA0MjkxMDUuMCAwLjEwMyAwLjAyNiA1MC4wMSAxMDAuMDAKMTZHQiBz aW1wbGUgbnVtYS03LXBpbm5pbmcgY29sb2NhdGVkIDQ1MDM5Mi4xMTM0NTAgNDUxODIyLjYg NDUxOTI0LjcgNDUyMDI4LjkgNDUyMTgwLjQgNDUyMjM4LjEgMC4wOTcgMC4wMTcgNTAuMDEg MTAwLjAwCjE2R0IgcHJlcGFyZWQgbnVtYS0wLW1hc3RlciBub25lIDc4MDI3MC41MDQzMjEg NzgxNDUyLjIgNzgzMzY1LjMgNzg0ODA1LjggNzg3MzQyLjcgNzg4NTIzLjIgMC4wNTYgMC4w MDggMTAwLjAwIDEwMC4wMAoxNkdCIHByZXBhcmVkIG51bWEtMC1tYXN0ZXIgcmFuZG9tIDc0 MDMxOS40NjAyNjEgNzQ0NjgyLjcgNzQ1MzQzLjggNzQ1OTcwLjggNzQ2Njc5LjkgNzQ3MTI3 LjAgMC4wNTkgMC4wMjIgMTAwLjAwIDEwMC4wMAoxNkdCIHByZXBhcmVkIG51bWEtMC1tYXN0 ZXIgY29sb2NhdGVkIDgwODc0NS4xNzQ4NzkgODEwOTc0LjkgODExNTcwLjYgODEyMDU0LjIg ODEyODY2LjUgODEzMzcwLjAgMC4wNTQgMC4wMTAgMTAwLjAwIDEwMC4wMAoxNkdCIHByZXBh cmVkIG51bWEtMS1idWZmZXJzIG5vbmUgNzc5MDYxLjU0OTY2NiA3ODAzNTUuMCA3ODIwOTgu NyA3ODM4NTkuNCA3ODYyNDMuNiA3ODc0ODguMCAwLjA1NiAwLjAwOCAxMDAuMDAgMTAwLjAw CjE2R0IgcHJlcGFyZWQgbnVtYS0xLWJ1ZmZlcnMgcmFuZG9tIDczMTkzMS41MjUzMTEgNzM1 OTc5LjggNzM2Nzc0LjMgNzM3NTYwLjEgNzM4MTI3LjUgNzM4MzM5LjIgMC4wNjAgMC4wMjIg MTAwLjAwIDEwMC4wMAoxNkdCIHByZXBhcmVkIG51bWEtMS1idWZmZXJzIGNvbG9jYXRlZCA4 MzQwNDMuODQ4MjE2IDgzNTk2MC43IDgzNjcwNC4yIDgzNzc2NS41IDgzODUzMS4wIDgzODc4 MC40IDAuMDUyIDAuMDEwIDEwMC4wMCAxMDAuMDAKMTZHQiBwcmVwYXJlZCBudW1hLTItbG9j YWxhbGxvYyBub25lIDc3NjY4Ni40MjMxMDcgNzc4MDcwLjMgNzc5NzM4LjkgNzgxMzMyLjcg NzgzNzM0LjcgNzg0NzQ5LjUgMC4wNTYgMC4wMDggMTAwLjAwIDEwMC4wMAoxNkdCIHByZXBh cmVkIG51bWEtMi1sb2NhbGFsbG9jIHJhbmRvbSA3NDYwNzEuMDIxMDMyIDc1MDYwNi4wIDc1 MTA1NC43IDc1MTUyMC4yIDc1MjE5MC40IDc1MjQ3Ny4yIDAuMDU5IDAuMDIyIDEwMC4wMCAx MDAuMDAKMTZHQiBwcmVwYXJlZCBudW1hLTItbG9jYWxhbGxvYyBjb2xvY2F0ZWQgODQ1MTk0 LjMwMTUyNiA4NDc5MTkuOCA4NDgyNzAuOSA4NDg1ODUuNyA4NDkwNTYuNiA4NDkzMjQuNSAw LjA1MiAwLjAxMSAxMDAuMDAgMTAwLjAwCjE2R0IgcHJlcGFyZWQgbnVtYS0zLW5vLXRhaWwg bm9uZSA3Njc0NzIuNjYxMzY0IDc2ODY1NC41IDc3MDQyNi41IDc3MjMyMi45IDc3NDE2MC4z IDc3NTM1NC43IDAuMDU3IDAuMDA4IDEwMC4wMCAxMDAuMDAKMTZHQiBwcmVwYXJlZCBudW1h LTMtbm8tdGFpbCByYW5kb20gNzM1MTAwLjYyNzI3MyA3Mzk3NjUuNSA3NDAzOTkuOSA3NDA4 MzcuMSA3NDE0OTkuNCA3NDE4MDguNSAwLjA2MCAwLjAyMiAxMDAuMDAgMTAwLjAwCjE2R0Ig cHJlcGFyZWQgbnVtYS0zLW5vLXRhaWwgY29sb2NhdGVkIDgyNDg5Ny4wOTg5ODQgODI3Mjg4 LjIgODI3ODUyLjIgODI4NDMwLjggODI4OTIwLjIgODI5MjI2LjMgMC4wNTMgMC4wMTAgMTAw LjAwIDEwMC4wMAoxNkdCIHByZXBhcmVkIG51bWEtNC1mcmVlbGlzdCBub25lIDc1OTc3Ni42 MDU1NzEgNzYwODYxLjMgNzYyOTA5LjQgNzY0MjgxLjAgNzY2MzU5LjggNzY4NTIxLjkgMC4w NTggMC4wMTQgMTAwLjAwIDEwMC4wMAoxNkdCIHByZXBhcmVkIG51bWEtNC1mcmVlbGlzdCBy YW5kb20gNzI5ODAwLjY4OTA2NSA3MzQzMzcuNCA3MzQ5NDcuMSA3MzU0MjguOCA3MzYyMTgu NCA3MzY5NzUuNCAwLjA2MCAwLjA0MSAxMDAuMDAgMTAwLjAwCjE2R0IgcHJlcGFyZWQgbnVt YS00LWZyZWVsaXN0IGNvbG9jYXRlZCA4NDY5MDguMjIyNjEyIDg0OTYxNy4yIDg1MDE5Ny4w IDg1MDc0MS4zIDg1MTMyOC4yIDg1MTc3NC43IDAuMDUyIDAuMDE5IDEwMC4wMCAxMDAuMDAK MTZHQiBwcmVwYXJlZCBudW1hLTUtY2xvY2tzd2VlcCBub25lIDc4MzQ0NC4yNTM0NzQgNzg1 MTIyLjUgNzg2ODQwLjMgNzg4MzU0LjIgNzkwNjAyLjAgNzkyMDQwLjcgMC4wNTYgMC4wMTIg NTAuMDEgMTAwLjAwCjE2R0IgcHJlcGFyZWQgbnVtYS01LWNsb2Nrc3dlZXAgcmFuZG9tIDcz ODI3NC4wNzQ3OTUgNzQyNzcwLjYgNzQzNDkyLjAgNzQzOTM1LjMgNzQ0NDcxLjcgNzQ0Nzk5 LjQgMC4wNTkgMC4wMjMgNTAuMDAgMTAwLjAwCjE2R0IgcHJlcGFyZWQgbnVtYS01LWNsb2Nr c3dlZXAgY29sb2NhdGVkIDg3NDEyOS43MjY3NTggODc3NzM0LjggODc4MjM4LjUgODc4NTA5 LjIgODc4OTM3LjMgODc5MzYyLjIgMC4wNTAgMC4wMTMgNTAuMDEgMTAwLjAwCjE2R0IgcHJl cGFyZWQgbnVtYS02LXBncHJvYyBub25lIDc3NjMyMC42MDEyNzIgNzc3NjcyLjggNzc5NTE3 LjEgNzgxMzUyLjUgNzgzMzYwLjcgNzg2NjQxLjAgMC4wNTYgMC4wMTIgNTAuMDAgMTAwLjAw CjE2R0IgcHJlcGFyZWQgbnVtYS02LXBncHJvYyByYW5kb20gNzQ4NDczLjg2MjU2OSA3NTI3 MzMuMCA3NTM2MTQuNyA3NTQ3NjIuOCA3NTU0NzEuMSA3NTU5NTQuMyAwLjA1OSAwLjAyNCA1 MC4wMCAxMDAuMDAKMTZHQiBwcmVwYXJlZCBudW1hLTYtcGdwcm9jIGNvbG9jYXRlZCA4NTg5 MDAuMDU0MjU2IDg2MTg2Ny44IDg2MjMxNi42IDg2MjY1NC4xIDg2MzA3Ny41IDg2MzM1OC41 IDAuMDUxIDAuMDEzIDUwLjAxIDEwMC4wMAoxNkdCIHByZXBhcmVkIG51bWEtNy1waW5uaW5n IG5vbmUgNzc4Mjg2LjE4ODkyMCA3ODAwMTguNyA3ODE0NjIuOCA3ODI2NzUuOCA3ODQ1ODYu NiA3ODY2MzcuMSAwLjA1NiAwLjAxNCAyNS4wMSAxMDAuMDAKMTZHQiBwcmVwYXJlZCBudW1h LTctcGlubmluZyByYW5kb20gNzQ2MjUwLjM5MzEzMCA3NTE3MjAuNSA3NTIwNjUuMCA3NTIz OTkuNyA3NTI5MDkuNSA3NTMzMDcuMCAwLjA1OSAwLjAzMiAyNS4wMSAxMDAuMDAKMTZHQiBw cmVwYXJlZCBudW1hLTctcGlubmluZyBjb2xvY2F0ZWQgODYwNjQ1Ljk3NzgyNyA4NjM3NTku MSA4NjQzMTIuMSA4NjQ5NzAuOCA4NjU4NjkuMyA4NjYxMzEuNSAwLjA1MSAwLjAxNCAyNS4w MSAxMDAuMDAKOEdCIHNpbXBsZSBudW1hLTAtbWFzdGVyIG5vbmUgNDIwNDgxLjcwMjgwNiA0 MjEzOTcuNiA0MjE5OTEuOSA0MjI0NzYuNyA0MjMzMzEuNyA0MjM3OTMuNiAwLjEwNCAwLjAx MiAxMDAuMDAgMTAwLjAwCjhHQiBzaW1wbGUgbnVtYS0wLW1hc3RlciByYW5kb20gNDA2OTc5 LjQ5ODc1NyA0MDg5NzIuMiA0MDkxMTYuNiA0MDkyNjguOCA0MDk0NTcuMiA0MDk1MjcuMCAw LjEwOCAwLjAyNiAxMDAuMDAgMTAwLjAwCjhHQiBzaW1wbGUgbnVtYS0wLW1hc3RlciBjb2xv Y2F0ZWQgNDIxMDI2LjM2MjQ3NiA0MjE5MTAuMSA0MjIyMjQuNCA0MjI2OTUuMyA0MjI4NDYu MCA0MjI5MDcuNyAwLjEwNCAwLjAxNiAxMDAuMDAgMTAwLjAwCjhHQiBzaW1wbGUgbnVtYS0x LWJ1ZmZlcnMgbm9uZSA0MjAxMjcuNzU1NzEyIDQyMTA0NC40IDQyMTU5OC4zIDQyMjE0NC42 IDQyMzA5My43IDQyMzc3Ny43IDAuMTA0IDAuMDEyIDEwMC4wMCAxMDAuMDAKOEdCIHNpbXBs ZSBudW1hLTEtYnVmZmVycyByYW5kb20gNDA4MTI1LjU3NTA2NiA0MTAyNDcuMSA0MTAzOTku NCA0MTA1NDYuMiA0MTA3MzEuMSA0MTA4MjguNiAwLjEwNyAwLjAyNiAxMDAuMDAgMTAwLjAw CjhHQiBzaW1wbGUgbnVtYS0xLWJ1ZmZlcnMgY29sb2NhdGVkIDQzNzA4OC4xNzAyMjUgNDM4 MDU1LjggNDM4MzI0LjcgNDM4NzEyLjQgNDM4OTMxLjAgNDM5MDUzLjQgMC4xMDAgMC4wMTUg MTAwLjAwIDEwMC4wMAo4R0Igc2ltcGxlIG51bWEtMi1sb2NhbGFsbG9jIG5vbmUgNDE3NDI3 LjE2OTM0NCA0MTgyNzAuMyA0MTg4MzguOCA0MTkzNzIuMyA0MjAwNzkuMiA0MjEzNzguMyAw LjEwNSAwLjAxMiAxMDAuMDAgMTAwLjAwCjhHQiBzaW1wbGUgbnVtYS0yLWxvY2FsYWxsb2Mg cmFuZG9tIDQwNzczMy4wODcwNzYgNDA5ODE5LjkgNDA5OTg5LjIgNDEwMTQxLjEgNDEwMzQ5 LjQgNDEwNDQzLjQgMC4xMDggMC4wMjcgMTAwLjAwIDEwMC4wMAo4R0Igc2ltcGxlIG51bWEt Mi1sb2NhbGFsbG9jIGNvbG9jYXRlZCA0MjcwNzYuMTQ1ODMzIDQyODE0MS42IDQyODI0OC45 IDQyODQyMS45IDQyODc1Ny40IDQyODk0Mi43IDAuMTAzIDAuMDE2IDEwMC4wMCAxMDAuMDAK OEdCIHNpbXBsZSBudW1hLTMtbm8tdGFpbCBub25lIDQxNjQyMy4xNzE5NDcgNDE3Mzc1Ljgg NDE3OTQ0LjYgNDE4NDU4LjkgNDE5MjIwLjUgNDE5NTc3LjUgMC4xMDUgMC4wMTEgMTAwLjAw IDEwMC4wMAo4R0Igc2ltcGxlIG51bWEtMy1uby10YWlsIHJhbmRvbSA0MDU4MjkuNzE4OTM3 IDQwNzg4My4xIDQwODAyMC4wIDQwODEzMS4wIDQwODI3Mi4yIDQwODQ5Ni44IDAuMTA4IDAu MDI2IDEwMC4wMCAxMDAuMDAKOEdCIHNpbXBsZSBudW1hLTMtbm8tdGFpbCBjb2xvY2F0ZWQg NDIxNDI0LjM5NzU2NyA0MjI1MjguOCA0MjI3MDMuOCA0MjI4NzkuOSA0MjMxMDAuMCA0MjMy NzAuNiAwLjEwNCAwLjAxNiAxMDAuMDAgMTAwLjAwCjhHQiBzaW1wbGUgbnVtYS00LWZyZWVs aXN0IG5vbmUgNDE5MDc2LjUxOTgzMyA0MjAwMzkuNiA0MjA2MTEuNSA0MjExMDguMSA0MjE4 NTEuMyA0MjIzMzMuOCAwLjEwNSAwLjAxMyAxMDAuMDAgMTAwLjAwCjhHQiBzaW1wbGUgbnVt YS00LWZyZWVsaXN0IHJhbmRvbSAzOTk5MjMuOTQyNjAwIDQwMjAxMS4wIDQwMjE4Mi4xIDQw MjI5Mi4wIDQwMjQ2Mi4wIDQwMjU5My40IDAuMTEwIDAuMDM5IDEwMC4wMCAxMDAuMDAKOEdC IHNpbXBsZSBudW1hLTQtZnJlZWxpc3QgY29sb2NhdGVkIDQwODI4NS41MDY4MTQgNDA5MzEx LjAgNDA5NTI3LjAgNDA5NzAzLjQgNDA5ODQ4LjEgNDA5OTMzLjUgMC4xMDcgMC4wMjAgMTAw LjAwIDEwMC4wMAo4R0Igc2ltcGxlIG51bWEtNS1jbG9ja3N3ZWVwIG5vbmUgNDE4MjcxLjk4 MjMxNiA0MTkyNjUuMyA0MTk3NzcuMSA0MjAyODMuNiA0MjExNzcuNiA0MjE2NzIuNyAwLjEw NSAwLjAxMyA1MC4wMSAxMDAuMDAKOEdCIHNpbXBsZSBudW1hLTUtY2xvY2tzd2VlcCByYW5k b20gNDEyNjE0LjQ3NTMwOCA0MTQ5MzEuMSA0MTUwMjcuNyA0MTUxMzMuNSA0MTUyNjYuMSA0 MTUzNDEuMCAwLjEwNiAwLjAyOCAyNS4wMyAxMDAuMDAKOEdCIHNpbXBsZSBudW1hLTUtY2xv Y2tzd2VlcCBjb2xvY2F0ZWQgNDEzNTMwLjc2OTY2MyA0MTQ2MTQuNSA0MTQ3OTEuMSA0MTQ5 NTIuNCA0MTUxMDkuMCA0MTUxNjYuNyAwLjEwNiAwLjAxNiA1MC4wMSAxMDAuMDAKOEdCIHNp bXBsZSBudW1hLTYtcGdwcm9jIG5vbmUgNDE5NjI1LjQ0NjA2NyA0MjA2NjIuOCA0MjExNDMu MyA0MjE2OTguOSA0MjI0MzEuMSA0MjMwMTUuOCAwLjEwNSAwLjAxMyAyNS4wMiAxMDAuMDAK OEdCIHNpbXBsZSBudW1hLTYtcGdwcm9jIHJhbmRvbSA0MTM0ODguMDg4ODA3IDQxNTY1OC41 IDQxNTg0Mi4xIDQxNTk1NC45IDQxNjExOC44IDQxNjIxMC45IDAuMTA2IDAuMDI3IDI1LjAy IDEwMC4wMAo4R0Igc2ltcGxlIG51bWEtNi1wZ3Byb2MgY29sb2NhdGVkIDQzMjI0MS45NTgx NDIgNDMzNDEzLjcgNDMzNTc1LjEgNDMzNzMyLjIgNDM0MDQ3LjUgNDM0MTM1LjkgMC4xMDEg MC4wMTUgNTAuMDEgMTAwLjAwCjhHQiBzaW1wbGUgbnVtYS03LXBpbm5pbmcgbm9uZSA0MTgy MDUuOTgxNTQyIDQxOTA5Ni44IDQxOTcwOS4zIDQyMDI0Ni40IDQyMTA5OC43IDQyMTkwMC4w IDAuMTA1IDAuMDEzIDI1LjAyIDEwMC4wMAo4R0Igc2ltcGxlIG51bWEtNy1waW5uaW5nIHJh bmRvbSA0MTI3ODMuOTA2ODM0IDQxNDg1My45IDQxNTA3NC4yIDQxNTQzMi4xIDQxNTYwNC41 IDQxNTcxMi42IDAuMTA2IDAuMDI3IDUwLjAxIDEwMC4wMAo4R0Igc2ltcGxlIG51bWEtNy1w aW5uaW5nIGNvbG9jYXRlZCA0MzA1MzkuNTU1Mzk0IDQzMTcwOC44IDQzMTg3Ni4zIDQzMjAy MC44IDQzMjE4Ny4wIDQzMjI3NC43IDAuMTAyIDAuMDE3IDI1LjAyIDEwMC4wMAo4R0IgcHJl cGFyZWQgbnVtYS0wLW1hc3RlciBub25lIDcwMzQ1OS4yNjQyNjcgNzA0OTEwLjMgNzA1OTc1 LjIgNzA3MzEyLjUgNzA5MzMyLjIgNzEwMDY2LjMgMC4wNjIgMC4wMDkgMTAwLjAwIDEwMC4w MAo4R0IgcHJlcGFyZWQgbnVtYS0wLW1hc3RlciByYW5kb20gNjc0MjQ0LjExMjM0OSA2Nzg1 NjQuNSA2Nzg5ODcuOCA2Nzk0NTQuNCA2ODAxMTYuOCA2ODA1MDEuMiAwLjA2NSAwLjAyNSAx MDAuMDAgMTAwLjAwCjhHQiBwcmVwYXJlZCBudW1hLTAtbWFzdGVyIGNvbG9jYXRlZCA3MTQ1 MjcuNjE3NjM1IDcxNjMwMi4yIDcxNzAxMC43IDcxNzgzMi40IDcxODgzOS43IDcxOTI1OS4y IDAuMDYxIDAuMDEzIDEwMC4wMCAxMDAuMDAKOEdCIHByZXBhcmVkIG51bWEtMS1idWZmZXJz IG5vbmUgNjk4MTczLjgyNzQxNCA2OTk1MzMuNCA3MDA4MjIuMSA3MDE5MjMuOCA3MDM0MzUu MiA3MDU2NzEuNiAwLjA2MyAwLjAwOSAxMDAuMDAgMTAwLjAwCjhHQiBwcmVwYXJlZCBudW1h LTEtYnVmZmVycyByYW5kb20gNjczNDM0Ljk2NjMxNiA2Nzc1NjAuNSA2NzgwNDkuNyA2Nzg0 NzQuOSA2NzkwNjIuMCA2NzkzMzQuMSAwLjA2NSAwLjAyNSAxMDAuMDAgMTAwLjAwCjhHQiBw cmVwYXJlZCBudW1hLTEtYnVmZmVycyBjb2xvY2F0ZWQgNzUxNTY2LjExNzMxMCA3NTMzMjAu NCA3NTQyMDMuNiA3NTQ4MzEuMyA3NTU4ODQuNiA3NTY0NjQuOCAwLjA1OCAwLjAxMiAxMDAu MDAgMTAwLjAwCjhHQiBwcmVwYXJlZCBudW1hLTItbG9jYWxhbGxvYyBub25lIDY5NjkyOC4z NTc3NjcgNjk3ODkxLjYgNjk5NDA0LjAgNzAwOTE2LjggNzAyODAxLjcgNzAzNjE0LjEgMC4w NjMgMC4wMDkgMTAwLjAwIDEwMC4wMAo4R0IgcHJlcGFyZWQgbnVtYS0yLWxvY2FsYWxsb2Mg cmFuZG9tIDY3OTEyNS41OTc0MDUgNjgzNDAxLjYgNjgzODI4LjIgNjg0MzQzLjIgNjg0OTk5 LjkgNjg1MjIzLjQgMC4wNjQgMC4wMjQgMTAwLjAwIDEwMC4wMAo4R0IgcHJlcGFyZWQgbnVt YS0yLWxvY2FsYWxsb2MgY29sb2NhdGVkIDcyNTA4OC4wNTcyMjkgNzI3MTAwLjEgNzI3NDk1 LjMgNzI3OTY2LjEgNzI4MzIxLjcgNzI4NjY2LjUgMC4wNjAgMC4wMTEgMTAwLjAwIDEwMC4w MAo4R0IgcHJlcGFyZWQgbnVtYS0zLW5vLXRhaWwgbm9uZSA3MDUxMjcuODE2MzA3IDcwNjUx NS44IDcwNzc4MC4xIDcwODg1MS41IDcxMDQ5NS4wIDcxMTgxMi42IDAuMDYyIDAuMDA5IDEw MC4wMCAxMDAuMDAKOEdCIHByZXBhcmVkIG51bWEtMy1uby10YWlsIHJhbmRvbSA2NDY0MjYu MzU2OTExIDY1MDM0OS40IDY1MDY3OS4wIDY1MTA4NC40IDY1MTU2OC42IDY1MTg5MC4zIDAu MDY4IDAuMDI1IDEwMC4wMCAxMDAuMDAKOEdCIHByZXBhcmVkIG51bWEtMy1uby10YWlsIGNv bG9jYXRlZCA3NzgyNzQuMTkyNDA2IDc4MDM0MS4yIDc4MDg1Mi4xIDc4MTUwOS4zIDc4MjA5 MS4zIDc4MjMxMi4wIDAuMDU2IDAuMDEyIDEwMC4wMCAxMDAuMDAKOEdCIHByZXBhcmVkIG51 bWEtNC1mcmVlbGlzdCBub25lIDY4ODg0My43NDYwMDQgNjkwMjM3LjQgNjkxNDc2LjAgNjky NDg2LjAgNjk0NDg1LjYgNjk1NjczLjggMC4wNjQgMC4wMTAgMTAwLjAwIDEwMC4wMAo4R0Ig cHJlcGFyZWQgbnVtYS00LWZyZWVsaXN0IHJhbmRvbSA2Nzc0MDkuMzQ2NTU2IDY4MTY4MC45 IDY4MjA2NC4xIDY4MjQ2My43IDY4MzE1Mi43IDY4MzM4Mi43IDAuMDY1IDAuMDI5IDEwMC4w MCAxMDAuMDAKOEdCIHByZXBhcmVkIG51bWEtNC1mcmVlbGlzdCBjb2xvY2F0ZWQgNzc3NDE4 LjczNTQ0NCA3Nzk2NjYuOSA3ODAwNzIuMiA3ODA0NjEuOCA3ODEwNDUuOSA3ODEzNTEuNSAw LjA1NiAwLjAxNSAxMDAuMDAgMTAwLjAwCjhHQiBwcmVwYXJlZCBudW1hLTUtY2xvY2tzd2Vl cCBub25lIDcxMDkwOS4wMTE3MzYgNzEyNjQwLjAgNzEzNzQzLjMgNzE1MDkyLjAgNzE2Njcy LjkgNzE3OTEyLjkgMC4wNjIgMC4wMTAgNTAuMDEgMTAwLjAwCjhHQiBwcmVwYXJlZCBudW1h LTUtY2xvY2tzd2VlcCByYW5kb20gNjkzMjAwLjU0NTQ4NSA2OTc4MjcuMCA2OTgzMzMuMCA2 OTg3MjYuNSA2OTkzNzYuMiA2OTk4MjAuOCAwLjA2MyAwLjAyNSA1MC4wMSAxMDAuMDAKOEdC IHByZXBhcmVkIG51bWEtNS1jbG9ja3N3ZWVwIGNvbG9jYXRlZCA4MDY5MjAuNjMxODU1IDgw ODY3OS44IDgwOTY1MC4yIDgxMDk1OS42IDgxMTg4OS42IDgxMjY0OC4xIDAuMDU0IDAuMDEz IDI1LjAyIDEwMC4wMAo4R0IgcHJlcGFyZWQgbnVtYS02LXBncHJvYyBub25lIDcwMDcxOS4y Mjk0NTQgNzAxOTY4LjEgNzAzNTEzLjEgNzA0ODMwLjIgNzA2NzUxLjEgNzA4MTQ5LjkgMC4w NjMgMC4wMTAgMjUuMDIgMTAwLjAwCjhHQiBwcmVwYXJlZCBudW1hLTYtcGdwcm9jIHJhbmRv bSA2NzgyNDQuNDQzNjEzIDY4MjE5NS40IDY4MjY4OC4wIDY4MzA3MC42IDY4MzcwMi43IDY4 Mzk2NS4zIDAuMDY1IDAuMDI1IDI1LjAyIDEwMC4wMAo4R0IgcHJlcGFyZWQgbnVtYS02LXBn cHJvYyBjb2xvY2F0ZWQgNzc2NzA3LjY4MDE5MiA3Nzg2MzAuMCA3NzkzNDIuOCA3ODAzNzIu NSA3ODEzMjUuNSA3ODE5MzkuNyAwLjA1NiAwLjAxMyAyNS4wMiAxMDAuMDAKOEdCIHByZXBh cmVkIG51bWEtNy1waW5uaW5nIG5vbmUgNzA3MzI0LjIzMTUyOSA3MDg3NjkuNiA3MDk2NzMu NiA3MTA5MTIuMCA3MTI0NDIuMiA3MTM0MzEuOSAwLjA2MiAwLjAxMSAyNS4wMiAxMDAuMDAK OEdCIHByZXBhcmVkIG51bWEtNy1waW5uaW5nIHJhbmRvbSA2ODA4NzIuNDg0MTk0IDY4NDky OC43IDY4NTQ4MS45IDY4NjAwMy4xIDY4NjcwMS45IDY4Njk3Mi43IDAuMDY0IDAuMDI1IDI1 LjAyIDEwMC4wMAo4R0IgcHJlcGFyZWQgbnVtYS03LXBpbm5pbmcgY29sb2NhdGVkIDc4NDcz Ni41Mjg5MTIgNzg2OTc5LjQgNzg3NTg2LjEgNzg4MDMxLjcgNzg4NjE2LjUgNzg4OTI5LjQg MC4wNTYgMC4wMTIgMjUuMDIgMTAwLjAwCjMyR0Igc2ltcGxlIG51bWEtMC1tYXN0ZXIgbm9u ZSA0ODExODEuNTk0OTU1IDQ4NTM1Ni4yIDQ4NjU3NS45IDQ4NzgyNy4zIDQ4OTAwMy45IDQ4 OTY0Ny4xIDAuMDkxIDAuMDEyIDYxLjgzIDk5LjY1CjMyR0Igc2ltcGxlIG51bWEtMC1tYXN0 ZXIgcmFuZG9tIDQ2Njc5Mi45ODgxMDAgNDcyNDk1LjMgNDcyOTYyLjAgNDczMTg4LjMgNDcz NDU5LjYgNDczNjE4LjAgMC4wOTQgMC4wMjEgNjQuNzggOTkuNjUKMzJHQiBzaW1wbGUgbnVt YS0wLW1hc3RlciBjb2xvY2F0ZWQgNDgyOTQyLjAxNTcxNSA0ODY5NTguMCA0ODc1MzEuNyA0 ODg0MzMuOCA0ODg1OTIuNiA0ODg3MjMuMSAwLjA5MSAwLjAxNiA2NS4wOSA5OS42NQozMkdC IHNpbXBsZSBudW1hLTEtYnVmZmVycyBub25lIDQ4MDg3Ni44MTc4NzQgNDg1MDk2LjAgNDg2 MTYwLjIgNDg2OTk1LjAgNDg4MzA0LjcgNDg5MzE1LjEgMC4wOTEgMC4wMTEgNjQuOTEgOTku NjUKMzJHQiBzaW1wbGUgbnVtYS0xLWJ1ZmZlcnMgcmFuZG9tIDQ2MDYzOS4wMTMwMjEgNDY2 MTA0LjIgNDY2NDk0LjAgNDY2NTg1LjcgNDY2Njk0LjcgNDY2NzYzLjEgMC4wOTUgMC4wMjIg NjUuMDggOTkuNjUKMzJHQiBzaW1wbGUgbnVtYS0xLWJ1ZmZlcnMgY29sb2NhdGVkIDQ4ODkw MC45MzYzMDMgNDkzMzYzLjMgNDk0MDM1LjMgNDk0MjEwLjQgNDk0NDI2LjUgNDk0NTgxLjQg MC4wOTAgMC4wMTUgNjQuNTYgOTkuNjUKMzJHQiBzaW1wbGUgbnVtYS0yLWxvY2FsYWxsb2Mg bm9uZSA0ODA0ODQuMjI4MjE1IDQ4Mzc5NC43IDQ4NTExMC42IDQ4NjI2OS4xIDQ4NzYxOC45 IDQ4ODA2NC45IDAuMDkxIDAuMDExIDY0LjY4IDk5LjY1CjMyR0Igc2ltcGxlIG51bWEtMi1s b2NhbGFsbG9jIHJhbmRvbSA0NTk5MDIuNTMyMjMyIDQ2NDkzMi40IDQ2NTQ0NC4yIDQ2NTY2 Ni40IDQ2NTg0My44IDQ2NTk3OS41IDAuMDk1IDAuMDIxIDYzLjk4IDk5LjY1CjMyR0Igc2lt cGxlIG51bWEtMi1sb2NhbGFsbG9jIGNvbG9jYXRlZCA0ODAxMDIuMzcxMDk5IDQ4NDMyNy40 IDQ4NDY0OS4zIDQ4NDg0MS4zIDQ4NTEyNS41IDQ4NTQyMC40IDAuMDkxIDAuMDE0IDYzLjk3 IDk5LjY1CjMyR0Igc2ltcGxlIG51bWEtMy1uby10YWlsIG5vbmUgNDcxMTQzLjI5ODU5MSA0 NzQ2MDcuNyA0NzU4NTIuNCA0NzY3MjIuNSA0Nzc5NDAuMyA0Nzg5MTAuMiAwLjA5MyAwLjAy NSA2NC4yNyA5OS42NQozMkdCIHNpbXBsZSBudW1hLTMtbm8tdGFpbCByYW5kb20gNDU1NTY3 LjQ1MzUzNyA0NjEwOTYuNyA0NjE1MjQuOSA0NjE4NDguMCA0NjIwMjguOCA0NjIxNTAuNSAw LjA5NiAwLjAyMiA2NC4yMSA5OS42NQozMkdCIHNpbXBsZSBudW1hLTMtbm8tdGFpbCBjb2xv Y2F0ZWQgNDkxMzA4Ljk2MTI4OSA0OTUzMDEuNCA0OTU2MjguNyA0OTU4MDQuOCA0OTU5OTIu MCA0OTYxMTIuNyAwLjA4OSAwLjAxNCA2NS4xOSA5OS42NQozMkdCIHNpbXBsZSBudW1hLTQt ZnJlZWxpc3Qgbm9uZSA0ODAxNjcuODE5MDE0IDQ4MzY1My40IDQ4NDYyOC42IDQ4NTY3MS41 IDQ4NjY4OS4xIDQ4NzE3MC4xIDAuMDkxIDAuMDU5IDY0LjgyIDk5LjY1CjMyR0Igc2ltcGxl IG51bWEtNC1mcmVlbGlzdCByYW5kb20gNDcyNzc3LjgxNzYyNiA0Nzg0ODEuNCA0Nzg5ODcu MSA0NzkyNjguNyA0Nzk1NDIuNCA0Nzk2OTEuMSAwLjA5MyAwLjA3MyA2My45MSA5OS42NQoz MkdCIHNpbXBsZSBudW1hLTQtZnJlZWxpc3QgY29sb2NhdGVkIDQ5MjY1Ny4zODE2OTkgNDk2 ODQxLjkgNDk3NDcwLjcgNDk3NjQ1LjQgNDk3ODIwLjAgNDk3OTA5LjYgMC4wODkgMC4wMTUg NjQuMjYgOTkuNjUKMzJHQiBzaW1wbGUgbnVtYS01LWNsb2Nrc3dlZXAgbm9uZSA0ODM4MDUu ODgyNTIwIDQ4OTY1My4zIDQ5MTU3Mi40IDQ5Mjc4My41IDQ5NDQzMi4yIDQ5NTQ2Ni43IDAu MDkxIDAuMDE4IDUwLjAwIDk5LjY0CjMyR0Igc2ltcGxlIG51bWEtNS1jbG9ja3N3ZWVwIHJh bmRvbSA0NjgwNDAuMTIyNjY4IDQ3NDI2MC4wIDQ3ODM1Ny43IDQ3ODYwNi45IDQ3ODk2My41 IDQ3OTI3Ny41IDAuMDk0IDAuMDI4IDUwLjAwIDk5LjY0CjMyR0Igc2ltcGxlIG51bWEtNS1j bG9ja3N3ZWVwIGNvbG9jYXRlZCA0ODIzMDQuMzMxMTA5IDQ4Njc0NC41IDQ5MjAyMy40IDQ5 MjM0MC40IDQ5MjYwNi4zIDQ5MjgzNy43IDAuMDkxIDAuMDIyIDUwLjAwIDk5LjYzCjMyR0Ig c2ltcGxlIG51bWEtNi1wZ3Byb2Mgbm9uZSA0ODQ0NzkuNDQ3MzA3IDQ5MzA5Ny45IDQ5NDQ3 Ni44IDQ5NTQ2NC41IDQ5NjcwOS44IDQ5NzIxMS42IDAuMDkwIDAuMDI3IDI1LjAwIDk5LjY0 CjMyR0Igc2ltcGxlIG51bWEtNi1wZ3Byb2MgcmFuZG9tIDQ1Nzg3OC41NzU4MDggNDY0NTk3 LjMgNDY4ODYyLjQgNDY5MTU0LjUgNDY5MzQ0LjMgNDY5NDQ3LjUgMC4wOTYgMC4wMzMgMjUu MDEgOTkuNjQKMzJHQiBzaW1wbGUgbnVtYS02LXBncHJvYyBjb2xvY2F0ZWQgNDU3ODA1LjA1 NzM5OSA0NjUxMTEuMCA0NjczOTUuNSA0Njc2NTQuMCA0Njc4ODEuMCA0Njc5NTkuNiAwLjA5 NiAwLjAyOCAyNS4wMSA5OS42NAozMkdCIHNpbXBsZSBudW1hLTctcGlubmluZyBub25lIDQ3 NTM0Ni41MDE3MDQgNDgyOTA3LjAgNDg1MDI5LjcgNDg2MTMyLjUgNDg3NjgxLjIgNDg4NjU2 LjUgMC4wOTIgMC4wMjQgMjUuMDAgOTkuNjQKMzJHQiBzaW1wbGUgbnVtYS03LXBpbm5pbmcg cmFuZG9tIDQ2NTYyOC4xMjA1MTkgNDY4ODA2LjAgNDc2MDY3LjkgNDc3MTk0LjAgNDc3NjEw LjggNDc3Nzg2LjAgMC4wOTQgMC4wMjkgNTAuMDAgOTkuNjQKMzJHQiBzaW1wbGUgbnVtYS03 LXBpbm5pbmcgY29sb2NhdGVkIDQ5MjA2MS4yMzMyNzEgNDk4MzUyLjAgNTAxNzkxLjUgNTAy MDE2LjAgNTAyNDQ3LjYgNTAyODQ0LjMgMC4wODkgMC4wMjMgNTAuMDAgOTkuNjQKMzJHQiBw cmVwYXJlZCBudW1hLTAtbWFzdGVyIG5vbmUgODgzMTE4LjcyNTE0OSA4ODQyNzAuMSA4ODg3 MjUuOCA4OTE4MzguOCA4OTUyMjkuMSA4OTc3OTYuNiAwLjA1MCAwLjAwNiA4My4wMSA5OS42 NQozMkdCIHByZXBhcmVkIG51bWEtMC1tYXN0ZXIgcmFuZG9tIDg4MzEyNy4yMTMxODMgODkw Njc5LjYgODkxMzMwLjUgODkxNjk5LjUgODkyNzQ3LjUgODkyOTY1LjkgMC4wNTAgMC4wMTQg ODMuOTQgOTkuNjUKMzJHQiBwcmVwYXJlZCBudW1hLTAtbWFzdGVyIGNvbG9jYXRlZCAxMDE1 NDE2Ljc5NjI5NCAxMDE5Njk0LjkgMTAyMDgwMy42IDEwMjMwMzguMyAxMDIzODUyLjQgMTAy NDQwNi4wIDAuMDQzIDAuMDA4IDgzLjY0IDk5LjY1CjMyR0IgcHJlcGFyZWQgbnVtYS0xLWJ1 ZmZlcnMgbm9uZSA5MTQyMjAuMTIxNjI1IDkxNTQ2MC41IDkxODkxNS4xIDkyMjYyMS44IDky Njk1My44IDkzMDYyMS41IDAuMDQ4IDAuMDA1IDgzLjc3IDk5LjY1CjMyR0IgcHJlcGFyZWQg bnVtYS0xLWJ1ZmZlcnMgcmFuZG9tIDg3MTkxMi4zNjI2MjkgODc5NDU2LjggODgwMDU4LjQg ODgxMTE4LjggODgxODExLjUgODgyMDU5LjYgMC4wNTAgMC4wMTUgODEuNjcgOTkuNjUKMzJH QiBwcmVwYXJlZCBudW1hLTEtYnVmZmVycyBjb2xvY2F0ZWQgMTA0OTI0MC4xODE2MzQgMTA1 NDE2Ny40IDEwNTU2MjkuMyAxMDU3MjU3LjcgMTA1OTMyOS42IDEwNjEwNzAuOSAwLjA0MiAw LjAwOCA4Mi4wNyA5OS42NQozMkdCIHByZXBhcmVkIG51bWEtMi1sb2NhbGFsbG9jIG5vbmUg ODg3NjE2LjU2NTI5MSA4ODk0NzQuNyA4OTI3MzMuMyA4OTU2MTcuNSA5MDAyNTIuOSA5MDIz MzcuMyAwLjA0OSAwLjAwNSA4Mi44NCA5OS42NQozMkdCIHByZXBhcmVkIG51bWEtMi1sb2Nh bGFsbG9jIHJhbmRvbSA4NzA1MDguNTQ5MDcwIDg3ODEwMy4yIDg3ODc2OC42IDg3OTAzOC41 IDg3OTM1MC4wIDg3OTQ5My42IDAuMDUwIDAuMDE1IDgyLjE2IDk5LjY1CjMyR0IgcHJlcGFy ZWQgbnVtYS0yLWxvY2FsYWxsb2MgY29sb2NhdGVkIDEwMjA4NjcuNjkxMTU4IDEwMjU2MTEu MSAxMDI2NjgyLjkgMTAyNzYxNS4zIDEwMjg2ODEuNCAxMDI5NDU3LjIgMC4wNDMgMC4wMDgg ODIuMjMgOTkuNjUKMzJHQiBwcmVwYXJlZCBudW1hLTMtbm8tdGFpbCBub25lIDg4NTc3NS43 OTc2NDEgODg3Nzk4LjQgODkxMzQ2LjEgODkzODcwLjAgODk3MDY1LjIgOTAwNTAzLjcgMC4w NDkgMC4wMDUgODMuMDggOTkuNjUKMzJHQiBwcmVwYXJlZCBudW1hLTMtbm8tdGFpbCByYW5k b20gODY5ODc0Ljk0MDExOCA4NzgzMDMuNCA4NzkxMjMuOCA4Nzk1NTYuMCA4ODAxNzAuOCA4 ODAzMDEuNyAwLjA1MCAwLjAxNSA4MS4zOCA5OS42NQozMkdCIHByZXBhcmVkIG51bWEtMy1u by10YWlsIGNvbG9jYXRlZCAxMDIzNTUxLjI1OTgxMiAxMDI3ODQ2LjQgMTAyOTcyNi40IDEw MzE1NDIuNSAxMDMzMDU3LjEgMTAzNDIyNi4yIDAuMDQzIDAuMDA4IDgyLjE4IDk5LjY1CjMy R0IgcHJlcGFyZWQgbnVtYS00LWZyZWVsaXN0IG5vbmUgODg4MDY4LjE2MzkzNyA4OTA5MTcu OSA4OTM2NTQuOSA4OTY4ODkuOSA5MDAyOTkuMCA5MDM5NjIuOCAwLjA0OSAwLjA4OSA4Mi4x NSA5OS42NQozMkdCIHByZXBhcmVkIG51bWEtNC1mcmVlbGlzdCByYW5kb20gODcxNTAxLjY4 OTA4MSA4Nzk1MzYuNSA4ODAwNTQuOCA4ODA1OTYuOSA4ODEzMDkuMyA4ODE1MDIuOSAwLjA1 MCAwLjA1NCA4MS42MiA5OS42NQozMkdCIHByZXBhcmVkIG51bWEtNC1mcmVlbGlzdCBjb2xv Y2F0ZWQgMTAyNDE0OC40ODUyNzcgMTAzMDc5My45IDEwMzE2MjkuNiAxMDMyMTY1LjMgMTAz MjcxMS4yIDEwMzMyMTYuMiAwLjA0MyAwLjAxNSA4Mi4wMCA5OS42NQozMkdCIHByZXBhcmVk IG51bWEtNS1jbG9ja3N3ZWVwIG5vbmUgOTE4MDY5Ljc5NzE2NiA5MzMwMTQuOSA5MzY5MDcu MCA5NDAzODIuOCA5NDQyODUuNCA5NDkxNTkuMyAwLjA0OCAwLjAxOCAyNS4wMCA5OS42NAoz MkdCIHByZXBhcmVkIG51bWEtNS1jbG9ja3N3ZWVwIHJhbmRvbSA4ODUwMzYuMjgzOTIwIDg5 NDU4OS4wIDkwMzUyMC4yIDkwNTI1Ny44IDkwNjMyMC40IDkwNjQ5MC4wIDAuMDQ5IDAuMDI0 IDUwLjAwIDk5LjY0CjMyR0IgcHJlcGFyZWQgbnVtYS01LWNsb2Nrc3dlZXAgY29sb2NhdGVk IDk5NDE2Mi45NjE5MzYgMTAxMTM4NC4xIDEwMTgwNzIuOCAxMDIwNDU1LjAgMTAyMTY4NS4x IDEwMjI2MjIuMiAwLjA0NCAwLjAyOCAyNS4wMCA5OS42NAozMkdCIHByZXBhcmVkIG51bWEt Ni1wZ3Byb2Mgbm9uZSA5MDc4NTQuNjAxOTU2IDkxOTk4MS40IDkyNDA4Mi41IDkyODAzOS42 IDkzMjAzNi45IDkzNDEyMy4yIDAuMDQ4IDAuMDE0IDI1LjAwIDk5LjY0CjMyR0IgcHJlcGFy ZWQgbnVtYS02LXBncHJvYyByYW5kb20gODc5MjMwLjY4MTEwOSA4OTQ2MTcuNCA4OTc3NDIu MCA4OTg5MjcuNyA4OTk0ODQuNiA4OTk3MzUuMiAwLjA1MCAwLjAyNSA1MC4wMCA5OS42NAoz MkdCIHByZXBhcmVkIG51bWEtNi1wZ3Byb2MgY29sb2NhdGVkIDEwMDIzNTAuNDA1MDY0IDEw MTY5NTEuMyAxMDIyNTYyLjUgMTAyMzQ4My40IDEwMjUyMDcuOCAxMDI1OTA1LjIgMC4wNDQg MC4wMjAgNTAuMDAgOTkuNjQKMzJHQiBwcmVwYXJlZCBudW1hLTctcGlubmluZyBub25lIDg3 MTI1My4yMzA1NzkgODgyODcyLjcgODg1NzQ4LjggODg3NjUwLjMgODkwNTE2LjQgODkyOTY3 LjQgMC4wNTAgMC4wMTQgNTAuMDAgOTkuNjQKMzJHQiBwcmVwYXJlZCBudW1hLTctcGlubmlu ZyByYW5kb20gODQ2NTkwLjM0NzAyMiA4NTQxMTkuOSA4Njg2NjQuOSA4NzQ0ODcuNiA4NzUy MDUuMSA4NzU1NzUuMSAwLjA1MiAwLjAyNyAyNS4wMCA5OS42NAozMkdCIHByZXBhcmVkIG51 bWEtNy1waW5uaW5nIGNvbG9jYXRlZCA5NzQ1MzAuNDg3NjExIDk5MzUyMC44IDk5NTY5Ny4w IDk5NjY1Ny45IDk5ODEzNC4wIDk5ODQ0Ny4wIDAuMDQ1IDAuMDIyIDI2LjkxIDk5LjY0Cg== --------------ffSr0c8hlIKbvluiJSw5Id5o Content-Type: application/pdf; name="numa-xeon-e5-2699.pdf" Content-Disposition: attachment; filename="numa-xeon-e5-2699.pdf" Content-Transfer-Encoding: base64 JVBERi0xLjQKJSDi48/TCjMKMApvYmoKPDwKL1R5cGUKL0NhdGFsb2cKL05hbWVzCjw8Cj4+ Ci9QYWdlTGFiZWxzCjw8Ci9OdW1zClsKMAo8PAovUwovRAovU3QKMQo+PgpdCj4+Ci9PdXRs aW5lcwoyCjAKUgovUGFnZXMKMQowClIKPj4KZW5kb2JqCjQKMApvYmoKPDwKL0NyZWF0b3IK KP7/AEcAbwBvAGcAbABlACAAUwBoAGUAZQB0AHMpCi9UaXRsZQoo/v8AbgB1AG0AYQAgAHgA ZQBvAG4pCj4+CmVuZG9iago1CjAKb2JqCjw8Ci9UeXBlCi9QYWdlCi9QYXJlbnQKMQowClIK L01lZGlhQm94ClsKMAowCjc5Mgo2MTIKXQovQ29udGVudHMKNgowClIKL1Jlc291cmNlcwo3 CjAKUgovQW5ub3RzCjkKMApSCi9Hcm91cAo8PAovUwovVHJhbnNwYXJlbmN5Ci9DUwovRGV2 aWNlUkdCCj4+Cj4+CmVuZG9iago2CjAKb2JqCjw8Ci9GaWx0ZXIKL0ZsYXRlRGVjb2RlCi9M ZW5ndGgKOAowClIKPj4Kc3RyZWFtCnictZ3dz+Q4et3fy6CvDEx/T98GSALMWF+kpEsb6921 42S9nrUdJMhFEMMeGC0ndgLk30+VxPM85zxFVfVI9brR3vr1kIdVqkPqlCiR//Km/bF5c/3z w/Yit93lf//n8uZf3jQ/jmn9T/bi8s/Nj6lNYzfkXP6T4KUA9K7/2/bNj33TNdPl1fxjbuZ+ ikVKrR+ura7/7/Kfx2kGfQWN47Ti+q8CpdzPb/7uzT9vrZa///qPq/oqOK1NfcXLrl3r0ItN 4h9uBdYSF41mTl6xUD/Ppbq/KiWqWlup5c3QdFR7o3Eci4K/QomKmLwD+4ioUHDoGn67AR+r bxWWG7mCgxyMiKXwHfWhFXXUL5g7kQs47B5mqbDcyBWcepELmLtH6muF5UZuw9QMLBcQhffV twrLjVzBLol6wFL4jvpaYbmRKzhkkQtYCt9RXyssN3IF8yhyAUvhO+prheVGruA0iVzAUviO +lphuZHb8DJ+sVxAFN5X3yosN3IFe+mcEZtHfXWrsNzIFUzSOSP2j/rqVmG5kSs4SueMmB71 1a3CciNXcJbOGXF81Fe3CsuN3IZjK50zIArvq28Vlhu5gr10zojto766VVhu5Aom6ZwR+0d9 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 VUIoCgfTYl1ewVpmlRCKwsG0WJpXsJZZJYSicDAtVucVrGVWCaEoHEyLBXoFa5lVQigKh2Eb a/QK1jKrhFCcy0MPwDK9grXMKiEUhUMPwEq9grXMKiEUhWNcmTWvzHuZVUIoCocegPV6BWuZ VUIoCocegCV7BWuZVUIoCocegFV7BWuZVUIoCocegIV7BWuZdUPpAb507z+8+f2b61f1/y45 9C8uf//pzXqy/09v/tt/b978/Ztm/fPXv3nTN92P6U352b/ByAuq238rhP+4RtzLf0p07edK 5b9cr1rQf9rw65ufSsP/+o9v/vQPl//9w7+++eNf/69//r/tm/Xb+8M/vNmScwnV13+7nCK7 IbXt+OYPy/pf/vD3b/7dy08vf/ny+8uf6///i3//5g//9ObP/vDLtLdsWlf/q5e/fvnNy28P 6XZrqq3r/u3Lf3z51cvfvPz2ov6nL3/28l9e/vzy57eXf/nbQ231Td5t67uXP7p8jl9d2vy7 awuH9Ic7n+XtRf/8J0h3voV3lxZ+d/kmfn35FL9b/650qJ3c7Hvp/aWd31+U/+hypH51cdTv DrUwNt1uCx8u2n++fu+/vXyGv7x+J4famJp2t42PlzZ+XY7Xf7608F/X1n461M7cNLvtfLq0 89PLX1z+/s3hb2NerzvW9T+v+ud793rZ9DWt27bbLsyv7t22m/e7+XPM2/bzfk9/lnvbYd7v 7M+0b5vm/d7+DP+2W3J5TQNf/+3yg66i/+vL24a1rkP7b06c/uot/LR+2T/hVHXiNFjXf3v5 Ev7Dy7+9r9vtHJdLmErTMOcd7e8v6m8vbvr88vaQ/pD6H3PXtN2u/vvLu/98Ob1+OKSfUrfq 78p/uPx9d/jtX+P8Xfmr9PeX4/PukPx4+S1xV/7j5cC8ffny8vmQ/OV7vS//ef0E71++HJKf h+m+/KdV/O3Bd3/pUuMj/Q+r/rGD37aXnwpj2pN/ezn071/+zTHp7tKt7ku/PSrd5/bHedqT /nI5LAeFr131lQ7HtZe+knRO0+scjmvfvP+ev3skfXcsT2M9f7w7PpZf+ks/N+2wo319z+8u f78/PNoOQ37YwsfLn2vHPzamXC9vPf4Mny5/LmeOY0P6MHxDC5ch99rOsVF96B+28H49a79/ +e7gwN49bOHt+j1/PniU5qH9hqP0bv2uj7Xgw3u9hS+XP1f1oyc/G97vfQlHh/fcrYPO3jv/ fHhwT8OD9/xw0Hk0vL+CdErz3cPx5fjg3r7Wex4vmqe+wruD+zitql0ILOdTelX48zVjrV3+ bEjfkf94CVrvzmf0HfVrhv5w7e3nIvqO+vfrGe90Qr+jfh1lj6lbQN/xy3eXo/Lp+iPgXD7f ee+fL+rvrxH65Pi9e2iuxvn+4EnUhu+q+hY0To7eVeXrAT85eO++48OnBYzdu8onhu7uvvKH s8H82UcZuXz3HT/8ZXX3Es48V2T/9uUvX/7q5aeX352axKhKn7t4M5Rxuyp9/XH8+SL/9uDI 6qeFHfmPa8j8crCH22lhR/3DGv8uLZw7Leyqf16TycGIj9PC7pH5vCXMc6eF3ff+/TqyHo32 04P3/ml99wevqthp4Y5pvlx/OZw7Lex0pieE+qryiRCL08LuOz58KQinhV3ld2cT/c6xOHxR BYH++e8Yef7ot3d/+rlrKqqnrtXY0F3X/lDi0/uD3dDH7j39L5e/195yrB/a4L3/9j+s12eP XQay0Xv/3Z+5ymTD97785/UMcez3lI3f+/LvVq+fHMD35K/j9/vD5zYfwev625zE9ex58rp7 Xf7UiIgxvC59YuDCIL7/ng+PXBjF96VPX5jZOxwnLsxMd4UP/zZDut8/GOcuzLRD++QrMzaO V5U/rFdJr38OXnH3cXxH//06h3o0T/k4vvv2r1OE58fxO0fn+Oyvj+M78t+tXnx3dv50T/5t +Rlx7DTh4/juV/t+/SVxMCr7OL6r/3aNGSev0NTlT108sHG8Kn1mHC+zp3vCh0fEITd3hQ9f +8EVmv2jfPhsiTS+L31+HN+VPjp7ut6KdLHHrer1vq3fH7xCU25freo+7/6duv5zLgHVtT+v Z4frPTZnrwHt679bh9mD8712/tmR/7z2naO3qPj5Z1f+u/UsdOwE4eefHfn1J8r18Jw8/+we +0/rD62T8wP3jv3HJ9y/s//2366/Vg5OQNj5Z6dXnQjOuH/nFaTtDFSVfsYZ6NnCdgbaPRin 7955+nu288/xL/D+SD71r3dFqKr9/frn+F0pNJJX9b+Ui/lHZwt8JN95+1/WqP/+6G07NpLv yr9dZzNPXtDfl19PogcPjo/kO8f+/Xqny3cHh1ofyXfk362/hY7OGNBIvmvNj9sk/smRvCr/ lKv6e0fm9K06++/59K06ryBtY/mu9OHIb2P5zpE+MZaPd4UfTiXfHcm7S/J/nStCdeXP6zH+ cvhnvY/j+/rfran82OVZG8fr8p/Wb/LD4Us2No7vv/vP230158bx/Xe/XbQ5dpqwcXzv3b9d 59yP3lNj4/j+wXm/JvKz4/i+/pd19uDYd9u2uV97al3+xBCAPF4XPpfHyzi+L318frYk8r3D cfgqFkbx/fd8OpE//StEIj9xnO9eu+m69Gp37tS1n3Pdpq693bvz7nAipLPEjv52cfzLwdtr /Cxx5+0fH0n8LLH77j+sF/aPXXn3s8Tuu1/vXDw7b7D/7t+tJ6GTaX9f/tP6Cc7O/+7rv99m J86l/b1e9YT537r0E27i2X/Px+d/cZbYec/nzxLPf8+YOXiFrxBp//BXeH8kH/KrXbepa39Y B5KPhyMnjeR39K/nomOJOV3efxrm6Y78x/Uh4JNP0O7JbzeJn74/f//dfzhxo5CP5DvyX8rT 0cfevY/ku/IfTpwoaCS/891+d/gxNB/Jq/JPuQL/CtK4Al+XfsITtPvv+cQNmd0D6dOzwK8g bWP50SN9fyzP42tduakqX1Pb2/UMdPaezHv6H5+QyXfk365Xak/Ppe7Lf14HrGPXtXwk3z04 360nupOPWu2/+y/rlaejmXwuT+jd+27fPuFpq/vv/+hUsw/lVflzQzlCeVX6GaH8+e/ZhvJd 6cODog3lz3/XNpQ/X9ou3xyXvnNDTzfVnub6m5dfvfz+5Tcvf/3yV2cuDFW1n3dTT13/SReH qtqf14sf19/gZ28q3dPfFuU5evXGT0Q78h+xUsTJE9Hu0flu/Xt2CmH34GzB/OzFod13vzVw 9ifF7rF/f+KZQDoP7epvJ+qjz3dhCqEq/4wphJ3ueiKc2w+KZ79nuzT0bGE7B+0ejPM/J54v beegXelzN/X0Te3hsedcHKpr47aV9+eXV9vR3xYo+Hj2J8We/PaY/6ezPyn25a/H5+jDE768 2oODc/Kmnrr8lzJb++7s7Zn71llP0acf1N3T/7T+PT2S7x2d0yN5Xfgpk8GvIG3Lqz1f2pZX 25U+v7zas79EXBraEz73mFff1x4fe8alobryp3UgvF7QOjbO0jh+R/+7w0vB+Di+I//9+hzZ u7OLLezJf1wj4eezj+vuv/stcx47Tfg4viP/pTxEcfKmnnvv/tNh69A4vqv/cVsG9dyVobr8 Uy7y70ufXyazKn3iCVUbx3ff82FpG8d3pU9M2E53D8f5ZTKPu+P+ksqp9gDZc27rqWs/58pN XXu7L2YdDc+eJ+7qH70T288TO/LrZZXD06l+ntiRf1euO528crN/cD6uDx0dXXVzfiT/Yb08 dDbv3zn261MCZ88Tuwf/++3wnzxP7PSqZ5wndqXPnyeq0ieeD7DzxO57Pj0Z/ApHGldvXuFI W+I/eqTvj+Vj7UGvJ127qWp/WG/QvN4vfXY6eE//07aCzuml8XflP253Up4cy3fl365XP05O B+8f/O0H19ml8e/Ivz983czH8t2D8/22QP7ZsXz37X9azxYHf1PYtZuq/DOu3VSFn3Jbz9Pf s43ku+/58DoXNpI//3BY4t85HOcT/+57fnhiuz+Sz/VnDJ+wxUlVebsR/u3h59xpHN/R367A nV4i4d7bv36fZzP5rvz363d6NpPvyr9bb0w6eVvP/rH/uDZxdhy/I//9M67B3337xx/IQiav yj8nkz9f2q7CP18aM6p16SfMqO6/5xPX4NvXOhw2lj9desjXk2YzT2+G9tkPqaW8Het95aM/ UnK+njSby7mirn38tDnm5sF7Pno0pjS/kvKc0ysdjba5/Bi8/6afYLx+7+GU48abcUCq2scv F+S89fH993z0eJjxnq485fzgaBwdTedLdn2d99w2eVhPAM/+Asl2ae8++qMTA2S7qvbx1fTN drvv+ejxMNvtKh+2Hca7XeWjP8dovHvycfbxbvdNHz1lkfHGvVtznzDeVbWP93Az3u57Pno8 zHi7ykevu9J4t3M0jp4Obbx7+nv28e7JXyDZbn72jX5ku6r28QNtttt9z0cPtNluV/kJp9md o3H4NOvj3Y7y4alsG+92D8f5E21qt1uHnjb+u++q0mdsN90XPvoNjnm8L3z0KOMku3uMj/Zt DHW7wqctt6t8/hdFGprnSuOX7NOFyXE16ac47rnC5ri9Q3H+V+yT37E77tnfHjkut889GjTG 1aTP/4Ldfcdnf8A+Xdgctyd8dCgix9WP8XHHlTS3o3v058kwNnjDU/fMN2zjW0323PjW3hc+ /vNhvH8ojmYAc9veO37C+PbcL8/Ht2cfZB/fctM/V9rHt6r0+V+su+/4+C+H8f47Puu4p79j ZLinf3k2vj35uyO/dcPrJLinC3uCq0qfn4nYfceHr4/Ab3vCZ38zPF3Y/fbcQ0x+G9Kz/Wbj W036CePbs9+x+W1P+Oi3Z3579js2vz1b2M6oT1f2BJdzfo0EV5U9M1rQ+Pbcd0zn0+cKm9/2 DsXp8e3Zwu63PeUn+G0aX8VvNdln/GJ4urCNb88WNr/tCZ//xfDkL8/Pp3Xd89d8x2Z6nfy2 K3z+VpKq9PFr6/Db7js+Kgy/7Qof/r1gfts5FKdvI3m6Lchx3ZMvJ5vj9oSf4Lia9PHuZ47b e8dnfzE8/RjjjPr0Y2wj3JMPsZ9Pr7fkvcL5tCr7nN+nT37H5ra9d3x0es/c9uxDQeNb/VCc H9/23vLRnkfj2/jky+rmuGcLI8E9Xdh/MVSlz/9i2H3HhxMcxrdnHwp33Dco//7y5/8DCWAv zgplbmRzdHJlYW0KZW5kb2JqCjgKMApvYmoKMTgxMjMKZW5kb2JqCjkKMApvYmoKWwpdCmVu ZG9iagoxMAowCm9iago8PAovQ0EKMC4xNDkwMTk2MQovY2EKMC4xNDkwMTk2MQo+PgplbmRv YmoKNwowCm9iago8PAovRm9udAo8PAovRm9udDEKMTEKMApSCi9Gb250MgoxMgowClIKPj4K L1BhdHRlcm4KPDwKPj4KL1hPYmplY3QKPDwKPj4KL0V4dEdTdGF0ZQo8PAovQWxwaGEwCjEw CjAKUgo+PgovUHJvY1NldApbCi9QREYKL1RleHQKL0ltYWdlQgovSW1hZ2VDCi9JbWFnZUkK XQo+PgplbmRvYmoKMTEKMApvYmoKPDwKL1R5cGUKL0ZvbnQKL1N1YnR5cGUKL1R5cGUwCi9C YXNlRm9udAovTVVGVVpZK0FyaWFsLUJvbGRNVAovRW5jb2RpbmcKL0lkZW50aXR5LUgKL0Rl c2NlbmRhbnRGb250cwpbCjEzCjAKUgpdCi9Ub1VuaWNvZGUKMTQKMApSCj4+CmVuZG9iagox MgowCm9iago8PAovVHlwZQovRm9udAovU3VidHlwZQovVHlwZTAKL0Jhc2VGb250Ci9NVUZV WlkrQXJpYWxNVAovRW5jb2RpbmcKL0lkZW50aXR5LUgKL0Rlc2NlbmRhbnRGb250cwpbCjE3 CjAKUgpdCi9Ub1VuaWNvZGUKMTgKMApSCj4+CmVuZG9iagoxNAowCm9iago8PAovRmlsdGVy Ci9GbGF0ZURlY29kZQovTGVuZ3RoCjIxCjAKUgo+PgpzdHJlYW0KeJx9Uk1vwyAMvfMrOHaH KiFpmh0ipKnTpBz2oWX7AQScDGkhiNBD/v3ArF3XSUMi5tnv2SYmO7T3rdGeZi9ulh14Omij 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 wlZPesm8J7CDLwNwjpOWtBSJ47O0pDUzh59fFrYWDYxSHFc5bfH4S/h/uV4GVk5zojRo74vA upx1fdeVbc7Z3HdzGf+P2XdvQaJ3C99KW4q2yLQwsCAuCAQXNkDY6BZv796WtHTR8GYeCAQa AguYkNdPhc3iQu8S7IJYrQtE9QvjExJNXxCrBDMRbX1RnG1RjElkLhJM0Uqisa6vkx/EiP4f d37ptgplbmRzdHJlYW0KZW5kb2JqCjEzCjAKb2JqCjw8Ci9UeXBlCi9Gb250Ci9TdWJ0eXBl Ci9DSURGb250VHlwZTIKL0Jhc2VGb250Ci9NVUZVWlkrQXJpYWwtQm9sZE1UCi9DSURTeXN0 ZW1JbmZvCjw8Ci9SZWdpc3RyeQooQWRvYmUpCi9PcmRlcmluZwooVUNTKQovU3VwcGxlbWVu dAowCj4+Ci9Gb250RGVzY3JpcHRvcgoxNQowClIKL0NJRFRvR0lETWFwCi9JZGVudGl0eQov RFcKNTU2Ci9XClsKMApbCjc1MApdCjEKMTUKMAoxNgpbCjMzMwowCjAKXQoxOQoyNwo1NTYK MjgKMzYKMAozNwpbCjcyMgpdCjM4CjQxCjAKNDIKWwo3NzcKXQo0Mwo2NQowCjY2ClsKNTU2 CjAKNTU2CjYxMAo1NTYKNjEwCjU1NgozMzMKNjEwCjYxMAoyNzcKMAo1NTYKMjc3Cjg4OQpd CjgxCjgzCjYxMAo4NApbCjAKMzg5CjU1NgozMzMKNjEwCjAKNzc3Cl0KXQo+PgplbmRvYmoK MTUKMApvYmoKPDwKL1R5cGUKL0ZvbnREZXNjcmlwdG9yCi9Gb250TmFtZQovTVVGVVpZK0Fy aWFsLUJvbGRNVAovRmxhZ3MKNAovRm9udEJCb3gKWwotNjI3Ci0zNzYKMjAwMAoxMDE3Cl0K L0FzY2VudAo3MjgKL0Rlc2NlbnQKLTIxMAovSXRhbGljQW5nbGUKMAovQ2FwSGVpZ2h0Cjcx NQovU3RlbVYKODAKL0ZvbnRGaWxlMgoxNgowClIKPj4KZW5kb2JqCjE4CjAKb2JqCjw8Ci9G aWx0ZXIKL0ZsYXRlRGVjb2RlCi9MZW5ndGgKMjMKMApSCj4+CnN0cmVhbQp4nF1Qy27DIBC8 8xV7TA4R4KhSDxZSlSqSD32obj8Aw9pBqgFhfPDfd42b9IHEY5id0c7yU/PYeJeBv6ZgWszQ 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 R74WTJAvLo7yVb78uDiVTxecb1NVi7LSTS1aqDwZIapSeaoyQo3zHMhHnvx8lSe9mg6oPAfS qzlPtI/KkpODLLk5KovIohyVJUdkqSxjz2QpsrIsaciyRLWkiTN5csw8nsN2Hs/h0nP+AdNz f6b2KywUm3tVTBlfNjVcNilcNhWYFL3z2umBaPWlodCmKRWcEIpqBZMunTKd6eSp0Yrw1NLo lHBpaFOv8edIHs/JvcKlm2h82ejyTeMjU0tre0V6lYUnl1ZsHji8S/ez2lrS0FaX4eeobDhX 1oXbGtj9HMndOXkgt9Wd2+rObQ2MDFRtkeLx4eWb3NSvov94k26WCfHg10nZeRX90n1z+ijm 7ZUXuCV7B6yVdZRQWBFNDPeLegBOate3XV9Owp7ipCREe62kwC298rJ3iHVWkg/R/nA/Kpx7 TdU1FCibUWr+q8IHUXOv4Qk33cKqn/ogrSwamVxaNZdocLTNqMHRkhHjyje5XIidxEOK9rTj EhLK6ow9ZmR7RPbkSE1ryMhxvTkuLs7K+OP1v8ai/XkXVMudm0UkV8ylqgotmjt4tIQoGD0O Yx0/rnwHbClWD1UVGGCVKBRVdh1Wt9XftFeEx2xj7jWWz5qLuRY1S6JIlT0lDR+erMKGGZuL Cun/AHoprmAKZW5kc3RyZWFtCmVuZG9iagoxNwowCm9iago8PAovVHlwZQovRm9udAovU3Vi dHlwZQovQ0lERm9udFR5cGUyCi9CYXNlRm9udAovTVVGVVpZK0FyaWFsTVQKL0NJRFN5c3Rl bUluZm8KPDwKL1JlZ2lzdHJ5CihBZG9iZSkKL09yZGVyaW5nCihVQ1MpCi9TdXBwbGVtZW50 CjAKPj4KL0ZvbnREZXNjcmlwdG9yCjE5CjAKUgovQ0lEVG9HSURNYXAKL0lkZW50aXR5Ci9E Vwo1NTYKL1cKWwowClsKNzUwCl0KMQo3CjAKOApbCjg4OQpdCjkKMTgKMAoxOQoyOAo1NTYK XQo+PgplbmRvYmoKMTkKMApvYmoKPDwKL1R5cGUKL0ZvbnREZXNjcmlwdG9yCi9Gb250TmFt ZQovTVVGVVpZK0FyaWFsTVQKL0ZsYWdzCjQKL0ZvbnRCQm94ClsKLTY2NAotMzI0CjIwMDAK MTAwNQpdCi9Bc2NlbnQKNzI4Ci9EZXNjZW50Ci0yMTAKL0l0YWxpY0FuZ2xlCjAKL0NhcEhl aWdodAo3MTYKL1N0ZW1WCjgwCi9Gb250RmlsZTIKMjAKMApSCj4+CmVuZG9iagoyMQowCm9i agozMDkKZW5kb2JqCjIyCjAKb2JqCjE5MTI4CmVuZG9iagoyMwowCm9iagoyNDkKZW5kb2Jq CjI0CjAKb2JqCjE0MDAzCmVuZG9iagoxCjAKb2JqCjw8Ci9UeXBlCi9QYWdlcwovS2lkcwpb CjUKMApSCl0KL0NvdW50CjEKPj4KZW5kb2JqCnhyZWYKMCAyNQowMDAwMDAwMDAyIDY1NTM1 IGYgCjAwMDAwNTQyOTMgMDAwMDAgbiAKMDAwMDAwMDAwMCAwMDAwMCBmIAowMDAwMDAwMDE2 IDAwMDAwIG4gCjAwMDAwMDAxNDIgMDAwMDAgbiAKMDAwMDAwMDIzMyAwMDAwMCBuIAowMDAw MDAwMzk4IDAwMDAwIG4gCjAwMDAwMTg2ODcgMDAwMDAgbiAKMDAwMDAxODU5NSAwMDAwMCBu IAowMDAwMDE4NjE2IDAwMDAwIG4gCjAwMDAwMTg2MzUgMDAwMDAgbiAKMDAwMDAxODg1OCAw MDAwMCBuIAowMDAwMDE5MDA3IDAwMDAwIG4gCjAwMDAwMzg3NDAgMDAwMDAgbiAKMDAwMDAx OTE1MSAwMDAwMCBuIAowMDAwMDM5MTUwIDAwMDAwIG4gCjAwMDAwMTk1MzYgMDAwMDAgbiAK MDAwMDA1Mzc1NiAwMDAwMCBuIAowMDAwMDM5MzUyIDAwMDAwIG4gCjAwMDAwNTQwMTIgMDAw MDAgbiAKMDAwMDAzOTY3NyAwMDAwMCBuIAowMDAwMDU0MjA5IDAwMDAwIG4gCjAwMDAwNTQy MjkgMDAwMDAgbiAKMDAwMDA1NDI1MSAwMDAwMCBuIAowMDAwMDU0MjcxIDAwMDAwIG4gCnRy YWlsZXIKPDwKL1NpemUKMjUKL1Jvb3QKMwowClIKL0luZm8KNAowClIKPj4Kc3RhcnR4cmVm CjU0MzUyCiUlRU9GCg== --------------ffSr0c8hlIKbvluiJSw5Id5o Content-Type: application/pdf; name="numa-hb176.pdf" Content-Disposition: attachment; filename="numa-hb176.pdf" Content-Transfer-Encoding: base64 JVBERi0xLjQKJSDi48/TCjMKMApvYmoKPDwKL1R5cGUKL0NhdGFsb2cKL05hbWVzCjw8Cj4+ Ci9QYWdlTGFiZWxzCjw8Ci9OdW1zClsKMAo8PAovUwovRAovU3QKMQo+PgpdCj4+Ci9PdXRs aW5lcwoyCjAKUgovUGFnZXMKMQowClIKPj4KZW5kb2JqCjQKMApvYmoKPDwKL0NyZWF0b3IK KP7/AEcAbwBvAGcAbABlACAAUwBoAGUAZQB0AHMpCi9UaXRsZQoo/v8AbgB1AG0AYQAgAGgA YgAxADcANikKPj4KZW5kb2JqCjUKMApvYmoKPDwKL1R5cGUKL1BhZ2UKL1BhcmVudAoxCjAK UgovTWVkaWFCb3gKWwowCjAKODQyCjU5NQpdCi9Db250ZW50cwo2CjAKUgovUmVzb3VyY2Vz CjcKMApSCi9Bbm5vdHMKOQowClIKL0dyb3VwCjw8Ci9TCi9UcmFuc3BhcmVuY3kKL0NTCi9E ZXZpY2VSR0IKPj4KPj4KZW5kb2JqCjYKMApvYmoKPDwKL0ZpbHRlcgovRmxhdGVEZWNvZGUK L0xlbmd0aAo4CjAKUgo+PgpzdHJlYW0KeJy1fV0PI0ly3Dwa8yRgZ3Y+Xw3YBnbdn9XdjzbO d5IsWzrdSTZs6MGwIB2EpW3JBvz3TXZlZEYku8lxN+cGe8uYzYok2VFZ0VXNqn982/7cvL39 +am+GJfx+u//fnn7j2+bn6dx/U/+4vrXzc9jmfp26vCfBF4DwHf7d9vOPw9j1w1v2678vLR9 2+UQa/VTd329/t/1P0/DAPQL0DTNK1z/VoDF/eHtf3r7P2pW++ef/n5lXwn7NdUveNm1axt6 USn+7p5gjbhyNFMbDQ31y2LN45VFbHLVqIv9G23qv6dpMoZ4hYgNMnkH/hHRwODQNfx2E3zO Xhtc7ugMDvJlZGjBD9iHVtjR3mDphC7BYfdrlgaXOzqDcy90CZbuGfva4HJHV+HYDEyXIIL3 2WuDyx2dwW4U9gQt+AH72uByR2dwKEKXoAU/YF8bXO7oDJZJ6BK04Afsa4PLHZ3BeRa6BC34 Afva4HJHV2FpFqZLEMH77LXB5Y7OYC+dM8PmWV+tDS53dAZH6ZwZ9s/6am1wuaMzOEnnzHB8 1ldrg8sdncFFOmeG07O+Whtc7ugqnFrpnAkieJ+9Nrjc0RnspXNm2D7rq7XB5Y7O4CidM8P+ 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 +QzDADfrpbEdbBk5laL1ZQ0ThkEYhh0PzL7WIjt9J6iFhDY8MPtai+yVB2WQ0IYHZl9rkYPy YDdbgVsuWHwtgsdEhhLIcMsGi69FcLpm2NNW4JZzFSuK4DmRoWox3HKuYkURvCgZdrYVuOVc xYpacJhN+wtULYZbzlWsKILbRDaKTDutWndQlEpm0/5iEY11WmjuoMiM/GH9C+xyK3DLbIp7 RHDSGTa6FbhlNsU9IjjpDHvdCtwym+IeETwlsklES3ay34IiWvKHqDKiM3KA/QbsRGdk6ewv BtEZOcB+C4rOyNLZXxQth0WEdQe1IpakM2x9K3DLH4rhQ3Cqi9j9VuCWPxTDh+AkWmyAK3DL H4rhQ3ASLfbAFbjlD8XwITiJFtvgCtzyh2L4EJxEi51wBW75QzF8CE6ixWa4Arf8oRg+BKdK i/1wBW75QzF8GDFTD8CWuAK3/KEYPgSnHoBdcQVu+UMxfAjOpmBRV7Ds+UMxfAhOPQB74wrc 8odi+BCcegC2xxW45Q/F8CE49QDskCtwyx+K4UNw6gHYJFfglj+sUHpAbJP7d29/+/b2N//3 6vb+9PrPP7xdx+f/8Pa//k3z9m/fNuufv/zN277pfh7jIIQbmHjz8pEsZkP/8adqEK5/E/Ms N2T/5TZ7R/+pQrSaOmm2Qvtvt5kF+m8V/vL2d/aG/+nv3/7b31///ft/evuvf/0//8f/ad+u V/33f/e2+lozvWvK8eduGNt2evv7y/pffv+3b//Fm9+9+bM3v73+uf3/n/7Lt7//h7f/7vf/ f9zVOW6z/8Wbv3zzmzd/fIi3Wz3nNu9fv/n3b3715q/e/PGV/d+++Xdv/vObP7n++ePr3/z1 oVx9U3Zz/fDmj66f41fXnP/pluEQ/9B0u/zvrvznP8GwzkBtZ3h/zfDn1yvx6+un+PP1nxUd yjMu+1f7x2ue316Z/+j6Tf3qqqg/P5ShLM1uhg9X7j9Zr/sfXz/Dn92uyaEc07x/vT9ec/za vq//eM3wX9ZsvzuUZ573r/una57fvfnT6z9/dfhqLNP+Vf+88p/v3dP+BX+NdK+s+1f8ldq9 3njuX/bXiLfty/4Vf5V622Hcv+yvlG87jvsX/xX6basX+54CXkfNssX/6+vbhrRupf03J4a/ 7Qy/Wy/27zBUnRgGt/nfXS/Cv3rzzx/zdjvfyzD83C9NO+xwv7/K9cv1/z9dFfXuUIbbneaz DF+vV/nz9d8/HMowXokfZ/h4Hb5/vP7/NdehDKXvnn6GT9fr8MPtsxzKMHXzkwyfrtfhh+s/ n968P5Rh7p5d6Rv31+v39MObT4cyLN2zK/3lyv/xeqW/HLwObdM+u9RfV6leE7z58ViK9nqT OY3tbl/74frPPztG3XXjE+ofjlL3V/0s8x711+sXcpB4aKcn7/nrUerx+tePqT8fpb5NLHyn izg1zy7i+2fUD2v8OG37kvcvqPHb3O/XXv/5+t6PVq+o8XsZvqwd89Ytj1WvqPH7n+Hdyn+0 tkSN389wq+8fDo+EUeP3rvFtlLoWrtuIe7LG76voy/rn88FvKWr8Xob651ZxDhbgqPH7KT7d hsGbZA/W+KuabtVyO8HX4yUNFX6b+FTd6bv2CfXhwQM1fp/6w9kav099eGRCjf8O3zVq/Anq hzX+er9+4+2E9ssLCvwm8Y9r7bq662vlOubsor7vJriZ7I+HS2OU950EP65u4GY2jlWVqO67 n+BWVW4JjhXGKO67n+DrSn+08kZt30nwYTXWq4E/Wdp3E3xZR9mvB10CVfadDFd9XrPcMnw+ V9g3+U+4YNT1Td5367h90ri/+h2jpu++449nS/rrvwtU9F3mwyMcCvou81HPXud9lmWD9q/f /Nmbv3jzuzd/fmrlY5P6NTM+m9Tv1yJVJ2WOmdAYLHYTfDadnB0sdhPcauGPh+cAYrDYTfBp vRM4OlMSg8VOgnc2Gn08WGpjsNhJ8KNNk1zvyU4OFrsJPqxTPZ/ffDw7WOxk+LBK6MfD04Y+ WGzyn7kJuMrne/DiDmCnJJzwuxgsdpkPl/SxHX8uczNtUf/XG/m/fLuuLMmrW7K/efv7Pz0w grTf55Ji/Nj9gs7N+bTX3rRtSs9X+W3u9+ssw9fVj54t83sZPqyVfp1tOFnn9z/Dx9VVvztY AqLQP/oMn9ZCduxbikq/n+HjOvv2/uBoGKV+L8PHdXXiNqgfGw6j1u9l+LSq6ePheSsq9vsp 3q1TYz8cHLB8Xn87wbl5fSv429QnTDwq/v57flp3npX870CNG4R96sPTSbhD+A7UU/v4Ij4d Ox5X+KH9TlM+28zv1x7/eb1TODunv59hnW2/5Thb33czrDM+t+pytr7vZvho9f2YTaX6vpPh Y50Lf8G67f5neLdOhr8/7eX3Mtxs/Ke6wnK6vu+m+LJW96NTlO7mtxOcmftBdd8hPu3nt4nP VferaL7Ll+G1ffc9Hx5FvbbvUn86a9/3qZ/OLD16pLZ0G6y3p8h+e3Dqxx6m3eR93dNE2/yv mVva5n6//vlUV2vPjko7Gd6t8n532LHTqLT7Gd6txeroCieNSg8y2Ez42VFpN8OXdez+4fRq xF6Gj+udzdfD0zM0Ku1meL/WyB9fcNexm+LzOrB+PXzXgVFpM8ELVpr3OvELVpr3qU+vNO9T n59p2uL+jlNNL7+yPljtfkcnJ5vm/vtNNm1yVyNvU85ny/5Oho/r9MMPh3sqlf3dDPUx1S8H izKV/d0Mn+u6y/nJpt3rcMtxfNKPyv5Ohnqr8/nwIjGV/d0Mn+xBr9MPGO13hbqEdPTeOcr+ ZoIXLERvE5+6Z8BK9N57PlzQvOjvvucTRb9/Qn36EdJ96hOPF5Wfp3acN7nTUFWv5+Mh6mG5 7673Et9n5mmb+X0tYOuc87E5lSj2exnqVMG7w+41iv1+hi9rNz36OFAU+/0Mn9cyeXTOPIr9 o+vwaV1KPubAo9jvZ/i0DryfDt7NRbHfzvDj6jU/rxkOPhEUxX4vxTtbuvh89qGj7QRfj5cg FPtt4pPFvn1Cfdrjf4d3jXK/T3169uk7UMPQ71M/ndh6OE90k8n3evxom/s1c0R73F9s9uDo 4zs0fuxmeLc+IHT06RcaP3Yz/LDOlx+94aHxYyfD59UI32rj6fFj9zN8WlfXj/6igsaPzQzv 105VV9iPfQYaP3Y+w9e1uN/+HHxIiMaPnQ/xbp3oWn9ieG5leu8znKjFPoK8nhq3C9vUL7hd 2H/Ppx9d3ac+/msEmw56+dfho8fx9/y4wg/lu00HbXO/X9/z+xNTKVThdzN8sB8lnH32aD/D p/XP+YdMH2X4WvOcrfA7GWr1fX/4CS2q8A8yfFo/y9lnj/Yz2O9Czq8C7Kf4AQ84nbxD2Ezw gumgbeKXrALsU5+/Q9ilPj0h9B3etd8hvP67xrNHe/p4egf5uMKX6XvNAG0yv1/X5OovhU7P AO1msN+znZ8BepDhy7pwcaw2Un3fzfBpddlfTj979Ogz1AWF0zNAD6705/pdna3vOxl+XNnf Hb4OXN93Unywi/HptIPfTPAaB/96aq/wu9THf1Bgzx9tU59ww17fX/91eH3fpT7+bGnz7CI+ pX7w/FE3b/2q7a/e/OrNb9/85s1fvvmLM3NLm9yvewZpm//U/NLY/ly65sq4zV2Xom818ejY NP88zsNSdvnfma8+xj8O/fr+H9B/OfEj3NIvj+g/rquet2Xos3tc7F3ZD2sfXX8LfXZM2s1Q Vz2OLqPTmLSboT5ve3TujcekByk+nLg1izFpJ8EL9jH6DtQ+q7RJ/fX4jYHfc2wSv19/W3J2 TNr9Oo7/3gGzSjtfx+EbRx+Rdt/z0Sdibae6ZuuXcqdmlbyub3N/WmeVbrP6R+v69IS//lLr /dFfO6Cub9N/XMX96fAjn17X97+dD6tgzs4lbfOve0fZxjxn6/p+hi+rM/hyerV5L8NHG5mO 7lLF+9PtpnhXN1M8vT/dToITj8njlw7b1F/Przbvv+fTv2Pbpn6/PsZ1tK5f9fLo6zh8E+O7 073+6/Dd6XapT9b1fuvXcSfmkqKqbzLXPQpu3eV0Vd/k/2TPlxz+DZtX9Z23/3Vdyv7x8CTS 8oy+PoNzjJ6q+iY/ytXnwx9g7ttHH6Aa9a+HXe7STY+/n/qg6NHnxNqme3h5P1m9Pf7zABTz na//hHX0Yr5J/YIfJe+/59P7UGxTv1/919livkn94cS0kVn0ve/58GK1l/Lj2ni8WfW49WO4 1zw2tM39oo2qd7jrou/Nwh3d0KL9uR+HZd7N8G5dBbxV86M/eJ6uGcYH/B/swfNjBrf0/VP+ L+tjm8eWA2i4eHAN7He8Z28CdjOsD1UdvpFZuvbJd7T+duHwdhzXW4BnF7nuond0Nw5fTN5O cKLg+PbUO+/8BUsN+9Tnx4xd6tOPC32Hd+2jxs5FPHzT4qPG8ff8uLJPW79Ke83jQtvc7+w3 Px9OLCd7Zd/J8G7t8ccfxqcjCHY/Q93A9OPBz0BHEOxmeG8b/Zy+GdjN8Mk2qD77QOh+hg94 eODsFM+DDO/qZOHpKZ7dFD+uPfj4VkWo8JsJTkyCe4XfeecveFzoO1B7hd+lPn9XsPNNn96c ev89n97L9AT14wq/bP3g7RWPC20zv7MfXL47PLVOR8zsZKibTtxc4+kjZnYzfFir49EdO6m+ 72bAFsyn6/vudVh/P/2CTSEeXYe6LeDZpdn9DJ/Xh54OP8tD9X03Rd2x7+vZrYq2E3x9wQT+ DvGJrYrm70PstX3nuz6xmuG1fec9nz9cZvc9n34QdO89Hx2PhvH2NTdXBzy0r/592zjWu6TX M5fx1k+apexwH9fdNIxP3vPRb3oeuvrb7i3q/NvuT4e3H1n6+dvTfD6+y0nTD9+e5+vhPEMZ cKX71/5+ZizNd2Imdb6Y2dW5yXvG8IY6N6gP7DzwVJ3fkObDK9T5DXk+vkKd42t/wOG1c5P3 zG0CqfPF79nVufuej6uzfcJ81Aws/fSdmK8afHYJDw/aIbvptY9RU1HcYT76nkl2L37PLrtN 3jMPTURR3KDOVeTHFxTFb0hzvPZSUfyGPCeKYljK5dWPgZI+N7lPDNpD9e6vf8+uz13m02Vx l/norUxIcoM6S+WHM5Lsn3yCo9czauTY1ieeXjUyuwR3iI9+51EhX/yOp7F7THx0iJuH+ft8 FRiVN2lPzetCcC9nJr0NzdZ3cXhINie4SXvKCFrFezkxCt4u8emblA3m1908eO37hizHB/0Y jb8hzfHpAJJlaV9aBiHLLdrX3J/svOOzPnH3HR+3ie1j4qPvOJR4z/wdBuGd9//+FTVx7l45 PtAYvE18fupmh/jsvfEm7Znu4uLbIz5qW30M3iM+PwbvMR/2fH7nUZr+tV9zKG6T+hWK2yE+ q7jdr+L0XfEG8+uqEuS3+/YPryz5wPsN7//LCwbe0g3f5/5jh/gFSnwtsStxi/YV978vJ3bx 7REffvgetW+X+Wi5pto3jC+ufWb1Xk6MO5Bd4rNTLi9/x664VxO74vaIzytuj/n80nEp5bXX zxW3R3x07KIat0V9/BlpV9wWbd2r5qTitok/HCZ2xe2949MLHy9nJsXN07YwjlLTqLpF/Yp1 jx3i06PqFm09PfSk4vaIT4+qe8SHH6p0xe0xn7+jmJr5tYUZNW6X+HCNs1H15cRQ3CZxPQbl nOJ23/FRKUNxu8SHn7WF4l4ui7hvmLrNOfWj30VUuBcTR4V7MbHrbYv2FS5ul/jwnMnw5OId r3BDfWZxh/f8Ktm1ym0RH631pLZt4qP9g9S2TXxYbb5KtkN8/MG/+THx4VWy4cnFO/wgq6tt m/ewfwu1TZtT++fd2w7xC9T2WmJS2zbx8bF0/j7fMaltm/i82rZ5qUP/9vrn/wES0q2LCmVu ZHN0cmVhbQplbmRvYmoKOAowCm9iagoxODY1NwplbmRvYmoKOQowCm9iagpbCl0KZW5kb2Jq CjEwCjAKb2JqCjw8Ci9DQQowLjE0OTAxOTYxCi9jYQowLjE0OTAxOTYxCj4+CmVuZG9iago3 CjAKb2JqCjw8Ci9Gb250Cjw8Ci9Gb250MQoxMQowClIKL0ZvbnQyCjEyCjAKUgo+PgovUGF0 dGVybgo8PAo+PgovWE9iamVjdAo8PAo+PgovRXh0R1N0YXRlCjw8Ci9BbHBoYTAKMTAKMApS Cj4+Ci9Qcm9jU2V0ClsKL1BERgovVGV4dAovSW1hZ2VCCi9JbWFnZUMKL0ltYWdlSQpdCj4+ CmVuZG9iagoxMQowCm9iago8PAovVHlwZQovRm9udAovU3VidHlwZQovVHlwZTAKL0Jhc2VG b250Ci9NVUZVWlkrQXJpYWwtQm9sZE1UCi9FbmNvZGluZwovSWRlbnRpdHktSAovRGVzY2Vu ZGFudEZvbnRzClsKMTMKMApSCl0KL1RvVW5pY29kZQoxNAowClIKPj4KZW5kb2JqCjEyCjAK b2JqCjw8Ci9UeXBlCi9Gb250Ci9TdWJ0eXBlCi9UeXBlMAovQmFzZUZvbnQKL01VRlVaWStB cmlhbE1UCi9FbmNvZGluZwovSWRlbnRpdHktSAovRGVzY2VuZGFudEZvbnRzClsKMTcKMApS Cl0KL1RvVW5pY29kZQoxOAowClIKPj4KZW5kb2JqCjE0CjAKb2JqCjw8Ci9GaWx0ZXIKL0Zs YXRlRGVjb2RlCi9MZW5ndGgKMjEKMApSCj4+CnN0cmVhbQp4nH1STW/DIAy98ys4docqIWma HSKkqdOkHPahZfsBBJwMaSGI0EP+/cCsXddJQyLm2e/ZJiY7tPet0Z5mL26WHXg6aKMcLPPR SaA9jNoQVlClpf9G+JWTsCQL4m5dPEytGWbSNDR7DcHFu5Vu7tTcww3Jnp0Cp81IN++HLuDu aO0nTGA8zQnnVMEQEj0K+yQmoBnKtq0Kce3XbdD8MN5WC7RAzFIzclawWCHBCTMCafKwOG0e wuIEjLqK50nVDwkGwunIThH5IVzMw2KePC8UTzT0s9/6SCuRxno0Zc4vk5bXSYsKabuCIxIJ 1YiCM6JquCxY/im42yWRRLNnSQtJm5rZ9+isUrHqFk1d8H/vW6Vm6vqyfPyDcdDn8cijc2Ey +BpwJHEY2sD5wdjZRhXuL20EuFQKZW5kc3RyZWFtCmVuZG9iagoxNgowCm9iago8PAovRmls dGVyCi9GbGF0ZURlY29kZQovTGVuZ3RoCjIyCjAKUgo+PgpzdHJlYW0KeJztvQd4lFX2B3zu 26ZnSpLJzKTMTHoyQEIIhEgkEwgRjECoJmAkICDYCNKswCoKggpYUVHQVVBQGRLEBHCNZa3r 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 5Vxc6ap0DLWX11T/zFdT7Dtw8uPqHkwP3VY7oT60Lb0hVMIDkfSG2tDvJvjOqm+XrJJlRHW7 lMBJQ3270ixZR4zn6UpzdQOKHRbFoM0JKEZ5nKCYfhj5eDHYk2G8GOYoWi4X7Cjn5wTljBbK FeVyjRZRTmG83M6DvhHVO30+USaH6KAoczCHupWBxoC3emduriiV5WP1vBSrz/KJjhWIirxe FOnrFUUY/DpRkZeJxkJFJ4vkxIoM7CoyULQls5NlvNEySfnxMkn5KBP4H35mDQuw1v6Llj4z YlbWiKasEbOAptCaxXNcoeUzfL6dSxfxDF9Izm2acc4cTqfPCi3KmlUdWppV7dvZ/5mfyX6G Z/fPqt5Jz4yYWL/zmeCs6pb+wf4jsqZXN7RWVtRX/ait67raqq/4mcoqeGX1vK3Kqp/JruLZ lbytKt5WFW+rMlgp2hoxl+t9Xf1OPQ1rGH5WlLZKJiN0uCnV3zDMaWseyhW6fYjftTR1j0Ls QTIFGkLmrGEhC8Cz+lb1reJZWGc8KwHJ1liWa+kQf+oe9mAsy4Zke9awrv86m3ih2tDAcbUh /4Qp9VxVQsHpPz9nC/hHZLtoxNxq/EN8oQB+upekBT/7Wfhzn0WLFi3gX4sCC4hqQ4UTakOD xqEnOh2aaqpuQFq/eJosi7SdBsOItkgHMgPoBFvIm+OhAAtAgkEjTl06abO2WSfxo8LCVk96 ybwnsIMvA3COk5a0FInjs7SkNTOHn18WthYNjFIcVzlt8fhL+H+5XgZWTnOiNGjvi8C6nHV9 15Vtztncd3MZ/4/Zd29BoncL30pbirbItDCwIC4IBBc2QNjoFm/v3pa0dNHwZh4IBBoCC5iQ 10+FzeJC7xLsglitC0T1C+MTEk1fEKsEMxFtfVGcbVGMSWQuEkzRSqKxrq+TH8SI/h93fum2 CmVuZHN0cmVhbQplbmRvYmoKMTMKMApvYmoKPDwKL1R5cGUKL0ZvbnQKL1N1YnR5cGUKL0NJ REZvbnRUeXBlMgovQmFzZUZvbnQKL01VRlVaWStBcmlhbC1Cb2xkTVQKL0NJRFN5c3RlbUlu Zm8KPDwKL1JlZ2lzdHJ5CihBZG9iZSkKL09yZGVyaW5nCihVQ1MpCi9TdXBwbGVtZW50CjAK Pj4KL0ZvbnREZXNjcmlwdG9yCjE1CjAKUgovQ0lEVG9HSURNYXAKL0lkZW50aXR5Ci9EVwo1 NTYKL1cKWwowClsKNzUwCl0KMQoxNQowCjE2ClsKMzMzCjAKMApdCjE5CjI3CjU1NgoyOAoz NgowCjM3ClsKNzIyCl0KMzgKNDEKMAo0MgpbCjc3NwpdCjQzCjY1CjAKNjYKWwo1NTYKMAo1 NTYKNjEwCjU1Ngo2MTAKNTU2CjMzMwo2MTAKNjEwCjI3NwowCjU1NgoyNzcKODg5Cl0KODEK ODMKNjEwCjg0ClsKMAozODkKNTU2CjMzMwo2MTAKMAo3NzcKXQpdCj4+CmVuZG9iagoxNQow Cm9iago8PAovVHlwZQovRm9udERlc2NyaXB0b3IKL0ZvbnROYW1lCi9NVUZVWlkrQXJpYWwt Qm9sZE1UCi9GbGFncwo0Ci9Gb250QkJveApbCi02MjcKLTM3NgoyMDAwCjEwMTcKXQovQXNj ZW50CjcyOAovRGVzY2VudAotMjEwCi9JdGFsaWNBbmdsZQowCi9DYXBIZWlnaHQKNzE1Ci9T dGVtVgo4MAovRm9udEZpbGUyCjE2CjAKUgo+PgplbmRvYmoKMTgKMApvYmoKPDwKL0ZpbHRl cgovRmxhdGVEZWNvZGUKL0xlbmd0aAoyMwowClIKPj4Kc3RyZWFtCnicXVDLbsMgELzzFXtM DhHgqFIPFlKVKpIPfahuPwDD2kGqAWF88N93jZv0gcRjmJ3RzvJT89h4l4G/pmBazNA7bxNO YU4GocPBeSYrsM7kb1ROM+rIOInbZco4Nr4PrK6BvxE55bTA7sGGDveMvySLyfkBdh+nlnA7 x/iJI/oMgikFFnsyetLxWY8IvMgOjSXe5eVAmp+K9yUiVAXLrRkTLE5RG0zaD8hqQUtBfaal GHr7jxebqus3SAXXp7wy5qJT8bknHyGqO7WVlX/5V0+8PJYyacp1FOq36drAOqdbOjOnRMHK MEuiNYvzeJt3DHFVlf0FGQmF9QplbmRzdHJlYW0KZW5kb2JqCjIwCjAKb2JqCjw8Ci9GaWx0 ZXIKL0ZsYXRlRGVjb2RlCi9MZW5ndGgKMjQKMApSCj4+CnN0cmVhbQp4nO29CXxU1fk3/pxz 7yxZJjOTdbKQmTAkLAHCDgFKBkgABWTHhIKABGRRQYM7SlzYIihuVFERqAuC1CEshqUFq0LB olbF1qWK+1aE+kNaBXLf73PuvSGMKG1//X/+7+f9ZIbvec6+Pud5nnPuHUKCiOKomjTyTbl2 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 jD1mZHtE9uRITWvIyHG9OS4uzsr44/W/xqL9eRdUy52bRSRXzKWqCi2aO3i0hCgYPQ5jHT+u fAdsKVYPVRUYYJUoFFV2HVa31d+0V4THbGPuNZbPmou5FjVLokiVPSUNH56swoYZm4sK6f8A eimuYAplbmRzdHJlYW0KZW5kb2JqCjE3CjAKb2JqCjw8Ci9UeXBlCi9Gb250Ci9TdWJ0eXBl Ci9DSURGb250VHlwZTIKL0Jhc2VGb250Ci9NVUZVWlkrQXJpYWxNVAovQ0lEU3lzdGVtSW5m bwo8PAovUmVnaXN0cnkKKEFkb2JlKQovT3JkZXJpbmcKKFVDUykKL1N1cHBsZW1lbnQKMAo+ PgovRm9udERlc2NyaXB0b3IKMTkKMApSCi9DSURUb0dJRE1hcAovSWRlbnRpdHkKL0RXCjU1 NgovVwpbCjAKWwo3NTAKXQoxCjcKMAo4ClsKODg5Cl0KOQoxOAowCjE5CjI4CjU1NgpdCj4+ CmVuZG9iagoxOQowCm9iago8PAovVHlwZQovRm9udERlc2NyaXB0b3IKL0ZvbnROYW1lCi9N VUZVWlkrQXJpYWxNVAovRmxhZ3MKNAovRm9udEJCb3gKWwotNjY0Ci0zMjQKMjAwMAoxMDA1 Cl0KL0FzY2VudAo3MjgKL0Rlc2NlbnQKLTIxMAovSXRhbGljQW5nbGUKMAovQ2FwSGVpZ2h0 CjcxNgovU3RlbVYKODAKL0ZvbnRGaWxlMgoyMAowClIKPj4KZW5kb2JqCjIxCjAKb2JqCjMw OQplbmRvYmoKMjIKMApvYmoKMTkxMjgKZW5kb2JqCjIzCjAKb2JqCjI0OQplbmRvYmoKMjQK MApvYmoKMTQwMDMKZW5kb2JqCjEKMApvYmoKPDwKL1R5cGUKL1BhZ2VzCi9LaWRzClsKNQow ClIKXQovQ291bnQKMQo+PgplbmRvYmoKeHJlZgowIDI1CjAwMDAwMDAwMDIgNjU1MzUgZiAK MDAwMDA1NDgyOSAwMDAwMCBuIAowMDAwMDAwMDAwIDAwMDAwIGYgCjAwMDAwMDAwMTYgMDAw MDAgbiAKMDAwMDAwMDE0MiAwMDAwMCBuIAowMDAwMDAwMjM1IDAwMDAwIG4gCjAwMDAwMDA0 MDAgMDAwMDAgbiAKMDAwMDAxOTIyMyAwMDAwMCBuIAowMDAwMDE5MTMxIDAwMDAwIG4gCjAw MDAwMTkxNTIgMDAwMDAgbiAKMDAwMDAxOTE3MSAwMDAwMCBuIAowMDAwMDE5Mzk0IDAwMDAw IG4gCjAwMDAwMTk1NDMgMDAwMDAgbiAKMDAwMDAzOTI3NiAwMDAwMCBuIAowMDAwMDE5Njg3 IDAwMDAwIG4gCjAwMDAwMzk2ODYgMDAwMDAgbiAKMDAwMDAyMDA3MiAwMDAwMCBuIAowMDAw MDU0MjkyIDAwMDAwIG4gCjAwMDAwMzk4ODggMDAwMDAgbiAKMDAwMDA1NDU0OCAwMDAwMCBu IAowMDAwMDQwMjEzIDAwMDAwIG4gCjAwMDAwNTQ3NDUgMDAwMDAgbiAKMDAwMDA1NDc2NSAw MDAwMCBuIAowMDAwMDU0Nzg3IDAwMDAwIG4gCjAwMDAwNTQ4MDcgMDAwMDAgbiAKdHJhaWxl cgo8PAovU2l6ZQoyNQovUm9vdAozCjAKUgovSW5mbwo0CjAKUgo+PgpzdGFydHhyZWYKNTQ4 ODgKJSVFT0YK --------------ffSr0c8hlIKbvluiJSw5Id5o--