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.96) (envelope-from ) id 1vui5J-002Ygl-0Y for pgsql-hackers@arkaria.postgresql.org; Tue, 24 Feb 2026 02:23:37 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vui5H-00GUMd-2d for pgsql-hackers@arkaria.postgresql.org; Tue, 24 Feb 2026 02:23:35 +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.96) (envelope-from ) id 1vui5H-00GUMV-15 for pgsql-hackers@lists.postgresql.org; Tue, 24 Feb 2026 02:23:35 +0000 Received: from mail-wr1-x432.google.com ([2a00:1450:4864:20::432]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vui5C-00000000xkg-2508 for pgsql-hackers@lists.postgresql.org; Tue, 24 Feb 2026 02:23:35 +0000 Received: by mail-wr1-x432.google.com with SMTP id ffacd0b85a97d-4377174e1ebso3817097f8f.3 for ; Mon, 23 Feb 2026 18:23:30 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1771899810; cv=none; d=google.com; s=arc-20240605; b=dXSCPwoC4Q6iAu28A3c4CEGdR9bQwrpfkvwI7TxxAsXuDAKUN02bdzu/jVmKXE9fm4 vs9KyLe4f9OAX6U6f2Au65hj+U8uHBDXIwL1WLUfAv8M8L9Tb4tCSwz9EsL94NII/M9J 8NhwpVZUNYpwKqVZK/ntrEkdcVx7gSfIa2SIj5zBZa/TdXlhpg70uoMsiQDr9+Ge57AT dv2sqIbUkcKv8FdaAutuWG4eGLpEtBrsSGQ3w8icq3UBrVR+az918p8MJ9Pd3BgPUxen vJKRp7P3vkF5h7ktW9lNqZ98PAd79Y0FgccFassjZVjXJucULSqGzsSrnhQH6A+we5/A ZghA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=Z5hO6gcWDo2cWAoXucybE5wS/yMPgWRHK4WIcYUGMqs=; fh=n8H8c5BvR3EsSaPlNUh43P1RdSu/OVfxjvrRLIrYd78=; b=cW0RgdMHl2082hk0cj+K+eHqLcXKon1FbPro+4KomquhbTAdv90ZWFo2dwea8HusSF CslOGQEdgMHyHt7P3H+n61Rshaf20roJcPDSBVKIx798fa8Y2bsd558G6nRmeTsjlWeP hd60i7x2eE41iMthCZTdkFSOcjeks5RgbVSEzNcXclY/7GYCSwpJm6L3wFAtQsZlkOaJ rI9jrilsMWXwawrFCCIND+VooqpJNQU8cC46hzldM1B63Wp3/YIaEtOjSmvCjwFrock5 +82Rtxwfcz6WdiCx25j9dwBSxlhmNN8HNT45PyHI0Goh+JBUOG58PMSskwuj8xai/ZV/ mCAg==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1771899810; x=1772504610; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=Z5hO6gcWDo2cWAoXucybE5wS/yMPgWRHK4WIcYUGMqs=; b=ct8Ae/niSYU0wPg/NbwIBAghlgkKwNE0/RTiAvZQWl3Tg0tXAmK9aTVRhrKbltHdZ8 GMxNhUhB+fSvm8XvmHoK2UPUjhGx2e35P0h7/SAaHe+WtjlB8qhkka5bm3OtfvnohdiZ ybJ+mA7GJH4hybv52JfvZAIb+RPYxnR3jmjRJvD2/0DrI8o3rVHCeecD/VGEBLN5Crnv Es7pvj4ECLZYZtqchjkNMkvx+af6+skEIXheQ4Z2nOUk6QSTA5z1TvIofmfry9TFNRkF 0gu3PC+aYJTrJBt3TwWi/0UAIQwnWJGXJKPvJkiAag/91i/ezvjiVdI1USGwq5ABi1n2 YXaA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771899810; x=1772504610; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=Z5hO6gcWDo2cWAoXucybE5wS/yMPgWRHK4WIcYUGMqs=; b=gT183BDHzoucDzdDzblwrQ4gpoFlW/QzxgozEwvR2irt3+pF3K4f4VJv8ByMj6tEwZ INN4Dqtqpjaz3CLXuNFfk0gMXTTsIuEnrvm261R+RobzgkJawRG4gxRmd3iR+h/DFSoe ERwI9JmqRK2MY1gi3YaLxBbpKVUpkctRPORI+9/Bq/V5J2qK64nnRN5XyIZBs8T0Z77p 4G5GJdUQZR4VSmId5VMs/nBWcFH/rrKulUHdE08Gx374AVqIm4DwffprxHJaOfJHAKIA Wra2GgU9hgnqYegykNQChJqTWodOy/mv0TSSVImqD0lnw7yD2axy2Mwat4+mCW6rrwcN TBzQ== X-Forwarded-Encrypted: i=1; AJvYcCW0A3hO/vPZV1S/Y8ObwX75262CJj/o9XiGRlJKkaHLg6lhXFvFPXJx1zO4j+7+yOJG3rSecd17oSv3pSUv@lists.postgresql.org X-Gm-Message-State: AOJu0YyDu3nEj9dKnvM3T7dGuulg+q0eLnUflgt40sYfuuOpY8RsXbrE ryea5h34ZtJig7YBlUQ2TNUaODeTw10R+BmnvXklA/U10ay1JKXqnceRdix2qa0gJSCQb5o5O4I RHXsfecFiCDOMdsZtXVBtH1sy1WhR9xI= X-Gm-Gg: ATEYQzz08rG87XjlAurOvz+tZkNKaMnhHpqsFaZE7365h+h2MpdmC7+1MoI/IipKBK1 fMtYr/SZbn2DVcotUyY4Ntcs3IGFlr3mI2pC19oj+sIsDFHnkZOmBG0oVCARjFYBVAA8I9VEv1M zhdmhhLbtdiza+iUVqCK9D4mrzDla0K9mGJmv86qKZ5XjYKscfqET1eqpXXoGSesQInwHfObzeP I9MpURYq9bu30JGlf5ZeAl478MwllgcvATi8QNRcE3QmTRnxUwH3Pb4MuHd+zbjuBZIRkA3mM+3 /IYuDP/7Vylh5yqWsRLolAfKH3a+XjNsLOPEgEO6rUIG6cQGghNBpyErimmIaMeuEEln3I+UMfX xQRXRB9J6 X-Received: by 2002:a5d:588c:0:b0:439:5fe2:6b66 with SMTP id ffacd0b85a97d-4396f166cdamr21042920f8f.19.1771899809985; Mon, 23 Feb 2026 18:23:29 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: David Rowley Date: Tue, 24 Feb 2026 15:23:17 +1300 X-Gm-Features: AaiRm52Q0KiQ9IbXzZp-R99A3khAu898BucsYJu2O-rm3i4RbIn9gqikicHl0bo Message-ID: Subject: Re: More speedups for tuple deformation To: Andres Freund Cc: John Naylor , Chao Li , PostgreSQL Developers Content-Type: multipart/mixed; boundary="000000000000c0b48e064b8892d7" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000c0b48e064b8892d7 Content-Type: text/plain; charset="UTF-8" I've attached an updated version of the patch (v9). This includes some changes to the main patch so that we no longer access the tuple's natts when we're only fetching <= maximum guaranteed column. I've also included what John mentioned about using pg_rightmost_one_pos32() directly rather than trying to reinvent it in a slightly more optimal way. The changes in 0004 and 0005 are new. 0004 makes calling slot_getmissingattrs() the responsibility of the TupleTableSlotOps.getsomeattrs() function. Doing this allows getsomeattrs() to be called with the sibling call optimisation in slot_getsomeattrs_int() and since slot_getsomeattrs_int() is such a trivial function now, I ended up just modifying slot_getsomeattrs() to call getsomeattrs() in a way that allows the compiler to apply the sibling call optimisation. This seems to help reduce some overheads and makes the 0 extra column tests look better. I've also modified slot_getmissingattrs() replacing the memsets with a for loop to zero the tts_values and set the nulls in the tts_isnull array. Other experimentations showed that doing this in a loop is faster than memset, so I applied those learnings there too. I've moved the elog(ERROR) that checks for invalid attnums into there too. That does mean we'll deform a tuple before raising that error, but I don't see the issue with that given that it's a "can't happen" error anyway. Moving it there saves a compare and jump. 0005 reduces the size of CompactAttribute. It shrinks the struct down to 8 bytes from 16 by using some bitflags for some lesser-used booleans and by shrinking attcacheoff down to int16. The idea is that we just don't cache any offsets larger than 2^15. It's likely if we get a tuple that big that there's a variable-length attribute anyway, which caching the offset of isn't possible. I'm not getting great results from benchmarking the 0005 patch. I verified that gcc does access the array without calculating the element address from scratch each time and calculates it once, then increments the pointer by sizeof(CompactAttribute). See the attached .csv for the results on the 3 machines I tested on. I've also resequenced the patches to make the deform_bench test module part of the 0001 patch. This makes it easier to test the performance of master. I've not yet made it so the TTS_FLAG_OBEYS_NOT_NULL_CONSTRAINTS tts_flag gets set in all places it currently could be set. There are a few more scan types where it could be set. I understand you mentioned that you thought the flag should disable the optimisation rather than enable it, but I've not yet looked to check all the places that it needs to be disabled. David --000000000000c0b48e064b8892d7 Content-Type: text/plain; charset="US-ASCII"; name="v9-0001-Introduce-deform_bench-test-module.patch" Content-Disposition: attachment; filename="v9-0001-Introduce-deform_bench-test-module.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlzysc630 RnJvbSA1NGJkMDBmM2MxYjU3N2RiMTVmYzZjM2E5NGNkY2U1ZjYxZjU4NmQxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZpZCBSb3dsZXkgPGRncm93bGV5QGdtYWlsLmNvbT4KRGF0 ZTogVHVlLCAyNyBKYW4gMjAyNiAxNTowODowOSArMTMwMApTdWJqZWN0OiBbUEFUQ0ggdjkgMS81 XSBJbnRyb2R1Y2UgZGVmb3JtX2JlbmNoIHRlc3QgbW9kdWxlCgpGb3IgYmVuY2htYXJpbmcgdHVw bGUgZGVmb3JtYXRpb24uCi0tLQogc3JjL3Rlc3QvbW9kdWxlcy9kZWZvcm1fYmVuY2gvLmdpdGln bm9yZSAgICAgIHwgICA0ICsKIHNyYy90ZXN0L21vZHVsZXMvZGVmb3JtX2JlbmNoL01ha2VmaWxl ICAgICAgICB8ICAyMSArKysrCiAuLi4vZGVmb3JtX2JlbmNoL2RlZm9ybV9iZW5jaC0tMS4wLnNx bCAgICAgICAgfCAgIDggKysKIHNyYy90ZXN0L21vZHVsZXMvZGVmb3JtX2JlbmNoL2RlZm9ybV9i ZW5jaC5jICB8IDEwNyArKysrKysrKysrKysrKysrKysKIC4uLi9tb2R1bGVzL2RlZm9ybV9iZW5j aC9kZWZvcm1fYmVuY2guY29udHJvbCB8ICAgNCArCiBzcmMvdGVzdC9tb2R1bGVzL2RlZm9ybV9i ZW5jaC9tZXNvbi5idWlsZCAgICAgfCAgMjIgKysrKwogc3JjL3Rlc3QvbW9kdWxlcy9tZXNvbi5i dWlsZCAgICAgICAgICAgICAgICAgIHwgICAxICsKIDcgZmlsZXMgY2hhbmdlZCwgMTY3IGluc2Vy dGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL2RlZm9ybV9iZW5j aC8uZ2l0aWdub3JlCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy9kZWZvcm1f YmVuY2gvTWFrZWZpbGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL2RlZm9y bV9iZW5jaC9kZWZvcm1fYmVuY2gtLTEuMC5zcWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVz dC9tb2R1bGVzL2RlZm9ybV9iZW5jaC9kZWZvcm1fYmVuY2guYwogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyYy90ZXN0L21vZHVsZXMvZGVmb3JtX2JlbmNoL2RlZm9ybV9iZW5jaC5jb250cm9sCiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy9kZWZvcm1fYmVuY2gvbWVzb24uYnVpbGQK CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2RlZm9ybV9iZW5jaC8uZ2l0aWdub3JlIGIv c3JjL3Rlc3QvbW9kdWxlcy9kZWZvcm1fYmVuY2gvLmdpdGlnbm9yZQpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNWRjYjNmZjk3MjMKLS0tIC9kZXYvbnVsbAorKysgYi9z cmMvdGVzdC9tb2R1bGVzL2RlZm9ybV9iZW5jaC8uZ2l0aWdub3JlCkBAIC0wLDAgKzEsNCBAQAor IyBHZW5lcmF0ZWQgc3ViZGlyZWN0b3JpZXMKKy9sb2cvCisvcmVzdWx0cy8KKy90bXBfY2hlY2sv CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2RlZm9ybV9iZW5jaC9NYWtlZmlsZSBiL3Ny Yy90ZXN0L21vZHVsZXMvZGVmb3JtX2JlbmNoL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwLi5iNWZjMGY3YTU4MwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90 ZXN0L21vZHVsZXMvZGVmb3JtX2JlbmNoL01ha2VmaWxlCkBAIC0wLDAgKzEsMjEgQEAKKyMgc3Jj L3Rlc3QvbW9kdWxlcy9kZWZvcm1fYmVuY2gvTWFrZWZpbGUKKworTU9EVUxFX2JpZyA9IGRlZm9y bV9iZW5jaAorT0JKUyA9IGRlZm9ybV9iZW5jaC5vCisKK0VYVEVOU0lPTiA9IGRlZm9ybV9iZW5j aAorREFUQSA9IGRlZm9ybV9iZW5jaC0tMS4wLnNxbAorUEdGSUxFREVTQyA9ICJkZWZvcm1fYmVu Y2ggLSB0dXBsZSBkZWZvcm0gYmVuY2htYXJraW5nIgorCitSRUdSRVNTID0gZGVmb3JtX2JlbmNo CisKK2lmZGVmIFVTRV9QR1hTCitQR19DT05GSUcgPSBwZ19jb25maWcKK1BHWFMgOj0gJChzaGVs bCAkKFBHX0NPTkZJRykgLS1wZ3hzKQoraW5jbHVkZSAkKFBHWFMpCitlbHNlCitzdWJkaXIgPSBz cmMvdGVzdC9tb2R1bGVzL2RlZm9ybV9iZW5jaAordG9wX2J1aWxkZGlyID0gLi4vLi4KK2luY2x1 ZGUgJCh0b3BfYnVpbGRkaXIpL3NyYy9NYWtlZmlsZS5nbG9iYWwKK2luY2x1ZGUgJCh0b3Bfc3Jj ZGlyKS9jb250cmliL2NvbnRyaWItZ2xvYmFsLm1rCitlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvbW9kdWxlcy9kZWZvcm1fYmVuY2gvZGVmb3JtX2JlbmNoLS0xLjAuc3FsIGIvc3JjL3Rlc3Qv bW9kdWxlcy9kZWZvcm1fYmVuY2gvZGVmb3JtX2JlbmNoLS0xLjAuc3FsCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi40OTJiNzFkYmEzYgotLS0gL2Rldi9udWxsCisrKyBi L3NyYy90ZXN0L21vZHVsZXMvZGVmb3JtX2JlbmNoL2RlZm9ybV9iZW5jaC0tMS4wLnNxbApAQCAt MCwwICsxLDggQEAKKy8qIGRlZm9ybV9iZW5jaC0tMS4wLnNxbCAqLworCistLSBjb21wbGFpbiBp ZiBzY3JpcHQgaXMgc291cmNlZCBpbiBwc3FsLCByYXRoZXIgdGhhbiB2aWEgQ1JFQVRFIEVYVEVO U0lPTgorXGVjaG8gVXNlICJDUkVBVEUgRVhURU5TSU9OIGRlZm9ybV9iZW5jaCIgdG8gbG9hZCB0 aGlzIGZpbGUuIFxxdWl0CisKK0NSRUFURSBGVU5DVElPTiBkZWZvcm1fYmVuY2godGFibGVvaWQg T2lkLCBhdHRudW0gaW50W10pIFJFVFVSTlMgRkxPQVQKK0FTICdNT0RVTEVfUEFUSE5BTUUnLCAn ZGVmb3JtX2JlbmNoJworTEFOR1VBR0UgQyBWT0xBVElMRSBTVFJJQ1Q7CmRpZmYgLS1naXQgYS9z cmMvdGVzdC9tb2R1bGVzL2RlZm9ybV9iZW5jaC9kZWZvcm1fYmVuY2guYyBiL3NyYy90ZXN0L21v ZHVsZXMvZGVmb3JtX2JlbmNoL2RlZm9ybV9iZW5jaC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwLi43ODM4ZjYzOWJlZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0 L21vZHVsZXMvZGVmb3JtX2JlbmNoL2RlZm9ybV9iZW5jaC5jCkBAIC0wLDAgKzEsMTA3IEBACisv Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBkZWZvcm1fYmVuY2guYworICoKKyAqIGZvciBiZW5j aG1hcmtpbmcgdHVwbGUgZGVmb3JtYXRpb24gcm91dGluZXMKKyAqLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICovCisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKworI2luY2x1ZGUgPHRpbWUuaD4KKyNpbmNsdWRl IDxzeXMvdGltZS5oPgorCisjaW5jbHVkZSAiYWNjZXNzL2hlYXBhbS5oIgorI2luY2x1ZGUgImFj Y2Vzcy9yZWxzY2FuLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19hbV9kLmgiCisjaW5jbHVkZSAi Y2F0YWxvZy9wZ190eXBlX2QuaCIKKyNpbmNsdWRlICJmdW5jYXBpLmgiCisjaW5jbHVkZSAibWlz Y2FkbWluLmgiCisjaW5jbHVkZSAidXRpbHMvYXJyYXkuaCIKKyNpbmNsdWRlICJ1dGlscy9hcnJh eWFjY2Vzcy5oIgorI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCisKK1BHX01PRFVMRV9NQUdJ QzsKKworUEdfRlVOQ1RJT05fSU5GT19WMShkZWZvcm1fYmVuY2gpOworCitEYXR1bQorZGVmb3Jt X2JlbmNoKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJT2lkCQkJdGFibGVvaWQgPSBQR19HRVRBUkdf T0lEKDApOworCUFycmF5VHlwZSAgKmFycmF5ID0gUEdfR0VUQVJHX0FSUkFZVFlQRV9QKDEpOwor CVRhYmxlU2NhbkRlc2Mgc2NhbjsKKwlSZWxhdGlvbglyZWw7CisJVHVwbGVEZXNjCXR1cGRlc2M7 CisJVHVwbGVUYWJsZVNsb3QgKnNsb3Q7CisJRGF0dW0JICAgKmVsZW1fZGF0dW1zID0gTlVMTDsK Kwlib29sCSAgICplbGVtX251bGxzID0gTlVMTDsKKwlpbnQJCQllbGVtX2NvdW50OworCWludAkJ ICAgKmF0dG51bXM7CisJY2xvY2tfdAkJc3RhcnQsCisJCQkJZW5kOworCisJcmVsID0gcmVsYXRp b25fb3Blbih0YWJsZW9pZCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCWlmIChyZWwtPnJkX3JlbC0+ cmVsYW0gIT0gSEVBUF9UQUJMRV9BTV9PSUQpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNv ZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCSBlcnJtc2coIm9ubHkgaGVh cCBBTSBpcyBzdXBwb3J0ZWQiKSkpOworCisJdHVwZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVs KTsKKwlzbG90ID0gTWFrZVR1cGxlVGFibGVTbG90KHR1cGRlc2MsICZUVFNPcHNCdWZmZXJIZWFw VHVwbGUpOworCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW5fc3RyYXQocmVsLCBHZXRBY3RpdmVTbmFw c2hvdCgpLCAwLCBOVUxMLCB0cnVlLCBmYWxzZSk7CisKKwkvKgorCSAqIFRoZSBhcnJheSBpcyB1 c2VkIHRvIGFsbG93IGNhbGxlcnMgdG8gZGVmaW5lIGhvdyBtYW55IGF0dHMgdG8gZGVmb3JtLgor CSAqIGUuZzogJ3sxLDEwfSc6OmludFtdIHdvdWxkIGRlZm9ybSBhdHRudW09MSwgdGhlbiBpbiBh IDJuZCBwYXNzIGRlZm9ybQorCSAqIHRoZSByZW1haW5kZXIgdXAgdG8gYXR0bnVtPTEwLiAgUGFz c2luZyBhbiBlbGVtZW50IGFzIE5VTEwgbWVhbnMgYWxsCisJICogYXR0bnVtcy4gIFRoaXMgYWxs b3dzIHNpbXVsYXRpb24gb2YgaW5jcmVtZW50YWwgZGVmb3JtYXRpb24uICBHZW5lcmFsbHkKKwkg KiBpZiB5b3UncmUgcGFzc2luZyBhbiBhcnJheSB3aXRoIG1vcmUgdGhhbiAxIGVsZW1lbnQsIHRo ZW4gdGhlIGFycmF5CisJICogc2hvdWxkIGJlIGluIGFzY2VuZGluZyBvcmRlci4gIERvaW5nIHNv bWV0aGluZyBsaWtlICd7MTAsMX0nIHdvdWxkIG1lYW4KKwkgKiB3ZSd2ZSBhbHJlYWR5IGRlZm9y bWVkIDEwIGF0dHJpYnV0ZXMgYW5kIG9uIHRoZSAybmQgcGFzcyB0aGVyZSdzCisJICogbm90aGlu ZyB0byBkbyBzaW5jZSBhdHRudW09MSB3YXMgYWxyZWFkeSBkZWZvcm1lZCBpbiB0aGUgZmlyc3Qg cGFzcy4KKwkgKgorCSAqIFlvdSdsbCBnZXQgYW4gRVJST1IgaWYgeW91IHBhc3MgYSBudW1iZXIg aGlnaGVyIHRoYW4gdGhlIG51bWJlciBvZgorCSAqIGF0dHJpYnV0ZXMgaW4gdGhlIHRhYmxlLgor CSAqLworCWRlY29uc3RydWN0X2FycmF5KGFycmF5LAorCQkJCQkgIElOVDRPSUQsCisJCQkJCSAg c2l6ZW9mKGludDMyKSwKKwkJCQkJICB0cnVlLAorCQkJCQkgICdpJywKKwkJCQkJICAmZWxlbV9k YXR1bXMsCisJCQkJCSAgJmVsZW1fbnVsbHMsCisJCQkJCSAgJmVsZW1fY291bnQpOworCisJYXR0 bnVtcyA9IHBhbGxvY19hcnJheShpbnQsIGVsZW1fY291bnQpOworCisJZm9yIChpbnQgaSA9IDA7 IGkgPCBlbGVtX2NvdW50OyBpKyspCisJeworCQkvKiBNYWtlIGEgTlVMTCBlbGVtZW50IG1lYW4g YWxsIGF0dHJpYnV0ZXMgKi8KKwkJaWYgKGVsZW1fbnVsbHNbaV0pCisJCQlhdHRudW1zW2ldID0g dHVwZGVzYy0+bmF0dHM7CisJCWVsc2UKKwkJCWF0dG51bXNbaV0gPSBEYXR1bUdldEludDMyKGVs ZW1fZGF0dW1zW2ldKTsKKwl9CisKKwlzdGFydCA9IGNsb2NrKCk7CisKKwl3aGlsZSAoaGVhcF9n ZXRuZXh0c2xvdChzY2FuLCBGb3J3YXJkU2NhbkRpcmVjdGlvbiwgc2xvdCkpCisJeworCQlDSEVD S19GT1JfSU5URVJSVVBUUygpOworCisJCS8qIERlZm9ybSBpbiBzdGFnZXMgYWNjb3JkaW5nIHRv IHRoZSBhdHRudW1zIGFycmF5ICovCisJCWZvciAoaW50IGkgPSAwOyBpIDwgZWxlbV9jb3VudDsg aSsrKQorCQkJc2xvdF9nZXRzb21lYXR0cnMoc2xvdCwgYXR0bnVtc1tpXSk7CisJfQorCisJZW5k ID0gY2xvY2soKTsKKworCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qoc2xvdCk7CisJdGFi bGVfZW5kc2NhbihzY2FuKTsKKwlyZWxhdGlvbl9jbG9zZShyZWwsIEFjY2Vzc1NoYXJlTG9jayk7 CisKKworCS8qIFJldHVybnMgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gcnVuIHRoZSB0 ZXN0ICovCisJUEdfUkVUVVJOX0ZMT0FUOCgoZG91YmxlKSAoZW5kIC0gc3RhcnQpIC8gKENMT0NL U19QRVJfU0VDIC8gMTAwMCkpOworfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9kZWZv cm1fYmVuY2gvZGVmb3JtX2JlbmNoLmNvbnRyb2wgYi9zcmMvdGVzdC9tb2R1bGVzL2RlZm9ybV9i ZW5jaC9kZWZvcm1fYmVuY2guY29udHJvbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMC4uYTIwMjNmOWQ3MzgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVz L2RlZm9ybV9iZW5jaC9kZWZvcm1fYmVuY2guY29udHJvbApAQCAtMCwwICsxLDQgQEAKKyMgZGVm b3JtX2JlbmNoIGV4dGVuc2lvbgorY29tbWVudCA9ICdmdW5jdGlvbnMgZm9yIGJlbmNobWFya2lu ZyB0dXBsZSBkZWZvcm1hdGlvbicKK2RlZmF1bHRfdmVyc2lvbiA9ICcxLjAnCittb2R1bGVfcGF0 aG5hbWUgPSAnJGxpYmRpci9kZWZvcm1fYmVuY2gnCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1 bGVzL2RlZm9ybV9iZW5jaC9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L21vZHVsZXMvZGVmb3JtX2Jl bmNoL21lc29uLmJ1aWxkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44 MjA0OTU4NTI0NAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvZGVmb3JtX2Jl bmNoL21lc29uLmJ1aWxkCkBAIC0wLDAgKzEsMjIgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDI2LCBQ b3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCitkZWZvcm1fYmVuY2hfc291cmNl cyA9IGZpbGVzKAorICAnZGVmb3JtX2JlbmNoLmMnLAorKQorCitpZiBob3N0X3N5c3RlbSA9PSAn d2luZG93cycKKyAgZGVmb3JtX2JlbmNoX3NvdXJjZXMgKz0gcmNfbGliX2dlbi5wcm9jZXNzKHdp bjMydmVyX3JjLCBleHRyYV9hcmdzOiBbCisgICAgJy0tTkFNRScsICdkZWZvcm1fYmVuY2gnLAor ICAgICctLUZJTEVERVNDJywgJ2RlZm9ybV9iZW5jaCAtIGJlbmNobWFya2luZyB0dXBsZSBkZWZv cm1hdGlvbicsXSkKK2VuZGlmCisKK2RlZm9ybV9iZW5jaCA9IHNoYXJlZF9tb2R1bGUoJ2RlZm9y bV9iZW5jaCcsCisgIGRlZm9ybV9iZW5jaF9zb3VyY2VzLAorICBrd2FyZ3M6IHBnX3Rlc3RfbW9k X2FyZ3MsCispCit0ZXN0X2luc3RhbGxfbGlicyArPSBkZWZvcm1fYmVuY2gKKwordGVzdF9pbnN0 YWxsX2RhdGEgKz0gZmlsZXMoCisgICdkZWZvcm1fYmVuY2gtLTEuMC5zcWwnLAorICAnZGVmb3Jt X2JlbmNoLmNvbnRyb2wnLAorKQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9tZXNvbi5i dWlsZCBiL3NyYy90ZXN0L21vZHVsZXMvbWVzb24uYnVpbGQKaW5kZXggMjYzNGE1MTk5MzUuLmVm MmIwYWY0NTgxIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL21lc29uLmJ1aWxkCisrKyBi L3NyYy90ZXN0L21vZHVsZXMvbWVzb24uYnVpbGQKQEAgLTIsNiArMiw3IEBACiAKIHN1YmRpcign YnJpbicpCiBzdWJkaXIoJ2NvbW1pdF90cycpCitzdWJkaXIoJ2RlZm9ybV9iZW5jaCcpCiBzdWJk aXIoJ2RlbGF5X2V4ZWN1dGlvbicpCiBzdWJkaXIoJ2R1bW15X2luZGV4X2FtJykKIHN1YmRpcign ZHVtbXlfc2VjbGFiZWwnKQotLSAKMi41MS4wCgo= --000000000000c0b48e064b8892d7 Content-Type: text/plain; charset="US-ASCII"; name="v9-0002-Add-empty-TupleDescFinalize-function.patch" Content-Disposition: attachment; filename="v9-0002-Add-empty-TupleDescFinalize-function.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlzyseib1 RnJvbSA3NWE0N2I5M2U2Y2RiYTI0MTA5ZWI1YjZhMWVkYTU3YmYyZTk4MDAyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZpZCBSb3dsZXkgPGRncm93bGV5QGdtYWlsLmNvbT4KRGF0 ZTogV2VkLCAyMSBKYW4gMjAyNiAxNTo0MTozNyArMTMwMApTdWJqZWN0OiBbUEFUQ0ggdjkgMi81 XSBBZGQgZW1wdHkgVHVwbGVEZXNjRmluYWxpemUoKSBmdW5jdGlvbgoKQ3VycmVudGx5IGRvZXMg bm90aGluZywgYnV0IHdpbGwgaW4gYSBmdXR1cmUgY29tbWl0LgotLS0KIGNvbnRyaWIvZGJsaW5r L2RibGluay5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0ICsrKysKIGNvbnRyaWIv cGdfYnVmZmVyY2FjaGUvcGdfYnVmZmVyY2FjaGVfcGFnZXMuYyAgICAgICB8ICAyICsrCiBjb250 cmliL3BnX3Zpc2liaWxpdHkvcGdfdmlzaWJpbGl0eS5jICAgICAgICAgICAgICAgfCAgMiArKwog c3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl90dXBsZS5jICAgICAgICAgICAgICAgIHwgIDEg Kwogc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi90dXBkZXNjLmMgICAgICAgICAgICAgICAgIHwg MTMgKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW51dGlsLmMgICAgICAg ICAgICAgICAgICAgIHwgIDEgKwogc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHNjYW4uYyAg ICAgICAgICAgICAgICAgIHwgIDEgKwogc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd1dGls cy5jICAgICAgICAgICAgICAgIHwgIDEgKwogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vdHdv cGhhc2UuYyAgICAgICAgICAgICAgIHwgIDEgKwogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0v eGxvZ2Z1bmNzLmMgICAgICAgICAgICAgIHwgIDEgKwogc3JjL2JhY2tlbmQvYmFja3VwL2Jhc2Vi YWNrdXBfY29weS5jICAgICAgICAgICAgICAgIHwgIDMgKysrCiBzcmMvYmFja2VuZC9jYXRhbG9n L2luZGV4LmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArKwogc3JjL2JhY2tlbmQvY2F0 YWxvZy9wZ19wdWJsaWNhdGlvbi5jICAgICAgICAgICAgICAgIHwgIDEgKwogc3JjL2JhY2tlbmQv Y2F0YWxvZy90b2FzdGluZy5jICAgICAgICAgICAgICAgICAgICAgIHwgIDYgKysrKysrCiBzcmMv YmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgICAgICAgICAgICAgICAgICAgICAgfCAgMSArCiBz cmMvYmFja2VuZC9jb21tYW5kcy9mdW5jdGlvbmNtZHMuYyAgICAgICAgICAgICAgICAgfCAgMSAr CiBzcmMvYmFja2VuZC9jb21tYW5kcy9zZXF1ZW5jZS5jICAgICAgICAgICAgICAgICAgICAgfCAg MSArCiBzcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgICAgICAgICAgICAg fCAgNCArKysrCiBzcmMvYmFja2VuZC9jb21tYW5kcy93YWl0LmMgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgMSArCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjU1JGLmMgICAgICAgICAgICAg ICAgICAgICAgfCAgMiArKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1R1cGxlcy5jICAgICAg ICAgICAgICAgICAgIHwgIDQgKysrKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUZ1bmN0aW9u c2Nhbi5jICAgICAgICAgICAgIHwgIDIgKysKIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9yZWxh dGlvbi5jICAgICAgICAgICAgICAgICB8ICA0ICsrKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV90YXJnZXQuYyAgICAgICAgICAgICAgICAgICB8ICAyICsrCiAuLi4vcmVwbGljYXRpb24vbGli cHF3YWxyZWNlaXZlci9saWJwcXdhbHJlY2VpdmVyLmMgfCAgMSArCiBzcmMvYmFja2VuZC9yZXBs aWNhdGlvbi93YWxzZW5kZXIuYyAgICAgICAgICAgICAgICAgfCAgNSArKysrKwogc3JjL2JhY2tl bmQvdXRpbHMvYWR0L2FjbC5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEgKwogc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L2dlbmZpbGUuYyAgICAgICAgICAgICAgICAgICAgIHwgIDEgKwogc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L2xvY2tmdW5jcy5jICAgICAgICAgICAgICAgICAgIHwgIDEgKwog c3JjL2JhY2tlbmQvdXRpbHMvYWR0L29yZGVyZWRzZXRhZ2dzLmMgICAgICAgICAgICAgIHwgIDEg Kwogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bnc3RhdGZ1bmNzLmMgICAgICAgICAgICAgICAgIHwg IDUgKysrKysKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC90c3ZlY3Rvcl9vcC5jICAgICAgICAgICAg ICAgICB8ICAxICsKIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMgICAgICAgICAg ICAgICAgICB8ICA4ICsrKysrKysrCiBzcmMvYmFja2VuZC91dGlscy9mbWdyL2Z1bmNhcGkuYyAg ICAgICAgICAgICAgICAgICAgfCAgNiArKysrKysKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3Vj X2Z1bmNzLmMgICAgICAgICAgICAgICAgICB8ICA1ICsrKysrCiBzcmMvaW5jbHVkZS9hY2Nlc3Mv dHVwZGVzYy5oICAgICAgICAgICAgICAgICAgICAgICAgfCAgMSArCiBzcmMvcGwvcGxwZ3NxbC9z cmMvcGxfY29tcC5jICAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArKwogLi4uL3Rlc3RfY3Vz dG9tX3N0YXRzL3Rlc3RfY3VzdG9tX2ZpeGVkX3N0YXRzLmMgICAgIHwgIDEgKwogc3JjL3Rlc3Qv bW9kdWxlcy90ZXN0X3ByZWR0ZXN0L3Rlc3RfcHJlZHRlc3QuYyAgICAgIHwgIDEgKwogMzkgZmls ZXMgY2hhbmdlZCwgMTAwIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQg YS9jb250cmliL2RibGluay9kYmxpbmsuYyBiL2NvbnRyaWIvZGJsaW5rL2RibGluay5jCmluZGV4 IDI0OThkODBjOGU3Li40MDM4OTUwYTZlZiAxMDA2NDQKLS0tIGEvY29udHJpYi9kYmxpbmsvZGJs aW5rLmMKKysrIGIvY29udHJpYi9kYmxpbmsvZGJsaW5rLmMKQEAgLTg4MSw2ICs4ODEsNyBAQCBt YXRlcmlhbGl6ZVJlc3VsdChGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywgUEdjb25uICpjb25uLCBQ R3Jlc3VsdCAqcmVzKQogCQl0dXBkZXNjID0gQ3JlYXRlVGVtcGxhdGVUdXBsZURlc2MoMSk7CiAJ CVR1cGxlRGVzY0luaXRFbnRyeSh0dXBkZXNjLCAoQXR0ck51bWJlcikgMSwgInN0YXR1cyIsCiAJ CQkJCQkgICBURVhUT0lELCAtMSwgMCk7CisJCVR1cGxlRGVzY0ZpbmFsaXplKHR1cGRlc2MpOwog CQludHVwbGVzID0gMTsKIAkJbmZpZWxkcyA9IDE7CiAJfQpAQCAtMTA0NCw2ICsxMDQ1LDcgQEAg bWF0ZXJpYWxpemVRdWVyeVJlc3VsdChGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywKIAkJCXR1cGRl c2MgPSBDcmVhdGVUZW1wbGF0ZVR1cGxlRGVzYygxKTsKIAkJCVR1cGxlRGVzY0luaXRFbnRyeSh0 dXBkZXNjLCAoQXR0ck51bWJlcikgMSwgInN0YXR1cyIsCiAJCQkJCQkJICAgVEVYVE9JRCwgLTEs IDApOworCQkJVHVwbGVEZXNjRmluYWxpemUodHVwZGVzYyk7CiAJCQlhdHRpbm1ldGEgPSBUdXBs ZURlc2NHZXRBdHRJbk1ldGFkYXRhKHR1cGRlc2MpOwogCiAJCQlvbGRjb250ZXh0ID0gTWVtb3J5 Q29udGV4dFN3aXRjaFRvKHJzaW5mby0+ZWNvbnRleHQtPmVjeHRfcGVyX3F1ZXJ5X21lbW9yeSk7 CkBAIC0xNTI5LDYgKzE1MzEsOCBAQCBkYmxpbmtfZ2V0X3BrZXkoUEdfRlVOQ1RJT05fQVJHUykK IAkJVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVyKSAyLCAiY29sbmFtZSIs CiAJCQkJCQkgICBURVhUT0lELCAtMSwgMCk7CiAKKwkJVHVwbGVEZXNjRmluYWxpemUodHVwZGVz Yyk7CisKIAkJLyoKIAkJICogR2VuZXJhdGUgYXR0cmlidXRlIG1ldGFkYXRhIG5lZWRlZCBsYXRl ciB0byBwcm9kdWNlIHR1cGxlcyBmcm9tIHJhdwogCQkgKiBDIHN0cmluZ3MKZGlmZiAtLWdpdCBh L2NvbnRyaWIvcGdfYnVmZmVyY2FjaGUvcGdfYnVmZmVyY2FjaGVfcGFnZXMuYyBiL2NvbnRyaWIv cGdfYnVmZmVyY2FjaGUvcGdfYnVmZmVyY2FjaGVfcGFnZXMuYwppbmRleCA4OWI4Njg1NTI0My4u YTZiNGZiNTI1MmIgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdfYnVmZmVyY2FjaGUvcGdfYnVmZmVy Y2FjaGVfcGFnZXMuYworKysgYi9jb250cmliL3BnX2J1ZmZlcmNhY2hlL3BnX2J1ZmZlcmNhY2hl X3BhZ2VzLmMKQEAgLTE3NCw2ICsxNzQsNyBAQCBwZ19idWZmZXJjYWNoZV9wYWdlcyhQR19GVU5D VElPTl9BUkdTKQogCQkJVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGxlZGVzYywgKEF0dHJOdW1iZXIp IDksICJwaW5uaW5nX2JhY2tlbmRzIiwKIAkJCQkJCQkgICBJTlQ0T0lELCAtMSwgMCk7CiAKKwkJ VHVwbGVEZXNjRmluYWxpemUodHVwbGVkZXNjKTsKIAkJZmN0eC0+dHVwZGVzYyA9IEJsZXNzVHVw bGVEZXNjKHR1cGxlZGVzYyk7CiAKIAkJLyogQWxsb2NhdGUgTkJ1ZmZlcnMgd29ydGggb2YgQnVm ZmVyQ2FjaGVQYWdlc1JlYyByZWNvcmRzLiAqLwpAQCAtNDQyLDYgKzQ0Myw3IEBAIHBnX2J1ZmZl cmNhY2hlX29zX3BhZ2VzX2ludGVybmFsKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBib29sIGlu Y2x1ZGVfbnVtYSkKIAkJVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGxlZGVzYywgKEF0dHJOdW1iZXIp IDMsICJudW1hX25vZGUiLAogCQkJCQkJICAgSU5UNE9JRCwgLTEsIDApOwogCisJCVR1cGxlRGVz Y0ZpbmFsaXplKHR1cGxlZGVzYyk7CiAJCWZjdHgtPnR1cGRlc2MgPSBCbGVzc1R1cGxlRGVzYyh0 dXBsZWRlc2MpOwogCQlmY3R4LT5pbmNsdWRlX251bWEgPSBpbmNsdWRlX251bWE7CiAKZGlmZiAt LWdpdCBhL2NvbnRyaWIvcGdfdmlzaWJpbGl0eS9wZ192aXNpYmlsaXR5LmMgYi9jb250cmliL3Bn X3Zpc2liaWxpdHkvcGdfdmlzaWJpbGl0eS5jCmluZGV4IDliYzNhNzg0YmY3Li5kZmFiMGI2NGNm NSAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ192aXNpYmlsaXR5L3BnX3Zpc2liaWxpdHkuYworKysg Yi9jb250cmliL3BnX3Zpc2liaWxpdHkvcGdfdmlzaWJpbGl0eS5jCkBAIC00NjksNiArNDY5LDgg QEAgcGdfdmlzaWJpbGl0eV90dXBkZXNjKGJvb2wgaW5jbHVkZV9ibGtubywgYm9vbCBpbmNsdWRl X3BkKQogCQlUdXBsZURlc2NJbml0RW50cnkodHVwZGVzYywgKythLCAicGRfYWxsX3Zpc2libGUi LCBCT09MT0lELCAtMSwgMCk7CiAJQXNzZXJ0KGEgPT0gbWF4YXR0cik7CiAKKwlUdXBsZURlc2NG aW5hbGl6ZSh0dXBkZXNjKTsKKwogCXJldHVybiBCbGVzc1R1cGxlRGVzYyh0dXBkZXNjKTsKIH0K IApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl90dXBsZS5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl90dXBsZS5jCmluZGV4IDY5YzIzM2M2MmViLi43NDJh YzA4OWEyOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl90dXBsZS5j CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fdHVwbGUuYwpAQCAtODQsNiArODQs NyBAQCBicnR1cGxlX2Rpc2tfdHVwZGVzYyhCcmluRGVzYyAqYnJkZXNjKQogCiAJCU1lbW9yeUNv bnRleHRTd2l0Y2hUbyhvbGRjeHQpOwogCisJCVR1cGxlRGVzY0ZpbmFsaXplKHR1cGRlc2MpOwog CQlicmRlc2MtPmJkX2Rpc2t0ZGVzYyA9IHR1cGRlc2M7CiAJfQogCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvY29tbW9uL3R1cGRlc2MuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21t b24vdHVwZGVzYy5jCmluZGV4IGI2OWQxMGYwYTQ1Li4yMTM3Mzg1YTgzMyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi90dXBkZXNjLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2NvbW1vbi90dXBkZXNjLmMKQEAgLTIyMSw2ICsyMjEsOSBAQCBDcmVhdGVUdXBsZURlc2Mo aW50IG5hdHRzLCBGb3JtX3BnX2F0dHJpYnV0ZSAqYXR0cnMpCiAJCW1lbWNweShUdXBsZURlc2NB dHRyKGRlc2MsIGkpLCBhdHRyc1tpXSwgQVRUUklCVVRFX0ZJWEVEX1BBUlRfU0laRSk7CiAJCXBv cHVsYXRlX2NvbXBhY3RfYXR0cmlidXRlKGRlc2MsIGkpOwogCX0KKworCVR1cGxlRGVzY0ZpbmFs aXplKGRlc2MpOworCiAJcmV0dXJuIGRlc2M7CiB9CiAKQEAgLTI2NSw2ICsyNjgsOCBAQCBDcmVh dGVUdXBsZURlc2NDb3B5KFR1cGxlRGVzYyB0dXBkZXNjKQogCWRlc2MtPnRkdHlwZWlkID0gdHVw ZGVzYy0+dGR0eXBlaWQ7CiAJZGVzYy0+dGR0eXBtb2QgPSB0dXBkZXNjLT50ZHR5cG1vZDsKIAor CVR1cGxlRGVzY0ZpbmFsaXplKGRlc2MpOworCiAJcmV0dXJuIGRlc2M7CiB9CiAKQEAgLTMxMSw2 ICszMTYsOCBAQCBDcmVhdGVUdXBsZURlc2NUcnVuY2F0ZWRDb3B5KFR1cGxlRGVzYyB0dXBkZXNj LCBpbnQgbmF0dHMpCiAJZGVzYy0+dGR0eXBlaWQgPSB0dXBkZXNjLT50ZHR5cGVpZDsKIAlkZXNj LT50ZHR5cG1vZCA9IHR1cGRlc2MtPnRkdHlwbW9kOwogCisJVHVwbGVEZXNjRmluYWxpemUoZGVz Yyk7CisKIAlyZXR1cm4gZGVzYzsKIH0KIApAQCAtMzk2LDYgKzQwMyw4IEBAIENyZWF0ZVR1cGxl RGVzY0NvcHlDb25zdHIoVHVwbGVEZXNjIHR1cGRlc2MpCiAJZGVzYy0+dGR0eXBlaWQgPSB0dXBk ZXNjLT50ZHR5cGVpZDsKIAlkZXNjLT50ZHR5cG1vZCA9IHR1cGRlc2MtPnRkdHlwbW9kOwogCisJ VHVwbGVEZXNjRmluYWxpemUoZGVzYyk7CisKIAlyZXR1cm4gZGVzYzsKIH0KIApAQCAtNDM4LDYg KzQ0Nyw4IEBAIFR1cGxlRGVzY0NvcHkoVHVwbGVEZXNjIGRzdCwgVHVwbGVEZXNjIHNyYykKIAkg KiBzb3VyY2UncyByZWZjb3VudCB3b3VsZCBiZSB3cm9uZyBpbiBhbnkgY2FzZS4pCiAJICovCiAJ ZHN0LT50ZHJlZmNvdW50ID0gLTE7CisKKwlUdXBsZURlc2NGaW5hbGl6ZShkc3QpOwogfQogCiAv KgpAQCAtMTA2NSw2ICsxMDc2LDggQEAgQnVpbGREZXNjRnJvbUxpc3RzKGNvbnN0IExpc3QgKm5h bWVzLCBjb25zdCBMaXN0ICp0eXBlcywgY29uc3QgTGlzdCAqdHlwbW9kcywgY28KIAkJVHVwbGVE ZXNjSW5pdEVudHJ5Q29sbGF0aW9uKGRlc2MsIGF0dG51bSwgYXR0Y29sbGF0aW9uKTsKIAl9CiAK KwlUdXBsZURlc2NGaW5hbGl6ZShkZXNjKTsKKwogCXJldHVybiBkZXNjOwogfQogCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbnV0aWwuYyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9naW4vZ2ludXRpbC5jCmluZGV4IGZmOTI3Mjc5Y2MzLi5mZTdiOTg0ZmYzMiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW51dGlsLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2dpbi9naW51dGlsLmMKQEAgLTEyOSw2ICsxMjksNyBAQCBpbml0R2luU3RhdGUoR2luU3Rh dGUgKnN0YXRlLCBSZWxhdGlvbiBpbmRleCkKIAkJCQkJCQkgICBhdHRyLT5hdHRuZGltcyk7CiAJ CQlUdXBsZURlc2NJbml0RW50cnlDb2xsYXRpb24oc3RhdGUtPnR1cGRlc2NbaV0sIChBdHRyTnVt YmVyKSAyLAogCQkJCQkJCQkJCWF0dHItPmF0dGNvbGxhdGlvbik7CisJCQlUdXBsZURlc2NGaW5h bGl6ZShzdGF0ZS0+dHVwZGVzY1tpXSk7CiAJCX0KIAogCQkvKgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHNjYW4uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dp c3RzY2FuLmMKaW5kZXggZjIzYmM0YTY3NTcuLmM2NWY5M2FiZGFlIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0c2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9n aXN0L2dpc3RzY2FuLmMKQEAgLTIwMSw2ICsyMDEsNyBAQCBnaXN0cmVzY2FuKEluZGV4U2NhbkRl c2Mgc2NhbiwgU2NhbktleSBrZXksIGludCBua2V5cywKIAkJCQkJCQkJCQkJIGF0dG5vIC0gMSkt PmF0dHR5cGlkLAogCQkJCQkJCSAgIC0xLCAwKTsKIAkJfQorCQlUdXBsZURlc2NGaW5hbGl6ZShz by0+Z2lzdHN0YXRlLT5mZXRjaFR1cGRlc2MpOwogCQlzY2FuLT54c19oaXR1cGRlc2MgPSBzby0+ Z2lzdHN0YXRlLT5mZXRjaFR1cGRlc2M7CiAKIAkJLyogQWxzbyBjcmVhdGUgYSBtZW1vcnkgY29u dGV4dCB0aGF0IHdpbGwgaG9sZCB0aGUgcmV0dXJuZWQgdHVwbGVzICovCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3V0aWxzLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv c3BnaXN0L3NwZ3V0aWxzLmMKaW5kZXggOWY1Mzc5Yjg3YWMuLmIyNDZlODEyN2RiIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3V0aWxzLmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL3NwZ2lzdC9zcGd1dGlscy5jCkBAIC0zNDAsNiArMzQwLDcgQEAgZ2V0U3BHaXN0 VHVwbGVEZXNjKFJlbGF0aW9uIGluZGV4LCBTcEdpc3RUeXBlRGVzYyAqa2V5VHlwZSkKIAkJCVR1 cGxlRGVzY0NvbXBhY3RBdHRyKG91dFR1cERlc2MsIGkpLT5hdHRjYWNoZW9mZiA9IC0xOwogCiAJ CXBvcHVsYXRlX2NvbXBhY3RfYXR0cmlidXRlKG91dFR1cERlc2MsIHNwZ0tleUNvbHVtbik7CisJ CVR1cGxlRGVzY0ZpbmFsaXplKG91dFR1cERlc2MpOwogCX0KIAlyZXR1cm4gb3V0VHVwRGVzYzsK IH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3R3b3BoYXNlLmMgYi9z cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS90d29waGFzZS5jCmluZGV4IGU0MzQwYjU5NjQwLi43 ZjRlZDAyYTZiOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vdHdvcGhh c2UuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS90d29waGFzZS5jCkBAIC03NDQs NiArNzQ0LDcgQEAgcGdfcHJlcGFyZWRfeGFjdChQR19GVU5DVElPTl9BUkdTKQogCQlUdXBsZURl c2NJbml0RW50cnkodHVwZGVzYywgKEF0dHJOdW1iZXIpIDUsICJkYmlkIiwKIAkJCQkJCSAgIE9J RE9JRCwgLTEsIDApOwogCisJCVR1cGxlRGVzY0ZpbmFsaXplKHR1cGRlc2MpOwogCQlmdW5jY3R4 LT50dXBsZV9kZXNjID0gQmxlc3NUdXBsZURlc2ModHVwZGVzYyk7CiAKIAkJLyoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dmdW5jcy5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0veGxvZ2Z1bmNzLmMKaW5kZXggMmVmZTQxMDVlZmIuLmI2YmM2MTZjNzRj IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nZnVuY3MuYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nZnVuY3MuYwpAQCAtNDAwLDYgKzQwMCw3 IEBAIHBnX3dhbGZpbGVfbmFtZV9vZmZzZXQoUEdfRlVOQ1RJT05fQVJHUykKIAlUdXBsZURlc2NJ bml0RW50cnkocmVzdWx0VHVwbGVEZXNjLCAoQXR0ck51bWJlcikgMiwgImZpbGVfb2Zmc2V0IiwK IAkJCQkJICAgSU5UNE9JRCwgLTEsIDApOwogCisJVHVwbGVEZXNjRmluYWxpemUocmVzdWx0VHVw bGVEZXNjKTsKIAlyZXN1bHRUdXBsZURlc2MgPSBCbGVzc1R1cGxlRGVzYyhyZXN1bHRUdXBsZURl c2MpOwogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2JhY2t1cC9iYXNlYmFja3VwX2Nv cHkuYyBiL3NyYy9iYWNrZW5kL2JhY2t1cC9iYXNlYmFja3VwX2NvcHkuYwppbmRleCBmZWNmYWQ5 YWI3Yi4uMjlkYmQwY2IzMmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2JhY2t1cC9iYXNlYmFj a3VwX2NvcHkuYworKysgYi9zcmMvYmFja2VuZC9iYWNrdXAvYmFzZWJhY2t1cF9jb3B5LmMKQEAg LTM1Nyw2ICszNTcsOCBAQCBTZW5kWGxvZ1JlY1B0clJlc3VsdChYTG9nUmVjUHRyIHB0ciwgVGlt ZUxpbmVJRCB0bGkpCiAJICovCiAJVHVwbGVEZXNjSW5pdEJ1aWx0aW5FbnRyeSh0dXBkZXNjLCAo QXR0ck51bWJlcikgMiwgInRsaSIsIElOVDhPSUQsIC0xLCAwKTsKIAorCVR1cGxlRGVzY0ZpbmFs aXplKHR1cGRlc2MpOworCiAJLyogc2VuZCBSb3dEZXNjcmlwdGlvbiAqLwogCXRzdGF0ZSA9IGJl Z2luX3R1cF9vdXRwdXRfdHVwZGVzYyhkZXN0LCB0dXBkZXNjLCAmVFRTT3BzVmlydHVhbCk7CiAK QEAgLTM4OCw2ICszOTAsNyBAQCBTZW5kVGFibGVzcGFjZUxpc3QoTGlzdCAqdGFibGVzcGFjZXMp CiAJVHVwbGVEZXNjSW5pdEJ1aWx0aW5FbnRyeSh0dXBkZXNjLCAoQXR0ck51bWJlcikgMSwgInNw Y29pZCIsIE9JRE9JRCwgLTEsIDApOwogCVR1cGxlRGVzY0luaXRCdWlsdGluRW50cnkodHVwZGVz YywgKEF0dHJOdW1iZXIpIDIsICJzcGNsb2NhdGlvbiIsIFRFWFRPSUQsIC0xLCAwKTsKIAlUdXBs ZURlc2NJbml0QnVpbHRpbkVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVyKSAzLCAic2l6ZSIsIElO VDhPSUQsIC0xLCAwKTsKKwlUdXBsZURlc2NGaW5hbGl6ZSh0dXBkZXNjKTsKIAogCS8qIHNlbmQg Um93RGVzY3JpcHRpb24gKi8KIAl0c3RhdGUgPSBiZWdpbl90dXBfb3V0cHV0X3R1cGRlc2MoZGVz dCwgdHVwZGVzYywgJlRUU09wc1ZpcnR1YWwpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0 YWxvZy9pbmRleC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCmluZGV4IDQzZGU0MmNl MzllLi43NWU5N2ZiMzk0YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5j CisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwpAQCAtNDgxLDYgKzQ4MSw4IEBAIENv bnN0cnVjdFR1cGxlRGVzY3JpcHRvcihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCXBvcHVsYXRl X2NvbXBhY3RfYXR0cmlidXRlKGluZGV4VHVwRGVzYywgaSk7CiAJfQogCisJVHVwbGVEZXNjRmlu YWxpemUoaW5kZXhUdXBEZXNjKTsKKwogCXJldHVybiBpbmRleFR1cERlc2M7CiB9CiAKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYyBiL3NyYy9iYWNrZW5k L2NhdGFsb2cvcGdfcHVibGljYXRpb24uYwppbmRleCA5YTQ3OTFjNTczZS4uZmEzNTNhMGRkMzcg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYworKysgYi9z cmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKQEAgLTEyMzAsNiArMTIzMCw3IEBA IHBnX2dldF9wdWJsaWNhdGlvbl90YWJsZXMoUEdfRlVOQ1RJT05fQVJHUykKIAkJVHVwbGVEZXNj SW5pdEVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVyKSA0LCAicXVhbCIsCiAJCQkJCQkgICBQR19O T0RFX1RSRUVPSUQsIC0xLCAwKTsKIAorCQlUdXBsZURlc2NGaW5hbGl6ZSh0dXBkZXNjKTsKIAkJ ZnVuY2N0eC0+dHVwbGVfZGVzYyA9IEJsZXNzVHVwbGVEZXNjKHR1cGRlc2MpOwogCQlmdW5jY3R4 LT51c2VyX2ZjdHggPSB0YWJsZV9pbmZvczsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0 YWxvZy90b2FzdGluZy5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy90b2FzdGluZy5jCmluZGV4IGM3 OGRjZWE5OGMxLi4wNzhhMWNmNTEyNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy90 b2FzdGluZy5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvdG9hc3RpbmcuYwpAQCAtMjI5LDYg KzIyOSwxMiBAQCBjcmVhdGVfdG9hc3RfdGFibGUoUmVsYXRpb24gcmVsLCBPaWQgdG9hc3RPaWQs IE9pZCB0b2FzdEluZGV4T2lkLAogCVR1cGxlRGVzY0F0dHIodHVwZGVzYywgMSktPmF0dGNvbXBy ZXNzaW9uID0gSW52YWxpZENvbXByZXNzaW9uTWV0aG9kOwogCVR1cGxlRGVzY0F0dHIodHVwZGVz YywgMiktPmF0dGNvbXByZXNzaW9uID0gSW52YWxpZENvbXByZXNzaW9uTWV0aG9kOwogCisJcG9w dWxhdGVfY29tcGFjdF9hdHRyaWJ1dGUodHVwZGVzYywgMCk7CisJcG9wdWxhdGVfY29tcGFjdF9h dHRyaWJ1dGUodHVwZGVzYywgMSk7CisJcG9wdWxhdGVfY29tcGFjdF9hdHRyaWJ1dGUodHVwZGVz YywgMik7CisKKwlUdXBsZURlc2NGaW5hbGl6ZSh0dXBkZXNjKTsKKwogCS8qCiAJICogVG9hc3Qg dGFibGVzIGZvciByZWd1bGFyIHJlbGF0aW9ucyBnbyBpbiBwZ190b2FzdDsgdGhvc2UgZm9yIHRl bXAKIAkgKiByZWxhdGlvbnMgZ28gaW50byB0aGUgcGVyLWJhY2tlbmQgdGVtcC10b2FzdC10YWJs ZSBuYW1lc3BhY2UuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKaW5kZXggOTM5MThhMjIzYjguLjVmOTIy YzNmNWMyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKKysrIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCkBAIC0yODEsNiArMjgxLDcgQEAgRXhwbGFp blJlc3VsdERlc2MoRXhwbGFpblN0bXQgKnN0bXQpCiAJdHVwZGVzYyA9IENyZWF0ZVRlbXBsYXRl VHVwbGVEZXNjKDEpOwogCVR1cGxlRGVzY0luaXRFbnRyeSh0dXBkZXNjLCAoQXR0ck51bWJlcikg MSwgIlFVRVJZIFBMQU4iLAogCQkJCQkgICByZXN1bHRfdHlwZSwgLTEsIDApOworCVR1cGxlRGVz Y0ZpbmFsaXplKHR1cGRlc2MpOwogCXJldHVybiB0dXBkZXNjOwogfQogCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jb21tYW5kcy9mdW5jdGlvbmNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2Z1bmN0aW9uY21kcy5jCmluZGV4IDI0MjM3MmIxZTY4Li4zYWZkNzYyZTlkYyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZnVuY3Rpb25jbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvZnVuY3Rpb25jbWRzLmMKQEAgLTI0MjQsNiArMjQyNCw3IEBAIENhbGxTdG10UmVz dWx0RGVzYyhDYWxsU3RtdCAqc3RtdCkKIAkJCQkJCQkgICAtMSwKIAkJCQkJCQkgICAwKTsKIAkJ fQorCQlUdXBsZURlc2NGaW5hbGl6ZSh0dXBkZXNjKTsKIAl9CiAKIAlyZXR1cm4gdHVwZGVzYzsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVlbmNlLmMgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9zZXF1ZW5jZS5jCmluZGV4IGUxYjgwOGJiYjYwLi41NTE2Njc2NTBiYSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2UuYworKysgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9zZXF1ZW5jZS5jCkBAIC0xODA4LDYgKzE4MDgsNyBAQCBwZ19nZXRfc2VxdWVu Y2VfZGF0YShQR19GVU5DVElPTl9BUkdTKQogCQkJCQkgICBCT09MT0lELCAtMSwgMCk7CiAJVHVw bGVEZXNjSW5pdEVudHJ5KHJlc3VsdFR1cGxlRGVzYywgKEF0dHJOdW1iZXIpIDMsICJwYWdlX2xz biIsCiAJCQkJCSAgIExTTk9JRCwgLTEsIDApOworCVR1cGxlRGVzY0ZpbmFsaXplKHJlc3VsdFR1 cGxlRGVzYyk7CiAJcmVzdWx0VHVwbGVEZXNjID0gQmxlc3NUdXBsZURlc2MocmVzdWx0VHVwbGVE ZXNjKTsKIAogCXNlcXJlbCA9IHRyeV9yZWxhdGlvbl9vcGVuKHJlbGlkLCBBY2Nlc3NTaGFyZUxv Y2spOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMv YmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCBkZjFiYTExMmIzNS4uNTc5NGQ0MjFj YWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCkBAIC0xMDMwLDYgKzEwMzAsOCBAQCBEZWZp bmVSZWxhdGlvbihDcmVhdGVTdG10ICpzdG10LCBjaGFyIHJlbGtpbmQsIE9pZCBvd25lcklkLAog CQl9CiAJfQogCisJVHVwbGVEZXNjRmluYWxpemUoZGVzY3JpcHRvcik7CisKIAkvKgogCSAqIEZv ciByZWxhdGlvbnMgd2l0aCB0YWJsZSBBTSBhbmQgcGFydGl0aW9uZWQgdGFibGVzLCBzZWxlY3Qg YWNjZXNzCiAJICogbWV0aG9kIHRvIHVzZTogYW4gZXhwbGljaXRseSBpbmRpY2F0ZWQgb25lLCBv ciAoaW4gdGhlIGNhc2Ugb2YgYQpAQCAtMTQ1OCw2ICsxNDYwLDggQEAgQnVpbGREZXNjRm9yUmVs YXRpb24oY29uc3QgTGlzdCAqY29sdW1ucykKIAkJcG9wdWxhdGVfY29tcGFjdF9hdHRyaWJ1dGUo ZGVzYywgYXR0bnVtIC0gMSk7CiAJfQogCisJVHVwbGVEZXNjRmluYWxpemUoZGVzYyk7CisKIAly ZXR1cm4gZGVzYzsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvd2FpdC5j IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvd2FpdC5jCmluZGV4IDEyOTBkZjEwYzZmLi44ZTkyMGE3 MjM3MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvd2FpdC5jCisrKyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3dhaXQuYwpAQCAtMzM4LDUgKzMzOCw2IEBAIFdhaXRTdG10UmVzdWx0 RGVzYyhXYWl0U3RtdCAqc3RtdCkKIAl0dXBkZXNjID0gQ3JlYXRlVGVtcGxhdGVUdXBsZURlc2Mo MSk7CiAJVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVyKSAxLCAic3RhdHVz IiwKIAkJCQkJICAgVEVYVE9JRCwgLTEsIDApOworCVR1cGxlRGVzY0ZpbmFsaXplKHR1cGRlc2Mp OwogCXJldHVybiB0dXBkZXNjOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY1NSRi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1NSRi5jCmluZGV4IGEwYjExMWRj MGU0Li5iNDgxZTUwYWNmYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1NS Ri5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNTUkYuYwpAQCAtMjcyLDYgKzI3Miw3 IEBAIEV4ZWNNYWtlVGFibGVGdW5jdGlvblJlc3VsdChTZXRFeHByU3RhdGUgKnNldGV4cHIsCiAJ CQkJCQkJCQkgICBmdW5jcmV0dHlwZSwKIAkJCQkJCQkJCSAgIC0xLAogCQkJCQkJCQkJICAgMCk7 CisJCQkJCVR1cGxlRGVzY0ZpbmFsaXplKHR1cGRlc2MpOwogCQkJCQlyc2luZm8uc2V0RGVzYyA9 IHR1cGRlc2M7CiAJCQkJfQogCQkJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsK QEAgLTc3Niw2ICs3NzcsNyBAQCBpbml0X3NleHByKE9pZCBmb2lkLCBPaWQgaW5wdXRfY29sbGF0 aW9uLCBFeHByICpub2RlLAogCQkJCQkJCSAgIGZ1bmNyZXR0eXBlLAogCQkJCQkJCSAgIC0xLAog CQkJCQkJCSAgIDApOworCQkJVHVwbGVEZXNjRmluYWxpemUodHVwZGVzYyk7CiAJCQlzZXhwci0+ ZnVuY1Jlc3VsdERlc2MgPSB0dXBkZXNjOwogCQkJc2V4cHItPmZ1bmNSZXR1cm5zVHVwbGUgPSBm YWxzZTsKIAkJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1R1cGxlcy5j IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1R1cGxlcy5jCmluZGV4IGI3NjhlYWU5ZTUzLi5l NmFiNTFlNjQwNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1R1cGxlcy5j CisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNUdXBsZXMuYwpAQCAtMjE3Myw2ICsyMTcz LDggQEAgRXhlY1R5cGVGcm9tVExJbnRlcm5hbChMaXN0ICp0YXJnZXRMaXN0LCBib29sIHNraXBq dW5rKQogCQljdXJfcmVzbm8rKzsKIAl9CiAKKwlUdXBsZURlc2NGaW5hbGl6ZSh0eXBlSW5mbyk7 CisKIAlyZXR1cm4gdHlwZUluZm87CiB9CiAKQEAgLTIyMDcsNiArMjIwOSw4IEBAIEV4ZWNUeXBl RnJvbUV4cHJMaXN0KExpc3QgKmV4cHJMaXN0KQogCQljdXJfcmVzbm8rKzsKIAl9CiAKKwlUdXBs ZURlc2NGaW5hbGl6ZSh0eXBlSW5mbyk7CisKIAlyZXR1cm4gdHlwZUluZm87CiB9CiAKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVGdW5jdGlvbnNjYW4uYyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVGdW5jdGlvbnNjYW4uYwppbmRleCA2M2U2MDVlMWY4MS4uZmViODJk NjQ5NjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVGdW5jdGlvbnNjYW4u YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlRnVuY3Rpb25zY2FuLmMKQEAgLTQxNCw2 ICs0MTQsNyBAQCBFeGVjSW5pdEZ1bmN0aW9uU2NhbihGdW5jdGlvblNjYW4gKm5vZGUsIEVTdGF0 ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQkJCVR1cGxlRGVzY0luaXRFbnRyeUNvbGxhdGlvbih0 dXBkZXNjLAogCQkJCQkJCQkJCQkoQXR0ck51bWJlcikgMSwKIAkJCQkJCQkJCQkJZXhwckNvbGxh dGlvbihmdW5jZXhwcikpOworCQkJCVR1cGxlRGVzY0ZpbmFsaXplKHR1cGRlc2MpOwogCQkJfQog CQkJZWxzZQogCQkJewpAQCAtNDg1LDYgKzQ4Niw3IEBAIEV4ZWNJbml0RnVuY3Rpb25TY2FuKEZ1 bmN0aW9uU2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCQkJCQkJICAg MCk7CiAJCX0KIAorCQlUdXBsZURlc2NGaW5hbGl6ZShzY2FuX3R1cGRlc2MpOwogCQlBc3NlcnQo YXR0bm8gPT0gbmF0dHMpOwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX3JlbGF0aW9uLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcmVsYXRpb24uYwppbmRl eCBlMDAzZGI1MjBkZS4uOWM0MTVlMTY2ZWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV9yZWxhdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9yZWxhdGlv bi5jCkBAIC0xODgzLDYgKzE4ODMsNyBAQCBhZGRSYW5nZVRhYmxlRW50cnlGb3JGdW5jdGlvbihQ YXJzZVN0YXRlICpwc3RhdGUsCiAJCQlUdXBsZURlc2NJbml0RW50cnlDb2xsYXRpb24odHVwZGVz YywKIAkJCQkJCQkJCQkoQXR0ck51bWJlcikgMSwKIAkJCQkJCQkJCQlleHByQ29sbGF0aW9uKGZ1 bmNleHByKSk7CisJCQlUdXBsZURlc2NGaW5hbGl6ZSh0dXBkZXNjKTsKIAkJfQogCQllbHNlIGlm IChmdW5jdHlwY2xhc3MgPT0gVFlQRUZVTkNfUkVDT1JEKQogCQl7CkBAIC0xOTQwLDYgKzE5NDEs NyBAQCBhZGRSYW5nZVRhYmxlRW50cnlGb3JGdW5jdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsCiAK IAkJCQlpKys7CiAJCQl9CisJCQlUdXBsZURlc2NGaW5hbGl6ZSh0dXBkZXNjKTsKIAogCQkJLyoK IAkJCSAqIEVuc3VyZSB0aGF0IHRoZSBjb2xkZWZsaXN0IGRlZmluZXMgYSBsZWdhbCBzZXQgb2Yg bmFtZXMgKG5vCkBAIC0yMDA4LDcgKzIwMTAsNyBAQCBhZGRSYW5nZVRhYmxlRW50cnlGb3JGdW5j dGlvbihQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJICAgMCk7CiAJCQkvKiBubyBuZWVkIHRv IHNldCBjb2xsYXRpb24gKi8KIAkJfQotCisJCVR1cGxlRGVzY0ZpbmFsaXplKHR1cGRlc2MpOwog CQlBc3NlcnQobmF0dHMgPT0gdG90YWxhdHRzKTsKIAl9CiAJZWxzZQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl X3RhcmdldC5jCmluZGV4IGRiZjViMmI1YzAxLi5hMDNkODJjMDU0MCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV90YXJnZXQuYwpAQCAtMTU3Miw2ICsxNTcyLDggQEAgZXhwYW5kUmVjb3JkVmFyaWFibGUo UGFyc2VTdGF0ZSAqcHN0YXRlLCBWYXIgKnZhciwgaW50IGxldmVsc3VwKQogCQl9CiAJCUFzc2Vy dChsbmFtZSA9PSBOVUxMICYmIGx2YXIgPT0gTlVMTCk7CS8qIGxpc3RzIHNhbWUgbGVuZ3RoPyAq LwogCisJCVR1cGxlRGVzY0ZpbmFsaXplKHR1cGxlRGVzYyk7CisKIAkJcmV0dXJuIHR1cGxlRGVz YzsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xpYnBxd2FscmVj ZWl2ZXIvbGlicHF3YWxyZWNlaXZlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbGlicHF3 YWxyZWNlaXZlci9saWJwcXdhbHJlY2VpdmVyLmMKaW5kZXggN2M4NjM5YjMyZTkuLjlmMDRjOWVk MjVkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9saWJwcXdhbHJlY2VpdmVy L2xpYnBxd2FscmVjZWl2ZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9saWJwcXdh bHJlY2VpdmVyL2xpYnBxd2FscmVjZWl2ZXIuYwpAQCAtMTA3Myw2ICsxMDczLDcgQEAgbGlicHFy Y3ZfcHJvY2Vzc1R1cGxlcyhQR3Jlc3VsdCAqcGdyZXMsIFdhbFJjdkV4ZWNSZXN1bHQgKndhbHJl cywKIAlmb3IgKGNvbG4gPSAwOyBjb2xuIDwgblJldFR5cGVzOyBjb2xuKyspCiAJCVR1cGxlRGVz Y0luaXRFbnRyeSh3YWxyZXMtPnR1cGxlZGVzYywgKEF0dHJOdW1iZXIpIGNvbG4gKyAxLAogCQkJ CQkJICAgUFFmbmFtZShwZ3JlcywgY29sbiksIHJldFR5cGVzW2NvbG5dLCAtMSwgMCk7CisJVHVw bGVEZXNjRmluYWxpemUod2FscmVzLT50dXBsZWRlc2MpOwogCWF0dGlubWV0YSA9IFR1cGxlRGVz Y0dldEF0dEluTWV0YWRhdGEod2FscmVzLT50dXBsZWRlc2MpOwogCiAJLyogTm8gcG9pbnQgaW4g ZG9pbmcgbW9yZSBoZXJlIGlmIHRoZXJlIHdlcmUgbm8gdHVwbGVzIHJldHVybmVkLiAqLwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYwppbmRleCAyY2RlOGViYzcyOS4uMzNhOWU4ZDdmMjEg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCisrKyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCkBAIC00NTEsNiArNDUxLDcgQEAgSWRl bnRpZnlTeXN0ZW0odm9pZCkKIAkJCQkJCQkgIFRFWFRPSUQsIC0xLCAwKTsKIAlUdXBsZURlc2NJ bml0QnVpbHRpbkVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVyKSA0LCAiZGJuYW1lIiwKIAkJCQkJ CQkgIFRFWFRPSUQsIC0xLCAwKTsKKwlUdXBsZURlc2NGaW5hbGl6ZSh0dXBkZXNjKTsKIAogCS8q IHByZXBhcmUgZm9yIHByb2plY3Rpb24gb2YgdHVwbGVzICovCiAJdHN0YXRlID0gYmVnaW5fdHVw X291dHB1dF90dXBkZXNjKGRlc3QsIHR1cGRlc2MsICZUVFNPcHNWaXJ0dWFsKTsKQEAgLTQ5Niw2 ICs0OTcsNyBAQCBSZWFkUmVwbGljYXRpb25TbG90KFJlYWRSZXBsaWNhdGlvblNsb3RDbWQgKmNt ZCkKIAkvKiBUaW1lTGluZUlEIGlzIHVuc2lnbmVkLCBzbyBpbnQ0IGlzIG5vdCB3aWRlIGVub3Vn aC4gKi8KIAlUdXBsZURlc2NJbml0QnVpbHRpbkVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVyKSAz LCAicmVzdGFydF90bGkiLAogCQkJCQkJCSAgSU5UOE9JRCwgLTEsIDApOworCVR1cGxlRGVzY0Zp bmFsaXplKHR1cGRlc2MpOwogCiAJbWVtc2V0KG51bGxzLCB0cnVlLCBSRUFEX1JFUExJQ0FUSU9O X1NMT1RfQ09MUyAqIHNpemVvZihib29sKSk7CiAKQEAgLTU5OCw2ICs2MDAsNyBAQCBTZW5kVGlt ZUxpbmVIaXN0b3J5KFRpbWVMaW5lSGlzdG9yeUNtZCAqY21kKQogCXR1cGRlc2MgPSBDcmVhdGVU ZW1wbGF0ZVR1cGxlRGVzYygyKTsKIAlUdXBsZURlc2NJbml0QnVpbHRpbkVudHJ5KHR1cGRlc2Ms IChBdHRyTnVtYmVyKSAxLCAiZmlsZW5hbWUiLCBURVhUT0lELCAtMSwgMCk7CiAJVHVwbGVEZXNj SW5pdEJ1aWx0aW5FbnRyeSh0dXBkZXNjLCAoQXR0ck51bWJlcikgMiwgImNvbnRlbnQiLCBURVhU T0lELCAtMSwgMCk7CisJVHVwbGVEZXNjRmluYWxpemUodHVwZGVzYyk7CiAKIAlUTEhpc3RvcnlG aWxlTmFtZShoaXN0Zm5hbWUsIGNtZC0+dGltZWxpbmUpOwogCVRMSGlzdG9yeUZpbGVQYXRoKHBh dGgsIGNtZC0+dGltZWxpbmUpOwpAQCAtMTAxNSw2ICsxMDE4LDcgQEAgU3RhcnRSZXBsaWNhdGlv bihTdGFydFJlcGxpY2F0aW9uQ21kICpjbWQpCiAJCQkJCQkJCSAgSU5UOE9JRCwgLTEsIDApOwog CQlUdXBsZURlc2NJbml0QnVpbHRpbkVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVyKSAyLCAibmV4 dF90bGlfc3RhcnRwb3MiLAogCQkJCQkJCQkgIFRFWFRPSUQsIC0xLCAwKTsKKwkJVHVwbGVEZXNj RmluYWxpemUodHVwZGVzYyk7CiAKIAkJLyogcHJlcGFyZSBmb3IgcHJvamVjdGlvbiBvZiB0dXBs ZSAqLwogCQl0c3RhdGUgPSBiZWdpbl90dXBfb3V0cHV0X3R1cGRlc2MoZGVzdCwgdHVwZGVzYywg JlRUU09wc1ZpcnR1YWwpOwpAQCAtMTM2OSw2ICsxMzczLDcgQEAgQ3JlYXRlUmVwbGljYXRpb25T bG90KENyZWF0ZVJlcGxpY2F0aW9uU2xvdENtZCAqY21kKQogCQkJCQkJCSAgVEVYVE9JRCwgLTEs IDApOwogCVR1cGxlRGVzY0luaXRCdWlsdGluRW50cnkodHVwZGVzYywgKEF0dHJOdW1iZXIpIDQs ICJvdXRwdXRfcGx1Z2luIiwKIAkJCQkJCQkgIFRFWFRPSUQsIC0xLCAwKTsKKwlUdXBsZURlc2NG aW5hbGl6ZSh0dXBkZXNjKTsKIAogCS8qIHByZXBhcmUgZm9yIHByb2plY3Rpb24gb2YgdHVwbGVz ICovCiAJdHN0YXRlID0gYmVnaW5fdHVwX291dHB1dF90dXBkZXNjKGRlc3QsIHR1cGRlc2MsICZU VFNPcHNWaXJ0dWFsKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hY2wuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hY2wuYwppbmRleCA2NDE2NzNmMGIwZS4uY2UwN2YyYmMw NDYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hY2wuYworKysgYi9zcmMvYmFj a2VuZC91dGlscy9hZHQvYWNsLmMKQEAgLTE4MTksNiArMTgxOSw3IEBAIGFjbGV4cGxvZGUoUEdf RlVOQ1RJT05fQVJHUykKIAkJVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVy KSA0LCAiaXNfZ3JhbnRhYmxlIiwKIAkJCQkJCSAgIEJPT0xPSUQsIC0xLCAwKTsKIAorCQlUdXBs ZURlc2NGaW5hbGl6ZSh0dXBkZXNjKTsKIAkJZnVuY2N0eC0+dHVwbGVfZGVzYyA9IEJsZXNzVHVw bGVEZXNjKHR1cGRlc2MpOwogCiAJCS8qIGFsbG9jYXRlIG1lbW9yeSBmb3IgdXNlciBjb250ZXh0 ICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvZ2VuZmlsZS5jIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L2dlbmZpbGUuYwppbmRleCBjMDgzNjA4YjFkNS4uYmZiOTQ5NDAxZDAg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9nZW5maWxlLmMKKysrIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L2dlbmZpbGUuYwpAQCAtNDU0LDYgKzQ1NCw3IEBAIHBnX3N0YXRfZmls ZShQR19GVU5DVElPTl9BUkdTKQogCQkJCQkgICAiY3JlYXRpb24iLCBUSU1FU1RBTVBUWk9JRCwg LTEsIDApOwogCVR1cGxlRGVzY0luaXRFbnRyeSh0dXBkZXNjLCAoQXR0ck51bWJlcikgNiwKIAkJ CQkJICAgImlzZGlyIiwgQk9PTE9JRCwgLTEsIDApOworCVR1cGxlRGVzY0ZpbmFsaXplKHR1cGRl c2MpOwogCUJsZXNzVHVwbGVEZXNjKHR1cGRlc2MpOwogCiAJbWVtc2V0KGlzbnVsbCwgZmFsc2Us IHNpemVvZihpc251bGwpKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9sb2Nr ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9sb2NrZnVuY3MuYwppbmRleCA5ZGFkZDZk YTY3Mi4uNDQ4MWMzNTRmZDYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9sb2Nr ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvbG9ja2Z1bmNzLmMKQEAgLTE0Niw2 ICsxNDYsNyBAQCBwZ19sb2NrX3N0YXR1cyhQR19GVU5DVElPTl9BUkdTKQogCQlUdXBsZURlc2NJ bml0RW50cnkodHVwZGVzYywgKEF0dHJOdW1iZXIpIDE2LCAid2FpdHN0YXJ0IiwKIAkJCQkJCSAg IFRJTUVTVEFNUFRaT0lELCAtMSwgMCk7CiAKKwkJVHVwbGVEZXNjRmluYWxpemUodHVwZGVzYyk7 CiAJCWZ1bmNjdHgtPnR1cGxlX2Rlc2MgPSBCbGVzc1R1cGxlRGVzYyh0dXBkZXNjKTsKIAogCQkv KgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L29yZGVyZWRzZXRhZ2dzLmMgYi9z cmMvYmFja2VuZC91dGlscy9hZHQvb3JkZXJlZHNldGFnZ3MuYwppbmRleCAzYjZkYThlMzZhYy4u ZmQ4Yjg2NzY0NzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9vcmRlcmVkc2V0 YWdncy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9vcmRlcmVkc2V0YWdncy5jCkBAIC0y MzMsNiArMjMzLDcgQEAgb3JkZXJlZF9zZXRfc3RhcnR1cChGdW5jdGlvbkNhbGxJbmZvIGZjaW5m bywgYm9vbCB1c2VfdHVwbGVzKQogCQkJCQkJCQkgICAtMSwKIAkJCQkJCQkJICAgMCk7CiAKKwkJ CQlUdXBsZURlc2NGaW5hbGl6ZShuZXdkZXNjKTsKIAkJCQlGcmVlVHVwbGVEZXNjKHFzdGF0ZS0+ dHVwZGVzYyk7CiAJCQkJcXN0YXRlLT50dXBkZXNjID0gbmV3ZGVzYzsKIAkJCX0KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L3Bnc3RhdGZ1bmNzLmMKaW5kZXggYjFkZjk2ZTdiMGIuLjBiMTBkYTNiMTgwIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYworKysgYi9zcmMvYmFj a2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYwpAQCAtNzY5LDYgKzc2OSw3IEBAIHBnX3N0YXRf Z2V0X2JhY2tlbmRfc3VieGFjdChQR19GVU5DVElPTl9BUkdTKQogCVR1cGxlRGVzY0luaXRFbnRy eSh0dXBkZXNjLCAoQXR0ck51bWJlcikgMiwgInN1YnhhY3Rfb3ZlcmZsb3ciLAogCQkJCQkgICBC T09MT0lELCAtMSwgMCk7CiAKKwlUdXBsZURlc2NGaW5hbGl6ZSh0dXBkZXNjKTsKIAlCbGVzc1R1 cGxlRGVzYyh0dXBkZXNjKTsKIAogCWlmICgobG9jYWxfYmVlbnRyeSA9IHBnc3RhdF9nZXRfbG9j YWxfYmVlbnRyeV9ieV9wcm9jX251bWJlcihwcm9jTnVtYmVyKSkgIT0gTlVMTCkKQEAgLTE2NzAs NiArMTY3MSw3IEBAIHBnX3N0YXRfd2FsX2J1aWxkX3R1cGxlKFBnU3RhdF9XYWxDb3VudGVycyB3 YWxfY291bnRlcnMsCiAJVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVyKSA2 LCAic3RhdHNfcmVzZXQiLAogCQkJCQkgICBUSU1FU1RBTVBUWk9JRCwgLTEsIDApOwogCisJVHVw bGVEZXNjRmluYWxpemUodHVwZGVzYyk7CiAJQmxlc3NUdXBsZURlc2ModHVwZGVzYyk7CiAKIAkv KiBGaWxsIHZhbHVlcyBhbmQgTlVMTHMgKi8KQEAgLTIwOTcsNiArMjA5OSw3IEBAIHBnX3N0YXRf Z2V0X2FyY2hpdmVyKFBHX0ZVTkNUSU9OX0FSR1MpCiAJVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGRl c2MsIChBdHRyTnVtYmVyKSA3LCAic3RhdHNfcmVzZXQiLAogCQkJCQkgICBUSU1FU1RBTVBUWk9J RCwgLTEsIDApOwogCisJVHVwbGVEZXNjRmluYWxpemUodHVwZGVzYyk7CiAJQmxlc3NUdXBsZURl c2ModHVwZGVzYyk7CiAKIAkvKiBHZXQgc3RhdGlzdGljcyBhYm91dCB0aGUgYXJjaGl2ZXIgcHJv Y2VzcyAqLwpAQCAtMjE3OCw2ICsyMTgxLDcgQEAgcGdfc3RhdF9nZXRfcmVwbGljYXRpb25fc2xv dChQR19GVU5DVElPTl9BUkdTKQogCQkJCQkgICBUSU1FU1RBTVBUWk9JRCwgLTEsIDApOwogCVR1 cGxlRGVzY0luaXRFbnRyeSh0dXBkZXNjLCAoQXR0ck51bWJlcikgMTMsICJzdGF0c19yZXNldCIs CiAJCQkJCSAgIFRJTUVTVEFNUFRaT0lELCAtMSwgMCk7CisJVHVwbGVEZXNjRmluYWxpemUodHVw ZGVzYyk7CiAJQmxlc3NUdXBsZURlc2ModHVwZGVzYyk7CiAKIAluYW1lc3RyY3B5KCZzbG90bmFt ZSwgdGV4dF90b19jc3RyaW5nKHNsb3RuYW1lX3RleHQpKTsKQEAgLTIyNjUsNiArMjI2OSw3IEBA IHBnX3N0YXRfZ2V0X3N1YnNjcmlwdGlvbl9zdGF0cyhQR19GVU5DVElPTl9BUkdTKQogCQkJCQkg ICBJTlQ4T0lELCAtMSwgMCk7CiAJVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGRlc2MsIChBdHRyTnVt YmVyKSAxMywgInN0YXRzX3Jlc2V0IiwKIAkJCQkJICAgVElNRVNUQU1QVFpPSUQsIC0xLCAwKTsK KwlUdXBsZURlc2NGaW5hbGl6ZSh0dXBkZXNjKTsKIAlCbGVzc1R1cGxlRGVzYyh0dXBkZXNjKTsK IAogCWlmICghc3ViZW50cnkpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvdHN2 ZWN0b3Jfb3AuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC90c3ZlY3Rvcl9vcC5jCmluZGV4IDcx YzdjN2QzYjNjLi5kOGRlY2U0MmI5YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3RzdmVjdG9yX29wLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3RzdmVjdG9yX29wLmMK QEAgLTY1MSw2ICs2NTEsNyBAQCB0c3ZlY3Rvcl91bm5lc3QoUEdfRlVOQ1RJT05fQVJHUykKIAkJ CQkJCSAgIFRFWFRBUlJBWU9JRCwgLTEsIDApOwogCQlpZiAoZ2V0X2NhbGxfcmVzdWx0X3R5cGUo ZmNpbmZvLCBOVUxMLCAmdHVwZGVzYykgIT0gVFlQRUZVTkNfQ09NUE9TSVRFKQogCQkJZWxvZyhF UlJPUiwgInJldHVybiB0eXBlIG11c3QgYmUgYSByb3cgdHlwZSIpOworCQlUdXBsZURlc2NGaW5h bGl6ZSh0dXBkZXNjKTsKIAkJZnVuY2N0eC0+dHVwbGVfZGVzYyA9IHR1cGRlc2M7CiAKIAkJZnVu Y2N0eC0+dXNlcl9mY3R4ID0gUEdfR0VUQVJHX1RTVkVDVE9SX0NPUFkoMCk7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMv Y2FjaGUvcmVsY2FjaGUuYwppbmRleCA2YjYzNGM5ZmZmMS4uNzcwZWRiMzRlMDggMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvY2FjaGUvcmVsY2FjaGUuYwpAQCAtNzI5LDYgKzcyOSw4IEBAIFJlbGF0aW9uQnVpbGRU dXBsZURlc2MoUmVsYXRpb24gcmVsYXRpb24pCiAJCXBmcmVlKGNvbnN0cik7CiAJCXJlbGF0aW9u LT5yZF9hdHQtPmNvbnN0ciA9IE5VTEw7CiAJfQorCisJVHVwbGVEZXNjRmluYWxpemUocmVsYXRp b24tPnJkX2F0dCk7CiB9CiAKIC8qCkBAIC0xOTg1LDYgKzE5ODcsNyBAQCBmb3JtcmRlc2MoY29u c3QgY2hhciAqcmVsYXRpb25OYW1lLCBPaWQgcmVsYXRpb25SZWx0eXBlLAogCiAJLyogaW5pdGlh bGl6ZSBmaXJzdCBhdHRyaWJ1dGUncyBhdHRjYWNoZW9mZiwgY2YgUmVsYXRpb25CdWlsZFR1cGxl RGVzYyAqLwogCVR1cGxlRGVzY0NvbXBhY3RBdHRyKHJlbGF0aW9uLT5yZF9hdHQsIDApLT5hdHRj YWNoZW9mZiA9IDA7CisJVHVwbGVEZXNjRmluYWxpemUocmVsYXRpb24tPnJkX2F0dCk7CiAKIAkv KiBtYXJrIG5vdC1udWxsIHN0YXR1cyAqLwogCWlmIChoYXNfbm90X251bGwpCkBAIC0zNjg4LDYg KzM2OTEsOCBAQCBSZWxhdGlvbkJ1aWxkTG9jYWxSZWxhdGlvbihjb25zdCBjaGFyICpyZWxuYW1l LAogCWZvciAoaSA9IDA7IGkgPCBuYXR0czsgaSsrKQogCQlUdXBsZURlc2NBdHRyKHJlbC0+cmRf YXR0LCBpKS0+YXR0cmVsaWQgPSByZWxpZDsKIAorCVR1cGxlRGVzY0ZpbmFsaXplKHJlbC0+cmRf YXR0KTsKKwogCXJlbC0+cmRfcmVsLT5yZWx0YWJsZXNwYWNlID0gcmVsdGFibGVzcGFjZTsKIAog CWlmIChtYXBwZWRfcmVsYXRpb24pCkBAIC00NDQzLDYgKzQ0NDgsNyBAQCBCdWlsZEhhcmRjb2Rl ZERlc2NyaXB0b3IoaW50IG5hdHRzLCBjb25zdCBGb3JtRGF0YV9wZ19hdHRyaWJ1dGUgKmF0dHJz KQogCiAJLyogaW5pdGlhbGl6ZSBmaXJzdCBhdHRyaWJ1dGUncyBhdHRjYWNoZW9mZiwgY2YgUmVs YXRpb25CdWlsZFR1cGxlRGVzYyAqLwogCVR1cGxlRGVzY0NvbXBhY3RBdHRyKHJlc3VsdCwgMCkt PmF0dGNhY2hlb2ZmID0gMDsKKwlUdXBsZURlc2NGaW5hbGl6ZShyZXN1bHQpOwogCiAJLyogTm90 ZTogd2UgZG9uJ3QgYm90aGVyIHRvIHNldCB1cCBhIFR1cGxlQ29uc3RyIGVudHJ5ICovCiAKQEAg LTYyNjgsNiArNjI3NCw4IEBAIGxvYWRfcmVsY2FjaGVfaW5pdF9maWxlKGJvb2wgc2hhcmVkKQog CQkJcG9wdWxhdGVfY29tcGFjdF9hdHRyaWJ1dGUocmVsLT5yZF9hdHQsIGkpOwogCQl9CiAKKwkJ VHVwbGVEZXNjRmluYWxpemUocmVsLT5yZF9hdHQpOworCiAJCS8qIG5leHQgcmVhZCB0aGUgYWNj ZXNzIG1ldGhvZCBzcGVjaWZpYyBmaWVsZCAqLwogCQlpZiAoZnJlYWQoJmxlbiwgMSwgc2l6ZW9m KGxlbiksIGZwKSAhPSBzaXplb2YobGVuKSkKIAkJCWdvdG8gcmVhZF9mYWlsZWQ7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC91dGlscy9mbWdyL2Z1bmNhcGkuYyBiL3NyYy9iYWNrZW5kL3V0aWxz L2ZtZ3IvZnVuY2FwaS5jCmluZGV4IDhhOTM0ZWE4ZGNhLi41MTZkMDJjZmI4MiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvZm1nci9mdW5jYXBpLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvZm1nci9mdW5jYXBpLmMKQEAgLTM0MCw2ICszNDAsOCBAQCBnZXRfZXhwcl9yZXN1bHRfdHlw ZShOb2RlICpleHByLAogCQkJCQkJCQkJCWV4cHJDb2xsYXRpb24oY29sKSk7CiAJCQlpKys7CiAJ CX0KKwkJVHVwbGVEZXNjRmluYWxpemUodHVwZGVzYyk7CisKIAkJaWYgKHJlc3VsdFR5cGVJZCkK IAkJCSpyZXN1bHRUeXBlSWQgPSByZXhwci0+cm93X3R5cGVpZDsKIAkJaWYgKHJlc3VsdFR1cGxl RGVzYykKQEAgLTEwNDQsNiArMTA0Niw3IEBAIHJlc29sdmVfcG9seW1vcnBoaWNfdHVwZGVzYyhU dXBsZURlc2MgdHVwZGVzYywgb2lkdmVjdG9yICpkZWNsYXJlZF9hcmdzLAogCQl9CiAJfQogCisJ VHVwbGVEZXNjRmluYWxpemUodHVwZGVzYyk7CiAJcmV0dXJuIHRydWU7CiB9CiAKQEAgLTE4NTMs NiArMTg1Niw4IEBAIGJ1aWxkX2Z1bmN0aW9uX3Jlc3VsdF90dXBkZXNjX2QoY2hhciBwcm9raW5k LAogCQkJCQkJICAgMCk7CiAJfQogCisJVHVwbGVEZXNjRmluYWxpemUoZGVzYyk7CisKIAlyZXR1 cm4gZGVzYzsKIH0KIApAQCAtMTk3MCw2ICsxOTc1LDcgQEAgVHlwZUdldFR1cGxlRGVzYyhPaWQg dHlwZW9pZCwgTGlzdCAqY29sYWxpYXNlcykKIAkJCQkJCSAgIHR5cGVvaWQsCiAJCQkJCQkgICAt MSwKIAkJCQkJCSAgIDApOworCQlUdXBsZURlc2NGaW5hbGl6ZSh0dXBkZXNjKTsKIAl9CiAJZWxz ZSBpZiAoZnVuY3R5cGNsYXNzID09IFRZUEVGVU5DX1JFQ09SRCkKIAl7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC91dGlscy9taXNjL2d1Y19mdW5jcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlz Yy9ndWNfZnVuY3MuYwppbmRleCA4NTI0ZGQzYTk4MS4uNDcyY2I1MzkzY2UgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX2Z1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvbWlzYy9ndWNfZnVuY3MuYwpAQCAtNDQ0LDYgKzQ0NCw3IEBAIEdldFBHVmFyaWFibGVSZXN1 bHREZXNjKGNvbnN0IGNoYXIgKm5hbWUpCiAJCVR1cGxlRGVzY0luaXRFbnRyeSh0dXBkZXNjLCAo QXR0ck51bWJlcikgMSwgdmFybmFtZSwKIAkJCQkJCSAgIFRFWFRPSUQsIC0xLCAwKTsKIAl9CisJ VHVwbGVEZXNjRmluYWxpemUodHVwZGVzYyk7CiAJcmV0dXJuIHR1cGRlc2M7CiB9CiAKQEAgLTQ2 NSw2ICs0NjYsNyBAQCBTaG93R1VDQ29uZmlnT3B0aW9uKGNvbnN0IGNoYXIgKm5hbWUsIERlc3RS ZWNlaXZlciAqZGVzdCkKIAl0dXBkZXNjID0gQ3JlYXRlVGVtcGxhdGVUdXBsZURlc2MoMSk7CiAJ VHVwbGVEZXNjSW5pdEJ1aWx0aW5FbnRyeSh0dXBkZXNjLCAoQXR0ck51bWJlcikgMSwgdmFybmFt ZSwKIAkJCQkJCQkgIFRFWFRPSUQsIC0xLCAwKTsKKwlUdXBsZURlc2NGaW5hbGl6ZSh0dXBkZXNj KTsKIAogCS8qIHByZXBhcmUgZm9yIHByb2plY3Rpb24gb2YgdHVwbGVzICovCiAJdHN0YXRlID0g YmVnaW5fdHVwX291dHB1dF90dXBkZXNjKGRlc3QsIHR1cGRlc2MsICZUVFNPcHNWaXJ0dWFsKTsK QEAgLTQ5OSw2ICs1MDEsNyBAQCBTaG93QWxsR1VDQ29uZmlnKERlc3RSZWNlaXZlciAqZGVzdCkK IAkJCQkJCQkgIFRFWFRPSUQsIC0xLCAwKTsKIAlUdXBsZURlc2NJbml0QnVpbHRpbkVudHJ5KHR1 cGRlc2MsIChBdHRyTnVtYmVyKSAzLCAiZGVzY3JpcHRpb24iLAogCQkJCQkJCSAgVEVYVE9JRCwg LTEsIDApOworCVR1cGxlRGVzY0ZpbmFsaXplKHR1cGRlc2MpOwogCiAJLyogcHJlcGFyZSBmb3Ig cHJvamVjdGlvbiBvZiB0dXBsZXMgKi8KIAl0c3RhdGUgPSBiZWdpbl90dXBfb3V0cHV0X3R1cGRl c2MoZGVzdCwgdHVwZGVzYywgJlRUU09wc1ZpcnR1YWwpOwpAQCAtOTM0LDYgKzkzNyw4IEBAIHNo b3dfYWxsX3NldHRpbmdzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCVR1cGxlRGVzY0luaXRFbnRyeSh0 dXBkZXNjLCAoQXR0ck51bWJlcikgMTcsICJwZW5kaW5nX3Jlc3RhcnQiLAogCQkJCQkJICAgQk9P TE9JRCwgLTEsIDApOwogCisJCVR1cGxlRGVzY0ZpbmFsaXplKHR1cGRlc2MpOworCiAJCS8qCiAJ CSAqIEdlbmVyYXRlIGF0dHJpYnV0ZSBtZXRhZGF0YSBuZWVkZWQgbGF0ZXIgdG8gcHJvZHVjZSB0 dXBsZXMgZnJvbSByYXcKIAkJICogQyBzdHJpbmdzCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9h Y2Nlc3MvdHVwZGVzYy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3R1cGRlc2MuaAppbmRleCBkNDZj ZGJmN2EzYy4uNTk1NDEzZGJiYzUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90dXBk ZXNjLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3R1cGRlc2MuaApAQCAtMTk1LDYgKzE5NSw3 IEBAIGV4dGVybiBUdXBsZURlc2MgQ3JlYXRlVHVwbGVEZXNjVHJ1bmNhdGVkQ29weShUdXBsZURl c2MgdHVwZGVzYywgaW50IG5hdHRzKTsKIAogZXh0ZXJuIFR1cGxlRGVzYyBDcmVhdGVUdXBsZURl c2NDb3B5Q29uc3RyKFR1cGxlRGVzYyB0dXBkZXNjKTsKIAorI2RlZmluZSBUdXBsZURlc2NGaW5h bGl6ZShkKSAoKHZvaWQpIDApCiAjZGVmaW5lIFR1cGxlRGVzY1NpemUoc3JjKSBcCiAJKG9mZnNl dG9mKHN0cnVjdCBUdXBsZURlc2NEYXRhLCBjb21wYWN0X2F0dHJzKSArIFwKIAkgKHNyYyktPm5h dHRzICogc2l6ZW9mKENvbXBhY3RBdHRyaWJ1dGUpICsgXApkaWZmIC0tZ2l0IGEvc3JjL3BsL3Bs cGdzcWwvc3JjL3BsX2NvbXAuYyBiL3NyYy9wbC9wbHBnc3FsL3NyYy9wbF9jb21wLmMKaW5kZXgg NWVjYzc3NjY3NTcuLmI3MmM5NjNiM2JlIDEwMDY0NAotLS0gYS9zcmMvcGwvcGxwZ3NxbC9zcmMv cGxfY29tcC5jCisrKyBiL3NyYy9wbC9wbHBnc3FsL3NyYy9wbF9jb21wLmMKQEAgLTE5MTIsNiAr MTkxMiw4IEBAIGJ1aWxkX3Jvd19mcm9tX3ZhcnMoUExwZ1NRTF92YXJpYWJsZSAqKnZhcnMsIGlu dCBudW12YXJzKQogCQlUdXBsZURlc2NJbml0RW50cnlDb2xsYXRpb24ocm93LT5yb3d0dXBkZXNj LCBpICsgMSwgdHlwY29sbCk7CiAJfQogCisJVHVwbGVEZXNjRmluYWxpemUocm93LT5yb3d0dXBk ZXNjKTsKKwogCXJldHVybiByb3c7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMv dGVzdF9jdXN0b21fc3RhdHMvdGVzdF9jdXN0b21fZml4ZWRfc3RhdHMuYyBiL3NyYy90ZXN0L21v ZHVsZXMvdGVzdF9jdXN0b21fc3RhdHMvdGVzdF9jdXN0b21fZml4ZWRfc3RhdHMuYwppbmRleCA0 ODVlMDhlNWMxOS4uZjllN2M3MTcyODAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVz dF9jdXN0b21fc3RhdHMvdGVzdF9jdXN0b21fZml4ZWRfc3RhdHMuYworKysgYi9zcmMvdGVzdC9t b2R1bGVzL3Rlc3RfY3VzdG9tX3N0YXRzL3Rlc3RfY3VzdG9tX2ZpeGVkX3N0YXRzLmMKQEAgLTIw Niw2ICsyMDYsNyBAQCB0ZXN0X2N1c3RvbV9zdGF0c19maXhlZF9yZXBvcnQoUEdfRlVOQ1RJT05f QVJHUykKIAkJCQkJICAgSU5UOE9JRCwgLTEsIDApOwogCVR1cGxlRGVzY0luaXRFbnRyeSh0dXBk ZXNjLCAoQXR0ck51bWJlcikgMiwgInN0YXRzX3Jlc2V0IiwKIAkJCQkJICAgVElNRVNUQU1QVFpP SUQsIC0xLCAwKTsKKwlUdXBsZURlc2NGaW5hbGl6ZSh0dXBkZXNjKTsKIAlCbGVzc1R1cGxlRGVz Yyh0dXBkZXNjKTsKIAogCXZhbHVlc1swXSA9IEludDY0R2V0RGF0dW0oc3RhdHMtPm51bWNhbGxz KTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9wcmVkdGVzdC90ZXN0X3ByZWR0 ZXN0LmMgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfcHJlZHRlc3QvdGVzdF9wcmVkdGVzdC5jCmlu ZGV4IDY3OWE1ZGU0NTZkLi40OGNhMmE0ZWE3MCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxl cy90ZXN0X3ByZWR0ZXN0L3Rlc3RfcHJlZHRlc3QuYworKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rl c3RfcHJlZHRlc3QvdGVzdF9wcmVkdGVzdC5jCkBAIC0yMzAsNiArMjMwLDcgQEAgdGVzdF9wcmVk dGVzdChQR19GVU5DVElPTl9BUkdTKQogCQkJCQkgICAic19yX2hvbGRzIiwgQk9PTE9JRCwgLTEs IDApOwogCVR1cGxlRGVzY0luaXRFbnRyeSh0dXBkZXNjLCAoQXR0ck51bWJlcikgOCwKIAkJCQkJ ICAgIndfcl9ob2xkcyIsIEJPT0xPSUQsIC0xLCAwKTsKKwlUdXBsZURlc2NGaW5hbGl6ZSh0dXBk ZXNjKTsKIAl0dXBkZXNjID0gQmxlc3NUdXBsZURlc2ModHVwZGVzYyk7CiAKIAl2YWx1ZXNbMF0g PSBCb29sR2V0RGF0dW0oc3Ryb25nX2ltcGxpZWRfYnkpOwotLSAKMi41MS4wCgo= --000000000000c0b48e064b8892d7 Content-Type: text/plain; charset="US-ASCII"; name="v9-0003-Optimize-tuple-deformation.patch" Content-Disposition: attachment; filename="v9-0003-Optimize-tuple-deformation.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlzysh8u2 RnJvbSA5YWRhNDE1MjUzYmY1YzM2YzQ4MTQ1Y2RkYTI1NDhmMjU1ODhkNTliIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZpZCBSb3dsZXkgPGRncm93bGV5QGdtYWlsLmNvbT4KRGF0 ZTogVHVlLCAzMSBEZWMgMjAyNCAwOToxOToyNCArMTMwMApTdWJqZWN0OiBbUEFUQ0ggdjkgMy81 XSBPcHRpbWl6ZSB0dXBsZSBkZWZvcm1hdGlvbgoKVGhpcyBjb21taXQgaW5jbHVkZXMgdmFyaW91 cyBvcHRpbWl6YXRpb25zIHRvIGltcHJvdmUgdGhlIHBlcmZvcm1hbmNlIG9mCnR1cGxlIGRlZm9y bWF0aW9uLgoKV2Ugbm93IHByZWNhbGN1bGF0ZSBDb21wYWN0QXR0cmlidXRlJ3MgYXR0Y2FjaGVv ZmYsIHdoaWNoIGFsbG93cyB1cyB0bwpyZW1vdmUgdGhlIGNvZGUgZnJvbSB0aGUgZGVmb3JtIHJv dXRpbmVzIHdoaWNoIHdhcyBzZXR0aW5nIHRoZQphdHRjYWNoZW9mZi4gIFNldHRpbmcgdGhlIGF0 dGNhY2hlb2ZmIGlzIGhhbmRsZWQgYnkgVHVwbGVEZXNjRmluYWxpemUoKSwKd2hpY2ggbXVzdCBi ZSBjYWxsZWQgYmVmb3JlIHRoZSBUdXBsZURlc2MgaXMgdXNlZCBmb3IgYW55dGhpbmcuICBIYXZp bmcKdGhpcyBUdXBsZURlc2NGaW5hbGl6ZSgpIGZ1bmN0aW9uIG1lYW5zIHdlIGNhbiBzdG9yZSB0 aGUgZmlyc3QKYXR0cmlidXRlIGluIHRoZSBUdXBsZURlc2Mgd2hpY2ggZG9lcyBub3QgaGF2ZSBh biBvZmZzZXQgY2FjaGVkLiAgVGhhdAphbGxvd3MgdXMgdG8gYWRkIGEgZGVkaWNhdGVkIGRlZm9y bWluZyBsb29wIHRvIGRlZm9ybSBhbGwgYXR0cmlidXRlcyB1cAp0byB0aGUgZmluYWwgb25lIHdp dGggYSBhdHRjYWNoZW9mZiBzZXQsIG9yIHVwIHRvIHRoZSBmaXJzdCBOVUxMCmF0dHJpYnV0ZSwg d2hpY2hldmVyIGNvbWVzIGZpcnN0LgoKV2UgYWxzbyByZWNvcmQgdGhlIG1heGltdW0gYXR0cmli dXRlIG51bWJlciB3aGljaCBpcyBndWFyYW50ZWVkIHRvIGV4aXN0CmluIHRoZSB0dXBsZSwgdGhh dCBpcywgaGFzIGEgTk9UIE5VTEwgY29uc3RyYWludCBhbmQgaXNuJ3QgYW4KYXR0aGFzbWlzc2lu ZyBhdHRyaWJ1dGUuICBXaGVuIGRlZm9ybWluZyBvbmx5IGF0dHJpYnV0ZXMgcHJpb3IgdG8gdGhl Cmd1YXJhbnRlZWQgYXR0bnVtLCB3ZSd2ZSBubyBuZWVkIHRvIGFjY2VzcyB0aGUgdHVwbGUncyBu YXR0IGNvdW50LiAgQXMgYW4KYWRkaXRpb25hbCBvcHRpbWl6YXRpb24sIHdlIG9ubHkgY291bnQg Zml4ZWQtd2lkdGggY29sdW1ucyB3aGVuCmNhbGN1bGF0aW5nIHRoZSBtYXhpbXVtIGd1YXJhbnRl ZWQgY29sdW1uIGFzIHRoaXMgZWxpbWluYXRlcyB0aGUgbmVlZCB0bwplbWl0IGNvZGUgdG8gZmV0 Y2ggYnlyZWYgdHlwZXMgaW4gdGhlIGRlZm9ybWF0aW9uIGxvb3AgZm9yIGd1YXJhbnRlZWQKYXR0 cmlidXRlcy4KClNvbWUgbG9jYXRpb25zIGluIHRoZSBjb2RlIGRlZm9ybSB0dXBsZXMgdGhhdCBo YXZlIHlldCB0byBnbyB0aHJvdWdoIE5PVApOVUxMIGNvbnN0cmFpbnQgdmFsaWRhdGlvbi4gIFdl J3JlIHVuYWJsZSB0byBwZXJmb3JtIHRoZSBndWFyYW50ZWVkCmF0dHJpYnV0ZSBvcHRpbWl6YXRp b24gd2hlbiB0aGF0J3MgdGhlIGNhc2UuICBUaGUgb3B0aW1pemF0aW9uIGlzIG9wdC1pbgp2aWEg dGhlIFR1cGxlVGFibGVTbG90IHVzaW5nIHRoZSBUVFNfRkxBR19PQkVZU19OT1RfTlVMTF9DT05T VFJBSU5UUwpmbGFnLgoKVGhpcyBjb21taXQgYWxzbyBhZGRzIGEgbW9yZSBlZmZpY2llbnQgd2F5 IG9mIHBvcHVsYXRpbmcgdGhlIGlzbnVsbAphcnJheSBieSB1c2luZyBhIGJpdC13aXNlIHRyaWNr IHdoaWNoIHBlcmZvcm1zIG11bHRpcGxpY2F0aW9uIG9uIHRoZQppbnZlcnNlIG9mIHRoZSB0dXBs ZSdzIGJpdG1hcCBieXRlIGFuZCBtYXNraW5nIG91dCBhbGwgYnV0IHRoZSBsb3dlciBiaXQKb2Yg ZWFjaCBvZiB0aGUgYm9vbGVhbidzIGJ5dGUuICBUaGlzIHJlc3VsdHMgaW4gbXVjaCBtb3JlIG9w dGltYWwgY29kZQp3aGVuIGNvbXBhcmVkIHRvIGRldGVybWluaW5nIHRoZSBOVUxMbmVzcyB2aWEg YXR0X2lzbnVsbCgpLiAgOCBpc251bGwKZWxlbWVudHMgYXJlIHByb2Nlc3NlZCBhdCBvbmNlIHVz aW5nIHRoaXMgbWV0aG9kLCB3aGljaCBtZWFucyB3ZSBuZWVkIHRvCnJvdW5kIHRoZSB0dHNfaXNu dWxsIGFycmF5IHNpemUgdXAgdG8gdGhlIG5leHQgOCBieXRlcy4gIFRoZSBwYWxsb2MgY29kZQpk b2VzIHRoaXMgYW55d2F5LCBidXQgdGhlIHJvdW5kLXVwIG5lZWRlZCB0byBiZSBmb3JtYWxpemVk IHNvIGFzIG5vdCB0bwpvdmVyd3JpdGUgdGhlIHNlbnRpbmVsIGJ5dGUgaW4gZGVidWcgYnVpbGRz LgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vaGVhcHR1cGxlLmMgICAgICAgIHwgMzYy ICsrKysrKysrLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9pbmRleHR1cGxl LmMgICAgICAgfCAzNzEgKysrKysrKystLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2Nv bW1vbi90dXBkZXNjLmMgICAgICAgICAgfCAgNTMgKysrCiBzcmMvYmFja2VuZC9hY2Nlc3Mvc3Bn aXN0L3NwZ3V0aWxzLmMgICAgICAgICB8ICAgMyAtCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVj VHVwbGVzLmMgICAgICAgICAgICB8IDM2MCArKysrKysrKystLS0tLS0tLS0KIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMgICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2pp dC9sbHZtL2xsdm1qaXRfZGVmb3JtLmMgICAgICAgIHwgICA2IC0KIHNyYy9iYWNrZW5kL3V0aWxz L2NhY2hlL3JlbGNhY2hlLmMgICAgICAgICAgIHwgIDEyIC0KIHNyYy9pbmNsdWRlL2FjY2Vzcy90 dXBkZXNjLmggICAgICAgICAgICAgICAgIHwgIDE5ICstCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdHVw bWFjcy5oICAgICAgICAgICAgICAgICB8IDE5MSArKysrKysrKystCiBzcmMvaW5jbHVkZS9leGVj dXRvci90dXB0YWJsZS5oICAgICAgICAgICAgICB8ICAxNiArLQogc3JjL3Rlc3QvbW9kdWxlcy9k ZWZvcm1fYmVuY2gvZGVmb3JtX2JlbmNoLmMgfCAgIDEgKwogMTIgZmlsZXMgY2hhbmdlZCwgNzcz IGluc2VydGlvbnMoKyksIDYyMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvY29tbW9uL2hlYXB0dXBsZS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9o ZWFwdHVwbGUuYwppbmRleCAxMWJlYzIwZTgyZS4uOTRkMTFiZGM0ZmQgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vaGVhcHR1cGxlLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2NvbW1vbi9oZWFwdHVwbGUuYwpAQCAtNDk4LDE5ICs0OTgsNyBAQCBoZWFwX2F0dGlzbnVs bChIZWFwVHVwbGUgdHVwLCBpbnQgYXR0bnVtLCBUdXBsZURlc2MgdHVwbGVEZXNjKQogICoJCW5v Y2FjaGVnZXRhdHRyCiAgKgogICoJCVRoaXMgb25seSBnZXRzIGNhbGxlZCBmcm9tIGZhc3RnZXRh dHRyKCksIGluIGNhc2VzIHdoZXJlIHdlCi0gKgkJY2FuJ3QgdXNlIGEgY2FjaGVvZmZzZXQgYW5k IHRoZSB2YWx1ZSBpcyBub3QgbnVsbC4KLSAqCi0gKgkJVGhpcyBjYWNoZXMgYXR0cmlidXRlIG9m ZnNldHMgaW4gdGhlIGF0dHJpYnV0ZSBkZXNjcmlwdG9yLgotICoKLSAqCQlBbiBhbHRlcm5hdGl2 ZSB3YXkgdG8gc3BlZWQgdGhpbmdzIHVwIHdvdWxkIGJlIHRvIGNhY2hlIG9mZnNldHMKLSAqCQl3 aXRoIHRoZSB0dXBsZSwgYnV0IHRoYXQgc2VlbXMgbW9yZSBkaWZmaWN1bHQgdW5sZXNzIHlvdSB0 YWtlCi0gKgkJdGhlIHN0b3JhZ2UgaGl0IG9mIGFjdHVhbGx5IHB1dHRpbmcgdGhvc2Ugb2Zmc2V0 cyBpbnRvIHRoZQotICoJCXR1cGxlIHlvdSBzZW5kIHRvIGRpc2suICBZdWNrLgotICoKLSAqCQlU aGlzIHNjaGVtZSB3aWxsIGJlIHNsaWdodGx5IHNsb3dlciB0aGFuIHRoYXQsIGJ1dCBzaG91bGQK LSAqCQlwZXJmb3JtIHdlbGwgZm9yIHF1ZXJpZXMgd2hpY2ggaGl0IGxhcmdlICMncyBvZiB0dXBs ZXMuICBBZnRlcgotICoJCXlvdSBjYWNoZSB0aGUgb2Zmc2V0cyBvbmNlLCBleGFtaW5pbmcgYWxs IHRoZSBvdGhlciB0dXBsZXMgdXNpbmcKLSAqCQl0aGUgc2FtZSBhdHRyaWJ1dGUgZGVzY3JpcHRv ciB3aWxsIGdvIG11Y2ggcXVpY2tlci4gLWNpbSA1LzQvOTEKKyAqCQljYW4ndCB1c2UgdGhlIGF0 dGNhY2hlb2ZmIGFuZCB0aGUgdmFsdWUgaXMgbm90IG51bGwuCiAgKgogICoJCU5PVEU6IGlmIHlv dSBuZWVkIHRvIGNoYW5nZSB0aGlzIGNvZGUsIHNlZSBhbHNvIGhlYXBfZGVmb3JtX3R1cGxlLgog ICoJCUFsc28gc2VlIG5vY2FjaGVfaW5kZXhfZ2V0YXR0ciwgd2hpY2ggaXMgdGhlIHNhbWUgY29k ZSBmb3IgaW5kZXgKQEAgLTUyMiwxOTQgKzUxMCwxMjMgQEAgbm9jYWNoZWdldGF0dHIoSGVhcFR1 cGxlIHR1cCwKIAkJCSAgIGludCBhdHRudW0sCiAJCQkgICBUdXBsZURlc2MgdHVwbGVEZXNjKQog eworCUNvbXBhY3RBdHRyaWJ1dGUgKmNhdHRyOwogCUhlYXBUdXBsZUhlYWRlciB0ZCA9IHR1cC0+ dF9kYXRhOwogCWNoYXIJICAgKnRwOwkJCQkvKiBwdHIgdG8gZGF0YSBwYXJ0IG9mIHR1cGxlICov CiAJYml0czgJICAgKmJwID0gdGQtPnRfYml0czsJLyogcHRyIHRvIG51bGwgYml0bWFwIGluIHR1 cGxlICovCi0JYm9vbAkJc2xvdyA9IGZhbHNlOwkvKiBkbyB3ZSBoYXZlIHRvIHdhbGsgYXR0cnM/ ICovCiAJaW50CQkJb2ZmOwkJCS8qIGN1cnJlbnQgb2Zmc2V0IHdpdGhpbiBkYXRhICovCisJaW50 CQkJc3RhcnRBdHRyOworCWludAkJCWZpcnN0TnVsbEF0dHI7CisJaW50CQkJaTsKKwlib29sCQlo YXNudWxscyA9IEhlYXBUdXBsZUhhc051bGxzKHR1cCk7CiAKLQkvKiAtLS0tLS0tLS0tLS0tLS0t Ci0JICoJIFRocmVlIGNhc2VzOgotCSAqCi0JICoJIDE6IE5vIG51bGxzIGFuZCBubyB2YXJpYWJs ZS13aWR0aCBhdHRyaWJ1dGVzLgotCSAqCSAyOiBIYXMgYSBudWxsIG9yIGEgdmFyLXdpZHRoIEFG VEVSIGF0dC4KLQkgKgkgMzogSGFzIG51bGxzIG9yIHZhci13aWR0aHMgQkVGT1JFIGF0dC4KLQkg KiAtLS0tLS0tLS0tLS0tLS0tCi0JICovCisJLyogRGlkIHNvbWVvbmUgZm9yZ2V0IHRvIGNhbGwg VHVwbGVEZXNjRmluYWxpemUoKT8gKi8KKwlBc3NlcnQodHVwbGVEZXNjLT5maXJzdE5vbkNhY2hl ZE9mZnNldEF0dHIgPj0gMCk7CiAKIAlhdHRudW0tLTsKIAotCWlmICghSGVhcFR1cGxlTm9OdWxs cyh0dXApKQotCXsKLQkJLyoKLQkJICogdGhlcmUncyBhIG51bGwgc29tZXdoZXJlIGluIHRoZSB0 dXBsZQotCQkgKgotCQkgKiBjaGVjayB0byBzZWUgaWYgYW55IHByZWNlZGluZyBiaXRzIGFyZSBu dWxsLi4uCi0JCSAqLwotCQlpbnQJCQlieXRlID0gYXR0bnVtID4+IDM7Ci0JCWludAkJCWZpbmFs Yml0ID0gYXR0bnVtICYgMHgwNzsKLQotCQkvKiBjaGVjayBmb3IgbnVsbHMgImJlZm9yZSIgZmlu YWwgYml0IG9mIGxhc3QgYnl0ZSAqLwotCQlpZiAoKH5icFtieXRlXSkgJiAoKDEgPDwgZmluYWxi aXQpIC0gMSkpCi0JCQlzbG93ID0gdHJ1ZTsKLQkJZWxzZQotCQl7Ci0JCQkvKiBjaGVjayBmb3Ig bnVsbHMgaW4gYW55ICJlYXJsaWVyIiBieXRlcyAqLwotCQkJaW50CQkJaTsKKwkvKgorCSAqIFRv IHJlZHVjZSB0aGUgbnVtYmVyIG9mIGF0dHJpYnV0ZXMgd2UgbmVlZCB0byBsb29rIGF0LCB3ZSBz dGFydCBhdCB0aGUKKwkgKiBoaWdoZXN0IGF0dHJpYnV0ZSB0aGF0IHdlIGNhbiB3aGljaCBoYXMg YSBjYWNoZWQgb2Zmc2V0LiAgU2luY2UgdGhlCisJICogYXR0Y2FjaGVvZmYgZm9yIGFuIGF0dHJp YnV0ZSBpcyBvbmx5IHZhbGlkIGlmIHRoZXJlIGFyZSBubyBOVUxMcyBpbgorCSAqIHByaW9yIGF0 dHJpYnV0ZSwgd2UgbXVzdCBsb29rIGZvciBOVUxMcyB0byBkZXRlcm1pbmUgdGhlIHN0YXJ0IGF0 dHIuCisJICovCisJaWYgKGhhc251bGxzKQorCQlmaXJzdE51bGxBdHRyID0gZmlyc3RfbnVsbF9h dHRyKGJwLCBhdHRudW0pOworCWVsc2UKKwkJZmlyc3ROdWxsQXR0ciA9IGF0dG51bTsKIAotCQkJ Zm9yIChpID0gMDsgaSA8IGJ5dGU7IGkrKykKLQkJCXsKLQkJCQlpZiAoYnBbaV0gIT0gMHhGRikK LQkJCQl7Ci0JCQkJCXNsb3cgPSB0cnVlOwotCQkJCQlicmVhazsKLQkJCQl9Ci0JCQl9Ci0JCX0K KwlpZiAodHVwbGVEZXNjLT5maXJzdE5vbkNhY2hlZE9mZnNldEF0dHIgPiAwKQorCXsKKwkJc3Rh cnRBdHRyID0gTWluKHR1cGxlRGVzYy0+Zmlyc3ROb25DYWNoZWRPZmZzZXRBdHRyIC0gMSwgZmly c3ROdWxsQXR0cik7CisJCW9mZiA9IFR1cGxlRGVzY0NvbXBhY3RBdHRyKHR1cGxlRGVzYywgc3Rh cnRBdHRyKS0+YXR0Y2FjaGVvZmY7CisJfQorCWVsc2UKKwl7CisJCXN0YXJ0QXR0ciA9IDA7CisJ CW9mZiA9IDA7CiAJfQogCiAJdHAgPSAoY2hhciAqKSB0ZCArIHRkLT50X2hvZmY7CiAKLQlpZiAo IXNsb3cpCisJLyoKKwkgKiBDYWxjdWxhdGUgJ29mZicgdXAgdG8gdGhlIGZpcnN0IE5VTEwgYXR0 ci4gIFdlIHVzZSB0d28gY2hlYXBlciBsb29wcworCSAqIHdoZW4gdGhlIHR1cGxlIGhhcyBubyB2 YXJpYWJsZS13aWR0aCBjb2x1bW5zLiAgV2hlbiB2YXJpYWJsZS13aWR0aAorCSAqIGNvbHVtbnMg ZXhpc3Qgd2UgdXNlIGF0dF9hZGRsZW5ndGhfcG9pbnRlcigpIHRvIG1vdmUgdGhlIG9mZnNldCBi ZXlvbmQKKwkgKiB0aGUgY3VycmVudCBhdHRyaWJ1dGUuCisJICovCisJaWYgKCFIZWFwVHVwbGVI YXNWYXJXaWR0aCh0dXApKQogCXsKLQkJQ29tcGFjdEF0dHJpYnV0ZSAqYXR0OwotCi0JCS8qCi0J CSAqIElmIHdlIGdldCBoZXJlLCB0aGVyZSBhcmUgbm8gbnVsbHMgdXAgdG8gYW5kIGluY2x1ZGlu ZyB0aGUgdGFyZ2V0Ci0JCSAqIGF0dHJpYnV0ZS4gIElmIHdlIGhhdmUgYSBjYWNoZWQgb2Zmc2V0 LCB3ZSBjYW4gdXNlIGl0LgotCQkgKi8KLQkJYXR0ID0gVHVwbGVEZXNjQ29tcGFjdEF0dHIodHVw bGVEZXNjLCBhdHRudW0pOwotCQlpZiAoYXR0LT5hdHRjYWNoZW9mZiA+PSAwKQotCQkJcmV0dXJu IGZldGNoYXR0KGF0dCwgdHAgKyBhdHQtPmF0dGNhY2hlb2ZmKTsKLQotCQkvKgotCQkgKiBPdGhl cndpc2UsIGNoZWNrIGZvciBub24tZml4ZWQtbGVuZ3RoIGF0dHJzIHVwIHRvIGFuZCBpbmNsdWRp bmcKLQkJICogdGFyZ2V0LiAgSWYgdGhlcmUgYXJlbid0IGFueSwgaXQncyBzYWZlIHRvIGNoZWFw bHkgaW5pdGlhbGl6ZSB0aGUKLQkJICogY2FjaGVkIG9mZnNldHMgZm9yIHRoZXNlIGF0dHJzLgot CQkgKi8KLQkJaWYgKEhlYXBUdXBsZUhhc1ZhcldpZHRoKHR1cCkpCisJCWZvciAoaSA9IHN0YXJ0 QXR0cjsgaSA8IGZpcnN0TnVsbEF0dHI7IGkrKykKIAkJewotCQkJaW50CQkJajsKKwkJCWNhdHRy ID0gVHVwbGVEZXNjQ29tcGFjdEF0dHIodHVwbGVEZXNjLCBpKTsKIAotCQkJZm9yIChqID0gMDsg aiA8PSBhdHRudW07IGorKykKLQkJCXsKLQkJCQlpZiAoVHVwbGVEZXNjQ29tcGFjdEF0dHIodHVw bGVEZXNjLCBqKS0+YXR0bGVuIDw9IDApCi0JCQkJewotCQkJCQlzbG93ID0gdHJ1ZTsKLQkJCQkJ YnJlYWs7Ci0JCQkJfQotCQkJfQorCQkJb2ZmID0gYXR0X25vbWluYWxfYWxpZ25ieShvZmYsIGNh dHRyLT5hdHRhbGlnbmJ5KTsKKwkJCW9mZiArPSBjYXR0ci0+YXR0bGVuOwogCQl9Ci0JfQotCi0J aWYgKCFzbG93KQotCXsKLQkJaW50CQkJbmF0dHMgPSB0dXBsZURlc2MtPm5hdHRzOwotCQlpbnQJ CQlqID0gMTsKLQotCQkvKgotCQkgKiBJZiB3ZSBnZXQgaGVyZSwgd2UgaGF2ZSBhIHR1cGxlIHdp dGggbm8gbnVsbHMgb3IgdmFyLXdpZHRocyB1cCB0bwotCQkgKiBhbmQgaW5jbHVkaW5nIHRoZSB0 YXJnZXQgYXR0cmlidXRlLCBzbyB3ZSBjYW4gdXNlIHRoZSBjYWNoZWQgb2Zmc2V0Ci0JCSAqIC4u LiBvbmx5IHdlIGRvbid0IGhhdmUgaXQgeWV0LCBvciB3ZSdkIG5vdCBoYXZlIGdvdCBoZXJlLiAg U2luY2UKLQkJICogaXQncyBjaGVhcCB0byBjb21wdXRlIG9mZnNldHMgZm9yIGZpeGVkLXdpZHRo IGNvbHVtbnMsIHdlIHRha2UgdGhlCi0JCSAqIG9wcG9ydHVuaXR5IHRvIGluaXRpYWxpemUgdGhl IGNhY2hlZCBvZmZzZXRzIGZvciAqYWxsKiB0aGUgbGVhZGluZwotCQkgKiBmaXhlZC13aWR0aCBj b2x1bW5zLCBpbiBob3BlIG9mIGF2b2lkaW5nIGZ1dHVyZSB2aXNpdHMgdG8gdGhpcwotCQkgKiBy b3V0aW5lLgotCQkgKi8KLQkJVHVwbGVEZXNjQ29tcGFjdEF0dHIodHVwbGVEZXNjLCAwKS0+YXR0 Y2FjaGVvZmYgPSAwOwotCi0JCS8qIHdlIG1pZ2h0IGhhdmUgc2V0IHNvbWUgb2Zmc2V0cyBpbiB0 aGUgc2xvdyBwYXRoIHByZXZpb3VzbHkgKi8KLQkJd2hpbGUgKGogPCBuYXR0cyAmJiBUdXBsZURl c2NDb21wYWN0QXR0cih0dXBsZURlc2MsIGopLT5hdHRjYWNoZW9mZiA+IDApCi0JCQlqKys7CiAK LQkJb2ZmID0gVHVwbGVEZXNjQ29tcGFjdEF0dHIodHVwbGVEZXNjLCBqIC0gMSktPmF0dGNhY2hl b2ZmICsKLQkJCVR1cGxlRGVzY0NvbXBhY3RBdHRyKHR1cGxlRGVzYywgaiAtIDEpLT5hdHRsZW47 Ci0KLQkJZm9yICg7IGogPCBuYXR0czsgaisrKQorCQlmb3IgKDsgaSA8IGF0dG51bTsgaSsrKQog CQl7Ci0JCQlDb21wYWN0QXR0cmlidXRlICphdHQgPSBUdXBsZURlc2NDb21wYWN0QXR0cih0dXBs ZURlc2MsIGopOwotCi0JCQlpZiAoYXR0LT5hdHRsZW4gPD0gMCkKLQkJCQlicmVhazsKLQotCQkJ b2ZmID0gYXR0X25vbWluYWxfYWxpZ25ieShvZmYsIGF0dC0+YXR0YWxpZ25ieSk7CisJCQlpZiAo YXR0X2lzbnVsbChpLCBicCkpCisJCQkJY29udGludWU7CiAKLQkJCWF0dC0+YXR0Y2FjaGVvZmYg PSBvZmY7CisJCQljYXR0ciA9IFR1cGxlRGVzY0NvbXBhY3RBdHRyKHR1cGxlRGVzYywgaSk7CiAK LQkJCW9mZiArPSBhdHQtPmF0dGxlbjsKKwkJCW9mZiA9IGF0dF9wb2ludGVyX2FsaWduYnkob2Zm LCBjYXR0ci0+YXR0YWxpZ25ieSwgY2F0dHItPmF0dGxlbiwKKwkJCQkJCQkJCSAgdHAgKyBvZmYp OworCQkJb2ZmICs9IGNhdHRyLT5hdHRsZW47CiAJCX0KLQotCQlBc3NlcnQoaiA+IGF0dG51bSk7 Ci0KLQkJb2ZmID0gVHVwbGVEZXNjQ29tcGFjdEF0dHIodHVwbGVEZXNjLCBhdHRudW0pLT5hdHRj YWNoZW9mZjsKIAl9CiAJZWxzZQogCXsKLQkJYm9vbAkJdXNlY2FjaGUgPSB0cnVlOwotCQlpbnQJ CQlpOwotCi0JCS8qCi0JCSAqIE5vdyB3ZSBrbm93IHRoYXQgd2UgaGF2ZSB0byB3YWxrIHRoZSB0 dXBsZSBDQVJFRlVMTFkuICBCdXQgd2Ugc3RpbGwKLQkJICogbWlnaHQgYmUgYWJsZSB0byBjYWNo ZSBzb21lIG9mZnNldHMgZm9yIG5leHQgdGltZS4KLQkJICoKLQkJICogTm90ZSAtIFRoaXMgbG9v cCBpcyBhIGxpdHRsZSB0cmlja3kuICBGb3IgZWFjaCBub24tbnVsbCBhdHRyaWJ1dGUsCi0JCSAq IHdlIGhhdmUgdG8gZmlyc3QgYWNjb3VudCBmb3IgYWxpZ25tZW50IHBhZGRpbmcgYmVmb3JlIHRo ZSBhdHRyLAotCQkgKiB0aGVuIGFkdmFuY2Ugb3ZlciB0aGUgYXR0ciBiYXNlZCBvbiBpdHMgbGVu Z3RoLiAgTnVsbHMgaGF2ZSBubwotCQkgKiBzdG9yYWdlIGFuZCBubyBhbGlnbm1lbnQgcGFkZGlu ZyBlaXRoZXIuICBXZSBjYW4gdXNlL3NldAotCQkgKiBhdHRjYWNoZW9mZiB1bnRpbCB3ZSByZWFj aCBlaXRoZXIgYSBudWxsIG9yIGEgdmFyLXdpZHRoIGF0dHJpYnV0ZS4KLQkJICovCi0JCW9mZiA9 IDA7Ci0JCWZvciAoaSA9IDA7OyBpKyspCQkvKiBsb29wIGV4aXQgaXMgYXQgImJyZWFrIiAqLwor CQlmb3IgKGkgPSBzdGFydEF0dHI7IGkgPCBmaXJzdE51bGxBdHRyOyBpKyspCiAJCXsKLQkJCUNv bXBhY3RBdHRyaWJ1dGUgKmF0dCA9IFR1cGxlRGVzY0NvbXBhY3RBdHRyKHR1cGxlRGVzYywgaSk7 CisJCQlpbnQJCQlhdHRsZW47CiAKLQkJCWlmIChIZWFwVHVwbGVIYXNOdWxscyh0dXApICYmIGF0 dF9pc251bGwoaSwgYnApKQotCQkJewotCQkJCXVzZWNhY2hlID0gZmFsc2U7Ci0JCQkJY29udGlu dWU7CQkvKiB0aGlzIGNhbm5vdCBiZSB0aGUgdGFyZ2V0IGF0dCAqLwotCQkJfQorCQkJY2F0dHIg PSBUdXBsZURlc2NDb21wYWN0QXR0cih0dXBsZURlc2MsIGkpOworCQkJYXR0bGVuID0gY2F0dHIt PmF0dGxlbjsKIAotCQkJLyogSWYgd2Uga25vdyB0aGUgbmV4dCBvZmZzZXQsIHdlIGNhbiBza2lw IHRoZSByZXN0ICovCi0JCQlpZiAodXNlY2FjaGUgJiYgYXR0LT5hdHRjYWNoZW9mZiA+PSAwKQot CQkJCW9mZiA9IGF0dC0+YXR0Y2FjaGVvZmY7Ci0JCQllbHNlIGlmIChhdHQtPmF0dGxlbiA9PSAt MSkKLQkJCXsKLQkJCQkvKgotCQkJCSAqIFdlIGNhbiBvbmx5IGNhY2hlIHRoZSBvZmZzZXQgZm9y IGEgdmFybGVuYSBhdHRyaWJ1dGUgaWYgdGhlCi0JCQkJICogb2Zmc2V0IGlzIGFscmVhZHkgc3Vp dGFibHkgYWxpZ25lZCwgc28gdGhhdCB0aGVyZSB3b3VsZCBiZQotCQkJCSAqIG5vIHBhZCBieXRl cyBpbiBhbnkgY2FzZTogdGhlbiB0aGUgb2Zmc2V0IHdpbGwgYmUgdmFsaWQgZm9yCi0JCQkJICog ZWl0aGVyIGFuIGFsaWduZWQgb3IgdW5hbGlnbmVkIHZhbHVlLgotCQkJCSAqLwotCQkJCWlmICh1 c2VjYWNoZSAmJgotCQkJCQlvZmYgPT0gYXR0X25vbWluYWxfYWxpZ25ieShvZmYsIGF0dC0+YXR0 YWxpZ25ieSkpCi0JCQkJCWF0dC0+YXR0Y2FjaGVvZmYgPSBvZmY7Ci0JCQkJZWxzZQotCQkJCXsK LQkJCQkJb2ZmID0gYXR0X3BvaW50ZXJfYWxpZ25ieShvZmYsIGF0dC0+YXR0YWxpZ25ieSwgLTEs Ci0JCQkJCQkJCQkJCSAgdHAgKyBvZmYpOwotCQkJCQl1c2VjYWNoZSA9IGZhbHNlOwotCQkJCX0K LQkJCX0KLQkJCWVsc2UKLQkJCXsKLQkJCQkvKiBub3QgdmFybGVuYSwgc28gc2FmZSB0byB1c2Ug YXR0X25vbWluYWxfYWxpZ25ieSAqLwotCQkJCW9mZiA9IGF0dF9ub21pbmFsX2FsaWduYnkob2Zm LCBhdHQtPmF0dGFsaWduYnkpOworCQkJLyoKKwkJCSAqIGNzdHJpbmdzIGRvbid0IGV4aXN0IGlu IGhlYXAgdHVwbGVzLiAgVXNlIHBnX2Fzc3VtZSB0byBpbnN0cnVjdAorCQkJICogdGhlIGNvbXBp bGVyIG5vdCB0byBlbWl0IHRoZSBjc3RyaW5nIHJlbGF0ZWQgY29kZSBpbgorCQkJICogYXR0X2Fk ZGxlbmd0aF9wb2ludGVyKCkuCisJCQkgKi8KKwkJCXBnX2Fzc3VtZShhdHRsZW4gPiAwIHx8IGF0 dGxlbiA9PSAtMSk7CiAKLQkJCQlpZiAodXNlY2FjaGUpCi0JCQkJCWF0dC0+YXR0Y2FjaGVvZmYg PSBvZmY7Ci0JCQl9CisJCQlvZmYgPSBhdHRfcG9pbnRlcl9hbGlnbmJ5KG9mZiwKKwkJCQkJCQkJ CSAgY2F0dHItPmF0dGFsaWduYnksCisJCQkJCQkJCQkgIGF0dGxlbiwKKwkJCQkJCQkJCSAgdHAg KyBvZmYpOworCQkJb2ZmID0gYXR0X2FkZGxlbmd0aF9wb2ludGVyKG9mZiwgYXR0bGVuLCB0cCAr IG9mZik7CisJCX0KIAotCQkJaWYgKGkgPT0gYXR0bnVtKQotCQkJCWJyZWFrOworCQlmb3IgKDsg aSA8IGF0dG51bTsgaSsrKQorCQl7CisJCQlpbnQJCQlhdHRsZW47CiAKLQkJCW9mZiA9IGF0dF9h ZGRsZW5ndGhfcG9pbnRlcihvZmYsIGF0dC0+YXR0bGVuLCB0cCArIG9mZik7CisJCQlpZiAoYXR0 X2lzbnVsbChpLCBicCkpCisJCQkJY29udGludWU7CiAKLQkJCWlmICh1c2VjYWNoZSAmJiBhdHQt PmF0dGxlbiA8PSAwKQotCQkJCXVzZWNhY2hlID0gZmFsc2U7CisJCQljYXR0ciA9IFR1cGxlRGVz Y0NvbXBhY3RBdHRyKHR1cGxlRGVzYywgaSk7CisJCQlhdHRsZW4gPSBjYXR0ci0+YXR0bGVuOwor CisJCQkvKiBBcyBhYm92ZSwgaGVhcHR1cGxlcyBoYXZlIG5vIGNzdHJpbmdzICovCisJCQlwZ19h c3N1bWUoYXR0bGVuID4gMCB8fCBhdHRsZW4gPT0gLTEpOworCisJCQlvZmYgPSBhdHRfcG9pbnRl cl9hbGlnbmJ5KG9mZiwgY2F0dHItPmF0dGFsaWduYnksIGF0dGxlbiwKKwkJCQkJCQkJCSAgdHAg KyBvZmYpOworCQkJb2ZmID0gYXR0X2FkZGxlbmd0aF9wb2ludGVyKG9mZiwgYXR0bGVuLCB0cCAr IG9mZik7CiAJCX0KKwogCX0KIAotCXJldHVybiBmZXRjaGF0dChUdXBsZURlc2NDb21wYWN0QXR0 cih0dXBsZURlc2MsIGF0dG51bSksIHRwICsgb2ZmKTsKKwljYXR0ciA9IFR1cGxlRGVzY0NvbXBh Y3RBdHRyKHR1cGxlRGVzYywgYXR0bnVtKTsKKwlvZmYgPSBhdHRfcG9pbnRlcl9hbGlnbmJ5KG9m ZiwKKwkJCQkJCQkgIGNhdHRyLT5hdHRhbGlnbmJ5LAorCQkJCQkJCSAgY2F0dHItPmF0dGxlbiwK KwkJCQkJCQkgIHRwICsgb2ZmKTsKKworCXJldHVybiBmZXRjaGF0dChjYXR0ciwgdHAgKyBvZmYp OwogfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tCkBAIC0xMzQ3LDYgKzEyNjQsNyBAQCBoZWFwX2Rl Zm9ybV90dXBsZShIZWFwVHVwbGUgdHVwbGUsIFR1cGxlRGVzYyB0dXBsZURlc2MsCiAJCQkJICBE YXR1bSAqdmFsdWVzLCBib29sICppc251bGwpCiB7CiAJSGVhcFR1cGxlSGVhZGVyIHR1cCA9IHR1 cGxlLT50X2RhdGE7CisJQ29tcGFjdEF0dHJpYnV0ZSAqY2F0dHI7CiAJYm9vbAkJaGFzbnVsbHMg PSBIZWFwVHVwbGVIYXNOdWxscyh0dXBsZSk7CiAJaW50CQkJdGRlc2NfbmF0dHMgPSB0dXBsZURl c2MtPm5hdHRzOwogCWludAkJCW5hdHRzOwkJCS8qIG51bWJlciBvZiBhdHRzIHRvIGV4dHJhY3Qg Ki8KQEAgLTEzNTQsNzAgKzEyNzIsOTggQEAgaGVhcF9kZWZvcm1fdHVwbGUoSGVhcFR1cGxlIHR1 cGxlLCBUdXBsZURlc2MgdHVwbGVEZXNjLAogCWNoYXIJICAgKnRwOwkJCQkvKiBwdHIgdG8gdHVw bGUgZGF0YSAqLwogCXVpbnQzMgkJb2ZmOwkJCS8qIG9mZnNldCBpbiB0dXBsZSBkYXRhICovCiAJ Yml0czgJICAgKmJwID0gdHVwLT50X2JpdHM7CS8qIHB0ciB0byBudWxsIGJpdG1hcCBpbiB0dXBs ZSAqLwotCWJvb2wJCXNsb3cgPSBmYWxzZTsJLyogY2FuIHdlIHVzZS9zZXQgYXR0Y2FjaGVvZmY/ ICovCisJaW50CQkJZmlyc3ROb25DYWNoZU9mZnNldEF0dHI7CisJaW50CQkJZmlyc3ROdWxsQXR0 cjsKIAogCW5hdHRzID0gSGVhcFR1cGxlSGVhZGVyR2V0TmF0dHModHVwKTsKIAorCS8qIERpZCBz b21lb25lIGZvcmdldCB0byBjYWxsIFR1cGxlRGVzY0ZpbmFsaXplKCk/ICovCisJQXNzZXJ0KHR1 cGxlRGVzYy0+Zmlyc3ROb25DYWNoZWRPZmZzZXRBdHRyID49IDApOworCiAJLyoKIAkgKiBJbiBp bmhlcml0YW5jZSBzaXR1YXRpb25zLCBpdCBpcyBwb3NzaWJsZSB0aGF0IHRoZSBnaXZlbiB0dXBs ZSBhY3R1YWxseQogCSAqIGhhcyBtb3JlIGZpZWxkcyB0aGFuIHRoZSBjYWxsZXIgaXMgZXhwZWN0 aW5nLiAgRG9uJ3QgcnVuIG9mZiB0aGUgZW5kIG9mCiAJICogdGhlIGNhbGxlcidzIGFycmF5cy4K IAkgKi8KIAluYXR0cyA9IE1pbihuYXR0cywgdGRlc2NfbmF0dHMpOworCWZpcnN0Tm9uQ2FjaGVP ZmZzZXRBdHRyID0gTWluKHR1cGxlRGVzYy0+Zmlyc3ROb25DYWNoZWRPZmZzZXRBdHRyLCBuYXR0 cyk7CisKKwlpZiAoaGFzbnVsbHMpCisJeworCQlmaXJzdE51bGxBdHRyID0gZmlyc3RfbnVsbF9h dHRyKGJwLCBuYXR0cyk7CisKKwkJLyoKKwkJICogWFhYOiBpdCdkIGJlIG5pY2UgdG8gdXNlIHBv cHVsYXRlX2lzbnVsbF9hcnJheSgpIGhlcmUsIGJ1dCB0aGF0CisJCSAqIHJlcXVpcmVzIHRoYXQg dGhlIGlzbnVsbCBhcnJheSdzIHNpemUgaXMgcm91bmRlZCB1cCB0byB0aGUgbmV4dCA4CisJCSAq IGVsZW1lbnRzLiAgRG9pbmcgdGhhdCB3b3VsZCByZXF1aXJlIGFkanVzdGluZyBtYW55IGxvY2F0 aW9uIHRoYXQKKwkJICogYWxsb2NhdGUgdGhlIGFycmF5LgorCQkgKi8KKwkJZmlyc3ROb25DYWNo ZU9mZnNldEF0dHIgPSBNaW4oZmlyc3ROb25DYWNoZU9mZnNldEF0dHIsIGZpcnN0TnVsbEF0dHIp OworCX0KKwllbHNlCisJCWZpcnN0TnVsbEF0dHIgPSBuYXR0czsKIAogCXRwID0gKGNoYXIgKikg dHVwICsgdHVwLT50X2hvZmY7CisJYXR0bnVtID0gMDsKIAotCW9mZiA9IDA7CisJaWYgKGZpcnN0 Tm9uQ2FjaGVPZmZzZXRBdHRyID4gMCkKKwl7CisjaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORwor CQkvKiBJbiBBc3NlcnQgZW5hYmxlZCBidWlsZHMsIHZlcmlmeSBhdHRjYWNoZW9mZiBpcyBjb3Jy ZWN0ICovCisJCWludAkJCW9mZmNoZWNrID0gMDsKKyNlbmRpZgorCQlkbworCQl7CisJCQlpc251 bGxbYXR0bnVtXSA9IGZhbHNlOworCQkJY2F0dHIgPSBUdXBsZURlc2NDb21wYWN0QXR0cih0dXBs ZURlc2MsIGF0dG51bSk7CisJCQlvZmYgPSBjYXR0ci0+YXR0Y2FjaGVvZmY7CiAKLQlmb3IgKGF0 dG51bSA9IDA7IGF0dG51bSA8IG5hdHRzOyBhdHRudW0rKykKKyNpZmRlZiBVU0VfQVNTRVJUX0NI RUNLSU5HCisJCQlvZmZjaGVjayA9IGF0dF9ub21pbmFsX2FsaWduYnkob2ZmY2hlY2ssIGNhdHRy LT5hdHRhbGlnbmJ5KTsKKwkJCUFzc2VydChvZmZjaGVjayA9PSBjYXR0ci0+YXR0Y2FjaGVvZmYp OworCQkJb2ZmY2hlY2sgKz0gY2F0dHItPmF0dGxlbjsKKyNlbmRpZgorCisJCQl2YWx1ZXNbYXR0 bnVtXSA9IGZldGNoX2F0dF9ub2Vycih0cCArIG9mZiwKKwkJCQkJCQkJCQkJIGNhdHRyLT5hdHRi eXZhbCwKKwkJCQkJCQkJCQkJIGNhdHRyLT5hdHRsZW4pOworCQl9IHdoaWxlICgrK2F0dG51bSA8 IGZpcnN0Tm9uQ2FjaGVPZmZzZXRBdHRyKTsKKwkJb2ZmICs9IGNhdHRyLT5hdHRsZW47CisJfQor CWVsc2UKKwkJb2ZmID0gMDsKKworCWZvciAoOyBhdHRudW0gPCBmaXJzdE51bGxBdHRyOyBhdHRu dW0rKykKIAl7Ci0JCUNvbXBhY3RBdHRyaWJ1dGUgKnRoaXNhdHQgPSBUdXBsZURlc2NDb21wYWN0 QXR0cih0dXBsZURlc2MsIGF0dG51bSk7CisJCWlzbnVsbFthdHRudW1dID0gZmFsc2U7CisJCWNh dHRyID0gVHVwbGVEZXNjQ29tcGFjdEF0dHIodHVwbGVEZXNjLCBhdHRudW0pOworCQl2YWx1ZXNb YXR0bnVtXSA9IGFsaWduX2ZldGNoX3RoZW5fYWRkKHRwLAorCQkJCQkJCQkJCQkgICZvZmYsCisJ CQkJCQkJCQkJCSAgY2F0dHItPmF0dGJ5dmFsLAorCQkJCQkJCQkJCQkgIGNhdHRyLT5hdHRsZW4s CisJCQkJCQkJCQkJCSAgY2F0dHItPmF0dGFsaWduYnkpOworCX0KKworCWZvciAoOyBhdHRudW0g PCBuYXR0czsgYXR0bnVtKyspCisJeworCQlBc3NlcnQoaGFzbnVsbHMpOwogCi0JCWlmIChoYXNu dWxscyAmJiBhdHRfaXNudWxsKGF0dG51bSwgYnApKQorCQlpZiAoYXR0X2lzbnVsbChhdHRudW0s IGJwKSkKIAkJewogCQkJdmFsdWVzW2F0dG51bV0gPSAoRGF0dW0pIDA7CiAJCQlpc251bGxbYXR0 bnVtXSA9IHRydWU7Ci0JCQlzbG93ID0gdHJ1ZTsJCS8qIGNhbid0IHVzZSBhdHRjYWNoZW9mZiBh bnltb3JlICovCiAJCQljb250aW51ZTsKIAkJfQogCiAJCWlzbnVsbFthdHRudW1dID0gZmFsc2U7 Ci0KLQkJaWYgKCFzbG93ICYmIHRoaXNhdHQtPmF0dGNhY2hlb2ZmID49IDApCi0JCQlvZmYgPSB0 aGlzYXR0LT5hdHRjYWNoZW9mZjsKLQkJZWxzZSBpZiAodGhpc2F0dC0+YXR0bGVuID09IC0xKQot CQl7Ci0JCQkvKgotCQkJICogV2UgY2FuIG9ubHkgY2FjaGUgdGhlIG9mZnNldCBmb3IgYSB2YXJs ZW5hIGF0dHJpYnV0ZSBpZiB0aGUKLQkJCSAqIG9mZnNldCBpcyBhbHJlYWR5IHN1aXRhYmx5IGFs aWduZWQsIHNvIHRoYXQgdGhlcmUgd291bGQgYmUgbm8KLQkJCSAqIHBhZCBieXRlcyBpbiBhbnkg Y2FzZTogdGhlbiB0aGUgb2Zmc2V0IHdpbGwgYmUgdmFsaWQgZm9yIGVpdGhlcgotCQkJICogYW4g YWxpZ25lZCBvciB1bmFsaWduZWQgdmFsdWUuCi0JCQkgKi8KLQkJCWlmICghc2xvdyAmJgotCQkJ CW9mZiA9PSBhdHRfbm9taW5hbF9hbGlnbmJ5KG9mZiwgdGhpc2F0dC0+YXR0YWxpZ25ieSkpCi0J CQkJdGhpc2F0dC0+YXR0Y2FjaGVvZmYgPSBvZmY7Ci0JCQllbHNlCi0JCQl7Ci0JCQkJb2ZmID0g YXR0X3BvaW50ZXJfYWxpZ25ieShvZmYsIHRoaXNhdHQtPmF0dGFsaWduYnksIC0xLAotCQkJCQkJ CQkJCSAgdHAgKyBvZmYpOwotCQkJCXNsb3cgPSB0cnVlOwotCQkJfQotCQl9Ci0JCWVsc2UKLQkJ ewotCQkJLyogbm90IHZhcmxlbmEsIHNvIHNhZmUgdG8gdXNlIGF0dF9ub21pbmFsX2FsaWduYnkg Ki8KLQkJCW9mZiA9IGF0dF9ub21pbmFsX2FsaWduYnkob2ZmLCB0aGlzYXR0LT5hdHRhbGlnbmJ5 KTsKLQotCQkJaWYgKCFzbG93KQotCQkJCXRoaXNhdHQtPmF0dGNhY2hlb2ZmID0gb2ZmOwotCQl9 Ci0KLQkJdmFsdWVzW2F0dG51bV0gPSBmZXRjaGF0dCh0aGlzYXR0LCB0cCArIG9mZik7Ci0KLQkJ b2ZmID0gYXR0X2FkZGxlbmd0aF9wb2ludGVyKG9mZiwgdGhpc2F0dC0+YXR0bGVuLCB0cCArIG9m Zik7Ci0KLQkJaWYgKHRoaXNhdHQtPmF0dGxlbiA8PSAwKQotCQkJc2xvdyA9IHRydWU7CQkvKiBj YW4ndCB1c2UgYXR0Y2FjaGVvZmYgYW55bW9yZSAqLworCQljYXR0ciA9IFR1cGxlRGVzY0NvbXBh Y3RBdHRyKHR1cGxlRGVzYywgYXR0bnVtKTsKKworCQkvKiBhbGlnbiAnb2ZmJywgZmV0Y2ggdGhl IGRhdHVtLCBhbmQgaW5jcmVtZW50IG9mZiBiZXlvbmQgdGhlIGRhdHVtICovCisJCXZhbHVlc1th dHRudW1dID0gYWxpZ25fZmV0Y2hfdGhlbl9hZGQodHAsCisJCQkJCQkJCQkJCSAgJm9mZiwKKwkJ CQkJCQkJCQkJICBjYXR0ci0+YXR0Ynl2YWwsCisJCQkJCQkJCQkJCSAgY2F0dHItPmF0dGxlbiwK KwkJCQkJCQkJCQkJICBjYXR0ci0+YXR0YWxpZ25ieSk7CiAJfQogCiAJLyoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vaW5kZXh0dXBsZS5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2NvbW1vbi9pbmRleHR1cGxlLmMKaW5kZXggZDYzNTAyMDFlMDEuLjkyMjgyMDM5NjcxIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL2luZGV4dHVwbGUuYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL2luZGV4dHVwbGUuYwpAQCAtMjIzLDE4ICsyMjMsNiBA QCBpbmRleF9mb3JtX3R1cGxlX2NvbnRleHQoVHVwbGVEZXNjIHR1cGxlRGVzY3JpcHRvciwKICAq CiAgKgkJVGhpcyBnZXRzIGNhbGxlZCBmcm9tIGluZGV4X2dldGF0dHIoKSBtYWNybywgYW5kIG9u bHkgaW4gY2FzZXMKICAqCQl3aGVyZSB3ZSBjYW4ndCB1c2UgY2FjaGVvZmZzZXQgYW5kIHRoZSB2 YWx1ZSBpcyBub3QgbnVsbC4KLSAqCi0gKgkJVGhpcyBjYWNoZXMgYXR0cmlidXRlIG9mZnNldHMg aW4gdGhlIGF0dHJpYnV0ZSBkZXNjcmlwdG9yLgotICoKLSAqCQlBbiBhbHRlcm5hdGl2ZSB3YXkg dG8gc3BlZWQgdGhpbmdzIHVwIHdvdWxkIGJlIHRvIGNhY2hlIG9mZnNldHMKLSAqCQl3aXRoIHRo ZSB0dXBsZSwgYnV0IHRoYXQgc2VlbXMgbW9yZSBkaWZmaWN1bHQgdW5sZXNzIHlvdSB0YWtlCi0g KgkJdGhlIHN0b3JhZ2UgaGl0IG9mIGFjdHVhbGx5IHB1dHRpbmcgdGhvc2Ugb2Zmc2V0cyBpbnRv IHRoZQotICoJCXR1cGxlIHlvdSBzZW5kIHRvIGRpc2suICBZdWNrLgotICoKLSAqCQlUaGlzIHNj aGVtZSB3aWxsIGJlIHNsaWdodGx5IHNsb3dlciB0aGFuIHRoYXQsIGJ1dCBzaG91bGQKLSAqCQlw ZXJmb3JtIHdlbGwgZm9yIHF1ZXJpZXMgd2hpY2ggaGl0IGxhcmdlICMncyBvZiB0dXBsZXMuICBB ZnRlcgotICoJCXlvdSBjYWNoZSB0aGUgb2Zmc2V0cyBvbmNlLCBleGFtaW5pbmcgYWxsIHRoZSBv dGhlciB0dXBsZXMgdXNpbmcKLSAqCQl0aGUgc2FtZSBhdHRyaWJ1dGUgZGVzY3JpcHRvciB3aWxs IGdvIG11Y2ggcXVpY2tlci4gLWNpbSA1LzQvOTEKICAqIC0tLS0tLS0tLS0tLS0tLS0KICAqLwog RGF0dW0KQEAgLTI0MiwyMDUgKzIzMCwxMjYgQEAgbm9jYWNoZV9pbmRleF9nZXRhdHRyKEluZGV4 VHVwbGUgdHVwLAogCQkJCQkgIGludCBhdHRudW0sCiAJCQkJCSAgVHVwbGVEZXNjIHR1cGxlRGVz YykKIHsKKwlDb21wYWN0QXR0cmlidXRlICpjYXR0cjsKIAljaGFyCSAgICp0cDsJCQkJLyogcHRy IHRvIGRhdGEgcGFydCBvZiB0dXBsZSAqLwogCWJpdHM4CSAgICpicCA9IE5VTEw7CQkvKiBwdHIg dG8gbnVsbCBiaXRtYXAgaW4gdHVwbGUgKi8KLQlib29sCQlzbG93ID0gZmFsc2U7CS8qIGRvIHdl IGhhdmUgdG8gd2FsayBhdHRycz8gKi8KIAlpbnQJCQlkYXRhX29mZjsJCS8qIHR1cGxlIGRhdGEg b2Zmc2V0ICovCiAJaW50CQkJb2ZmOwkJCS8qIGN1cnJlbnQgb2Zmc2V0IHdpdGhpbiBkYXRhICov CisJaW50CQkJc3RhcnRBdHRyOworCWludAkJCWZpcnN0TnVsbEF0dHI7CisJYm9vbAkJaGFzbnVs bHMgPSBJbmRleFR1cGxlSGFzTnVsbHModHVwKTsKKwlpbnQJCQlpOwogCi0JLyogLS0tLS0tLS0t LS0tLS0tLQotCSAqCSBUaHJlZSBjYXNlczoKLQkgKgotCSAqCSAxOiBObyBudWxscyBhbmQgbm8g dmFyaWFibGUtd2lkdGggYXR0cmlidXRlcy4KLQkgKgkgMjogSGFzIGEgbnVsbCBvciBhIHZhci13 aWR0aCBBRlRFUiBhdHQuCi0JICoJIDM6IEhhcyBudWxscyBvciB2YXItd2lkdGhzIEJFRk9SRSBh dHQuCi0JICogLS0tLS0tLS0tLS0tLS0tLQotCSAqLwotCi0JZGF0YV9vZmYgPSBJbmRleEluZm9G aW5kRGF0YU9mZnNldCh0dXAtPnRfaW5mbyk7CisJLyogRGlkIHNvbWVvbmUgZm9yZ2V0IHRvIGNh bGwgVHVwbGVEZXNjRmluYWxpemUoKT8gKi8KKwlBc3NlcnQodHVwbGVEZXNjLT5maXJzdE5vbkNh Y2hlZE9mZnNldEF0dHIgPj0gMCk7CiAKIAlhdHRudW0tLTsKIAotCWlmIChJbmRleFR1cGxlSGFz TnVsbHModHVwKSkKLQl7Ci0JCS8qCi0JCSAqIHRoZXJlJ3MgYSBudWxsIHNvbWV3aGVyZSBpbiB0 aGUgdHVwbGUKLQkJICoKLQkJICogY2hlY2sgdG8gc2VlIGlmIGRlc2lyZWQgYXR0IGlzIG51bGwK LQkJICovCisJZGF0YV9vZmYgPSBJbmRleEluZm9GaW5kRGF0YU9mZnNldCh0dXAtPnRfaW5mbyk7 CisJdHAgPSAoY2hhciAqKSB0dXAgKyBkYXRhX29mZjsKIAotCQkvKiBYWFggImtub3dzIiB0X2Jp dHMgYXJlIGp1c3QgYWZ0ZXIgZml4ZWQgdHVwbGUgaGVhZGVyISAqLworCS8qCisJICogVG8gcmVk dWNlIHRoZSBudW1iZXIgb2YgYXR0cmlidXRlcyB3ZSBuZWVkIHRvIGxvb2sgYXQsIHdlIHN0YXJ0 IGF0IHRoZQorCSAqIGhpZ2hlc3QgYXR0cmlidXRlIHRoYXQgd2UgY2FuIHdoaWNoIGhhcyBhIGNh Y2hlZCBvZmZzZXQuICBTaW5jZSB0aGUKKwkgKiBhdHRjYWNoZW9mZiBmb3IgYW4gYXR0cmlidXRl IGlzIG9ubHkgdmFsaWQgaWYgdGhlcmUgYXJlIG5vIE5VTExzIGluCisJICogcHJpb3IgYXR0cmli dXRlLCB3ZSBtdXN0IGxvb2sgZm9yIE5VTExzIHRvIGRldGVybWluZSB0aGUgc3RhcnQgYXR0ci4K KwkgKi8KKwlpZiAoaGFzbnVsbHMpCisJewogCQlicCA9IChiaXRzOCAqKSAoKGNoYXIgKikgdHVw ICsgc2l6ZW9mKEluZGV4VHVwbGVEYXRhKSk7Ci0KLQkJLyoKLQkJICogTm93IGNoZWNrIHRvIHNl ZSBpZiBhbnkgcHJlY2VkaW5nIGJpdHMgYXJlIG51bGwuLi4KLQkJICovCi0JCXsKLQkJCWludAkJ CWJ5dGUgPSBhdHRudW0gPj4gMzsKLQkJCWludAkJCWZpbmFsYml0ID0gYXR0bnVtICYgMHgwNzsK LQotCQkJLyogY2hlY2sgZm9yIG51bGxzICJiZWZvcmUiIGZpbmFsIGJpdCBvZiBsYXN0IGJ5dGUg Ki8KLQkJCWlmICgofmJwW2J5dGVdKSAmICgoMSA8PCBmaW5hbGJpdCkgLSAxKSkKLQkJCQlzbG93 ID0gdHJ1ZTsKLQkJCWVsc2UKLQkJCXsKLQkJCQkvKiBjaGVjayBmb3IgbnVsbHMgaW4gYW55ICJl YXJsaWVyIiBieXRlcyAqLwotCQkJCWludAkJCWk7Ci0KLQkJCQlmb3IgKGkgPSAwOyBpIDwgYnl0 ZTsgaSsrKQotCQkJCXsKLQkJCQkJaWYgKGJwW2ldICE9IDB4RkYpCi0JCQkJCXsKLQkJCQkJCXNs b3cgPSB0cnVlOwotCQkJCQkJYnJlYWs7Ci0JCQkJCX0KLQkJCQl9Ci0JCQl9Ci0JCX0KKwkJZmly c3ROdWxsQXR0ciA9IGZpcnN0X251bGxfYXR0cihicCwgYXR0bnVtKTsKIAl9CisJZWxzZQorCQlm aXJzdE51bGxBdHRyID0gYXR0bnVtOwogCi0JdHAgPSAoY2hhciAqKSB0dXAgKyBkYXRhX29mZjsK LQotCWlmICghc2xvdykKKwlpZiAodHVwbGVEZXNjLT5maXJzdE5vbkNhY2hlZE9mZnNldEF0dHIg PiAwKQogCXsKLQkJQ29tcGFjdEF0dHJpYnV0ZSAqYXR0OwotCi0JCS8qCi0JCSAqIElmIHdlIGdl dCBoZXJlLCB0aGVyZSBhcmUgbm8gbnVsbHMgdXAgdG8gYW5kIGluY2x1ZGluZyB0aGUgdGFyZ2V0 Ci0JCSAqIGF0dHJpYnV0ZS4gIElmIHdlIGhhdmUgYSBjYWNoZWQgb2Zmc2V0LCB3ZSBjYW4gdXNl IGl0LgotCQkgKi8KLQkJYXR0ID0gVHVwbGVEZXNjQ29tcGFjdEF0dHIodHVwbGVEZXNjLCBhdHRu dW0pOwotCQlpZiAoYXR0LT5hdHRjYWNoZW9mZiA+PSAwKQotCQkJcmV0dXJuIGZldGNoYXR0KGF0 dCwgdHAgKyBhdHQtPmF0dGNhY2hlb2ZmKTsKLQotCQkvKgotCQkgKiBPdGhlcndpc2UsIGNoZWNr IGZvciBub24tZml4ZWQtbGVuZ3RoIGF0dHJzIHVwIHRvIGFuZCBpbmNsdWRpbmcKLQkJICogdGFy Z2V0LiAgSWYgdGhlcmUgYXJlbid0IGFueSwgaXQncyBzYWZlIHRvIGNoZWFwbHkgaW5pdGlhbGl6 ZSB0aGUKLQkJICogY2FjaGVkIG9mZnNldHMgZm9yIHRoZXNlIGF0dHJzLgotCQkgKi8KLQkJaWYg KEluZGV4VHVwbGVIYXNWYXJ3aWR0aHModHVwKSkKLQkJewotCQkJaW50CQkJajsKLQotCQkJZm9y IChqID0gMDsgaiA8PSBhdHRudW07IGorKykKLQkJCXsKLQkJCQlpZiAoVHVwbGVEZXNjQ29tcGFj dEF0dHIodHVwbGVEZXNjLCBqKS0+YXR0bGVuIDw9IDApCi0JCQkJewotCQkJCQlzbG93ID0gdHJ1 ZTsKLQkJCQkJYnJlYWs7Ci0JCQkJfQotCQkJfQotCQl9CisJCXN0YXJ0QXR0ciA9IE1pbih0dXBs ZURlc2MtPmZpcnN0Tm9uQ2FjaGVkT2Zmc2V0QXR0ciAtIDEsIGZpcnN0TnVsbEF0dHIpOworCQlv ZmYgPSBUdXBsZURlc2NDb21wYWN0QXR0cih0dXBsZURlc2MsIHN0YXJ0QXR0ciktPmF0dGNhY2hl b2ZmOwogCX0KLQotCWlmICghc2xvdykKKwllbHNlCiAJewotCQlpbnQJCQluYXR0cyA9IHR1cGxl RGVzYy0+bmF0dHM7Ci0JCWludAkJCWogPSAxOwotCi0JCS8qCi0JCSAqIElmIHdlIGdldCBoZXJl LCB3ZSBoYXZlIGEgdHVwbGUgd2l0aCBubyBudWxscyBvciB2YXItd2lkdGhzIHVwIHRvCi0JCSAq IGFuZCBpbmNsdWRpbmcgdGhlIHRhcmdldCBhdHRyaWJ1dGUsIHNvIHdlIGNhbiB1c2UgdGhlIGNh Y2hlZCBvZmZzZXQKLQkJICogLi4uIG9ubHkgd2UgZG9uJ3QgaGF2ZSBpdCB5ZXQsIG9yIHdlJ2Qg bm90IGhhdmUgZ290IGhlcmUuICBTaW5jZQotCQkgKiBpdCdzIGNoZWFwIHRvIGNvbXB1dGUgb2Zm c2V0cyBmb3IgZml4ZWQtd2lkdGggY29sdW1ucywgd2UgdGFrZSB0aGUKLQkJICogb3Bwb3J0dW5p dHkgdG8gaW5pdGlhbGl6ZSB0aGUgY2FjaGVkIG9mZnNldHMgZm9yICphbGwqIHRoZSBsZWFkaW5n Ci0JCSAqIGZpeGVkLXdpZHRoIGNvbHVtbnMsIGluIGhvcGUgb2YgYXZvaWRpbmcgZnV0dXJlIHZp c2l0cyB0byB0aGlzCi0JCSAqIHJvdXRpbmUuCi0JCSAqLwotCQlUdXBsZURlc2NDb21wYWN0QXR0 cih0dXBsZURlc2MsIDApLT5hdHRjYWNoZW9mZiA9IDA7CisJCXN0YXJ0QXR0ciA9IDA7CisJCW9m ZiA9IDA7CisJfQogCi0JCS8qIHdlIG1pZ2h0IGhhdmUgc2V0IHNvbWUgb2Zmc2V0cyBpbiB0aGUg c2xvdyBwYXRoIHByZXZpb3VzbHkgKi8KLQkJd2hpbGUgKGogPCBuYXR0cyAmJiBUdXBsZURlc2ND b21wYWN0QXR0cih0dXBsZURlc2MsIGopLT5hdHRjYWNoZW9mZiA+IDApCi0JCQlqKys7CisJLyoK KwkgKiBDYWxjdWxhdGUgJ29mZicgdXAgdG8gdGhlIGZpcnN0IE5VTEwgYXR0ci4gIFdlIHVzZSB0 d28gY2hlYXBlciBsb29wcworCSAqIHdoZW4gdGhlIHR1cGxlIGhhcyBubyB2YXJpYWJsZS13aWR0 aCBjb2x1bW5zLiAgV2hlbiB2YXJpYWJsZS13aWR0aAorCSAqIGNvbHVtbnMgZXhpc3Qgd2UgdXNl IGF0dF9hZGRsZW5ndGhfcG9pbnRlcigpIHRvIG1vdmUgdGhlIG9mZnNldCBiZXlvbmQKKwkgKiB0 aGUgY3VycmVudCBhdHRyaWJ1dGUuCisJICovCisJaWYgKEluZGV4VHVwbGVIYXNWYXJ3aWR0aHMo dHVwKSkKKwl7CisJCS8qIENhbGN1bGF0ZSB0aGUgb2Zmc2V0IHVwIHVudGlsIHRoZSBmaXJzdCBO VUxMICovCisJCWZvciAoaSA9IHN0YXJ0QXR0cjsgaSA8IGZpcnN0TnVsbEF0dHI7IGkrKykKKwkJ eworCQkJY2F0dHIgPSBUdXBsZURlc2NDb21wYWN0QXR0cih0dXBsZURlc2MsIGkpOwogCi0JCW9m ZiA9IFR1cGxlRGVzY0NvbXBhY3RBdHRyKHR1cGxlRGVzYywgaiAtIDEpLT5hdHRjYWNoZW9mZiAr Ci0JCQlUdXBsZURlc2NDb21wYWN0QXR0cih0dXBsZURlc2MsIGogLSAxKS0+YXR0bGVuOworCQkJ b2ZmID0gYXR0X3BvaW50ZXJfYWxpZ25ieShvZmYsCisJCQkJCQkJCQkgIGNhdHRyLT5hdHRhbGln bmJ5LAorCQkJCQkJCQkJICBjYXR0ci0+YXR0bGVuLAorCQkJCQkJCQkJICB0cCArIG9mZik7CisJ CQlvZmYgPSBhdHRfYWRkbGVuZ3RoX3BvaW50ZXIob2ZmLCBjYXR0ci0+YXR0bGVuLCB0cCArIG9m Zik7CisJCX0KIAotCQlmb3IgKDsgaiA8IG5hdHRzOyBqKyspCisJCS8qIENhbGN1bGF0ZSB0aGUg b2Zmc2V0IGZvciBhbnkgcmVtYWluaW5nIGNvbHVtbnMuICovCisJCWZvciAoOyBpIDwgYXR0bnVt OyBpKyspCiAJCXsKLQkJCUNvbXBhY3RBdHRyaWJ1dGUgKmF0dCA9IFR1cGxlRGVzY0NvbXBhY3RB dHRyKHR1cGxlRGVzYywgaik7CisJCQlBc3NlcnQoaGFzbnVsbHMpOwogCi0JCQlpZiAoYXR0LT5h dHRsZW4gPD0gMCkKLQkJCQlicmVhazsKKwkJCWlmIChhdHRfaXNudWxsKGksIGJwKSkKKwkJCQlj b250aW51ZTsKIAotCQkJb2ZmID0gYXR0X25vbWluYWxfYWxpZ25ieShvZmYsIGF0dC0+YXR0YWxp Z25ieSk7CisJCQljYXR0ciA9IFR1cGxlRGVzY0NvbXBhY3RBdHRyKHR1cGxlRGVzYywgaSk7CiAK LQkJCWF0dC0+YXR0Y2FjaGVvZmYgPSBvZmY7Ci0KLQkJCW9mZiArPSBhdHQtPmF0dGxlbjsKKwkJ CW9mZiA9IGF0dF9wb2ludGVyX2FsaWduYnkob2ZmLAorCQkJCQkJCQkJICBjYXR0ci0+YXR0YWxp Z25ieSwKKwkJCQkJCQkJCSAgY2F0dHItPmF0dGxlbiwKKwkJCQkJCQkJCSAgdHAgKyBvZmYpOwor CQkJb2ZmID0gYXR0X2FkZGxlbmd0aF9wb2ludGVyKG9mZiwgY2F0dHItPmF0dGxlbiwgdHAgKyBv ZmYpOwogCQl9Ci0KLQkJQXNzZXJ0KGogPiBhdHRudW0pOwotCi0JCW9mZiA9IFR1cGxlRGVzY0Nv bXBhY3RBdHRyKHR1cGxlRGVzYywgYXR0bnVtKS0+YXR0Y2FjaGVvZmY7CiAJfQogCWVsc2UKIAl7 Ci0JCWJvb2wJCXVzZWNhY2hlID0gdHJ1ZTsKLQkJaW50CQkJaTsKKwkJLyogSGFuZGxlIHR1cGxl cyB3aXRoIG9ubHkgZml4ZWQtd2lkdGggYXR0cmlidXRlcyAqLwogCi0JCS8qCi0JCSAqIE5vdyB3 ZSBrbm93IHRoYXQgd2UgaGF2ZSB0byB3YWxrIHRoZSB0dXBsZSBDQVJFRlVMTFkuICBCdXQgd2Ug c3RpbGwKLQkJICogbWlnaHQgYmUgYWJsZSB0byBjYWNoZSBzb21lIG9mZnNldHMgZm9yIG5leHQg dGltZS4KLQkJICoKLQkJICogTm90ZSAtIFRoaXMgbG9vcCBpcyBhIGxpdHRsZSB0cmlja3kuICBG b3IgZWFjaCBub24tbnVsbCBhdHRyaWJ1dGUsCi0JCSAqIHdlIGhhdmUgdG8gZmlyc3QgYWNjb3Vu dCBmb3IgYWxpZ25tZW50IHBhZGRpbmcgYmVmb3JlIHRoZSBhdHRyLAotCQkgKiB0aGVuIGFkdmFu Y2Ugb3ZlciB0aGUgYXR0ciBiYXNlZCBvbiBpdHMgbGVuZ3RoLiAgTnVsbHMgaGF2ZSBubwotCQkg KiBzdG9yYWdlIGFuZCBubyBhbGlnbm1lbnQgcGFkZGluZyBlaXRoZXIuICBXZSBjYW4gdXNlL3Nl dAotCQkgKiBhdHRjYWNoZW9mZiB1bnRpbCB3ZSByZWFjaCBlaXRoZXIgYSBudWxsIG9yIGEgdmFy LXdpZHRoIGF0dHJpYnV0ZS4KLQkJICovCi0JCW9mZiA9IDA7Ci0JCWZvciAoaSA9IDA7OyBpKysp CQkvKiBsb29wIGV4aXQgaXMgYXQgImJyZWFrIiAqLworCQkvKiBDYWxjdWxhdGUgdGhlIG9mZnNl dCB1cCB1bnRpbCB0aGUgZmlyc3QgTlVMTCAqLworCQlmb3IgKGkgPSBzdGFydEF0dHI7IGkgPCBm aXJzdE51bGxBdHRyOyBpKyspCiAJCXsKLQkJCUNvbXBhY3RBdHRyaWJ1dGUgKmF0dCA9IFR1cGxl RGVzY0NvbXBhY3RBdHRyKHR1cGxlRGVzYywgaSk7Ci0KLQkJCWlmIChJbmRleFR1cGxlSGFzTnVs bHModHVwKSAmJiBhdHRfaXNudWxsKGksIGJwKSkKLQkJCXsKLQkJCQl1c2VjYWNoZSA9IGZhbHNl OwotCQkJCWNvbnRpbnVlOwkJLyogdGhpcyBjYW5ub3QgYmUgdGhlIHRhcmdldCBhdHQgKi8KLQkJ CX0KLQotCQkJLyogSWYgd2Uga25vdyB0aGUgbmV4dCBvZmZzZXQsIHdlIGNhbiBza2lwIHRoZSBy ZXN0ICovCi0JCQlpZiAodXNlY2FjaGUgJiYgYXR0LT5hdHRjYWNoZW9mZiA+PSAwKQotCQkJCW9m ZiA9IGF0dC0+YXR0Y2FjaGVvZmY7Ci0JCQllbHNlIGlmIChhdHQtPmF0dGxlbiA9PSAtMSkKLQkJ CXsKLQkJCQkvKgotCQkJCSAqIFdlIGNhbiBvbmx5IGNhY2hlIHRoZSBvZmZzZXQgZm9yIGEgdmFy bGVuYSBhdHRyaWJ1dGUgaWYgdGhlCi0JCQkJICogb2Zmc2V0IGlzIGFscmVhZHkgc3VpdGFibHkg YWxpZ25lZCwgc28gdGhhdCB0aGVyZSB3b3VsZCBiZQotCQkJCSAqIG5vIHBhZCBieXRlcyBpbiBh bnkgY2FzZTogdGhlbiB0aGUgb2Zmc2V0IHdpbGwgYmUgdmFsaWQgZm9yCi0JCQkJICogZWl0aGVy IGFuIGFsaWduZWQgb3IgdW5hbGlnbmVkIHZhbHVlLgotCQkJCSAqLwotCQkJCWlmICh1c2VjYWNo ZSAmJgotCQkJCQlvZmYgPT0gYXR0X25vbWluYWxfYWxpZ25ieShvZmYsIGF0dC0+YXR0YWxpZ25i eSkpCi0JCQkJCWF0dC0+YXR0Y2FjaGVvZmYgPSBvZmY7Ci0JCQkJZWxzZQotCQkJCXsKLQkJCQkJ b2ZmID0gYXR0X3BvaW50ZXJfYWxpZ25ieShvZmYsIGF0dC0+YXR0YWxpZ25ieSwgLTEsCi0JCQkJ CQkJCQkJCSAgdHAgKyBvZmYpOwotCQkJCQl1c2VjYWNoZSA9IGZhbHNlOwotCQkJCX0KLQkJCX0K LQkJCWVsc2UKLQkJCXsKLQkJCQkvKiBub3QgdmFybGVuYSwgc28gc2FmZSB0byB1c2UgYXR0X25v bWluYWxfYWxpZ25ieSAqLwotCQkJCW9mZiA9IGF0dF9ub21pbmFsX2FsaWduYnkob2ZmLCBhdHQt PmF0dGFsaWduYnkpOworCQkJY2F0dHIgPSBUdXBsZURlc2NDb21wYWN0QXR0cih0dXBsZURlc2Ms IGkpOworCisJCQlBc3NlcnQoY2F0dHItPmF0dGxlbiA+IDApOworCQkJb2ZmID0gYXR0X3BvaW50 ZXJfYWxpZ25ieShvZmYsCisJCQkJCQkJCQkgIGNhdHRyLT5hdHRhbGlnbmJ5LAorCQkJCQkJCQkJ ICBjYXR0ci0+YXR0bGVuLAorCQkJCQkJCQkJICB0cCArIG9mZik7CisJCQlvZmYgKz0gY2F0dHIt PmF0dGxlbjsKKwkJfQogCi0JCQkJaWYgKHVzZWNhY2hlKQotCQkJCQlhdHQtPmF0dGNhY2hlb2Zm ID0gb2ZmOwotCQkJfQorCQkvKiBDYWxjdWxhdGUgdGhlIG9mZnNldCBmb3IgYW55IHJlbWFpbmlu ZyBjb2x1bW5zLiAqLworCQlmb3IgKDsgaSA8IGF0dG51bTsgaSsrKQorCQl7CisJCQlBc3NlcnQo aGFzbnVsbHMpOwogCi0JCQlpZiAoaSA9PSBhdHRudW0pCi0JCQkJYnJlYWs7CisJCQlpZiAoYXR0 X2lzbnVsbChpLCBicCkpCisJCQkJY29udGludWU7CiAKLQkJCW9mZiA9IGF0dF9hZGRsZW5ndGhf cG9pbnRlcihvZmYsIGF0dC0+YXR0bGVuLCB0cCArIG9mZik7CisJCQljYXR0ciA9IFR1cGxlRGVz Y0NvbXBhY3RBdHRyKHR1cGxlRGVzYywgaSk7CiAKLQkJCWlmICh1c2VjYWNoZSAmJiBhdHQtPmF0 dGxlbiA8PSAwKQotCQkJCXVzZWNhY2hlID0gZmFsc2U7CisJCQlBc3NlcnQoY2F0dHItPmF0dGxl biA+IDApOworCQkJb2ZmID0gYXR0X3BvaW50ZXJfYWxpZ25ieShvZmYsCisJCQkJCQkJCQkgIGNh dHRyLT5hdHRhbGlnbmJ5LAorCQkJCQkJCQkJICBjYXR0ci0+YXR0bGVuLAorCQkJCQkJCQkJICB0 cCArIG9mZik7CisJCQlvZmYgKz0gY2F0dHItPmF0dGxlbjsKIAkJfQogCX0KIAotCXJldHVybiBm ZXRjaGF0dChUdXBsZURlc2NDb21wYWN0QXR0cih0dXBsZURlc2MsIGF0dG51bSksIHRwICsgb2Zm KTsKKwljYXR0ciA9IFR1cGxlRGVzY0NvbXBhY3RBdHRyKHR1cGxlRGVzYywgYXR0bnVtKTsKKwlv ZmYgPSBhdHRfcG9pbnRlcl9hbGlnbmJ5KG9mZiwgY2F0dHItPmF0dGFsaWduYnksCisJCQkJCQkJ ICBjYXR0ci0+YXR0bGVuLCB0cCArIG9mZik7CisJcmV0dXJuIGZldGNoYXR0KGNhdHRyLCB0cCAr IG9mZik7CiB9CiAKIC8qCkBAIC00ODAsNjMgKzM4OSw4NyBAQCBpbmRleF9kZWZvcm1fdHVwbGVf aW50ZXJuYWwoVHVwbGVEZXNjIHR1cGxlRGVzY3JpcHRvciwKIAkJCQkJCQlEYXR1bSAqdmFsdWVz LCBib29sICppc251bGwsCiAJCQkJCQkJY2hhciAqdHAsIGJpdHM4ICpicCwgaW50IGhhc251bGxz KQogeworCUNvbXBhY3RBdHRyaWJ1dGUgKmNhdHRyOwogCWludAkJCW5hdHRzID0gdHVwbGVEZXNj cmlwdG9yLT5uYXR0czsgLyogbnVtYmVyIG9mIGF0dHMgdG8gZXh0cmFjdCAqLwotCWludAkJCWF0 dG51bTsKLQlpbnQJCQlvZmYgPSAwOwkJLyogb2Zmc2V0IGluIHR1cGxlIGRhdGEgKi8KLQlib29s CQlzbG93ID0gZmFsc2U7CS8qIGNhbiB3ZSB1c2Uvc2V0IGF0dGNhY2hlb2ZmPyAqLworCWludAkJ CWF0dG51bSA9IDA7CisJdWludDMyCQlvZmYgPSAwOwkJLyogb2Zmc2V0IGluIHR1cGxlIGRhdGEg Ki8KKwlpbnQJCQlmaXJzdE5vbkNhY2hlT2Zmc2V0QXR0cjsKKwlpbnQJCQlmaXJzdE51bGxBdHRy OwogCiAJLyogQXNzZXJ0IHRvIHByb3RlY3QgY2FsbGVycyB3aG8gYWxsb2NhdGUgZml4ZWQtc2l6 ZSBhcnJheXMgKi8KIAlBc3NlcnQobmF0dHMgPD0gSU5ERVhfTUFYX0tFWVMpOwogCi0JZm9yIChh dHRudW0gPSAwOyBhdHRudW0gPCBuYXR0czsgYXR0bnVtKyspCisJLyogRGlkIHNvbWVvbmUgZm9y Z2V0IHRvIGNhbGwgVHVwbGVEZXNjRmluYWxpemUoKT8gKi8KKwlBc3NlcnQodHVwbGVEZXNjcmlw dG9yLT5maXJzdE5vbkNhY2hlZE9mZnNldEF0dHIgPj0gMCk7CisKKwlmaXJzdE5vbkNhY2hlT2Zm c2V0QXR0ciA9IE1pbih0dXBsZURlc2NyaXB0b3ItPmZpcnN0Tm9uQ2FjaGVkT2Zmc2V0QXR0ciwg bmF0dHMpOworCisJaWYgKGhhc251bGxzKQorCXsKKwkJZmlyc3ROdWxsQXR0ciA9IGZpcnN0X251 bGxfYXR0cihicCwgbmF0dHMpOworCQlmaXJzdE5vbkNhY2hlT2Zmc2V0QXR0ciA9IE1pbihmaXJz dE5vbkNhY2hlT2Zmc2V0QXR0ciwgZmlyc3ROdWxsQXR0cik7CisJfQorCWVsc2UKKwkJZmlyc3RO dWxsQXR0ciA9IG5hdHRzOworCisJaWYgKGZpcnN0Tm9uQ2FjaGVPZmZzZXRBdHRyID4gMCkKKwl7 CisjaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORworCQkvKiBJbiBBc3NlcnQgZW5hYmxlZCBidWls ZHMsIHZlcmlmeSBhdHRjYWNoZW9mZiBpcyBjb3JyZWN0ICovCisJCW9mZiA9IDA7CisjZW5kaWYK KworCQlkbworCQl7CisJCQlpc251bGxbYXR0bnVtXSA9IGZhbHNlOworCQkJY2F0dHIgPSBUdXBs ZURlc2NDb21wYWN0QXR0cih0dXBsZURlc2NyaXB0b3IsIGF0dG51bSk7CisKKyNpZmRlZiBVU0Vf QVNTRVJUX0NIRUNLSU5HCisJCQlvZmYgPSBhdHRfbm9taW5hbF9hbGlnbmJ5KG9mZiwgY2F0dHIt PmF0dGFsaWduYnkpOworCQkJQXNzZXJ0KG9mZiA9PSBjYXR0ci0+YXR0Y2FjaGVvZmYpOworCQkJ b2ZmICs9IGNhdHRyLT5hdHRsZW47CisjZW5kaWYKKworCQkJdmFsdWVzW2F0dG51bV0gPSBmZXRj aF9hdHRfbm9lcnIodHAgKyBjYXR0ci0+YXR0Y2FjaGVvZmYsIGNhdHRyLT5hdHRieXZhbCwKKwkJ CQkJCQkJCQkJIGNhdHRyLT5hdHRsZW4pOworCQl9IHdoaWxlICgrK2F0dG51bSA8IGZpcnN0Tm9u Q2FjaGVPZmZzZXRBdHRyKTsKKworCQlvZmYgPSBjYXR0ci0+YXR0Y2FjaGVvZmYgKyBjYXR0ci0+ YXR0bGVuOworCX0KKworCWZvciAoOyBhdHRudW0gPCBmaXJzdE51bGxBdHRyOyBhdHRudW0rKykK Kwl7CisJCWlzbnVsbFthdHRudW1dID0gZmFsc2U7CisJCWNhdHRyID0gVHVwbGVEZXNjQ29tcGFj dEF0dHIodHVwbGVEZXNjcmlwdG9yLCBhdHRudW0pOworCisJCS8qIGFsaWduICdvZmYnLCBmZXRj aCB0aGUgZGF0dW0sIGFuZCBpbmNyZW1lbnQgb2ZmIGJleW9uZCB0aGUgZGF0dW0gKi8KKwkJdmFs dWVzW2F0dG51bV0gPSBhbGlnbl9mZXRjaF90aGVuX2FkZCh0cCwKKwkJCQkJCQkJCQkJICAmb2Zm LAorCQkJCQkJCQkJCQkgIGNhdHRyLT5hdHRieXZhbCwKKwkJCQkJCQkJCQkJICBjYXR0ci0+YXR0 bGVuLAorCQkJCQkJCQkJCQkgIGNhdHRyLT5hdHRhbGlnbmJ5KTsKKwl9CisKKwlmb3IgKDsgYXR0 bnVtIDwgbmF0dHM7IGF0dG51bSsrKQogCXsKLQkJQ29tcGFjdEF0dHJpYnV0ZSAqdGhpc2F0dCA9 IFR1cGxlRGVzY0NvbXBhY3RBdHRyKHR1cGxlRGVzY3JpcHRvciwgYXR0bnVtKTsKKwkJQXNzZXJ0 KGhhc251bGxzKTsKIAotCQlpZiAoaGFzbnVsbHMgJiYgYXR0X2lzbnVsbChhdHRudW0sIGJwKSkK KwkJaWYgKGF0dF9pc251bGwoYXR0bnVtLCBicCkpCiAJCXsKIAkJCXZhbHVlc1thdHRudW1dID0g KERhdHVtKSAwOwogCQkJaXNudWxsW2F0dG51bV0gPSB0cnVlOwotCQkJc2xvdyA9IHRydWU7CQkv KiBjYW4ndCB1c2UgYXR0Y2FjaGVvZmYgYW55bW9yZSAqLwogCQkJY29udGludWU7CiAJCX0KIAog CQlpc251bGxbYXR0bnVtXSA9IGZhbHNlOwotCi0JCWlmICghc2xvdyAmJiB0aGlzYXR0LT5hdHRj YWNoZW9mZiA+PSAwKQotCQkJb2ZmID0gdGhpc2F0dC0+YXR0Y2FjaGVvZmY7Ci0JCWVsc2UgaWYg KHRoaXNhdHQtPmF0dGxlbiA9PSAtMSkKLQkJewotCQkJLyoKLQkJCSAqIFdlIGNhbiBvbmx5IGNh Y2hlIHRoZSBvZmZzZXQgZm9yIGEgdmFybGVuYSBhdHRyaWJ1dGUgaWYgdGhlCi0JCQkgKiBvZmZz ZXQgaXMgYWxyZWFkeSBzdWl0YWJseSBhbGlnbmVkLCBzbyB0aGF0IHRoZXJlIHdvdWxkIGJlIG5v Ci0JCQkgKiBwYWQgYnl0ZXMgaW4gYW55IGNhc2U6IHRoZW4gdGhlIG9mZnNldCB3aWxsIGJlIHZh bGlkIGZvciBlaXRoZXIKLQkJCSAqIGFuIGFsaWduZWQgb3IgdW5hbGlnbmVkIHZhbHVlLgotCQkJ ICovCi0JCQlpZiAoIXNsb3cgJiYKLQkJCQlvZmYgPT0gYXR0X25vbWluYWxfYWxpZ25ieShvZmYs IHRoaXNhdHQtPmF0dGFsaWduYnkpKQotCQkJCXRoaXNhdHQtPmF0dGNhY2hlb2ZmID0gb2ZmOwot CQkJZWxzZQotCQkJewotCQkJCW9mZiA9IGF0dF9wb2ludGVyX2FsaWduYnkob2ZmLCB0aGlzYXR0 LT5hdHRhbGlnbmJ5LCAtMSwKLQkJCQkJCQkJCQkgIHRwICsgb2ZmKTsKLQkJCQlzbG93ID0gdHJ1 ZTsKLQkJCX0KLQkJfQotCQllbHNlCi0JCXsKLQkJCS8qIG5vdCB2YXJsZW5hLCBzbyBzYWZlIHRv IHVzZSBhdHRfbm9taW5hbF9hbGlnbmJ5ICovCi0JCQlvZmYgPSBhdHRfbm9taW5hbF9hbGlnbmJ5 KG9mZiwgdGhpc2F0dC0+YXR0YWxpZ25ieSk7Ci0KLQkJCWlmICghc2xvdykKLQkJCQl0aGlzYXR0 LT5hdHRjYWNoZW9mZiA9IG9mZjsKLQkJfQotCi0JCXZhbHVlc1thdHRudW1dID0gZmV0Y2hhdHQo dGhpc2F0dCwgdHAgKyBvZmYpOwotCi0JCW9mZiA9IGF0dF9hZGRsZW5ndGhfcG9pbnRlcihvZmYs IHRoaXNhdHQtPmF0dGxlbiwgdHAgKyBvZmYpOwotCi0JCWlmICh0aGlzYXR0LT5hdHRsZW4gPD0g MCkKLQkJCXNsb3cgPSB0cnVlOwkJLyogY2FuJ3QgdXNlIGF0dGNhY2hlb2ZmIGFueW1vcmUgKi8K KwkJY2F0dHIgPSBUdXBsZURlc2NDb21wYWN0QXR0cih0dXBsZURlc2NyaXB0b3IsIGF0dG51bSk7 CisKKwkJLyogYWxpZ24gJ29mZicsIGZldGNoIHRoZSBkYXR1bSwgYW5kIGluY3JlbWVudCBvZmYg YmV5b25kIHRoZSBkYXR1bSAqLworCQl2YWx1ZXNbYXR0bnVtXSA9IGFsaWduX2ZldGNoX3RoZW5f YWRkKHRwLAorCQkJCQkJCQkJCQkgICZvZmYsCisJCQkJCQkJCQkJCSAgY2F0dHItPmF0dGJ5dmFs LAorCQkJCQkJCQkJCQkgIGNhdHRyLT5hdHRsZW4sCisJCQkJCQkJCQkJCSAgY2F0dHItPmF0dGFs aWduYnkpOwogCX0KIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi90 dXBkZXNjLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL3R1cGRlc2MuYwppbmRleCAyMTM3 Mzg1YTgzMy4uMDI4ZmNkNTM3MzQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21t b24vdHVwZGVzYy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vdHVwZGVzYy5jCkBA IC0xOTcsNiArMTk3LDEwIEBAIENyZWF0ZVRlbXBsYXRlVHVwbGVEZXNjKGludCBuYXR0cykKIAlk ZXNjLT50ZHR5cG1vZCA9IC0xOwogCWRlc2MtPnRkcmVmY291bnQgPSAtMTsJCS8qIGFzc3VtZSBu b3QgcmVmZXJlbmNlLWNvdW50ZWQgKi8KIAorCS8qIFRoaXMgd2lsbCBiZSBzZXQgdG8gdGhlIGNv cnJlY3QgdmFsdWUgYnkgVHVwbGVEZXNjRmluYWxpemUoKSAqLworCWRlc2MtPmZpcnN0Tm9uQ2Fj aGVkT2Zmc2V0QXR0ciA9IC0xOworCWRlc2MtPmZpcnN0Tm9uR3VhcmFudGVlZEF0dHIgPSAtMTsK KwogCXJldHVybiBkZXNjOwogfQogCkBAIC00NTcsNiArNDYxLDkgQEAgVHVwbGVEZXNjQ29weShU dXBsZURlc2MgZHN0LCBUdXBsZURlc2Mgc3JjKQogICoJCWRlc2NyaXB0b3IgdG8gYW5vdGhlci4K ICAqCiAgKiAhISEgQ29uc3RyYWludHMgYW5kIGRlZmF1bHRzIGFyZSBub3QgY29waWVkICEhIQor ICoKKyAqIFRoZSBjYWxsZXIgbXVzdCB0YWtlIGNhcmUgb2YgY2FsbGluZyBUdXBsZURlc2NGaW5h bGl6ZSgpIG9uIG9uY2UgYWxsCisgKiBUdXBsZURlc2MgY2hhbmdlcyBoYXZlIGJlZW4gbWFkZS4K ICAqLwogdm9pZAogVHVwbGVEZXNjQ29weUVudHJ5KFR1cGxlRGVzYyBkc3QsIEF0dHJOdW1iZXIg ZHN0QXR0bm8sCkBAIC00ODksNiArNDk2LDUyIEBAIFR1cGxlRGVzY0NvcHlFbnRyeShUdXBsZURl c2MgZHN0LCBBdHRyTnVtYmVyIGRzdEF0dG5vLAogCXBvcHVsYXRlX2NvbXBhY3RfYXR0cmlidXRl KGRzdCwgZHN0QXR0bm8gLSAxKTsKIH0KIAorLyoKKyAqIFR1cGxlRGVzY0ZpbmFsaXplCisgKgkJ RmluYWxpemUgdGhlIGdpdmVuIFR1cGxlRGVzYy4gIFRoaXMgbXVzdCBiZSBjYWxsZWQgYWZ0ZXIg dGhlCisgKgkJYXR0cmlidXRlcyBhcnJheXMgaGF2ZSBiZWVuIHBvcHVsYXRlZCBvciBhZGp1c3Rl ZCBieSBhbnkgY29kZS4KKyAqCisgKiBNdXN0IGJlIGNhbGxlZCBhZnRlciBwb3B1bGF0ZV9jb21w YWN0X2F0dHJpYnV0ZSgpIGFuZCBiZWZvcmUKKyAqIEJsZXNzVHVwbGVEZXNjKCkuCisgKi8KK3Zv aWQKK1R1cGxlRGVzY0ZpbmFsaXplKFR1cGxlRGVzYyB0dXBkZXNjKQoreworCWludAkJCWZpcnN0 Tm9uQ2FjaGVkT2Zmc2V0QXR0ciA9IDA7CisJaW50CQkJZmlyc3ROb25HdWFyYW50ZWVkQXR0ciA9 IHR1cGRlc2MtPm5hdHRzOworCWludAkJCW9mZiA9IDA7CisKKwlmb3IgKGludCBpID0gMDsgaSA8 IHR1cGRlc2MtPm5hdHRzOyBpKyspCisJeworCQlDb21wYWN0QXR0cmlidXRlICpjYXR0ciA9IFR1 cGxlRGVzY0NvbXBhY3RBdHRyKHR1cGRlc2MsIGkpOworCisJCWlmIChmaXJzdE5vbkd1YXJhbnRl ZWRBdHRyID09IHR1cGRlc2MtPm5hdHRzICYmCisJCQkoY2F0dHItPmF0dG51bGxhYmlsaXR5ICE9 IEFUVE5VTExBQkxFX1ZBTElEIHx8ICFjYXR0ci0+YXR0Ynl2YWwgfHwKKwkJCSBjYXR0ci0+YXR0 aGFzbWlzc2luZyB8fCBjYXR0ci0+YXR0aXNkcm9wcGVkIHx8IGNhdHRyLT5hdHRsZW4gPD0gMCkp CisJCQlmaXJzdE5vbkd1YXJhbnRlZWRBdHRyID0gaTsKKworCQlpZiAoY2F0dHItPmF0dGxlbiA8 PSAwKQorCQkJYnJlYWs7CisKKwkJb2ZmID0gYXR0X25vbWluYWxfYWxpZ25ieShvZmYsIGNhdHRy LT5hdHRhbGlnbmJ5KTsKKworCQkvKgorCQkgKiBhdHRjYWNoZW9mZiBpcyBhbiBpbnQxNiwgc28g ZG9uJ3QgdHJ5IGFuZCBjYWNoZSBhbnkgb2Zmc2V0cyBsYXJnZXIKKwkJICogdGhhbiB3aWxsIGZp dCBpbiB0aGF0IHR5cGUuCisJCSAqLworCQlpZiAob2ZmID4gUEdfSU5UMTZfTUFYKQorCQkJYnJl YWs7CisKKwkJY2F0dHItPmF0dGNhY2hlb2ZmID0gb2ZmOworCisJCW9mZiArPSBjYXR0ci0+YXR0 bGVuOworCQlmaXJzdE5vbkNhY2hlZE9mZnNldEF0dHIgPSBpICsgMTsKKwl9CisKKwl0dXBkZXNj LT5maXJzdE5vbkNhY2hlZE9mZnNldEF0dHIgPSBmaXJzdE5vbkNhY2hlZE9mZnNldEF0dHI7CisJ dHVwZGVzYy0+Zmlyc3ROb25HdWFyYW50ZWVkQXR0ciA9IGZpcnN0Tm9uR3VhcmFudGVlZEF0dHI7 Cit9CisKIC8qCiAgKiBGcmVlIGEgVHVwbGVEZXNjIGluY2x1ZGluZyBhbGwgc3Vic3RydWN0dXJl CiAgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndXRpbHMuYyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndXRpbHMuYwppbmRleCBiMjQ2ZTgxMjdkYi4u YTQ2OTRiZDgwNjUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndXRp bHMuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3V0aWxzLmMKQEAgLTMzNSw5 ICszMzUsNiBAQCBnZXRTcEdpc3RUdXBsZURlc2MoUmVsYXRpb24gaW5kZXgsIFNwR2lzdFR5cGVE ZXNjICprZXlUeXBlKQogCQkvKiBXZSBzaG91bGRuJ3QgbmVlZCB0byBib3RoZXIgd2l0aCBtYWtp bmcgdGhlc2UgdmFsaWQ6ICovCiAJCWF0dC0+YXR0Y29tcHJlc3Npb24gPSBJbnZhbGlkQ29tcHJl c3Npb25NZXRob2Q7CiAJCWF0dC0+YXR0Y29sbGF0aW9uID0gSW52YWxpZE9pZDsKLQkJLyogSW4g Y2FzZSB3ZSBjaGFuZ2VkIHR5cGxlbiwgd2UnZCBiZXR0ZXIgcmVzZXQgZm9sbG93aW5nIG9mZnNl dHMgKi8KLQkJZm9yIChpbnQgaSA9IHNwZ0ZpcnN0SW5jbHVkZUNvbHVtbjsgaSA8IG91dFR1cERl c2MtPm5hdHRzOyBpKyspCi0JCQlUdXBsZURlc2NDb21wYWN0QXR0cihvdXRUdXBEZXNjLCBpKS0+ YXR0Y2FjaGVvZmYgPSAtMTsKIAogCQlwb3B1bGF0ZV9jb21wYWN0X2F0dHJpYnV0ZShvdXRUdXBE ZXNjLCBzcGdLZXlDb2x1bW4pOwogCQlUdXBsZURlc2NGaW5hbGl6ZShvdXRUdXBEZXNjKTsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNUdXBsZXMuYyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNUdXBsZXMuYwppbmRleCBlNmFiNTFlNjQwNC4uODBmYWYyOWI3OTcgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNUdXBsZXMuYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjVHVwbGVzLmMKQEAgLTk5MywyMTggKzk5MywyNDIgQEAgdHRzX2J1 ZmZlcl9oZWFwX3N0b3JlX3R1cGxlKFR1cGxlVGFibGVTbG90ICpzbG90LCBIZWFwVHVwbGUgdHVw bGUsCiB9CiAKIC8qCi0gKiBzbG90X2RlZm9ybV9oZWFwX3R1cGxlX2ludGVybmFsCi0gKgkJQW4g YWx3YXlzIGlubGluZSBoZWxwZXIgZnVuY3Rpb24gZm9yIHVzZSBpbiBzbG90X2RlZm9ybV9oZWFw X3R1cGxlIHRvCi0gKgkJYWxsb3cgdGhlIGNvbXBpbGVyIHRvIGVtaXQgc3BlY2lhbGl6ZWQgdmVy c2lvbnMgb2YgdGhpcyBmdW5jdGlvbiBmb3IKLSAqCQl2YXJpb3VzIGNvbWJpbmF0aW9ucyBvZiAi c2xvdyIgYW5kICJoYXNudWxscyIuICBGb3IgZXhhbXBsZSwgaWYgYQotICoJCWdpdmVuIHR1cGxl IGhhcyBubyBudWxscywgdGhlbiB3ZSBuZWVkbid0IGNoZWNrICJoYXNudWxscyIgZm9yIGV2ZXJ5 Ci0gKgkJYXR0cmlidXRlIHRoYXQgd2UncmUgZGVmb3JtaW5nLiAgVGhlIGNhbGxlciBjYW4ganVz dCBjYWxsIHRoaXMKLSAqCQlmdW5jdGlvbiB3aXRoIGhhc251bGxzIHNldCB0byBjb25zdGFudC1m YWxzZSBhbmQgaGF2ZSB0aGUgY29tcGlsZXIKLSAqCQlyZW1vdmUgdGhlIGNvbnN0YW50LWZhbHNl IGJyYW5jaGVzIGFuZCBlbWl0IG1vcmUgb3B0aW1hbCBjb2RlLgotICoKLSAqIFJldHVybnMgdGhl IG5leHQgYXR0bnVtIHRvIGRlZm9ybSwgd2hpY2ggY2FuIGJlIGVxdWFsIHRvIG5hdHRzIHdoZW4g dGhlCi0gKiBmdW5jdGlvbiBtYW5hZ2VzIHRvIGRlZm9ybSBhbGwgcmVxdWVzdGVkIGF0dHJpYnV0 ZXMuICAqb2ZmcCBpcyBhbiBpbnB1dCBhbmQKLSAqIG91dHB1dCBwYXJhbWV0ZXIgd2hpY2ggaXMg dGhlIGJ5dGUgb2Zmc2V0IHdpdGhpbiB0aGUgdHVwbGUgdG8gc3RhcnQgZGVmb3JtaW5nCi0gKiBm cm9tIHdoaWNoLCBvbiByZXR1cm4sIGdldHMgc2V0IHRvIHRoZSBvZmZzZXQgd2hlcmUgdGhlIG5l eHQgYXR0cmlidXRlCi0gKiBzaG91bGQgYmUgZGVmb3JtZWQgZnJvbS4gICpzbG93cCBpcyBzZXQg dG8gdHJ1ZSB3aGVuIHN1YnNlcXVlbnQgZGVmb3JtaW5nCi0gKiBvZiB0aGlzIHR1cGxlIG11c3Qg dXNlIGEgdmVyc2lvbiBvZiB0aGlzIGZ1bmN0aW9uIHdpdGggInNsb3ciIHBhc3NlZCBhcwotICog dHJ1ZS4KLSAqCi0gKiBDYWxsZXJzIGNhbm5vdCBhc3N1bWUgd2hlbiB3ZSByZXR1cm4gImF0dG51 bSIgKGkuZS4gYWxsIHJlcXVlc3RlZAotICogYXR0cmlidXRlcyBoYXZlIGJlZW4gZGVmb3JtZWQp IHRoYXQgc2xvdyBtb2RlIGlzbid0IHJlcXVpcmVkIGZvciBhbnkKLSAqIGFkZGl0aW9uYWwgZGVm b3JtaW5nIGFzIHRoZSBmaW5hbCBhdHRyaWJ1dGUgbWF5IGhhdmUgY2F1c2VkIGEgc3dpdGNoIHRv Ci0gKiBzbG93IG1vZGUuCisgKiBzbG90X2RlZm9ybV9oZWFwX3R1cGxlCisgKgkJR2l2ZW4gYSBU dXBsZVRhYmxlU2xvdCwgZXh0cmFjdCBkYXRhIGZyb20gdGhlIHNsb3QncyBwaHlzaWNhbCB0dXBs ZQorICoJCWludG8gaXRzIERhdHVtL2lzbnVsbCBhcnJheXMuICBEYXRhIGlzIGV4dHJhY3RlZCB1 cCB0aHJvdWdoIHRoZQorICoJCW5hdHRzJ3RoIGNvbHVtbiAoY2FsbGVyIG11c3QgZW5zdXJlIHRo aXMgaXMgYSBsZWdhbCBjb2x1bW4gbnVtYmVyKS4KKyAqCisgKgkJVGhpcyBpcyBlc3NlbnRpYWxs eSBhbiBpbmNyZW1lbnRhbCB2ZXJzaW9uIG9mIGhlYXBfZGVmb3JtX3R1cGxlOgorICoJCW9uIGVh Y2ggY2FsbCB3ZSBleHRyYWN0IGF0dHJpYnV0ZXMgdXAgdG8gdGhlIG9uZSBuZWVkZWQsIHdpdGhv dXQKKyAqCQlyZS1jb21wdXRpbmcgaW5mb3JtYXRpb24gYWJvdXQgcHJldmlvdXNseSBleHRyYWN0 ZWQgYXR0cmlidXRlcy4KKyAqCQlzbG90LT50dHNfbnZhbGlkIGlzIHRoZSBudW1iZXIgb2YgYXR0 cmlidXRlcyBhbHJlYWR5IGV4dHJhY3RlZC4KKyAqCisgKiBUaGlzIGlzIG1hcmtlZCBhcyBhbHdh eXMgaW5saW5lLCBzbyB0aGUgZGlmZmVyZW50IG9mZnAgZm9yIGRpZmZlcmVudCB0eXBlcworICog b2Ygc2xvdHMgZ2V0cyBvcHRpbWl6ZWQgYXdheS4KICAqLwotc3RhdGljIHBnX2F0dHJpYnV0ZV9h bHdheXNfaW5saW5lIGludAotc2xvdF9kZWZvcm1faGVhcF90dXBsZV9pbnRlcm5hbChUdXBsZVRh YmxlU2xvdCAqc2xvdCwgSGVhcFR1cGxlIHR1cGxlLAotCQkJCQkJCQlpbnQgYXR0bnVtLCBpbnQg bmF0dHMsIGJvb2wgc2xvdywKLQkJCQkJCQkJYm9vbCBoYXNudWxscywgdWludDMyICpvZmZwLCBi b29sICpzbG93cCkKK3N0YXRpYyBwZ19hdHRyaWJ1dGVfYWx3YXlzX2lubGluZSB2b2lkCitzbG90 X2RlZm9ybV9oZWFwX3R1cGxlKFR1cGxlVGFibGVTbG90ICpzbG90LCBIZWFwVHVwbGUgdHVwbGUs IHVpbnQzMiAqb2ZmcCwKKwkJCQkJICAgaW50IG5hdHRzKQogeworCUNvbXBhY3RBdHRyaWJ1dGUg KmNhdHRyOwogCVR1cGxlRGVzYwl0dXBsZURlc2MgPSBzbG90LT50dHNfdHVwbGVEZXNjcmlwdG9y OwotCURhdHVtCSAgICp2YWx1ZXMgPSBzbG90LT50dHNfdmFsdWVzOwotCWJvb2wJICAgKmlzbnVs bCA9IHNsb3QtPnR0c19pc251bGw7CiAJSGVhcFR1cGxlSGVhZGVyIHR1cCA9IHR1cGxlLT50X2Rh dGE7CisJaW50CQkJYXR0bnVtOworCWludAkJCWZpcnN0Tm9uQ2FjaGVPZmZzZXRBdHRyOworCWlu dAkJCWZpcnN0Tm9uR3VhcmFudGVlZEF0dHI7CisJaW50CQkJZmlyc3ROdWxsQXR0cjsKKwlEYXR1 bQkgICAqdmFsdWVzOworCWJvb2wJICAgKmlzbnVsbDsKIAljaGFyCSAgICp0cDsJCQkJLyogcHRy IHRvIHR1cGxlIGRhdGEgKi8KLQliaXRzOAkgICAqYnAgPSB0dXAtPnRfYml0czsJLyogcHRyIHRv IG51bGwgYml0bWFwIGluIHR1cGxlICovCi0JYm9vbAkJc2xvd25leHQgPSBmYWxzZTsKKwl1aW50 MzIJCW9mZjsJCQkvKiBvZmZzZXQgaW4gdHVwbGUgZGF0YSAqLwogCi0JdHAgPSAoY2hhciAqKSB0 dXAgKyB0dXAtPnRfaG9mZjsKKwkvKiBEaWQgc29tZW9uZSBmb3JnZXQgdG8gY2FsbCBUdXBsZURl c2NGaW5hbGl6ZSgpPyAqLworCUFzc2VydCh0dXBsZURlc2MtPmZpcnN0Tm9uQ2FjaGVkT2Zmc2V0 QXR0ciA+PSAwKTsKIAotCWZvciAoOyBhdHRudW0gPCBuYXR0czsgYXR0bnVtKyspCisJaXNudWxs ID0gc2xvdC0+dHRzX2lzbnVsbDsKKworCS8qCisJICogU29tZSBjYWxsZXJzIG1heSBmb3JtIGFu ZCBkZWZvcm0gdHVwbGVzIHByaW9yIHRvIE5PVCBOVUxMIGNvbnN0cmFpbnRzCisJICogYmVpbmcg Y2hlY2tlZC4gIEhlcmUgd2UnZCBsaWtlIHRvIG9wdGltaXplIHRoZSBjYXNlIHdoZXJlIHdlIG9u bHkgbmVlZAorCSAqIHRvIGZldGNoIGF0dHJpYnV0ZXMgYmVmb3JlIG9yIHVwIHRvIHRoZSBwb2lu dCB3aGVyZSB0aGUgYXR0cmlidXRlIGlzCisJICogZ3VhcmFudGVlZCB0byBleGlzdCBpbiB0aGUg dHVwbGUuICBXZSByZWx5IG9uIHRoZSBzbG90IGZsYWcgYmVpbmcgc2V0CisJICogY29ycmVjdGx5 IHRvIG9ubHkgZW5hYmxlIHRoaXMgb3B0aW1pemF0aW9uIHdoZW4gaXQncyB2YWxpZCB0byBkbyBz by4KKwkgKiBUaGlzIG9wdGltaXphdGlvbiBhbGxvd3MgdXMgdG8gc2F2ZSBmZXRjaGluZyB0aGUg bnVtYmVyIG9mIGF0dHJpYnV0ZXMKKwkgKiBmcm9tIHRoZSB0dXBsZSBhbmQgc2F2ZXMgdGhlIGFk ZGl0aW9uYWwgY29zdCBvZiBoYW5kbGluZyBub24tYnl2YWwKKwkgKiBhdHRycy4KKwkgKi8KKwlp ZiAoVFRTX09CRVlTX05PVF9OVUxMX0NPTlNUUkFJTlRTKHNsb3QpKQorCQlmaXJzdE5vbkd1YXJh bnRlZWRBdHRyID0gTWluKG5hdHRzLCB0dXBsZURlc2MtPmZpcnN0Tm9uR3VhcmFudGVlZEF0dHIp OworCWVsc2UKKwkJZmlyc3ROb25HdWFyYW50ZWVkQXR0ciA9IDA7CisKKwlmaXJzdE5vbkNhY2hl T2Zmc2V0QXR0ciA9IHR1cGxlRGVzYy0+Zmlyc3ROb25DYWNoZWRPZmZzZXRBdHRyOworCisJaWYg KEhlYXBUdXBsZUhhc051bGxzKHR1cGxlKSkKIAl7Ci0JCUNvbXBhY3RBdHRyaWJ1dGUgKnRoaXNh dHQgPSBUdXBsZURlc2NDb21wYWN0QXR0cih0dXBsZURlc2MsIGF0dG51bSk7CisJCWludAkJCXR1 cG5hdHRzID0gSGVhcFR1cGxlSGVhZGVyR2V0TmF0dHModHVwKTsKIAotCQlpZiAoaGFzbnVsbHMg JiYgYXR0X2lzbnVsbChhdHRudW0sIGJwKSkKKwkJdHAgPSAoY2hhciAqKSB0dXAgKyBNQVhBTElH TihvZmZzZXRvZihIZWFwVHVwbGVIZWFkZXJEYXRhLCB0X2JpdHMpICsKKwkJCQkJCQkJCSBCSVRN QVBMRU4odHVwbmF0dHMpKTsKKworCQluYXR0cyA9IE1pbih0dXBuYXR0cywgbmF0dHMpOworCQlp ZiAobmF0dHMgPiBmaXJzdE5vbkd1YXJhbnRlZWRBdHRyKQogCQl7Ci0JCQl2YWx1ZXNbYXR0bnVt XSA9IChEYXR1bSkgMDsKLQkJCWlzbnVsbFthdHRudW1dID0gdHJ1ZTsKLQkJCWlmICghc2xvdykK LQkJCXsKLQkJCQkqc2xvd3AgPSB0cnVlOwotCQkJCXJldHVybiBhdHRudW0gKyAxOwotCQkJfQot CQkJZWxzZQotCQkJCWNvbnRpbnVlOwotCQl9CisJCQliaXRzOAkgICAqYnAgPSB0dXAtPnRfYml0 czsKIAotCQlpc251bGxbYXR0bnVtXSA9IGZhbHNlOworCQkJLyogRmluZCB0aGUgZmlyc3QgTlVM TCBhdHRyICovCisJCQlmaXJzdE51bGxBdHRyID0gZmlyc3RfbnVsbF9hdHRyKGJwLCBuYXR0cyk7 CiAKLQkJLyogY2FsY3VsYXRlIHRoZSBvZmZzZXQgb2YgdGhpcyBhdHRyaWJ1dGUgKi8KLQkJaWYg KCFzbG93ICYmIHRoaXNhdHQtPmF0dGNhY2hlb2ZmID49IDApCi0JCQkqb2ZmcCA9IHRoaXNhdHQt PmF0dGNhY2hlb2ZmOwotCQllbHNlIGlmICh0aGlzYXR0LT5hdHRsZW4gPT0gLTEpCi0JCXsKIAkJ CS8qCi0JCQkgKiBXZSBjYW4gb25seSBjYWNoZSB0aGUgb2Zmc2V0IGZvciBhIHZhcmxlbmEgYXR0 cmlidXRlIGlmIHRoZQotCQkJICogb2Zmc2V0IGlzIGFscmVhZHkgc3VpdGFibHkgYWxpZ25lZCwg c28gdGhhdCB0aGVyZSB3b3VsZCBiZSBubwotCQkJICogcGFkIGJ5dGVzIGluIGFueSBjYXNlOiB0 aGVuIHRoZSBvZmZzZXQgd2lsbCBiZSB2YWxpZCBmb3IgZWl0aGVyCi0JCQkgKiBhbiBhbGlnbmVk IG9yIHVuYWxpZ25lZCB2YWx1ZS4KKwkJCSAqIEFuZCBwb3B1bGF0ZSB0aGUgaXNudWxsIGFycmF5 IGZvciBhbGwgYXR0cmlidXRlcyBiZWluZyBmZXRjaGVkCisJCQkgKiBmcm9tIHRoZSB0dXBsZS4K IAkJCSAqLwotCQkJaWYgKCFzbG93ICYmICpvZmZwID09IGF0dF9ub21pbmFsX2FsaWduYnkoKm9m ZnAsIHRoaXNhdHQtPmF0dGFsaWduYnkpKQotCQkJCXRoaXNhdHQtPmF0dGNhY2hlb2ZmID0gKm9m ZnA7Ci0JCQllbHNlCi0JCQl7Ci0JCQkJKm9mZnAgPSBhdHRfcG9pbnRlcl9hbGlnbmJ5KCpvZmZw LAotCQkJCQkJCQkJCQl0aGlzYXR0LT5hdHRhbGlnbmJ5LAotCQkJCQkJCQkJCQktMSwKLQkJCQkJ CQkJCQkJdHAgKyAqb2ZmcCk7CisJCQlwb3B1bGF0ZV9pc251bGxfYXJyYXkoYnAsIG5hdHRzLCBp c251bGwpOwogCi0JCQkJaWYgKCFzbG93KQotCQkJCQlzbG93bmV4dCA9IHRydWU7Ci0JCQl9CisJ CQkvKiBXZSBjYW4gb25seSB1c2UgYW55IGNhY2hlZCBvZmZzZXRzIHVudGlsIHRoZSBmaXJzdCBO VUxMIGF0dHIgKi8KKwkJCWZpcnN0Tm9uQ2FjaGVPZmZzZXRBdHRyID0gTWluKGZpcnN0Tm9uQ2Fj aGVPZmZzZXRBdHRyLCBmaXJzdE51bGxBdHRyKTsKIAkJfQogCQllbHNlCiAJCXsKLQkJCS8qIG5v dCB2YXJsZW5hLCBzbyBzYWZlIHRvIHVzZSBhdHRfbm9taW5hbF9hbGlnbmJ5ICovCi0JCQkqb2Zm cCA9IGF0dF9ub21pbmFsX2FsaWduYnkoKm9mZnAsIHRoaXNhdHQtPmF0dGFsaWduYnkpOwotCi0J CQlpZiAoIXNsb3cpCi0JCQkJdGhpc2F0dC0+YXR0Y2FjaGVvZmYgPSAqb2ZmcDsKKwkJCS8qIE90 aGVyd2lzZSBhbGwgcmVxdWlyZWQgY29sdW1ucyBhcmUgZ3VhcmFudGVlZCB0byBleGlzdCAqLwor CQkJZmlyc3ROdWxsQXR0ciA9IG5hdHRzOwogCQl9CisJfQorCWVsc2UKKwl7CisJCXRwID0gKGNo YXIgKikgdHVwICsgTUFYQUxJR04ob2Zmc2V0b2YoSGVhcFR1cGxlSGVhZGVyRGF0YSwgdF9iaXRz KSk7CisKKwkJLyoKKwkJICogV2Ugb25seSBuZWVkIHRvIGxvb2sgYXQgdGhlIHR1cGxlJ3MgbmF0 dHMgaWYgd2UgbmVlZCBtb3JlIHRoYW4gdGhlCisJCSAqIGd1YXJhbnRlZWQgbnVtYmVyIG9mIGNv bHVtbnMKKwkJICovCisJCWlmIChuYXR0cyA+IGZpcnN0Tm9uR3VhcmFudGVlZEF0dHIpCisJCQlu YXR0cyA9IE1pbihIZWFwVHVwbGVIZWFkZXJHZXROYXR0cyh0dXApLCBuYXR0cyk7CisKKwkJLyog QWxsIGF0dHJzIGNhbiBiZSBmZXRjaGVkIHdpdGhvdXQgY2hlY2tpbmcgZm9yIE5VTExzICovCisJ CWZpcnN0TnVsbEF0dHIgPSBuYXR0czsKKwl9CiAKLQkJdmFsdWVzW2F0dG51bV0gPSBmZXRjaGF0 dCh0aGlzYXR0LCB0cCArICpvZmZwKTsKKwlhdHRudW0gPSBzbG90LT50dHNfbnZhbGlkOworCXZh bHVlcyA9IHNsb3QtPnR0c192YWx1ZXM7CisJc2xvdC0+dHRzX252YWxpZCA9IG5hdHRzOwogCi0J CSpvZmZwID0gYXR0X2FkZGxlbmd0aF9wb2ludGVyKCpvZmZwLCB0aGlzYXR0LT5hdHRsZW4sIHRw ICsgKm9mZnApOworCS8qIEVuc3VyZSB3ZSBjYWxjdWxhdGVkIHRwIGNvcnJlY3RseSAqLworCUFz c2VydCh0cCA9PSAoY2hhciAqKSB0dXAgKyB0dXAtPnRfaG9mZik7CiAKLQkJLyogY2hlY2sgaWYg d2UgbmVlZCB0byBzd2l0Y2ggdG8gc2xvdyBtb2RlICovCi0JCWlmICghc2xvdykKKwlpZiAoYXR0 bnVtIDwgZmlyc3ROb25HdWFyYW50ZWVkQXR0cikKKwl7CisJCWRvCiAJCXsKKwkJCWludAkJCWF0 dGxlbjsKKworCQkJaXNudWxsW2F0dG51bV0gPSBmYWxzZTsKKwkJCWNhdHRyID0gVHVwbGVEZXNj Q29tcGFjdEF0dHIodHVwbGVEZXNjLCBhdHRudW0pOworCQkJYXR0bGVuID0gY2F0dHItPmF0dGxl bjsKKworCQkJLyogV2UgZG9uJ3QgZXhwZWN0IGFueSBub24tYnl2YWwgdHlwZXMgKi8KKwkJCXBn X2Fzc3VtZShhdHRsZW4gPiAwKTsKKwogCQkJLyoKLQkJCSAqIFdlJ3JlIHVuYWJsZSB0byBkZWZv cm0gYW55IGZ1cnRoZXIgaWYgdGhlIGFib3ZlIGNvZGUgc2V0Ci0JCQkgKiAnc2xvd25leHQnLCBv ciBpZiB0aGlzIGlzbid0IGEgZml4ZWQtd2lkdGggYXR0cmlidXRlLgorCQkJICogVGVjaG5pY2Fs bHkgd2UgY291bGQgc3VwcG9ydCBub24tYnl2YWwgZml4ZWQtd2lkdGggdHlwZXMsIGJ1dAorCQkJ ICogbm90IGRvaW5nIHNvIGFsbG93cyB1cyB0byBwYXNzIHRydWUgdG8gZmV0Y2hfYXR0X25vZXJy KCkgd2hpY2gKKwkJCSAqIGVsaW1pbmF0ZXMgdGhlICFhdHRieXZhbCBicmFuY2guCiAJCQkgKi8K LQkJCWlmIChzbG93bmV4dCB8fCB0aGlzYXR0LT5hdHRsZW4gPD0gMCkKLQkJCXsKLQkJCQkqc2xv d3AgPSB0cnVlOwotCQkJCXJldHVybiBhdHRudW0gKyAxOwotCQkJfQotCQl9Ci0JfQorCQkJQXNz ZXJ0KGNhdHRyLT5hdHRieXZhbCA9PSB0cnVlKTsKIAotCXJldHVybiBuYXR0czsKLX0KLQotLyoK LSAqIHNsb3RfZGVmb3JtX2hlYXBfdHVwbGUKLSAqCQlHaXZlbiBhIFR1cGxlVGFibGVTbG90LCBl eHRyYWN0IGRhdGEgZnJvbSB0aGUgc2xvdCdzIHBoeXNpY2FsIHR1cGxlCi0gKgkJaW50byBpdHMg RGF0dW0vaXNudWxsIGFycmF5cy4gIERhdGEgaXMgZXh0cmFjdGVkIHVwIHRocm91Z2ggdGhlCi0g KgkJbmF0dHMndGggY29sdW1uIChjYWxsZXIgbXVzdCBlbnN1cmUgdGhpcyBpcyBhIGxlZ2FsIGNv bHVtbiBudW1iZXIpLgotICoKLSAqCQlUaGlzIGlzIGVzc2VudGlhbGx5IGFuIGluY3JlbWVudGFs IHZlcnNpb24gb2YgaGVhcF9kZWZvcm1fdHVwbGU6Ci0gKgkJb24gZWFjaCBjYWxsIHdlIGV4dHJh Y3QgYXR0cmlidXRlcyB1cCB0byB0aGUgb25lIG5lZWRlZCwgd2l0aG91dAotICoJCXJlLWNvbXB1 dGluZyBpbmZvcm1hdGlvbiBhYm91dCBwcmV2aW91c2x5IGV4dHJhY3RlZCBhdHRyaWJ1dGVzLgot ICoJCXNsb3QtPnR0c19udmFsaWQgaXMgdGhlIG51bWJlciBvZiBhdHRyaWJ1dGVzIGFscmVhZHkg ZXh0cmFjdGVkLgotICoKLSAqIFRoaXMgaXMgbWFya2VkIGFzIGFsd2F5cyBpbmxpbmUsIHNvIHRo ZSBkaWZmZXJlbnQgb2ZmcCBmb3IgZGlmZmVyZW50IHR5cGVzCi0gKiBvZiBzbG90cyBnZXRzIG9w dGltaXplZCBhd2F5LgotICovCi1zdGF0aWMgcGdfYXR0cmlidXRlX2Fsd2F5c19pbmxpbmUgdm9p ZAotc2xvdF9kZWZvcm1faGVhcF90dXBsZShUdXBsZVRhYmxlU2xvdCAqc2xvdCwgSGVhcFR1cGxl IHR1cGxlLCB1aW50MzIgKm9mZnAsCi0JCQkJCSAgIGludCBuYXR0cykKLXsKLQlib29sCQloYXNu dWxscyA9IEhlYXBUdXBsZUhhc051bGxzKHR1cGxlKTsKLQlpbnQJCQlhdHRudW07Ci0JdWludDMy CQlvZmY7CQkJLyogb2Zmc2V0IGluIHR1cGxlIGRhdGEgKi8KLQlib29sCQlzbG93OwkJCS8qIGNh biB3ZSB1c2Uvc2V0IGF0dGNhY2hlb2ZmPyAqLworCQkJb2ZmID0gY2F0dHItPmF0dGNhY2hlb2Zm OworCQkJdmFsdWVzW2F0dG51bV0gPSBmZXRjaF9hdHRfbm9lcnIodHAgKyBvZmYsIHRydWUsIGF0 dGxlbik7CisJCQlhdHRudW0rKzsKKwkJfSB3aGlsZSAoYXR0bnVtIDwgZmlyc3ROb25HdWFyYW50 ZWVkQXR0cik7CiAKLQkvKiBXZSBjYW4gb25seSBmZXRjaCBhcyBtYW55IGF0dHJpYnV0ZXMgYXMg dGhlIHR1cGxlIGhhcy4gKi8KLQluYXR0cyA9IE1pbihIZWFwVHVwbGVIZWFkZXJHZXROYXR0cyh0 dXBsZS0+dF9kYXRhKSwgbmF0dHMpOworCQlvZmYgKz0gY2F0dHItPmF0dGxlbjsKIAotCS8qCi0J ICogQ2hlY2sgd2hldGhlciB0aGUgZmlyc3QgY2FsbCBmb3IgdGhpcyB0dXBsZSwgYW5kIGluaXRp YWxpemUgb3IgcmVzdG9yZQotCSAqIGxvb3Agc3RhdGUuCi0JICovCi0JYXR0bnVtID0gc2xvdC0+ dHRzX252YWxpZDsKLQlpZiAoYXR0bnVtID09IDApCi0JewotCQkvKiBTdGFydCBmcm9tIHRoZSBm aXJzdCBhdHRyaWJ1dGUgKi8KLQkJb2ZmID0gMDsKLQkJc2xvdyA9IGZhbHNlOworCQlpZiAoYXR0 bnVtID09IG5hdHRzKQorCQkJZ290byBkb25lOwogCX0KIAllbHNlCiAJewogCQkvKiBSZXN0b3Jl IHN0YXRlIGZyb20gcHJldmlvdXMgZXhlY3V0aW9uICovCiAJCW9mZiA9ICpvZmZwOwotCQlzbG93 ID0gVFRTX1NMT1coc2xvdCk7CisKKwkJLyogV2UgZXhwZWN0ICpvZmZwIHRvIGJlIHNldCB0byAw IHdoZW4gYXR0bnVtID09IDAgKi8KKwkJQXNzZXJ0KG9mZiA9PSAwIHx8IGF0dG51bSA+IDApOwog CX0KIAorCS8qIFdlIGNhbiBvbmx5IGZldGNoIGFzIG1hbnkgYXR0cmlidXRlcyBhcyB0aGUgdHVw bGUgaGFzLiAqLworCWZpcnN0Tm9uQ2FjaGVPZmZzZXRBdHRyID0gTWluKGZpcnN0Tm9uQ2FjaGVP ZmZzZXRBdHRyLCBuYXR0cyk7CisKIAkvKgotCSAqIElmICdzbG93JyBpc24ndCBzZXQsIHRyeSBk ZWZvcm1pbmcgdXNpbmcgZGVmb3JtaW5nIGNvZGUgdGhhdCBkb2VzIG5vdAotCSAqIGNvbnRhaW4g YW55IG9mIHRoZSBleHRyYSBjaGVja3MgcmVxdWlyZWQgZm9yIG5vbi1maXhlZCBvZmZzZXQKLQkg KiBkZWZvcm1pbmcuICBEdXJpbmcgZGVmb3JtaW5nLCBpZiBvciB3aGVuIHdlIGZpbmQgYSBOVUxM IG9yIGEgdmFyaWFibGUKLQkgKiBsZW5ndGggYXR0cmlidXRlLCB3ZSdsbCBzd2l0Y2ggdG8gYSBk ZWZvcm1pbmcgbWV0aG9kIHdoaWNoIGluY2x1ZGVzIHRoZQotCSAqIGV4dHJhIGNvZGUgcmVxdWly ZWQgZm9yIG5vbi1maXhlZCBvZmZzZXQgZGVmb3JtaW5nLCBhLmsuYSBzbG93IG1vZGUuCi0JICog QmVjYXVzZSB0aGlzIGlzIHBlcmZvcm1hbmNlIGNyaXRpY2FsLCB3ZSBpbmxpbmUKLQkgKiBzbG90 X2RlZm9ybV9oZWFwX3R1cGxlX2ludGVybmFsIHBhc3NpbmcgdGhlICdzbG93JyBhbmQgJ2hhc251 bGwnCi0JICogcGFyYW1ldGVycyBhcyBjb25zdGFudHMgdG8gYWxsb3cgdGhlIGNvbXBpbGVyIHRv IGVtaXQgc3BlY2lhbGl6ZWQgY29kZQotCSAqIHdpdGggdGhlIGtub3duLWNvbnN0IGZhbHNlIGNv bXBhcmlzb25zIGFuZCBzdWJzZXF1ZW50IGJyYW5jaGVzIHJlbW92ZWQuCisJICogSGFuZGxlIHRo ZSBwb3J0aW9uIG9mIHRoZSB0dXBsZSB0aGF0IHdlIGhhdmUgY2FjaGVkIHRoZSBvZmZzZXQgZm9y IHVwCisJICogdG8gdGhlIGZpcnN0IE5VTEwgYXR0cmlidXRlLiAgVGhlIG9mZnNldCBpcyBlZmZl Y3RpdmVseSBmaXhlZCBmb3IgdGhlc2UKKwkgKiBzbyB3ZSBjYW4gdXNlIHRoZSBDb21wYWN0QXR0 cmlidXRlJ3MgYXR0Y2FjaGVvZmYuCiAJICovCi0JaWYgKCFzbG93KQorCWlmIChhdHRudW0gPCBm aXJzdE5vbkNhY2hlT2Zmc2V0QXR0cikKIAl7Ci0JCS8qIFR1cGxlIHdpdGhvdXQgYW55IE5VTExz PyBXZSBjYW4gc2tpcCBkb2luZyBhbnkgTlVMTCBjaGVja2luZyAqLwotCQlpZiAoIWhhc251bGxz KQotCQkJYXR0bnVtID0gc2xvdF9kZWZvcm1faGVhcF90dXBsZV9pbnRlcm5hbChzbG90LAotCQkJ CQkJCQkJCQkJCSB0dXBsZSwKLQkJCQkJCQkJCQkJCQkgYXR0bnVtLAotCQkJCQkJCQkJCQkJCSBu YXR0cywKLQkJCQkJCQkJCQkJCQkgZmFsc2UsIC8qIHNsb3cgKi8KLQkJCQkJCQkJCQkJCQkgZmFs c2UsIC8qIGhhc251bGxzICovCi0JCQkJCQkJCQkJCQkJICZvZmYsCi0JCQkJCQkJCQkJCQkJICZz bG93KTsKLQkJZWxzZQotCQkJYXR0bnVtID0gc2xvdF9kZWZvcm1faGVhcF90dXBsZV9pbnRlcm5h bChzbG90LAotCQkJCQkJCQkJCQkJCSB0dXBsZSwKLQkJCQkJCQkJCQkJCQkgYXR0bnVtLAotCQkJ CQkJCQkJCQkJCSBuYXR0cywKLQkJCQkJCQkJCQkJCQkgZmFsc2UsIC8qIHNsb3cgKi8KLQkJCQkJ CQkJCQkJCQkgdHJ1ZSwJLyogaGFzbnVsbHMgKi8KLQkJCQkJCQkJCQkJCQkgJm9mZiwKLQkJCQkJ CQkJCQkJCQkgJnNsb3cpOworCQlkbworCQl7CisJCQlpc251bGxbYXR0bnVtXSA9IGZhbHNlOwor CQkJY2F0dHIgPSBUdXBsZURlc2NDb21wYWN0QXR0cih0dXBsZURlc2MsIGF0dG51bSk7CisKKwkJ CW9mZiA9IGNhdHRyLT5hdHRjYWNoZW9mZjsKKwkJCXZhbHVlc1thdHRudW1dID0gZmV0Y2hfYXR0 X25vZXJyKHRwICsgb2ZmLAorCQkJCQkJCQkJCQkgY2F0dHItPmF0dGJ5dmFsLAorCQkJCQkJCQkJ CQkgY2F0dHItPmF0dGxlbik7CisJCX0gd2hpbGUgKCsrYXR0bnVtIDwgZmlyc3ROb25DYWNoZU9m ZnNldEF0dHIpOworCisJCS8qCisJCSAqIFBvaW50IHRoZSBvZmZzZXQgYWZ0ZXIgdGhlIGVuZCBv ZiB0aGUgbGFzdCBhdHRyaWJ1dGUgd2l0aCBhIGNhY2hlZAorCQkgKiBvZmZzZXQuICBXZSBleHBl Y3QgdGhlIGZpbmFsIGNhY2hlZCBvZmZzZXQgYXR0cmlidXRlIHRvIGhhdmUgYQorCQkgKiBmaXhl ZCB3aWR0aCwgc28ganVzdCBhZGQgdGhlIGF0dGxlbiB0byB0aGUgYXR0Y2FjaGVvZmYKKwkJICov CisJCUFzc2VydChjYXR0ci0+YXR0bGVuID4gMCk7CisJCW9mZiArPSBjYXR0ci0+YXR0bGVuOwor CX0KKworCS8qCisJICogSGFuZGxlIGFueSBwb3J0aW9uIG9mIHRoZSB0dXBsZSB0aGF0IGRvZXNu J3QgaGF2ZSBhIGZpeGVkIG9mZnNldCB1cAorCSAqIHVudGlsIHRoZSBmaXJzdCBOVUxMIGF0dHJp YnV0ZS4gIFRoaXMgbG9vcHMgb25seSBkaWZmZXJzIGZyb20gdGhlIG9uZQorCSAqIGFmdGVyIGl0 IGJ5IHRoZSBOVUxMIGNoZWNrcy4KKwkgKi8KKwlmb3IgKDsgYXR0bnVtIDwgZmlyc3ROdWxsQXR0 cjsgYXR0bnVtKyspCisJeworCQlpbnQJCQlhdHRsZW47CisKKwkJaXNudWxsW2F0dG51bV0gPSBm YWxzZTsKKwkJY2F0dHIgPSBUdXBsZURlc2NDb21wYWN0QXR0cih0dXBsZURlc2MsIGF0dG51bSk7 CisJCWF0dGxlbiA9IGNhdHRyLT5hdHRsZW47CisKKwkJLyoKKwkJICogY3N0cmluZ3MgZG9uJ3Qg ZXhpc3QgaW4gaGVhcCB0dXBsZXMuICBVc2UgcGdfYXNzdW1lIHRvIGluc3RydWN0IHRoZQorCQkg KiBjb21waWxlciBub3QgdG8gZW1pdCB0aGUgY3N0cmluZyByZWxhdGVkIGNvZGUgaW4KKwkJICog YWxpZ25fZmV0Y2hfdGhlbl9hZGQoKS4KKwkJICovCisJCXBnX2Fzc3VtZShhdHRsZW4gPiAwIHx8 IGF0dGxlbiA9PSAtMSk7CisKKwkJLyogYWxpZ24gJ29mZicsIGZldGNoIHRoZSBkYXR1bSwgYW5k IGluY3JlbWVudCBvZmYgYmV5b25kIHRoZSBkYXR1bSAqLworCQl2YWx1ZXNbYXR0bnVtXSA9IGFs aWduX2ZldGNoX3RoZW5fYWRkKHRwLAorCQkJCQkJCQkJCQkgICZvZmYsCisJCQkJCQkJCQkJCSAg Y2F0dHItPmF0dGJ5dmFsLAorCQkJCQkJCQkJCQkgIGF0dGxlbiwKKwkJCQkJCQkJCQkJICBjYXR0 ci0+YXR0YWxpZ25ieSk7CiAJfQogCi0JLyogSWYgdGhlcmUncyBzdGlsbCB3b3JrIHRvIGRvIHRo ZW4gd2UgbXVzdCBiZSBpbiBzbG93IG1vZGUgKi8KLQlpZiAoYXR0bnVtIDwgbmF0dHMpCisJLyoK KwkgKiBOb3cgaGFuZGxlIGFueSByZW1haW5pbmcgYXR0cmlidXRlcyBpbiB0aGUgdHVwbGUgdXAg dG8gdGhlIHJlcXVlc3RlZAorCSAqIGF0dG51bS4gIFRoaXMgdGltZSwgaW5jbHVkZSBOVUxMIGNo ZWNrcyBhcyB3ZSdyZSBub3cgYXQgdGhlIGZpcnN0IE5VTEwKKwkgKiBhdHRyaWJ1dGUuCisJICov CisJZm9yICg7IGF0dG51bSA8IG5hdHRzOyBhdHRudW0rKykKIAl7Ci0JCS8qIFhYWCBpcyBpdCB3 b3J0aCBhZGRpbmcgYSBzZXBhcmF0ZSBjYWxsIHdoZW4gaGFzbnVsbHMgaXMgZmFsc2U/ICovCi0J CWF0dG51bSA9IHNsb3RfZGVmb3JtX2hlYXBfdHVwbGVfaW50ZXJuYWwoc2xvdCwKLQkJCQkJCQkJ CQkJCSB0dXBsZSwKLQkJCQkJCQkJCQkJCSBhdHRudW0sCi0JCQkJCQkJCQkJCQkgbmF0dHMsCi0J CQkJCQkJCQkJCQkgdHJ1ZSwJLyogc2xvdyAqLwotCQkJCQkJCQkJCQkJIGhhc251bGxzLAotCQkJ CQkJCQkJCQkJICZvZmYsCi0JCQkJCQkJCQkJCQkgJnNsb3cpOworCQlpbnQJCQlhdHRsZW47CisK KwkJaWYgKGlzbnVsbFthdHRudW1dKQorCQl7CisJCQl2YWx1ZXNbYXR0bnVtXSA9IChEYXR1bSkg MDsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJY2F0dHIgPSBUdXBsZURlc2NDb21wYWN0QXR0cih0 dXBsZURlc2MsIGF0dG51bSk7CisJCWF0dGxlbiA9IGNhdHRyLT5hdHRsZW47CisKKwkJLyogQXMg YWJvdmUsIHdlIGRvbid0IGV4cGVjdCBjc3RyaW5ncyAqLworCQlwZ19hc3N1bWUoYXR0bGVuID4g MCB8fCBhdHRsZW4gPT0gLTEpOworCisJCS8qIGFsaWduICdvZmYnLCBmZXRjaCB0aGUgZGF0dW0s IGFuZCBpbmNyZW1lbnQgb2ZmIGJleW9uZCB0aGUgZGF0dW0gKi8KKwkJdmFsdWVzW2F0dG51bV0g PSBhbGlnbl9mZXRjaF90aGVuX2FkZCh0cCwKKwkJCQkJCQkJCQkJICAmb2ZmLAorCQkJCQkJCQkJ CQkgIGNhdHRyLT5hdHRieXZhbCwKKwkJCQkJCQkJCQkJICBhdHRsZW4sCisJCQkJCQkJCQkJCSAg Y2F0dHItPmF0dGFsaWduYnkpOwogCX0KIAorZG9uZToKKwogCS8qCiAJICogU2F2ZSBzdGF0ZSBm b3IgbmV4dCBleGVjdXRpb24KIAkgKi8KIAlzbG90LT50dHNfbnZhbGlkID0gYXR0bnVtOwogCSpv ZmZwID0gb2ZmOwotCWlmIChzbG93KQotCQlzbG90LT50dHNfZmxhZ3MgfD0gVFRTX0ZMQUdfU0xP VzsKLQllbHNlCi0JCXNsb3QtPnR0c19mbGFncyAmPSB+VFRTX0ZMQUdfU0xPVzsKIH0KIAogY29u c3QgVHVwbGVUYWJsZVNsb3RPcHMgVFRTT3BzVmlydHVhbCA9IHsKQEAgLTE1MDgsNyArMTUzMiw3 IEBAIEV4ZWNTZXRTbG90RGVzY3JpcHRvcihUdXBsZVRhYmxlU2xvdCAqc2xvdCwgLyogc2xvdCB0 byBjaGFuZ2UgKi8KIAlzbG90LT50dHNfdmFsdWVzID0gKERhdHVtICopCiAJCU1lbW9yeUNvbnRl eHRBbGxvYyhzbG90LT50dHNfbWN4dCwgdHVwZGVzYy0+bmF0dHMgKiBzaXplb2YoRGF0dW0pKTsK IAlzbG90LT50dHNfaXNudWxsID0gKGJvb2wgKikKLQkJTWVtb3J5Q29udGV4dEFsbG9jKHNsb3Qt PnR0c19tY3h0LCB0dXBkZXNjLT5uYXR0cyAqIHNpemVvZihib29sKSk7CisJCU1lbW9yeUNvbnRl eHRBbGxvYyhzbG90LT50dHNfbWN4dCwgTUFYQUxJR04odHVwZGVzYy0+bmF0dHMgKiBzaXplb2Yo Ym9vbCkpKTsKIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTIy NTksMTAgKzIyODMsMTYgQEAgRXhlY1R5cGVTZXRDb2xOYW1lcyhUdXBsZURlc2MgdHlwZUluZm8s IExpc3QgKm5hbWVzTGlzdCkKICAqIFRoaXMgaGFwcGVucyAiZm9yIGZyZWUiIGlmIHRoZSB0dXBk ZXNjIGNhbWUgZnJvbSBhIHJlbGNhY2hlIGVudHJ5LCBidXQKICAqIG5vdCBpZiB3ZSBoYXZlIG1h bnVmYWN0dXJlZCBhIHR1cGRlc2MgZm9yIGEgdHJhbnNpZW50IFJFQ09SRCBkYXRhdHlwZS4KICAq IEluIHRoYXQgY2FzZSB3ZSBoYXZlIHRvIG5vdGlmeSB0eXBjYWNoZS5jIG9mIHRoZSBleGlzdGVu Y2Ugb2YgdGhlIHR5cGUuCisgKgorICogVHVwbGVEZXNjRmluYWxpemUoKSBtdXN0IGJlIGNhbGxl ZCBvbiB0aGUgVHVwbGVEZXNjIGJlZm9yZSBjYWxsaW5nIHRoaXMKKyAqIGZ1bmN0aW9uLgogICov CiBUdXBsZURlc2MKIEJsZXNzVHVwbGVEZXNjKFR1cGxlRGVzYyB0dXBkZXNjKQogeworCS8qIERp ZCBzb21lb25lIGZvcmdldCB0byBjYWxsIFR1cGxlRGVzY0ZpbmFsaXplKCk/ICovCisJQXNzZXJ0 KHR1cGRlc2MtPmZpcnN0Tm9uQ2FjaGVkT2Zmc2V0QXR0ciA+PSAwKTsKKwogCWlmICh0dXBkZXNj LT50ZHR5cGVpZCA9PSBSRUNPUkRPSUQgJiYKIAkJdHVwZGVzYy0+dGR0eXBtb2QgPCAwKQogCQlh c3NpZ25fcmVjb3JkX3R5cGVfdHlwbW9kKHR1cGRlc2MpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFz Y2FuLmMKaW5kZXggYWYzYzc4OGNlOGIuLjdmNzRhOGRkY2IyIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVTZXFzY2FuLmMKQEAgLTI0Niw2ICsyNDYsOCBAQCBFeGVjSW5pdFNlcVNjYW4oU2VxU2NhbiAq bm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCQkJCQkgIFJlbGF0aW9uR2V0RGVz Y3Ioc2NhbnN0YXRlLT5zcy5zc19jdXJyZW50UmVsYXRpb24pLAogCQkJCQkJICB0YWJsZV9zbG90 X2NhbGxiYWNrcyhzY2Fuc3RhdGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbikpOwogCisJc2NhbnN0 YXRlLT5zcy5zc19TY2FuVHVwbGVTbG90LT50dHNfZmxhZ3MgfD0gVFRTX0ZMQUdfT0JFWVNfTk9U X05VTExfQ09OU1RSQUlOVFM7CisKIAkvKgogCSAqIEluaXRpYWxpemUgcmVzdWx0IHR5cGUgYW5k IHByb2plY3Rpb24uCiAJICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZt aml0X2RlZm9ybS5jIGIvc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF9kZWZvcm0uYwppbmRl eCAzZWIwODdlYjU2Yi4uMTI1MjFlM2U0NmEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2ppdC9s bHZtL2xsdm1qaXRfZGVmb3JtLmMKKysrIGIvc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF9k ZWZvcm0uYwpAQCAtNjIsNyArNjIsNiBAQCBzbG90X2NvbXBpbGVfZGVmb3JtKExMVk1KaXRDb250 ZXh0ICpjb250ZXh0LCBUdXBsZURlc2MgZGVzYywKIAlMTFZNVmFsdWVSZWYgdl90dHNfdmFsdWVz OwogCUxMVk1WYWx1ZVJlZiB2X3R0c19udWxsczsKIAlMTFZNVmFsdWVSZWYgdl9zbG90b2ZmcDsK LQlMTFZNVmFsdWVSZWYgdl9mbGFnc3A7CiAJTExWTVZhbHVlUmVmIHZfbnZhbGlkcDsKIAlMTFZN VmFsdWVSZWYgdl9udmFsaWQ7CiAJTExWTVZhbHVlUmVmIHZfbWF4YXR0OwpAQCAtMTc4LDcgKzE3 Nyw2IEBAIHNsb3RfY29tcGlsZV9kZWZvcm0oTExWTUppdENvbnRleHQgKmNvbnRleHQsIFR1cGxl RGVzYyBkZXNjLAogCXZfdHRzX251bGxzID0KIAkJbF9sb2FkX3N0cnVjdF9nZXAoYiwgU3RydWN0 VHVwbGVUYWJsZVNsb3QsIHZfc2xvdCwgRklFTEROT19UVVBMRVRBQkxFU0xPVF9JU05VTEwsCiAJ CQkJCQkgICJ0dHNfSVNOVUxMIik7Ci0Jdl9mbGFnc3AgPSBsX3N0cnVjdF9nZXAoYiwgU3RydWN0 VHVwbGVUYWJsZVNsb3QsIHZfc2xvdCwgRklFTEROT19UVVBMRVRBQkxFU0xPVF9GTEFHUywgIiIp OwogCXZfbnZhbGlkcCA9IGxfc3RydWN0X2dlcChiLCBTdHJ1Y3RUdXBsZVRhYmxlU2xvdCwgdl9z bG90LCBGSUVMRE5PX1RVUExFVEFCTEVTTE9UX05WQUxJRCwgIiIpOwogCiAJaWYgKG9wcyA9PSAm VFRTT3BzSGVhcFR1cGxlIHx8IG9wcyA9PSAmVFRTT3BzQnVmZmVySGVhcFR1cGxlKQpAQCAtNzQ3 LDE0ICs3NDUsMTAgQEAgc2xvdF9jb21waWxlX2RlZm9ybShMTFZNSml0Q29udGV4dCAqY29udGV4 dCwgVHVwbGVEZXNjIGRlc2MsCiAKIAl7CiAJCUxMVk1WYWx1ZVJlZiB2X29mZiA9IGxfbG9hZChi LCBUeXBlU2l6ZVQsIHZfb2ZmcCwgIiIpOwotCQlMTFZNVmFsdWVSZWYgdl9mbGFnczsKIAogCQlM TFZNQnVpbGRTdG9yZShiLCBsX2ludDE2X2NvbnN0KGxjLCBuYXR0cyksIHZfbnZhbGlkcCk7CiAJ CXZfb2ZmID0gTExWTUJ1aWxkVHJ1bmMoYiwgdl9vZmYsIExMVk1JbnQzMlR5cGVJbkNvbnRleHQo bGMpLCAiIik7CiAJCUxMVk1CdWlsZFN0b3JlKGIsIHZfb2ZmLCB2X3Nsb3RvZmZwKTsKLQkJdl9m bGFncyA9IGxfbG9hZChiLCBMTFZNSW50MTZUeXBlSW5Db250ZXh0KGxjKSwgdl9mbGFnc3AsICJ0 dHNfZmxhZ3MiKTsKLQkJdl9mbGFncyA9IExMVk1CdWlsZE9yKGIsIHZfZmxhZ3MsIGxfaW50MTZf Y29uc3QobGMsIFRUU19GTEFHX1NMT1cpLCAiIik7Ci0JCUxMVk1CdWlsZFN0b3JlKGIsIHZfZmxh Z3MsIHZfZmxhZ3NwKTsKIAkJTExWTUJ1aWxkUmV0Vm9pZChiKTsKIAl9CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9j YWNoZS9yZWxjYWNoZS5jCmluZGV4IDc3MGVkYjM0ZTA4Li45OThiZTI0YWM0MSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91 dGlscy9jYWNoZS9yZWxjYWNoZS5jCkBAIC02NjYsMTQgKzY2Niw2IEBAIFJlbGF0aW9uQnVpbGRU dXBsZURlc2MoUmVsYXRpb24gcmVsYXRpb24pCiAJCWVsb2coRVJST1IsICJwZ19hdHRyaWJ1dGUg Y2F0YWxvZyBpcyBtaXNzaW5nICVkIGF0dHJpYnV0ZShzKSBmb3IgcmVsYXRpb24gT0lEICV1IiwK IAkJCSBuZWVkLCBSZWxhdGlvbkdldFJlbGlkKHJlbGF0aW9uKSk7CiAKLQkvKgotCSAqIFdlIGNh biBlYXNpbHkgc2V0IHRoZSBhdHRjYWNoZW9mZiB2YWx1ZSBmb3IgdGhlIGZpcnN0IGF0dHJpYnV0 ZTogaXQKLQkgKiBtdXN0IGJlIHplcm8uICBUaGlzIGVsaW1pbmF0ZXMgdGhlIG5lZWQgZm9yIHNw ZWNpYWwgY2FzZXMgZm9yIGF0dG51bT0xCi0JICogdGhhdCB1c2VkIHRvIGV4aXN0IGluIGZhc3Rn ZXRhdHRyKCkgYW5kIGluZGV4X2dldGF0dHIoKS4KLQkgKi8KLQlpZiAoUmVsYXRpb25HZXROdW1i ZXJPZkF0dHJpYnV0ZXMocmVsYXRpb24pID4gMCkKLQkJVHVwbGVEZXNjQ29tcGFjdEF0dHIocmVs YXRpb24tPnJkX2F0dCwgMCktPmF0dGNhY2hlb2ZmID0gMDsKLQogCS8qCiAJICogU2V0IHVwIGNv bnN0cmFpbnQvZGVmYXVsdCBpbmZvCiAJICovCkBAIC0xOTg1LDggKzE5NzcsNiBAQCBmb3JtcmRl c2MoY29uc3QgY2hhciAqcmVsYXRpb25OYW1lLCBPaWQgcmVsYXRpb25SZWx0eXBlLAogCQlwb3B1 bGF0ZV9jb21wYWN0X2F0dHJpYnV0ZShyZWxhdGlvbi0+cmRfYXR0LCBpKTsKIAl9CiAKLQkvKiBp bml0aWFsaXplIGZpcnN0IGF0dHJpYnV0ZSdzIGF0dGNhY2hlb2ZmLCBjZiBSZWxhdGlvbkJ1aWxk VHVwbGVEZXNjICovCi0JVHVwbGVEZXNjQ29tcGFjdEF0dHIocmVsYXRpb24tPnJkX2F0dCwgMCkt PmF0dGNhY2hlb2ZmID0gMDsKIAlUdXBsZURlc2NGaW5hbGl6ZShyZWxhdGlvbi0+cmRfYXR0KTsK IAogCS8qIG1hcmsgbm90LW51bGwgc3RhdHVzICovCkBAIC00NDQ2LDggKzQ0MzYsNiBAQCBCdWls ZEhhcmRjb2RlZERlc2NyaXB0b3IoaW50IG5hdHRzLCBjb25zdCBGb3JtRGF0YV9wZ19hdHRyaWJ1 dGUgKmF0dHJzKQogCQlwb3B1bGF0ZV9jb21wYWN0X2F0dHJpYnV0ZShyZXN1bHQsIGkpOwogCX0K IAotCS8qIGluaXRpYWxpemUgZmlyc3QgYXR0cmlidXRlJ3MgYXR0Y2FjaGVvZmYsIGNmIFJlbGF0 aW9uQnVpbGRUdXBsZURlc2MgKi8KLQlUdXBsZURlc2NDb21wYWN0QXR0cihyZXN1bHQsIDApLT5h dHRjYWNoZW9mZiA9IDA7CiAJVHVwbGVEZXNjRmluYWxpemUocmVzdWx0KTsKIAogCS8qIE5vdGU6 IHdlIGRvbid0IGJvdGhlciB0byBzZXQgdXAgYSBUdXBsZUNvbnN0ciBlbnRyeSAqLwpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3R1cGRlc2MuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90 dXBkZXNjLmgKaW5kZXggNTk1NDEzZGJiYzUuLmQ0YzNhNzQ5NTU4IDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9hY2Nlc3MvdHVwZGVzYy5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90dXBkZXNj LmgKQEAgLTEzMSw2ICsxMzEsMTkgQEAgdHlwZWRlZiBzdHJ1Y3QgQ29tcGFjdEF0dHJpYnV0ZQog ICogQW55IGNvZGUgbWFraW5nIGNoYW5nZXMgbWFudWFsbHkgdG8gYW5kIGZpZWxkcyBpbiB0aGUg Rm9ybURhdGFfcGdfYXR0cmlidXRlCiAgKiBhcnJheSBtdXN0IHN1YnNlcXVlbnRseSBjYWxsIHBv cHVsYXRlX2NvbXBhY3RfYXR0cmlidXRlKCkgdG8gZmx1c2ggdGhlCiAgKiBjaGFuZ2VzIG91dCB0 byB0aGUgY29ycmVzcG9uZGluZyAnY29tcGFjdF9hdHRycycgZWxlbWVudC4KKyAqCisgKiBmaXJz dE5vbkNhY2hlZE9mZnNldEF0dHIgc3RvcmVzIHRoZSBpbmRleCBpbnRvIHRoZSBjb21wYWN0X2F0 dHJzIGFycmF5IGZvcgorICogdGhlIGZpcnN0IGF0dHJpYnV0ZSB0aGF0IHdlIGRvbid0IGhhdmUg YSBrbm93biBhdHRjYWNoZW9mZiBmb3IuCisgKgorICogZmlyc3ROb25HdWFyYW50ZWVkQXR0ciBz dG9yZXMgdGhlIGluZGV4IHRvIGluZm8gdGhlIGNvbXBhY3RfYXR0cnMgYXJyYXkgZm9yCisgKiB0 aGUgZmlyc3QgYXR0cmlidXRlIHRoYXQgaXMgZWl0aGVyIE5VTExhYmxlLCBtaXNzaW5nLCBvciAh YXR0Ynl2YWwuICBUaGlzCisgKiBjYW4gYmUgdXNlZCBpbiBsb2NhdGlvbnMgYXMgYSBndWFyYW50 ZWUgdGhhdCBhdHRyaWJ1dGVzIGJlZm9yZSB0aGlzIHdpbGwKKyAqIGFsd2F5cyBleGlzdCBpbiB0 dXBsZXMuICBUaGUgIWF0dGJ5dmFsIHBhcnQgaXNuJ3QgcmVxdWlyZWQgZm9yIHRoaXMsIGJ1dAor ICogaW5jbHVkaW5nIHRoaXMgYWxsb3dzIHZhcmlvdXMgdHVwbGUgZGVmb3JtaW5nIHJvdXRpbmVz IHRvIGZvcmVnbyBhbnkgY2hlY2tzCisgKiBmb3IgIWF0dGJ5dmFsLgorICoKKyAqIE9uY2UgYSBU dXBsZURlc2MgaGFzIGJlZW4gcG9wdWxhdGVkLCBiZWZvcmUgaXQgaXMgdXNlZCBmb3IgYW55IHB1 cnBvc2UKKyAqIFR1cGxlRGVzY0ZpbmFsaXplKCkgbXVzdCBiZSBjYWxsZWQgb24gaXQuCiAgKi8K IHR5cGVkZWYgc3RydWN0IFR1cGxlRGVzY0RhdGEKIHsKQEAgLTEzOCw2ICsxNTEsMTAgQEAgdHlw ZWRlZiBzdHJ1Y3QgVHVwbGVEZXNjRGF0YQogCU9pZAkJCXRkdHlwZWlkOwkJLyogY29tcG9zaXRl IHR5cGUgSUQgZm9yIHR1cGxlIHR5cGUgKi8KIAlpbnQzMgkJdGR0eXBtb2Q7CQkvKiB0eXBtb2Qg Zm9yIHR1cGxlIHR5cGUgKi8KIAlpbnQJCQl0ZHJlZmNvdW50OwkJLyogcmVmZXJlbmNlIGNvdW50 LCBvciAtMSBpZiBub3QgY291bnRpbmcgKi8KKwlpbnQJCQlmaXJzdE5vbkNhY2hlZE9mZnNldEF0 dHI7CS8qIGluZGV4IG9mIHRoZSBmaXJzdCBhdHQgd2l0aG91dAorCQkJCQkJCQkJCQkgKiBhbiBh dHRjYWNoZW9mZiAqLworCWludAkJCWZpcnN0Tm9uR3VhcmFudGVlZEF0dHI7IC8qIGluZGV4IG9m IHRoZSBmaXJzdCBudWxsYWJsZSwKKwkJCQkJCQkJCQkgKiBtaXNzaW5nIG9yICFhdHRieXZhbCBh dHRyaWJ1dGUuICovCiAJVHVwbGVDb25zdHIgKmNvbnN0cjsJCS8qIGNvbnN0cmFpbnRzLCBvciBO VUxMIGlmIG5vbmUgKi8KIAkvKiBjb21wYWN0X2F0dHJzW05dIGlzIHRoZSBjb21wYWN0IG1ldGFk YXRhIG9mIEF0dHJpYnV0ZSBOdW1iZXIgTisxICovCiAJQ29tcGFjdEF0dHJpYnV0ZSBjb21wYWN0 X2F0dHJzW0ZMRVhJQkxFX0FSUkFZX01FTUJFUl07CkBAIC0xOTUsNyArMjEyLDYgQEAgZXh0ZXJu IFR1cGxlRGVzYyBDcmVhdGVUdXBsZURlc2NUcnVuY2F0ZWRDb3B5KFR1cGxlRGVzYyB0dXBkZXNj LCBpbnQgbmF0dHMpOwogCiBleHRlcm4gVHVwbGVEZXNjIENyZWF0ZVR1cGxlRGVzY0NvcHlDb25z dHIoVHVwbGVEZXNjIHR1cGRlc2MpOwogCi0jZGVmaW5lIFR1cGxlRGVzY0ZpbmFsaXplKGQpICgo dm9pZCkgMCkKICNkZWZpbmUgVHVwbGVEZXNjU2l6ZShzcmMpIFwKIAkob2Zmc2V0b2Yoc3RydWN0 IFR1cGxlRGVzY0RhdGEsIGNvbXBhY3RfYXR0cnMpICsgXAogCSAoc3JjKS0+bmF0dHMgKiBzaXpl b2YoQ29tcGFjdEF0dHJpYnV0ZSkgKyBcCkBAIC0yMDYsNiArMjIyLDcgQEAgZXh0ZXJuIHZvaWQg VHVwbGVEZXNjQ29weShUdXBsZURlc2MgZHN0LCBUdXBsZURlc2Mgc3JjKTsKIGV4dGVybiB2b2lk IFR1cGxlRGVzY0NvcHlFbnRyeShUdXBsZURlc2MgZHN0LCBBdHRyTnVtYmVyIGRzdEF0dG5vLAog CQkJCQkJCSAgIFR1cGxlRGVzYyBzcmMsIEF0dHJOdW1iZXIgc3JjQXR0bm8pOwogCitleHRlcm4g dm9pZCBUdXBsZURlc2NGaW5hbGl6ZShUdXBsZURlc2MgdHVwZGVzYyk7CiBleHRlcm4gdm9pZCBG cmVlVHVwbGVEZXNjKFR1cGxlRGVzYyB0dXBkZXNjKTsKIAogZXh0ZXJuIHZvaWQgSW5jclR1cGxl RGVzY1JlZkNvdW50KFR1cGxlRGVzYyB0dXBkZXNjKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2FjY2Vzcy90dXBtYWNzLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdHVwbWFjcy5oCmluZGV4IGQ2 NGMxOGI5NTBiLi5jOTU4N2ExYWRjNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3R1 cG1hY3MuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdHVwbWFjcy5oCkBAIC0xNSw3ICsxNSw4 IEBACiAjZGVmaW5lIFRVUE1BQ1NfSAogCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlX2QuaCIJ LyogZm9yIFRZUEFMSUdOIG1hY3JvcyAqLwotCisjaW5jbHVkZSAicG9ydC9wZ19iaXR1dGlscy5o IgorI2luY2x1ZGUgInZhcmF0dC5oIgogCiAvKgogICogQ2hlY2sgYSB0dXBsZSdzIG51bGwgYml0 bWFwIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSBhdHRyaWJ1dGUgaXMgbnVsbC4KQEAgLTI4LDYg KzI5LDQ5IEBAIGF0dF9pc251bGwoaW50IEFUVCwgY29uc3QgYml0czggKkJJVFMpCiAJcmV0dXJu ICEoQklUU1tBVFQgPj4gM10gJiAoMSA8PCAoQVRUICYgMHgwNykpKTsKIH0KIAorLyoKKyAqIHBv cHVsYXRlX2lzbnVsbF9hcnJheQorICoJCVRyYW5zZm9ybSBhIHR1cGxlJ3MgbnVsbCBiaXRtYXAg aW50byBhIGJvb2xlYW4gYXJyYXkuCisgKgorICogQ2FsbGVyIG11c3QgZW5zdXJlIHRoYXQgdGhl IGlzbnVsbCBhcnJheSBpcyBzaXplZCBzbyBpdCBjb250YWlucworICogYXQgbGVhc3QgYXMgbWFu eSBlbGVtZW50cyBhcyB0aGVyZSBhcmUgYml0cyBpbiB0aGUgJ2JpdHMnIGFycmF5LgorICogVGhp cyBpcyByZXF1aXJlZCBiZWNhdXNlIHdlIGFsd2F5cyByb3VuZCAnbmF0dHMnIHVwIHRvIHRoZSBu ZXh0IG11bHRpcGxlCisgKiBvZiA4LgorICovCitzdGF0aWMgaW5saW5lIHZvaWQKK3BvcHVsYXRl X2lzbnVsbF9hcnJheShjb25zdCBiaXRzOCAqYml0cywgaW50IG5hdHRzLCBib29sICppc251bGwp Cit7CisJaW50CQkJbmJ5dGVzID0gKG5hdHRzICsgNykgPj4gMzsKKworCS8qCisJICogTXVsdGlw bHlpbmcgYW4gaW52ZXJ0ZWQgTlVMTCBiaXRtYXAgYnl0ZSBieSB0aGlzIHZhbHVlIHJlc3VsdHMg aW4gdGhlCisJICogbG93ZXN0IGJpdCBpbiBlYWNoIGJ5dGUgYmVpbmcgc2V0IHRoZSBzYW1lIGFz IGVhY2ggYml0IG9mIHRoZSBpbnZlcnRlZAorCSAqIGJ5dGUuICBXZSBwZXJmb3JtIHRoaXMgYXMg MiAzMi1iaXQgb3BlcmF0aW9ucyByYXRoZXIgdGhhbiBhIHNpbmdsZQorCSAqIDY0LWJpdCBvcGVy YXRpb24gYXMgbXVsdGlwbHlpbmcgYnkgdGhlIHJlcXVpcmVkIHZhbHVlIHRvIGRvIHRoaXMgaW4K KwkgKiA2NC1iaXRzIHdvdWxkIHJlc3VsdCBpbiBvdmVyZmxvd2luZyBhIHVpbnQ2NCBpbiBzb21l IGNhc2VzLgorCSAqLworI2RlZmluZSBTUFJFQURfQklUU19NVUxUSVBMSUVSXzMyIDB4MjA0MDgx VQorCisJZm9yIChpbnQgaSA9IDA7IGkgPCBuYnl0ZXM7IGkrKywgaXNudWxsICs9IDgpCisJewor CQl1aW50NjQJCWlzbnVsbF84OworCQliaXRzOAkJbnVsbGJ5dGUgPSB+Yml0c1tpXTsKKworCQkv KiBjb252ZXJ0IHRoZSBsb3dlciA0IGJpdHMgb2YgbnVsbCBiaXRtYXAgd29yZCBpbnRvIDMyIGJp dCBpbnQgKi8KKwkJaXNudWxsXzggPSAobnVsbGJ5dGUgJiAweGYpICogU1BSRUFEX0JJVFNfTVVM VElQTElFUl8zMjsKKworCQkvKgorCQkgKiBjb252ZXJ0IHRoZSB1cHBlciA0IGJpdHMgb2YgbnVs bCBiaXRtYXAgd29yZCBpbnRvIDMyIGJpdCBpbnQsIHNoaWZ0CisJCSAqIGludG8gdGhlIHVwcGVy IDMyIGJpdAorCQkgKi8KKwkJaXNudWxsXzggfD0gKCh1aW50NjQpICgobnVsbGJ5dGUgPj4gNCkg KiBTUFJFQURfQklUU19NVUxUSVBMSUVSXzMyKSkgPDwgMzI7CisKKwkJLyogbWFzayBvdXQgYWxs IG90aGVyIGJpdHMgYXBhcnQgZnJvbSB0aGUgbG93ZXN0IGJpdCBvZiBlYWNoIGJ5dGUgKi8KKwkJ aXNudWxsXzggJj0gVUlOVDY0Q09OU1QoMHgwMTAxMDEwMTAxMDEwMTAxKTsKKwkJbWVtY3B5KGlz bnVsbCwgJmlzbnVsbF84LCBzaXplb2YodWludDY0KSk7CisJfQorfQorCiAjaWZuZGVmIEZST05U RU5ECiAvKgogICogR2l2ZW4gYW4gYXR0Ynl2YWwgYW5kIGFuIGF0dGxlbiBmcm9tIGVpdGhlciBh IEZvcm1fcGdfYXR0cmlidXRlIG9yCkBAIC02OSw2ICsxMTMsMTUxIEBAIGZldGNoX2F0dChjb25z dCB2b2lkICpULCBib29sIGF0dGJ5dmFsLCBpbnQgYXR0bGVuKQogCWVsc2UKIAkJcmV0dXJuIFBv aW50ZXJHZXREYXR1bShUKTsKIH0KKworLyoKKyAqIFNhbWUsIGJ1dCBubyBlcnJvciBjaGVja2lu ZyBmb3IgaW52YWxpZCBhdHRsZW5zIGZvciBieXZhbCB0eXBlcy4gIFRoaXMKKyAqIGlzIHNhZmUg dG8gdXNlIHdoZW4gYXR0bGVuIGNvbWVzIGZyb20gQ29tcGFjdEF0dHJpYnV0ZSBhcyB3ZSB2YWxp ZGF0ZSB0aGUKKyAqIGxlbmd0aCB3aGVuIHBvcHVsYXRpbmcgdGhhdCBzdHJ1Y3QuCisgKi8KK3N0 YXRpYyBpbmxpbmUgRGF0dW0KK2ZldGNoX2F0dF9ub2Vycihjb25zdCB2b2lkICpULCBib29sIGF0 dGJ5dmFsLCBpbnQgYXR0bGVuKQoreworCWlmIChhdHRieXZhbCkKKwl7CisJCXN3aXRjaCAoYXR0 bGVuKQorCQl7CisJCQljYXNlIHNpemVvZihpbnQzMik6CisJCQkJcmV0dXJuIEludDMyR2V0RGF0 dW0oKigoY29uc3QgaW50MzIgKikgVCkpOworCQkJY2FzZSBzaXplb2YoaW50MTYpOgorCQkJCXJl dHVybiBJbnQxNkdldERhdHVtKCooKGNvbnN0IGludDE2ICopIFQpKTsKKwkJCWNhc2Ugc2l6ZW9m KGNoYXIpOgorCQkJCXJldHVybiBDaGFyR2V0RGF0dW0oKigoY29uc3QgY2hhciAqKSBUKSk7CisJ CQlkZWZhdWx0OgorCQkJCUFzc2VydChhdHRsZW4gPT0gc2l6ZW9mKGludDY0KSk7CisJCQkJcmV0 dXJuIEludDY0R2V0RGF0dW0oKigoY29uc3QgaW50NjQgKikgVCkpOworCQl9CisJfQorCWVsc2UK KwkJcmV0dXJuIFBvaW50ZXJHZXREYXR1bShUKTsKK30KKworCisvKgorICogYWxpZ25fZmV0Y2hf dGhlbl9hZGQKKyAqCQlBcHBsaWVzIGFsbCB0aGUgZnVuY3Rpb25hbGl0eSBvZiBhdHRfcG9pbnRl cl9hbGlnbmJ5KCksCisgKgkJZmV0Y2hfYXR0X25vZXJyKCkgYW5kIGF0dF9hZGRsZW5ndGhfcG9p bnRlcigpIHJlc3VsdGluZyBpbiAqb2ZmCisgKgkJcG9pbnRlciB0byB0aGUgcGVyaGFwcyB1bmFs aWduZWQgbnVtYmVyIG9mIGJ5dGVzIGludG8gJ3R1cHB0cicsIHJlYWR5CisgKgkJdG8gZGVmb3Jt IHRoZSBuZXh0IGF0dHJpYnV0ZS4KKyAqCisgKiB0dXBwdHI6IHBvaW50ZXIgdG8gdGhlIGJlZ2lu bmluZyBvZiB0aGUgdHVwbGUsIGFmdGVyIHRoZSBoZWFkZXIgYW5kIGFueQorICogTlVMTCBiaXRt YXNrLgorICogb2ZmOiBvZmZzZXQgaW4gYnl0ZXMgZm9yIHJlYWRpbmcgdHVwbGUgZGF0YSwgcG9z c2libHkgdW5hbGlnbmVkLgorICogYXR0Ynl2YWwsIGF0dGxlbiwgYXR0YWxpZ25ieSBhcmUgdmFs dWVzIGZyb20gQ29tcGFjdEF0dHJpYnV0ZS4KKyAqLworc3RhdGljIGlubGluZSBEYXR1bQorYWxp Z25fZmV0Y2hfdGhlbl9hZGQoY29uc3QgY2hhciAqdHVwcHRyLCB1aW50MzIgKm9mZiwgYm9vbCBh dHRieXZhbCwgaW50IGF0dGxlbiwKKwkJCQkJIHVpbnQ4IGF0dGFsaWduYnkpCit7CisJRGF0dW0J CXJlczsKKworCWlmIChhdHRsZW4gPiAwKQorCXsKKwkJY29uc3QgY2hhciAqb2Zmc2V0X3B0cjsK KworCQkqb2ZmID0gVFlQRUFMSUdOKGF0dGFsaWduYnksICpvZmYpOworCQlvZmZzZXRfcHRyID0g dHVwcHRyICsgKm9mZjsKKwkJKm9mZiArPSBhdHRsZW47CisJCWlmIChhdHRieXZhbCkKKwkJewor CQkJc3dpdGNoIChhdHRsZW4pCisJCQl7CisJCQkJY2FzZSBzaXplb2YoY2hhcik6CisJCQkJCXJl dHVybiBDaGFyR2V0RGF0dW0oKigoY29uc3QgY2hhciAqKSBvZmZzZXRfcHRyKSk7CisJCQkJY2Fz ZSBzaXplb2YoaW50MTYpOgorCQkJCQlyZXR1cm4gSW50MTZHZXREYXR1bSgqKChjb25zdCBpbnQx NiAqKSBvZmZzZXRfcHRyKSk7CisJCQkJY2FzZSBzaXplb2YoaW50MzIpOgorCQkJCQlyZXR1cm4g SW50MzJHZXREYXR1bSgqKChjb25zdCBpbnQzMiAqKSBvZmZzZXRfcHRyKSk7CisJCQkJZGVmYXVs dDoKKworCQkJCQkvKgorCQkJCQkgKiBwb3B1bGF0ZV9jb21wYWN0X2F0dHJpYnV0ZV9pbnRlcm5h bCgpIHNob3VsZCBoYXZlCisJCQkJCSAqIGNoZWNrZWQKKwkJCQkJICovCisJCQkJCUFzc2VydChh dHRsZW4gPT0gc2l6ZW9mKGludDY0KSk7CisJCQkJCXJldHVybiBJbnQ2NEdldERhdHVtKCooKGNv bnN0IGludDY0ICopIG9mZnNldF9wdHIpKTsKKwkJCX0KKwkJfQorCQlyZXR1cm4gUG9pbnRlckdl dERhdHVtKG9mZnNldF9wdHIpOworCX0KKwllbHNlIGlmIChhdHRsZW4gPT0gLTEpCisJeworCQlp ZiAoIVZBUkFUVF9JU19TSE9SVCh0dXBwdHIgKyAqb2ZmKSkKKwkJCSpvZmYgPSBUWVBFQUxJR04o YXR0YWxpZ25ieSwgKm9mZik7CisKKwkJcmVzID0gUG9pbnRlckdldERhdHVtKHR1cHB0ciArICpv ZmYpOworCQkqb2ZmICs9IFZBUlNJWkVfQU5ZKERhdHVtR2V0UG9pbnRlcihyZXMpKTsKKwkJcmV0 dXJuIHJlczsKKwl9CisJZWxzZQorCXsKKwkJQXNzZXJ0KGF0dGxlbiA9PSAtMik7CisJCSpvZmYg PSBUWVBFQUxJR04oYXR0YWxpZ25ieSwgKm9mZik7CisJCXJlcyA9IFBvaW50ZXJHZXREYXR1bSh0 dXBwdHIgKyAqb2ZmKTsKKwkJKm9mZiArPSBzdHJsZW4odHVwcHRyICsgKm9mZikgKyAxOworCQly ZXR1cm4gcmVzOworCX0KK30KKworLyoKKyAqIGZpcnN0X251bGxfYXR0cgorICoJCUluc3BlY3Qg YSBOVUxMIGJpdG1hc2sgZnJvbSBhIHR1cGxlIGFuZCByZXR1cm4gdGhlIDAtYmFzZWQgYXR0bnVt IG9mIHRoZQorICoJCWZpcnN0IE5VTEwgYXR0cmlidXRlLiAgUmV0dXJucyBuYXR0cyBpZiBubyBO VUxMcyB3ZXJlIGZvdW5kLgorICoKKyAqIFdlIGV4cGVjdCB0aGF0ICdiaXRzJyBjb250YWlucyBh dCBsZWFzdCBvbmUgMCBiaXQgc29tZXdoZXJlIGluIHRoZSBtYXNrLAorICogbm90IG5lY2Vzc2Fy aWx5IDwgbmF0dHMuCisgKi8KK3N0YXRpYyBpbmxpbmUgaW50CitmaXJzdF9udWxsX2F0dHIoY29u c3QgYml0czggKmJpdHMsIGludCBuYXR0cykKK3sKKwlpbnQJCQlsYXN0Qnl0ZSA9IG5hdHRzID4+ IDM7CisJaW50CQkJYnl0ZW51bTsKKwlpbnQJCQlyZXM7CisKKyNpZmRlZiBVU0VfQVNTRVJUX0NI RUNLSU5HCisJaW50CQkJZmlyc3RudWxsX2NoZWNrID0gbmF0dHM7CisKKwkvKiBEbyBpdCB0aGUg c2xvdyB3YXkgYW5kIGNoZWNrIHdlIGdldCB0aGUgc2FtZSBhbnN3ZXIuICovCisJZm9yIChpbnQg aSA9IDA7IGkgPCBuYXR0czsgaSsrKQorCXsKKwkJaWYgKGF0dF9pc251bGwoaSwgYml0cykpCisJ CXsKKwkJCWZpcnN0bnVsbF9jaGVjayA9IGk7CisJCQlicmVhazsKKwkJfQorCX0KKyNlbmRpZgor CisJLyogUHJvY2VzcyBhbGwgYnl0ZXMgdXAgdG8ganVzdCBiZWZvcmUgdGhlIGJ5dGUgZm9yIHRo ZSBuYXR0cyBpbmRleCAqLworCWZvciAoYnl0ZW51bSA9IDA7IGJ5dGVudW0gPCBsYXN0Qnl0ZTsg Ynl0ZW51bSsrKQorCXsKKwkJLyogYnJlYWsgaWYgdGhlcmUncyBhbnkgTlVMTCBhdHRycyAoYSAw IGJpdCkgKi8KKwkJaWYgKGJpdHNbYnl0ZW51bV0gIT0gMHhGRikKKwkJCWJyZWFrOworCX0KKwor CXJlcyA9IGJ5dGVudW0gPDwgMzsKKwlyZXMgKz0gcGdfcmlnaHRtb3N0X29uZV9wb3MzMih+Yml0 c1tieXRlbnVtXSk7CisKKwkvKgorCSAqIFNpbmNlIHdlIGRpZCBubyBtYXNraW5nIHRvIG1hc2sg b3V0IGJpdHMgYmV5b25kIG5hdHRzLCB3ZSBtYXkgaGF2ZQorCSAqIGZvdW5kIGEgYml0IGhpZ2hl ciB0aGFuIG5hdHRzLCBzbyB3ZSBtdXN0IGNhcCB0byBuYXR0cworCSAqLworCXJlcyA9IE1pbihy ZXMsIG5hdHRzKTsKKworCUFzc2VydChyZXMgPT0gZmlyc3RudWxsX2NoZWNrKTsKKworCXJldHVy biByZXM7Cit9CiAjZW5kaWYJCQkJCQkJLyogRlJPTlRFTkQgKi8KIAogLyoKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2V4ZWN1dG9yL3R1cHRhYmxlLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci90 dXB0YWJsZS5oCmluZGV4IGEyZGZkNzA3ZTc4Li44MzQ2YmU3NzMwMiAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvZXhlY3V0b3IvdHVwdGFibGUuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci90 dXB0YWJsZS5oCkBAIC04NCw5ICs4NCw2IEBACiAgKiB0dHNfdmFsdWVzL3R0c19pc251bGwgYXJl IGFsbG9jYXRlZCBlaXRoZXIgd2hlbiB0aGUgc2xvdCBpcyBjcmVhdGVkICh3aGVuCiAgKiB0aGUg ZGVzY3JpcHRvciBpcyBwcm92aWRlZCksIG9yIHdoZW4gYSBkZXNjcmlwdG9yIGlzIGFzc2lnbmVk IHRvIHRoZSBzbG90OwogICogdGhleSBhcmUgb2YgbGVuZ3RoIGVxdWFsIHRvIHRoZSBkZXNjcmlw dG9yJ3MgbmF0dHMuCi0gKgotICogVGhlIFRUU19GTEFHX1NMT1cgZmxhZyBpcyBzYXZlZCBzdGF0 ZSBmb3IKLSAqIHNsb3RfZGVmb3JtX2hlYXBfdHVwbGUsIGFuZCBzaG91bGQgbm90IGJlIHRvdWNo ZWQgYnkgYW55IG90aGVyIGNvZGUuCiAgKi0tLS0tLS0tLS0KICAqLwogCkBAIC05OCwxMiArOTUs MTMgQEAKICNkZWZpbmUJCQlUVFNfRkxBR19TSE9VTERGUkVFCQkoMSA8PCAyKQogI2RlZmluZSBU VFNfU0hPVUxERlJFRShzbG90KSAoKChzbG90KS0+dHRzX2ZsYWdzICYgVFRTX0ZMQUdfU0hPVUxE RlJFRSkgIT0gMCkKIAotLyogc2F2ZWQgc3RhdGUgZm9yIHNsb3RfZGVmb3JtX2hlYXBfdHVwbGUg Ki8KLSNkZWZpbmUJCQlUVFNfRkxBR19TTE9XCQkoMSA8PCAzKQotI2RlZmluZSBUVFNfU0xPVyhz bG90KSAoKChzbG90KS0+dHRzX2ZsYWdzICYgVFRTX0ZMQUdfU0xPVykgIT0gMCkKKy8qIHRydWUg PSBmb3JtZWQgdHVwbGUgZ3VhcmFudGVlZCB0byBub3QgaGF2ZSBOVUxMcyBpbiBOT1QgTlVMTGFi bGUgY29sdW1ucyAqLworI2RlZmluZQkJCVRUU19GTEFHX09CRVlTX05PVF9OVUxMX0NPTlNUUkFJ TlRTCQkoMSA8PCAzKQorI2RlZmluZSBUVFNfT0JFWVNfTk9UX05VTExfQ09OU1RSQUlOVFMoc2xv dCkgXAorCSgoKHNsb3QpLT50dHNfZmxhZ3MgJiBUVFNfRkxBR19PQkVZU19OT1RfTlVMTF9DT05T VFJBSU5UUykgIT0gMCkKIAogLyogZml4ZWQgdHVwbGUgZGVzY3JpcHRvciAqLwotI2RlZmluZQkJ CVRUU19GTEFHX0ZJWEVECQkoMSA8PCA0KQorI2RlZmluZQkJCVRUU19GTEFHX0ZJWEVECQkoMSA8 PCA0KQkvKiBYWFggY2hhbmdlIHRvICMzPyAqLwogI2RlZmluZSBUVFNfRklYRUQoc2xvdCkgKCgo c2xvdCktPnR0c19mbGFncyAmIFRUU19GTEFHX0ZJWEVEKSAhPSAwKQogCiBzdHJ1Y3QgVHVwbGVU YWJsZVNsb3RPcHM7CkBAIC0xMjMsNyArMTIxLDkgQEAgdHlwZWRlZiBzdHJ1Y3QgVHVwbGVUYWJs ZVNsb3QKICNkZWZpbmUgRklFTEROT19UVVBMRVRBQkxFU0xPVF9WQUxVRVMgNQogCURhdHVtCSAg ICp0dHNfdmFsdWVzOwkJLyogY3VycmVudCBwZXItYXR0cmlidXRlIHZhbHVlcyAqLwogI2RlZmlu ZSBGSUVMRE5PX1RVUExFVEFCTEVTTE9UX0lTTlVMTCA2Ci0JYm9vbAkgICAqdHRzX2lzbnVsbDsJ CS8qIGN1cnJlbnQgcGVyLWF0dHJpYnV0ZSBpc251bGwgZmxhZ3MgKi8KKwlib29sCSAgICp0dHNf aXNudWxsOwkJLyogY3VycmVudCBwZXItYXR0cmlidXRlIGlzbnVsbCBmbGFncy4gIEFycmF5CisJ CQkJCQkJCSAqIHNpemUgbXVzdCBhbHdheXMgYmUgcm91bmRlZCB1cCB0byB0aGUgbmV4dAorCQkJ CQkJCQkgKiBtdWx0aXBsZSBvZiA4IGVsZW1lbnRzLiAqLwogCU1lbW9yeUNvbnRleHQgdHRzX21j eHQ7CQkvKiBzbG90IGl0c2VsZiBpcyBpbiB0aGlzIGNvbnRleHQgKi8KIAlJdGVtUG9pbnRlckRh dGEgdHRzX3RpZDsJLyogc3RvcmVkIHR1cGxlJ3MgdGlkICovCiAJT2lkCQkJdHRzX3RhYmxlT2lk OwkvKiB0YWJsZSBvaWQgb2YgdHVwbGUgKi8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMv ZGVmb3JtX2JlbmNoL2RlZm9ybV9iZW5jaC5jIGIvc3JjL3Rlc3QvbW9kdWxlcy9kZWZvcm1fYmVu Y2gvZGVmb3JtX2JlbmNoLmMKaW5kZXggNzgzOGY2MzliZWYuLmRlMzlmZWNmOGZkIDEwMDY0NAot LS0gYS9zcmMvdGVzdC9tb2R1bGVzL2RlZm9ybV9iZW5jaC9kZWZvcm1fYmVuY2guYworKysgYi9z cmMvdGVzdC9tb2R1bGVzL2RlZm9ybV9iZW5jaC9kZWZvcm1fYmVuY2guYwpAQCAtNDksNiArNDks NyBAQCBkZWZvcm1fYmVuY2goUEdfRlVOQ1RJT05fQVJHUykKIAogCXR1cGRlc2MgPSBSZWxhdGlv bkdldERlc2NyKHJlbCk7CiAJc2xvdCA9IE1ha2VUdXBsZVRhYmxlU2xvdCh0dXBkZXNjLCAmVFRT T3BzQnVmZmVySGVhcFR1cGxlKTsKKwlzbG90LT50dHNfZmxhZ3MgfD0gVFRTX0ZMQUdfT0JFWVNf Tk9UX05VTExfQ09OU1RSQUlOVFM7CiAJc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdChyZWws IEdldEFjdGl2ZVNuYXBzaG90KCksIDAsIE5VTEwsIHRydWUsIGZhbHNlKTsKIAogCS8qCi0tIAoy LjUxLjAKCg== --000000000000c0b48e064b8892d7 Content-Type: text/plain; charset="US-ASCII"; name="v9-0004-Allow-sibling-call-optimization-in-slot_getsomeat.patch" Content-Disposition: attachment; filename="v9-0004-Allow-sibling-call-optimization-in-slot_getsomeat.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlzysjw43 RnJvbSAyOWRkYzQ2NzM3YTUxODA3ODZiMzZkYWJhM2M3MjNkOTEwYTQ0YmMxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZpZCBSb3dsZXkgPGRncm93bGV5QGdtYWlsLmNvbT4KRGF0 ZTogTW9uLCAxNiBGZWIgMjAyNiAxNDoyMDoxOSArMTMwMApTdWJqZWN0OiBbUEFUQ0ggdjkgNC81 XSBBbGxvdyBzaWJsaW5nIGNhbGwgb3B0aW1pemF0aW9uIGluCiBzbG90X2dldHNvbWVhdHRyc19p bnQoKQoKVGhpcyBjaGFuZ2VzIHRoZSBUdXBsZVRhYmxlU2xvdE9wcyBjb250cmFjdCB0byBtYWtl IGl0IHNvIHRoZQpnZXRzb21lYXR0cnMoKSBmdW5jdGlvbiBpcyBpbiBjaGFyZ2Ugb2YgY2FsbGlu ZwpzbG90X2dldG1pc3NpbmdhdHRycygpLgoKU2luY2UgdGhpcyByZW1vdmVzIGFsbCBjb2RlIGZy b20gc2xvdF9nZXRzb21lYXR0cnNfaW50KCkgYXNpZGUgZnJvbSB0aGUKZ2V0c29tZWF0dHJzKCkg Y2FsbCBpdHNlbGYsIHdlIG1heSBhcyB3ZWxsIGFkanVzdCBzbG90X2dldHNvbWVhdHRycygpIHNv CnRoYXQgaXQgY2FsbHMgZ2V0c29tZWF0dHJzKCkgZGlyZWN0bHkuICBXZSBsZWF2ZSBzbG90X2dl dHNvbWVhdHRyc19pbnQoKQppbnRhY3QgYXMgdGhpcyBpcyBzdGlsbCBjYWxsZWQgZnJvbSB0aGUg SklUIGNvZGUuCi0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1R1cGxlcy5jIHwgNzkgKysr KysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQogc3JjL2luY2x1ZGUvZXhlY3V0b3IvdHVwdGFi bGUuaCAgIHwgIDcgKy0tCiAyIGZpbGVzIGNoYW5nZWQsIDQ0IGluc2VydGlvbnMoKyksIDQyIGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNUdXBsZXMu YyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNUdXBsZXMuYwppbmRleCA4MGZhZjI5Yjc5Ny4u MjA3MGM2NjVkMmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNUdXBsZXMu YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVHVwbGVzLmMKQEAgLTczLDcgKzczLDcg QEAKIHN0YXRpYyBUdXBsZURlc2MgRXhlY1R5cGVGcm9tVExJbnRlcm5hbChMaXN0ICp0YXJnZXRM aXN0LAogCQkJCQkJCQkJCWJvb2wgc2tpcGp1bmspOwogc3RhdGljIHBnX2F0dHJpYnV0ZV9hbHdh eXNfaW5saW5lIHZvaWQgc2xvdF9kZWZvcm1faGVhcF90dXBsZShUdXBsZVRhYmxlU2xvdCAqc2xv dCwgSGVhcFR1cGxlIHR1cGxlLCB1aW50MzIgKm9mZnAsCi0JCQkJCQkJCQkJCQkJCQkgIGludCBu YXR0cyk7CisJCQkJCQkJCQkJCQkJCQkgIGludCByZXFuYXR0cyk7CiBzdGF0aWMgaW5saW5lIHZv aWQgdHRzX2J1ZmZlcl9oZWFwX3N0b3JlX3R1cGxlKFR1cGxlVGFibGVTbG90ICpzbG90LAogCQkJ CQkJCQkJCQkgICBIZWFwVHVwbGUgdHVwbGUsCiAJCQkJCQkJCQkJCSAgIEJ1ZmZlciBidWZmZXIs CkBAIC05OTYsNyArOTk2LDEwIEBAIHR0c19idWZmZXJfaGVhcF9zdG9yZV90dXBsZShUdXBsZVRh YmxlU2xvdCAqc2xvdCwgSGVhcFR1cGxlIHR1cGxlLAogICogc2xvdF9kZWZvcm1faGVhcF90dXBs ZQogICoJCUdpdmVuIGEgVHVwbGVUYWJsZVNsb3QsIGV4dHJhY3QgZGF0YSBmcm9tIHRoZSBzbG90 J3MgcGh5c2ljYWwgdHVwbGUKICAqCQlpbnRvIGl0cyBEYXR1bS9pc251bGwgYXJyYXlzLiAgRGF0 YSBpcyBleHRyYWN0ZWQgdXAgdGhyb3VnaCB0aGUKLSAqCQluYXR0cyd0aCBjb2x1bW4gKGNhbGxl ciBtdXN0IGVuc3VyZSB0aGlzIGlzIGEgbGVnYWwgY29sdW1uIG51bWJlcikuCisgKgkJcmVxbmF0 dHMndGggY29sdW1uLiAgSWYgdGhlcmUgYXJlIGluc3VmZmljaWVudCBhdHRyaWJ1dGVzIGluIHRo ZSBnaXZlbgorICoJCXR1cGxlLCB0aGVuIHNsb3RfZ2V0bWlzc2luZ2F0dHJzKCkgaXMgY2FsbGVk IHRvIHBvcHVsYXRlIHRoZQorICoJCXJlbWFpbmRlci4gIElmIHJlcW5hdHRzIGlzIGFib3ZlIHRo ZSBudW1iZXIgb2YgYXR0cmlidXRlcyBpbiB0aGUKKyAqCQlzbG90J3MgVHVwbGVEZXNjLCBhbiBl cnJvciBpcyByYWlzZWQuCiAgKgogICoJCVRoaXMgaXMgZXNzZW50aWFsbHkgYW4gaW5jcmVtZW50 YWwgdmVyc2lvbiBvZiBoZWFwX2RlZm9ybV90dXBsZToKICAqCQlvbiBlYWNoIGNhbGwgd2UgZXh0 cmFjdCBhdHRyaWJ1dGVzIHVwIHRvIHRoZSBvbmUgbmVlZGVkLCB3aXRob3V0CkBAIC0xMDA4LDcg KzEwMTEsNyBAQCB0dHNfYnVmZmVyX2hlYXBfc3RvcmVfdHVwbGUoVHVwbGVUYWJsZVNsb3QgKnNs b3QsIEhlYXBUdXBsZSB0dXBsZSwKICAqLwogc3RhdGljIHBnX2F0dHJpYnV0ZV9hbHdheXNfaW5s aW5lIHZvaWQKIHNsb3RfZGVmb3JtX2hlYXBfdHVwbGUoVHVwbGVUYWJsZVNsb3QgKnNsb3QsIEhl YXBUdXBsZSB0dXBsZSwgdWludDMyICpvZmZwLAotCQkJCQkgICBpbnQgbmF0dHMpCisJCQkJCSAg IGludCByZXFuYXR0cykKIHsKIAlDb21wYWN0QXR0cmlidXRlICpjYXR0cjsKIAlUdXBsZURlc2MJ dHVwbGVEZXNjID0gc2xvdC0+dHRzX3R1cGxlRGVzY3JpcHRvcjsKQEAgLTEwMTcsNiArMTAyMCw3 IEBAIHNsb3RfZGVmb3JtX2hlYXBfdHVwbGUoVHVwbGVUYWJsZVNsb3QgKnNsb3QsIEhlYXBUdXBs ZSB0dXBsZSwgdWludDMyICpvZmZwLAogCWludAkJCWZpcnN0Tm9uQ2FjaGVPZmZzZXRBdHRyOwog CWludAkJCWZpcnN0Tm9uR3VhcmFudGVlZEF0dHI7CiAJaW50CQkJZmlyc3ROdWxsQXR0cjsKKwlp bnQJCQluYXR0czsKIAlEYXR1bQkgICAqdmFsdWVzOwogCWJvb2wJICAgKmlzbnVsbDsKIAljaGFy CSAgICp0cDsJCQkJLyogcHRyIHRvIHR1cGxlIGRhdGEgKi8KQEAgLTEwMzgsNyArMTA0Miw3IEBA IHNsb3RfZGVmb3JtX2hlYXBfdHVwbGUoVHVwbGVUYWJsZVNsb3QgKnNsb3QsIEhlYXBUdXBsZSB0 dXBsZSwgdWludDMyICpvZmZwLAogCSAqIGF0dHJzLgogCSAqLwogCWlmIChUVFNfT0JFWVNfTk9U X05VTExfQ09OU1RSQUlOVFMoc2xvdCkpCi0JCWZpcnN0Tm9uR3VhcmFudGVlZEF0dHIgPSBNaW4o bmF0dHMsIHR1cGxlRGVzYy0+Zmlyc3ROb25HdWFyYW50ZWVkQXR0cik7CisJCWZpcnN0Tm9uR3Vh cmFudGVlZEF0dHIgPSBNaW4ocmVxbmF0dHMsIHR1cGxlRGVzYy0+Zmlyc3ROb25HdWFyYW50ZWVk QXR0cik7CiAJZWxzZQogCQlmaXJzdE5vbkd1YXJhbnRlZWRBdHRyID0gMDsKIApAQCAtMTA0Niwx MiArMTA1MCwxMSBAQCBzbG90X2RlZm9ybV9oZWFwX3R1cGxlKFR1cGxlVGFibGVTbG90ICpzbG90 LCBIZWFwVHVwbGUgdHVwbGUsIHVpbnQzMiAqb2ZmcCwKIAogCWlmIChIZWFwVHVwbGVIYXNOdWxs cyh0dXBsZSkpCiAJewotCQlpbnQJCQl0dXBuYXR0cyA9IEhlYXBUdXBsZUhlYWRlckdldE5hdHRz KHR1cCk7Ci0KKwkJbmF0dHMgPSBIZWFwVHVwbGVIZWFkZXJHZXROYXR0cyh0dXApOwogCQl0cCA9 IChjaGFyICopIHR1cCArIE1BWEFMSUdOKG9mZnNldG9mKEhlYXBUdXBsZUhlYWRlckRhdGEsIHRf Yml0cykgKwotCQkJCQkJCQkJIEJJVE1BUExFTih0dXBuYXR0cykpOworCQkJCQkJCQkJIEJJVE1B UExFTihuYXR0cykpOwogCi0JCW5hdHRzID0gTWluKHR1cG5hdHRzLCBuYXR0cyk7CisJCW5hdHRz ID0gTWluKG5hdHRzLCByZXFuYXR0cyk7CiAJCWlmIChuYXR0cyA+IGZpcnN0Tm9uR3VhcmFudGVl ZEF0dHIpCiAJCXsKIAkJCWJpdHM4CSAgICpicCA9IHR1cC0+dF9iaXRzOwpAQCAtMTA4Miw4ICsx MDg1LDEzIEBAIHNsb3RfZGVmb3JtX2hlYXBfdHVwbGUoVHVwbGVUYWJsZVNsb3QgKnNsb3QsIEhl YXBUdXBsZSB0dXBsZSwgdWludDMyICpvZmZwLAogCQkgKiBXZSBvbmx5IG5lZWQgdG8gbG9vayBh dCB0aGUgdHVwbGUncyBuYXR0cyBpZiB3ZSBuZWVkIG1vcmUgdGhhbiB0aGUKIAkJICogZ3VhcmFu dGVlZCBudW1iZXIgb2YgY29sdW1ucwogCQkgKi8KLQkJaWYgKG5hdHRzID4gZmlyc3ROb25HdWFy YW50ZWVkQXR0cikKLQkJCW5hdHRzID0gTWluKEhlYXBUdXBsZUhlYWRlckdldE5hdHRzKHR1cCks IG5hdHRzKTsKKwkJaWYgKHJlcW5hdHRzID4gZmlyc3ROb25HdWFyYW50ZWVkQXR0cikKKwkJCW5h dHRzID0gTWluKEhlYXBUdXBsZUhlYWRlckdldE5hdHRzKHR1cCksIHJlcW5hdHRzKTsKKwkJZWxz ZQorCQl7CisJCQkvKiBObyBuZWVkIHRvIGFjY2VzcyB0aGUgbnVtYmVyIG9mIGF0dHJpYnV0ZXMg aW4gdGhlIHR1cGxlICovCisJCQluYXR0cyA9IHJlcW5hdHRzOworCQl9CiAKIAkJLyogQWxsIGF0 dHJzIGNhbiBiZSBmZXRjaGVkIHdpdGhvdXQgY2hlY2tpbmcgZm9yIE5VTExzICovCiAJCWZpcnN0 TnVsbEF0dHIgPSBuYXR0czsKQEAgLTEwOTEsNyArMTA5OSw3IEBAIHNsb3RfZGVmb3JtX2hlYXBf dHVwbGUoVHVwbGVUYWJsZVNsb3QgKnNsb3QsIEhlYXBUdXBsZSB0dXBsZSwgdWludDMyICpvZmZw LAogCiAJYXR0bnVtID0gc2xvdC0+dHRzX252YWxpZDsKIAl2YWx1ZXMgPSBzbG90LT50dHNfdmFs dWVzOwotCXNsb3QtPnR0c19udmFsaWQgPSBuYXR0czsKKwlzbG90LT50dHNfbnZhbGlkID0gcmVx bmF0dHM7CiAKIAkvKiBFbnN1cmUgd2UgY2FsY3VsYXRlZCB0cCBjb3JyZWN0bHkgKi8KIAlBc3Nl cnQodHAgPT0gKGNoYXIgKikgdHVwICsgdHVwLT50X2hvZmYpOwpAQCAtMTEyMyw3ICsxMTMxLDcg QEAgc2xvdF9kZWZvcm1faGVhcF90dXBsZShUdXBsZVRhYmxlU2xvdCAqc2xvdCwgSGVhcFR1cGxl IHR1cGxlLCB1aW50MzIgKm9mZnAsCiAKIAkJb2ZmICs9IGNhdHRyLT5hdHRsZW47CiAKLQkJaWYg KGF0dG51bSA9PSBuYXR0cykKKwkJaWYgKGF0dG51bSA9PSByZXFuYXR0cykKIAkJCWdvdG8gZG9u ZTsKIAl9CiAJZWxzZQpAQCAtMTIyMiwxMiArMTIzMCwxMiBAQCBzbG90X2RlZm9ybV9oZWFwX3R1 cGxlKFR1cGxlVGFibGVTbG90ICpzbG90LCBIZWFwVHVwbGUgdHVwbGUsIHVpbnQzMiAqb2ZmcCwK IAkJCQkJCQkJCQkJICBjYXR0ci0+YXR0YWxpZ25ieSk7CiAJfQogCisJLyogRmV0Y2ggYW55IG1p c3NpbmcgYXR0cnMgYW5kIHJhaXNlIGFuIGVycm9yIGlmIHJlcW5hdHRzIGlzIGludmFsaWQgKi8K KwlpZiAodW5saWtlbHkoYXR0bnVtIDwgcmVxbmF0dHMpKQorCQlzbG90X2dldG1pc3NpbmdhdHRy cyhzbG90LCBhdHRudW0sIHJlcW5hdHRzKTsKIGRvbmU6CiAKLQkvKgotCSAqIFNhdmUgc3RhdGUg Zm9yIG5leHQgZXhlY3V0aW9uCi0JICovCi0Jc2xvdC0+dHRzX252YWxpZCA9IGF0dG51bTsKKwkv KiBTYXZlIGN1cnJlbnQgb2Zmc2V0IGZvciBuZXh0IGV4ZWN1dGlvbiAqLwogCSpvZmZwID0gb2Zm OwogfQogCkBAIC0yMDg4LDI4ICsyMDk2LDI5IEBAIHNsb3RfZ2V0bWlzc2luZ2F0dHJzKFR1cGxl VGFibGVTbG90ICpzbG90LCBpbnQgc3RhcnRBdHROdW0sIGludCBsYXN0QXR0TnVtKQogCWlmICgh YXR0cm1pc3MpCiAJewogCQkvKiBubyBtaXNzaW5nIHZhbHVlcyBhcnJheSBhdCBhbGwsIHNvIGp1 c3QgZmlsbCBldmVyeXRoaW5nIGluIGFzIE5VTEwgKi8KLQkJbWVtc2V0KHNsb3QtPnR0c192YWx1 ZXMgKyBzdGFydEF0dE51bSwgMCwKLQkJCSAgIChsYXN0QXR0TnVtIC0gc3RhcnRBdHROdW0pICog c2l6ZW9mKERhdHVtKSk7Ci0JCW1lbXNldChzbG90LT50dHNfaXNudWxsICsgc3RhcnRBdHROdW0s IDEsCi0JCQkgICAobGFzdEF0dE51bSAtIHN0YXJ0QXR0TnVtKSAqIHNpemVvZihib29sKSk7CisJ CWZvciAoaW50IGF0dG51bSA9IHN0YXJ0QXR0TnVtOyBhdHRudW0gPCBsYXN0QXR0TnVtOyBhdHRu dW0rKykKKwkJeworCQkJc2xvdC0+dHRzX3ZhbHVlc1thdHRudW1dID0gKERhdHVtKSAwOworCQkJ c2xvdC0+dHRzX2lzbnVsbFthdHRudW1dID0gdHJ1ZTsKKwkJfQogCX0KIAllbHNlCiAJewotCQlp bnQJCQltaXNzYXR0bnVtOwotCi0JCS8qIGlmIHRoZXJlIGlzIGEgbWlzc2luZyB2YWx1ZXMgYXJy YXkgd2UgbXVzdCBwcm9jZXNzIHRoZW0gb25lIGJ5IG9uZSAqLwotCQlmb3IgKG1pc3NhdHRudW0g PSBzdGFydEF0dE51bTsKLQkJCSBtaXNzYXR0bnVtIDwgbGFzdEF0dE51bTsKLQkJCSBtaXNzYXR0 bnVtKyspCisJCS8qIHVzZSBhdHRybWlzcyB0byBzZXQgdGhlIG1pc3NpbmcgdmFsdWVzICovCisJ CWZvciAoaW50IGF0dG51bSA9IHN0YXJ0QXR0TnVtOyBhdHRudW0gPCBsYXN0QXR0TnVtOyBhdHRu dW0rKykKIAkJewotCQkJc2xvdC0+dHRzX3ZhbHVlc1ttaXNzYXR0bnVtXSA9IGF0dHJtaXNzW21p c3NhdHRudW1dLmFtX3ZhbHVlOwotCQkJc2xvdC0+dHRzX2lzbnVsbFttaXNzYXR0bnVtXSA9ICFh dHRybWlzc1ttaXNzYXR0bnVtXS5hbV9wcmVzZW50OworCQkJc2xvdC0+dHRzX3ZhbHVlc1thdHRu dW1dID0gYXR0cm1pc3NbYXR0bnVtXS5hbV92YWx1ZTsKKwkJCXNsb3QtPnR0c19pc251bGxbYXR0 bnVtXSA9ICFhdHRybWlzc1thdHRudW1dLmFtX3ByZXNlbnQ7CiAJCX0KIAl9CisKKwlpZiAodW5s aWtlbHkobGFzdEF0dE51bSA+IHNsb3QtPnR0c190dXBsZURlc2NyaXB0b3ItPm5hdHRzKSkKKwkJ ZWxvZyhFUlJPUiwgImludmFsaWQgYXR0cmlidXRlIG51bWJlciAlZCIsIGxhc3RBdHROdW0pOwog fQogCiAvKgotICogc2xvdF9nZXRzb21lYXR0cnNfaW50IC0gd29ya2hvcnNlIGZvciBzbG90X2dl dHNvbWVhdHRycygpCisgKiBzbG90X2dldHNvbWVhdHRyc19pbnQKKyAqCQlleHRlcm5hbCBmdW5j dGlvbiB0byBjYWxsIGdldHNvbWVhdHRycygpIGZvciB1c2UgaW4gSklUCiAgKi8KIHZvaWQKIHNs b3RfZ2V0c29tZWF0dHJzX2ludChUdXBsZVRhYmxlU2xvdCAqc2xvdCwgaW50IGF0dG51bSkKQEAg LTIxMTgsMjEgKzIxMjcsMTMgQEAgc2xvdF9nZXRzb21lYXR0cnNfaW50KFR1cGxlVGFibGVTbG90 ICpzbG90LCBpbnQgYXR0bnVtKQogCUFzc2VydChzbG90LT50dHNfbnZhbGlkIDwgYXR0bnVtKTsJ LyogY2hlY2tlZCBpbiBzbG90X2dldHNvbWVhdHRycyAqLwogCUFzc2VydChhdHRudW0gPiAwKTsK IAotCWlmICh1bmxpa2VseShhdHRudW0gPiBzbG90LT50dHNfdHVwbGVEZXNjcmlwdG9yLT5uYXR0 cykpCi0JCWVsb2coRVJST1IsICJpbnZhbGlkIGF0dHJpYnV0ZSBudW1iZXIgJWQiLCBhdHRudW0p OwotCiAJLyogRmV0Y2ggYXMgbWFueSBhdHRyaWJ1dGVzIGFzIHBvc3NpYmxlIGZyb20gdGhlIHVu ZGVybHlpbmcgdHVwbGUuICovCiAJc2xvdC0+dHRzX29wcy0+Z2V0c29tZWF0dHJzKHNsb3QsIGF0 dG51bSk7CiAKIAkvKgotCSAqIElmIHRoZSB1bmRlcmx5aW5nIHR1cGxlIGRvZXNuJ3QgaGF2ZSBl bm91Z2ggYXR0cmlidXRlcywgdHVwbGUKLQkgKiBkZXNjcmlwdG9yIG11c3QgaGF2ZSB0aGUgbWlz c2luZyBhdHRyaWJ1dGVzLgorCSAqIEF2b2lkIHB1dHRpbmcgbmV3IGNvZGUgaGVyZSBhcyB0aGF0 IHdvdWxkIHByZXZlbnQgdGhlIGNvbXBpbGVyIGZyb20KKwkgKiB1c2luZyB0aGUgc2libGluZyBj YWxsIG9wdGltaXphdGlvbiBmb3IgdGhlIGFib3ZlIGZ1bmN0aW9uLgogCSAqLwotCWlmICh1bmxp a2VseShzbG90LT50dHNfbnZhbGlkIDwgYXR0bnVtKSkKLQl7Ci0JCXNsb3RfZ2V0bWlzc2luZ2F0 dHJzKHNsb3QsIHNsb3QtPnR0c19udmFsaWQsIGF0dG51bSk7Ci0JCXNsb3QtPnR0c19udmFsaWQg PSBhdHRudW07Ci0JfQogfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9l eGVjdXRvci90dXB0YWJsZS5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvdHVwdGFibGUuaAppbmRl eCA4MzQ2YmU3NzMwMi4uMTkyMmM5MTIwODkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1 dG9yL3R1cHRhYmxlLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvdHVwdGFibGUuaApAQCAt MTUzLDggKzE1Myw4IEBAIHN0cnVjdCBUdXBsZVRhYmxlU2xvdE9wcwogCSAqIEZpbGwgdXAgZmly c3QgbmF0dHMgZW50cmllcyBvZiB0dHNfdmFsdWVzIGFuZCB0dHNfaXNudWxsIGFycmF5cyB3aXRo CiAJICogdmFsdWVzIGZyb20gdGhlIHR1cGxlIGNvbnRhaW5lZCBpbiB0aGUgc2xvdC4gVGhlIGZ1 bmN0aW9uIG1heSBiZSBjYWxsZWQKIAkgKiB3aXRoIG5hdHRzIG1vcmUgdGhhbiB0aGUgbnVtYmVy IG9mIGF0dHJpYnV0ZXMgYXZhaWxhYmxlIGluIHRoZSB0dXBsZSwKLQkgKiBpbiB3aGljaCBjYXNl IGl0IHNob3VsZCBzZXQgdHRzX252YWxpZCB0byB0aGUgbnVtYmVyIG9mIHJldHVybmVkCi0JICog Y29sdW1ucy4KKwkgKiBpbiB3aGljaCBjYXNlIHRoZSBmdW5jdGlvbiBtdXN0IGNhbGwgc2xvdF9n ZXRtaXNzaW5nYXR0cnMoKSB0byBwb3B1bGF0ZQorCSAqIHRoZSByZW1haW5pbmcgYXR0cmlidXRl cy4KIAkgKi8KIAl2b2lkCQkoKmdldHNvbWVhdHRycykgKFR1cGxlVGFibGVTbG90ICpzbG90LCBp bnQgbmF0dHMpOwogCkBAIC0zNTcsOCArMzU3LDkgQEAgZXh0ZXJuIHZvaWQgc2xvdF9nZXRzb21l YXR0cnNfaW50KFR1cGxlVGFibGVTbG90ICpzbG90LCBpbnQgYXR0bnVtKTsKIHN0YXRpYyBpbmxp bmUgdm9pZAogc2xvdF9nZXRzb21lYXR0cnMoVHVwbGVUYWJsZVNsb3QgKnNsb3QsIGludCBhdHRu dW0pCiB7CisJLyogUG9wdWxhdGUgc2xvdCB3aXRoIGF0dHJpYnV0ZXMgdXAgdG8gJ2F0dG51bScs IGlmIGl0J3Mgbm90IGFscmVhZHkgKi8KIAlpZiAoc2xvdC0+dHRzX252YWxpZCA8IGF0dG51bSkK LQkJc2xvdF9nZXRzb21lYXR0cnNfaW50KHNsb3QsIGF0dG51bSk7CisJCXNsb3QtPnR0c19vcHMt PmdldHNvbWVhdHRycyhzbG90LCBhdHRudW0pOwogfQogCiAvKgotLSAKMi41MS4wCgo= --000000000000c0b48e064b8892d7 Content-Type: text/plain; charset="US-ASCII"; name="v9-0005-Reduce-size-of-CompactAttribute-struct-to-8-bytes.patch" Content-Disposition: attachment; filename="v9-0005-Reduce-size-of-CompactAttribute-struct-to-8-bytes.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlzysmaw4 RnJvbSBkYjhkYWViZjZhNDZhZWY4MmEwZjhkZTcwMzQ0MTY1ZDNjMTcxZmI0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZpZCBSb3dsZXkgPGRncm93bGV5QGdtYWlsLmNvbT4KRGF0 ZTogTW9uLCAyMyBGZWIgMjAyNiAwOTozOTozNyArMTMwMApTdWJqZWN0OiBbUEFUQ0ggdjkgNS81 XSBSZWR1Y2Ugc2l6ZSBvZiBDb21wYWN0QXR0cmlidXRlIHN0cnVjdCB0byA4IGJ5dGVzCgpQcmV2 aW91c2x5LCB0aGlzIHdhcyAxNiBieXRlcy4gIFdpdGggdGhlIHVzZSBvZiBzb21lIGJpdGZsYWdz IGFuZCBieQpyZWR1Y2luZyB0aGUgYXR0Y2FjaGVvZmYgZmllbGQgc2l6ZSB0byBhIDE2LWJpdCB0 eXBlLCB3ZSBjYW4gaGFsdmUgdGhlCnNpemUgb2YgdGhlIHN0cnVjdC4KCkl0J3MgdW5saWtlbHkg dGhhdCBjYWNoaW5nIHRoZSBvZmZzZXRzIGZvciBvZmZzZXRzIGxhcmdlciB0aGFuIHdoYXQgd2ls bApmaXQgaW4gYSAxNi1iaXQgaW50IHdpbGwgaGVscCBtdWNoIGFzIHRoZSB0dXBsZSBpcyB2ZXJ5 IGxpa2VseSB0byBoYXZlCnNvbWUgbm9uLWZpeGVkLXdpZHRoIHR5cGVzIGFueXdheSwgdGhlIG9m ZnNldHMgb2Ygd2hpY2ggd2UgY2Fubm90IGNhY2hlLgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9j b21tb24vdHVwZGVzYy5jIHwgIDkgKysrKysrKysrCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVj VHVwbGVzLmMgICB8IDE2ICsrKysrKysrKysrKy0tLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy90dXBk ZXNjLmggICAgICAgIHwgMTYgKysrKysrKystLS0tLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCAyOSBp bnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9h Y2Nlc3MvY29tbW9uL3R1cGRlc2MuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vdHVwZGVz Yy5jCmluZGV4IDAyOGZjZDUzNzM0Li41OTBkZDhlYzMzMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYWNjZXNzL2NvbW1vbi90dXBkZXNjLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1v bi90dXBkZXNjLmMKQEAgLTUzNCw2ICs1MzQsMTUgQEAgVHVwbGVEZXNjRmluYWxpemUoVHVwbGVE ZXNjIHR1cGRlc2MpCiAKIAkJY2F0dHItPmF0dGNhY2hlb2ZmID0gb2ZmOwogCisJCS8qCisJCSAq IGF0dGNhY2hlb2ZmIGlzIGFuIGludDE2LCBzbyBkb24ndCB0cnkgYW5kIGNhY2hlIGFueSBvZmZz ZXRzIGxhcmdlcgorCQkgKiB0aGFuIHdpbGwgZml0IGluIHRoYXQgdHlwZS4KKwkJICovCisJCWlm IChvZmYgPiBQR19JTlQxNl9NQVgpCisJCQlicmVhazsKKworCQljYXR0ci0+YXR0Y2FjaGVvZmYg PSBvZmY7CisKIAkJb2ZmICs9IGNhdHRyLT5hdHRsZW47CiAJCWZpcnN0Tm9uQ2FjaGVkT2Zmc2V0 QXR0ciA9IGkgKyAxOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNU dXBsZXMuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNUdXBsZXMuYwppbmRleCAyMDcwYzY2 NWQyZi4uYjM2OTliNzc2NDkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNU dXBsZXMuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVHVwbGVzLmMKQEAgLTEwMTMs NiArMTAxMyw3IEBAIHN0YXRpYyBwZ19hdHRyaWJ1dGVfYWx3YXlzX2lubGluZSB2b2lkCiBzbG90 X2RlZm9ybV9oZWFwX3R1cGxlKFR1cGxlVGFibGVTbG90ICpzbG90LCBIZWFwVHVwbGUgdHVwbGUs IHVpbnQzMiAqb2ZmcCwKIAkJCQkJICAgaW50IHJlcW5hdHRzKQogeworCUNvbXBhY3RBdHRyaWJ1 dGUgKmNhdHRyczsKIAlDb21wYWN0QXR0cmlidXRlICpjYXR0cjsKIAlUdXBsZURlc2MJdHVwbGVE ZXNjID0gc2xvdC0+dHRzX3R1cGxlRGVzY3JpcHRvcjsKIAlIZWFwVHVwbGVIZWFkZXIgdHVwID0g dHVwbGUtPnRfZGF0YTsKQEAgLTExMDEsNiArMTEwMiwxMyBAQCBzbG90X2RlZm9ybV9oZWFwX3R1 cGxlKFR1cGxlVGFibGVTbG90ICpzbG90LCBIZWFwVHVwbGUgdHVwbGUsIHVpbnQzMiAqb2ZmcCwK IAl2YWx1ZXMgPSBzbG90LT50dHNfdmFsdWVzOwogCXNsb3QtPnR0c19udmFsaWQgPSByZXFuYXR0 czsKIAorCS8qCisJICogV2Ugc3RvcmUgdGhlIHR1cGxlRGVzYydzIENvbXBhY3RBdHRyaWJ1dGUg YXJyYXkgaW4gJ2NhdHRycycgYXMgZ2NjCisJICogc2VlbXMgdG8gYmUgdW53aWxsaW5nIHRvIG9w dGltaXplIGFjY2Vzc2luZyB0aGUgQ29tcGFjdEF0dHJpYnV0ZQorCSAqIGVsZW1lbnQgZWZmaWNp ZW50bHkgd2hlbiBhY2Nlc3NpbmcgaXQgdmlhIFR1cGxlRGVzY0NvbXBhY3RBdHRyKCkuCisJICov CisJY2F0dHJzID0gdHVwbGVEZXNjLT5jb21wYWN0X2F0dHJzOworCiAJLyogRW5zdXJlIHdlIGNh bGN1bGF0ZWQgdHAgY29ycmVjdGx5ICovCiAJQXNzZXJ0KHRwID09IChjaGFyICopIHR1cCArIHR1 cC0+dF9ob2ZmKTsKIApAQCAtMTExMSw3ICsxMTE5LDcgQEAgc2xvdF9kZWZvcm1faGVhcF90dXBs ZShUdXBsZVRhYmxlU2xvdCAqc2xvdCwgSGVhcFR1cGxlIHR1cGxlLCB1aW50MzIgKm9mZnAsCiAJ CQlpbnQJCQlhdHRsZW47CiAKIAkJCWlzbnVsbFthdHRudW1dID0gZmFsc2U7Ci0JCQljYXR0ciA9 IFR1cGxlRGVzY0NvbXBhY3RBdHRyKHR1cGxlRGVzYywgYXR0bnVtKTsKKwkJCWNhdHRyID0gJmNh dHRyc1thdHRudW1dOwogCQkJYXR0bGVuID0gY2F0dHItPmF0dGxlbjsKIAogCQkJLyogV2UgZG9u J3QgZXhwZWN0IGFueSBub24tYnl2YWwgdHlwZXMgKi8KQEAgLTExNTYsNyArMTE2NCw3IEBAIHNs b3RfZGVmb3JtX2hlYXBfdHVwbGUoVHVwbGVUYWJsZVNsb3QgKnNsb3QsIEhlYXBUdXBsZSB0dXBs ZSwgdWludDMyICpvZmZwLAogCQlkbwogCQl7CiAJCQlpc251bGxbYXR0bnVtXSA9IGZhbHNlOwot CQkJY2F0dHIgPSBUdXBsZURlc2NDb21wYWN0QXR0cih0dXBsZURlc2MsIGF0dG51bSk7CisJCQlj YXR0ciA9ICZjYXR0cnNbYXR0bnVtXTsKIAogCQkJb2ZmID0gY2F0dHItPmF0dGNhY2hlb2ZmOwog CQkJdmFsdWVzW2F0dG51bV0gPSBmZXRjaF9hdHRfbm9lcnIodHAgKyBvZmYsCkBAIC0xMTgzLDcg KzExOTEsNyBAQCBzbG90X2RlZm9ybV9oZWFwX3R1cGxlKFR1cGxlVGFibGVTbG90ICpzbG90LCBI ZWFwVHVwbGUgdHVwbGUsIHVpbnQzMiAqb2ZmcCwKIAkJaW50CQkJYXR0bGVuOwogCiAJCWlzbnVs bFthdHRudW1dID0gZmFsc2U7Ci0JCWNhdHRyID0gVHVwbGVEZXNjQ29tcGFjdEF0dHIodHVwbGVE ZXNjLCBhdHRudW0pOworCQljYXR0ciA9ICZjYXR0cnNbYXR0bnVtXTsKIAkJYXR0bGVuID0gY2F0 dHItPmF0dGxlbjsKIAogCQkvKgpAQCAtMTIxNiw3ICsxMjI0LDcgQEAgc2xvdF9kZWZvcm1faGVh cF90dXBsZShUdXBsZVRhYmxlU2xvdCAqc2xvdCwgSGVhcFR1cGxlIHR1cGxlLCB1aW50MzIgKm9m ZnAsCiAJCQljb250aW51ZTsKIAkJfQogCi0JCWNhdHRyID0gVHVwbGVEZXNjQ29tcGFjdEF0dHIo dHVwbGVEZXNjLCBhdHRudW0pOworCQljYXR0ciA9ICZjYXR0cnNbYXR0bnVtXTsKIAkJYXR0bGVu ID0gY2F0dHItPmF0dGxlbjsKIAogCQkvKiBBcyBhYm92ZSwgd2UgZG9uJ3QgZXhwZWN0IGNzdHJp bmdzICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdHVwZGVzYy5oIGIvc3JjL2lu Y2x1ZGUvYWNjZXNzL3R1cGRlc2MuaAppbmRleCBkNGMzYTc0OTU1OC4uNWU1NGI4MmMyOTYgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90dXBkZXNjLmgKKysrIGIvc3JjL2luY2x1ZGUv YWNjZXNzL3R1cGRlc2MuaApAQCAtNTUsNyArNTUsNyBAQCB0eXBlZGVmIHN0cnVjdCBUdXBsZUNv bnN0cgogICoJCWRpcmVjdGx5IGFmdGVyIHRoZSBGb3JtRGF0YV9wZ19hdHRyaWJ1dGUgc3RydWN0 IGlzIHBvcHVsYXRlZCBvcgogICoJCWFsdGVyZWQgaW4gYW55IHdheS4KICAqCi0gKiBDdXJyZW50 bHksIHRoaXMgc3RydWN0IGlzIDE2IGJ5dGVzLiAgQW55IGNvZGUgY2hhbmdlcyB3aGljaCBlbmxh cmdlIHRoaXMKKyAqIEN1cnJlbnRseSwgdGhpcyBzdHJ1Y3QgaXMgOCBieXRlcy4gIEFueSBjb2Rl IGNoYW5nZXMgd2hpY2ggZW5sYXJnZSB0aGlzCiAgKiBzdHJ1Y3Qgc2hvdWxkIGJlIGNvbnNpZGVy ZWQgdmVyeSBjYXJlZnVsbHkuCiAgKgogICogQ29kZSB3aGljaCBtdXN0IGFjY2VzcyBhIFR1cGxl RGVzYydzIGF0dHJpYnV0ZSBkYXRhIHNob3VsZCBhbHdheXMgbWFrZSB1c2UKQEAgLTY3LDE3ICs2 NywxNyBAQCB0eXBlZGVmIHN0cnVjdCBUdXBsZUNvbnN0cgogICovCiB0eXBlZGVmIHN0cnVjdCBD b21wYWN0QXR0cmlidXRlCiB7Ci0JaW50MzIJCWF0dGNhY2hlb2ZmOwkvKiBmaXhlZCBvZmZzZXQg aW50byB0dXBsZSwgaWYga25vd24sIG9yIC0xICovCisJaW50MTYJCWF0dGNhY2hlb2ZmOwkvKiBm aXhlZCBvZmZzZXQgaW50byB0dXBsZSwgaWYga25vd24sIG9yIC0xICovCiAJaW50MTYJCWF0dGxl bjsJCQkvKiBhdHRyIGxlbiBpbiBieXRlcyBvciAtMSA9IHZhcmxlbiwgLTIgPQogCQkJCQkJCQkg KiBjc3RyaW5nICovCiAJYm9vbAkJYXR0Ynl2YWw7CQkvKiBhcyBGb3JtRGF0YV9wZ19hdHRyaWJ1 dGUuYXR0Ynl2YWwgKi8KLQlib29sCQlhdHRpc3BhY2thYmxlOwkvKiBGb3JtRGF0YV9wZ19hdHRy aWJ1dGUuYXR0c3RvcmFnZSAhPQotCQkJCQkJCQkgKiBUWVBTVE9SQUdFX1BMQUlOICovCi0JYm9v bAkJYXR0aGFzbWlzc2luZzsJLyogYXMgRm9ybURhdGFfcGdfYXR0cmlidXRlLmF0dGhhc21pc3Np bmcgKi8KLQlib29sCQlhdHRpc2Ryb3BwZWQ7CS8qIGFzIEZvcm1EYXRhX3BnX2F0dHJpYnV0ZS5h dHRpc2Ryb3BwZWQgKi8KLQlib29sCQlhdHRnZW5lcmF0ZWQ7CS8qIEZvcm1EYXRhX3BnX2F0dHJp YnV0ZS5hdHRnZW5lcmF0ZWQgIT0gJ1wwJyAqLwotCWNoYXIJCWF0dG51bGxhYmlsaXR5OyAvKiBz dGF0dXMgb2Ygbm90LW51bGwgY29uc3RyYWludCwgc2VlIGJlbG93ICovCiAJdWludDgJCWF0dGFs aWduYnk7CQkvKiBhbGlnbm1lbnQgcmVxdWlyZW1lbnQgaW4gYnl0ZXMgKi8KKwlib29sCQlhdHRp c3BhY2thYmxlOjE7CS8qIEZvcm1EYXRhX3BnX2F0dHJpYnV0ZS5hdHRzdG9yYWdlICE9CisJCQkJ CQkJCQkgKiBUWVBTVE9SQUdFX1BMQUlOICovCisJYm9vbAkJYXR0aGFzbWlzc2luZzoxOwkvKiBh cyBGb3JtRGF0YV9wZ19hdHRyaWJ1dGUuYXR0aGFzbWlzc2luZyAqLworCWJvb2wJCWF0dGlzZHJv cHBlZDoxOyAvKiBhcyBGb3JtRGF0YV9wZ19hdHRyaWJ1dGUuYXR0aXNkcm9wcGVkICovCisJYm9v bAkJYXR0Z2VuZXJhdGVkOjE7IC8qIEZvcm1EYXRhX3BnX2F0dHJpYnV0ZS5hdHRnZW5lcmF0ZWQg IT0gJ1wwJyAqLworCWNoYXIJCWF0dG51bGxhYmlsaXR5OyAvKiBzdGF0dXMgb2Ygbm90LW51bGwg Y29uc3RyYWludCwgc2VlIGJlbG93ICovCiB9IENvbXBhY3RBdHRyaWJ1dGU7CiAKIC8qIFZhbGlk IHZhbHVlcyBmb3IgQ29tcGFjdEF0dHJpYnV0ZS0+YXR0bnVsbGFiaWxpdHkgKi8KLS0gCjIuNTEu MAoK --000000000000c0b48e064b8892d7 Content-Type: text/csv; charset="US-ASCII"; name="deform_results_v9.csv" Content-Disposition: attachment; filename="deform_results_v9.csv" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlzyta2z5 YW1kMzk5MHggZ2NjLCwsLCwsLCwsLCwsLCwsLCwsDQpicmFuY2gsdGVzdF9pZCxleHRyYV9jb2x1 bW5zLGF2Z19tcyxzdGRkZXYsLGJyYW5jaCx0ZXN0X2lkLGV4dHJhX2NvbHVtbnMsYXZnX21zLHN0 ZGRldiwsYnJhbmNoLHRlc3RfaWQsZXh0cmFfY29sdW1ucyxhdmdfbXMsc3RkZGV2LCwwMDA0IHZz IDAwMDUNCm1hc3RlciwxLDAsMjYuMzgsMC45NDYzMTcyNzg0NzE3MDEsLHY5LTAwMDEtMDAwNCwx LDAsMjIuOTUsMS4wMTI1NDAxOTIzMzI2NiwsdjktMDAwMS0wMDA1LDEsMCwyNC40MiwxLjE1Nzcw OTE0MTE5ODAyLCwxMDYuNDElDQptYXN0ZXIsMiwwLDI3LjQ2LDAuOTYyNjA3NjgyMzcyMDYxLCx2 OS0wMDAxLTAwMDQsMiwwLDI0LjgxLDEuMTE0OTg2OTAzNzI0OTYsLHY5LTAwMDEtMDAwNSwyLDAs MjUuMzcsMC45NDkyODg0NjEyNDYwNTgsLDEwMi4yNiUNCm1hc3RlciwzLDAsMjguMTYsMC44NzQ0 MDcyNTM4NzM1NTEsLHY5LTAwMDEtMDAwNCwzLDAsMjYuNjEsMS4wODQ0NzE0NTE0OTExLCx2OS0w MDAxLTAwMDUsMywwLDI2Ljk0LDEuMjMyMTUwMzkyNDk3NjgsLDEwMS4yNCUNCm1hc3Rlciw0LDAs MjguMTYsMC45MjA0NzI4Mzg5NzQ3NTMsLHY5LTAwMDEtMDAwNCw0LDAsMjYuNzMsMS4xMTU3MjE1 MTE3MDgyOSwsdjktMDAwMS0wMDA1LDQsMCwyNi45NywxLjEyOTg0ODkyMTgxMjc2LCwxMDAuOTAl DQptYXN0ZXIsNSwwLDI5LjIzLDEuMDUzMTcyNTAwNjgyNDYsLHY5LTAwMDEtMDAwNCw1LDAsMjMu NTcsMC45NTY0ODE3ODIzMjAyMDYsLHY5LTAwMDEtMDAwNSw1LDAsMjQuODksMS4wNjAwNTMzMzA5 ODY0LCwxMDUuNjAlDQptYXN0ZXIsNiwwLDMwLjA0LDAuOTcwOTAyMTUwOTMyMzk2LCx2OS0wMDAx LTAwMDQsNiwwLDI3Ljk5LDEuMDYxMDY4NTMxNTI5NCwsdjktMDAwMS0wMDA1LDYsMCwyOC44MSwx LjEyOTUwNjExODA2ODU1LCwxMDIuOTMlDQptYXN0ZXIsNywwLDI3LjMyLDAuODI3NDEwNjU1NTA1 MjU4LCx2OS0wMDAxLTAwMDQsNywwLDI2LjE3LDAuNzI0MjMxODIyNzEwNDA4LCx2OS0wMDAxLTAw MDUsNywwLDI2LjQxLDEuMDUwODYwMzQxNTY3ODMsLDEwMC45MiUNCm1hc3Rlciw4LDAsMjcuMTks MC43NzM4MDczMTA5MDk4MDMsLHY5LTAwMDEtMDAwNCw4LDAsMjYuMTgsMC43MzQyMDUwMzI2MzY3 NzksLHY5LTAwMDEtMDAwNSw4LDAsMjYuNDMsMC45Mzg5Nzg2NDcyMDIyNzEsLDEwMC45NSUNCm1h c3RlciwxLDEwLDQ2LjUyLDEuNTIzODQ2MjY4MjY2NzEsLHY5LTAwMDEtMDAwNCwxLDEwLDM4LjQ2 LDEuOTc4ODE5NDQwMzY4MDMsLHY5LTAwMDEtMDAwNSwxLDEwLDM5LjI1LDIuMDI0MTQyMjM0MjI3 ODUsLDEwMi4wNSUNCm1hc3RlciwyLDEwLDQ4Ljk0LDEuODk2ODM2Njg0NTczNDUsLHY5LTAwMDEt MDAwNCwyLDEwLDQ1LjQsMS45OTQxOTAzMzA1MDI5LCx2OS0wMDAxLTAwMDUsMiwxMCw0Ni4yOCwy LjAzODk3NDkwMjc4MTIzLCwxMDEuOTQlDQptYXN0ZXIsMywxMCw2NS4wNiwzLjQ1MzExNjMzNjI4 NzA0LCx2OS0wMDAxLTAwMDQsMywxMCw1Ni4wMiwyLjA3ODM5ODc3MzY5Njc5LCx2OS0wMDAxLTAw MDUsMywxMCw1NS4yOSwyLjE3OTg4NDg3NzA4NjAxLCw5OC43MCUNCm1hc3Rlciw0LDEwLDY2LjI0 LDIuNTk1ODM0NjU0OTQ4OTgsLHY5LTAwMDEtMDAwNCw0LDEwLDU2LjAzLDIuMDQzNDEzNzQ4OTI0 MTUsLHY5LTAwMDEtMDAwNSw0LDEwLDU1LjY3LDIuMTAxNTU5OTMzNzk2NzQsLDk5LjM2JQ0KbWFz dGVyLDUsMTAsNjYuOTMsMy4wNDA4NDgzMjU2MDY0NCwsdjktMDAwMS0wMDA0LDUsMTAsNDMuMTks Mi4wNDM3NTIyNDIwMjIzNiwsdjktMDAwMS0wMDA1LDUsMTAsNDcuMjUsMS44NjE3OTIyMjU4OTI3 MywsMTA5LjQwJQ0KbWFzdGVyLDYsMTAsNzAuNjQsMy4yMDUxMzk5NDAxNTkwMywsdjktMDAwMS0w MDA0LDYsMTAsNjAuMzUsMi4wMTI3MjA5MTkwMTM1NSwsdjktMDAwMS0wMDA1LDYsMTAsNjEuMTYs Mi4zNzIyOTA0Mjk4Nzk4MSwsMTAxLjM0JQ0KbWFzdGVyLDcsMTAsNTYuMTksMS44ODQ3MjY3NTcw ODgxMywsdjktMDAwMS0wMDA0LDcsMTAsNDkuNjksMS43Nzc2NTU1MTkwMDkzNywsdjktMDAwMS0w MDA1LDcsMTAsNDkuNTEsMi4yMDU5NDYzNTU4MTMyNiwsOTkuNjQlDQptYXN0ZXIsOCwxMCw1Ni4z NSwxLjc1NzAxMDQ3NDM3NjY2LCx2OS0wMDAxLTAwMDQsOCwxMCw0OS43LDEuODgyNjQ5ODI5ODgw MDksLHY5LTAwMDEtMDAwNSw4LDEwLDQ5LjYyLDIuMjI4NzQxNDk5OTkxNjEsLDk5Ljg0JQ0KbWFz dGVyLDEsMjAsNzcuMzMsMi43OTM4MjAyNjA1NzM4NSwsdjktMDAwMS0wMDA0LDEsMjAsNjcuMjks Mi42MTkwNzkwODIzNTc4OCwsdjktMDAwMS0wMDA1LDEsMjAsNjUuMTYsMi44NTgxOTk3OTg0ODM1 NSwsOTYuODMlDQptYXN0ZXIsMiwyMCw3OC4wMywyLjY1ODM3MzEwOTc3ODgzLCx2OS0wMDAxLTAw MDQsMiwyMCw3Ni40NywzLjM5MTUwNzc2NDIyODA0LCx2OS0wMDAxLTAwMDUsMiwyMCw4My45Niw1 LjA4MjI0NDI0MzcwODgzLCwxMDkuNzklDQptYXN0ZXIsMywyMCwxMDEuNTgsMy44MTA4MDU5OTY4 NjY5NywsdjktMDAwMS0wMDA0LDMsMjAsODQuNzEsMy4yMjU2NjMyMjQ0MTE0NiwsdjktMDAwMS0w MDA1LDMsMjAsODQuMjksMy44ODIyNzIzMjA4MzA2NiwsOTkuNTAlDQptYXN0ZXIsNCwyMCwxMDEu NDIsMi45NTQyMjQyNTUwNzQ5OCwsdjktMDAwMS0wMDA0LDQsMjAsODQuNTIsMi40MDYwMTA5MDM3 OTA3NCwsdjktMDAwMS0wMDA1LDQsMjAsODQuMjksMy43ODY4Nzc5NzY0MTM2LCw5OS43MyUNCm1h c3Rlciw1LDIwLDk2LjM2LDMuODA0ODg4MTI5MTM4MDgsLHY5LTAwMDEtMDAwNCw1LDIwLDcyLjE2 LDIuOTUzMDg4NDg2NzE1OCwsdjktMDAwMS0wMDA1LDUsMjAsNzEuOCwyLjc1ODE0Mzc1NjI4ODQ4 LCw5OS41MCUNCm1hc3Rlciw2LDIwLDEwMi4wOCw0LjY3NzE0NjkyOTI3MDYzLCx2OS0wMDAxLTAw MDQsNiwyMCw4NS42MywzLjA0NDY4MjQ4NTcwOTg0LCx2OS0wMDAxLTAwMDUsNiwyMCw4NC43Niw0 LjY3NjUyMDY5MzU0MDk4LCw5OC45OCUNCm1hc3Rlciw3LDIwLDk5LjcsMy45NjMxNTIwNDUzMTU1 MywsdjktMDAwMS0wMDA0LDcsMjAsODMuMTIsMi4xMTk0Mzc2MTM0Mjg0OCwsdjktMDAwMS0wMDA1 LDcsMjAsODUuMTksMy44NTk2MTk2Mzk2OTE4OSwsMTAyLjQ5JQ0KbWFzdGVyLDgsMjAsOTguODMs My40OTUyNzY0MzY4ODg3MSwsdjktMDAwMS0wMDA0LDgsMjAsODIuMzcsNC4xMjc1NTA4NDEzNzkz OSwsdjktMDAwMS0wMDA1LDgsMjAsODUuOTUsMy44MDk4NzUyMzMwODM0LCwxMDQuMzUlDQptYXN0 ZXIsMSwzMCwxMTUuNTEsMy4xMjg3Mjc4NDkwOTEyNCwsdjktMDAwMS0wMDA0LDEsMzAsOTIuNzMs Mi41MDE2NTM2Njc4NjQ3NywsdjktMDAwMS0wMDA1LDEsMzAsOTEuNDgsMi40OTcwODQ3Mzk1NDYw NiwsOTguNjUlDQptYXN0ZXIsMiwzMCwxMTcuNTUsMy4xODkwNjAzOTM2MDY5NywsdjktMDAwMS0w MDA0LDIsMzAsMTEyLjg1LDIuODczMzQ3MjI5OTUwMzEsLHY5LTAwMDEtMDAwNSwyLDMwLDExOC4z OCwzLjAwOTg4MDQ4NTgyNjQ1LCwxMDQuOTAlDQptYXN0ZXIsMywzMCwxMzguMzEsNi42NTUzMjAz NzkwODUxMywsdjktMDAwMS0wMDA0LDMsMzAsMTIxLjY5LDMuMjU5NDM5MTg2NzcwMTIsLHY5LTAw MDEtMDAwNSwzLDMwLDEyMi4xLDMuMTE4NDI2MDI0NTMxNjUsLDEwMC4zNCUNCm1hc3Rlciw0LDMw LDEzOC4zMyw2LjYyNzYyNzQ3MzkzOTYyLCx2OS0wMDAxLTAwMDQsNCwzMCwxMTkuNTIsMy4yNDA4 OTQ2ODcxMDMwMiwsdjktMDAwMS0wMDA1LDQsMzAsMTIyLjE3LDMuMTg0MzY0NjczOTI1MjMsLDEw Mi4yMiUNCm1hc3Rlciw1LDMwLDEzOS40MSw3LjU5MDU1NzQzNjcwOTY3LCx2OS0wMDAxLTAwMDQs NSwzMCw5My4zNywyLjY1ODY0NjkxOTYyNjg2LCx2OS0wMDAxLTAwMDUsNSwzMCw5My43NywyLjk5 OTQ2MzAzMTMyMDcxLCwxMDAuNDMlDQptYXN0ZXIsNiwzMCwxMzYuNTgsNS42MzYwMTQ2MTY5MDU2 LCx2OS0wMDAxLTAwMDQsNiwzMCwxMjQuMjMsNC4yNDA5MTUxOTM2MzM2LCx2OS0wMDAxLTAwMDUs NiwzMCwxMjYuMTIsMy4wNjkyMjExMTk2NDQzOCwsMTAxLjUyJQ0KbWFzdGVyLDcsMzAsMTQwLjQx LDguNDQxNzA4MTQzMzg1MzEsLHY5LTAwMDEtMDAwNCw3LDMwLDEyMi44NSwyLjI3NTMwNzczNjM2 ODYzLCx2OS0wMDAxLTAwMDUsNywzMCwxMjQuODQsMy40NjkyMTM0ODE4ODAxNCwsMTAxLjYyJQ0K bWFzdGVyLDgsMzAsMTM4LjU5LDcuMTQ0NzA2MzM5NzA0MjIsLHY5LTAwMDEtMDAwNCw4LDMwLDEy Mi4zNiwyLjQwNzI5NTIyODA0MzYzLCx2OS0wMDAxLTAwMDUsOCwzMCwxMjQuNzUsMy4zOTg1MzMy MTIyMDM4NSwsMTAxLjk1JQ0KbWFzdGVyLDEsNDAsMTM2LjYzLDMuMDg2MDMyOTIzNTAyNDQsLHY5 LTAwMDEtMDAwNCwxLDQwLDEwOC4xMywzLjczOTIwOTMxOTg2NjQzLCx2OS0wMDAxLTAwMDUsMSw0 MCwxMDcuODgsMy42MDYyNzc1Mzc0MTM0MiwsOTkuNzclDQptYXN0ZXIsMiw0MCwxNDIuNzcsMy4z Njg1NDgwMjI2Mjg1NCwsdjktMDAwMS0wMDA0LDIsNDAsMTQ5Ljc0LDMuMzk2NzEyNDkyNDMxNDIs LHY5LTAwMDEtMDAwNSwyLDQwLDE0My40NSwzLjk2MDA2Nzg4MjQ2MDc1LCw5NS44MCUNCm1hc3Rl ciwzLDQwLDE2OC40MSwyLjE5MTAxNjg1OTE5MTM5LCx2OS0wMDAxLTAwMDQsMyw0MCwxNDEuNywz LjcyMTQ0NDU4MTc4MjcyLCx2OS0wMDAxLTAwMDUsMyw0MCwxNDIuNjEsMi44NDAyMDIzNjg4MjM1 LCwxMDAuNjQlDQptYXN0ZXIsNCw0MCwxNjguMjYsMi41NjI3MDI3MTM1MzcxMiwsdjktMDAwMS0w MDA0LDQsNDAsMTQyLjg4LDIuOTkzNjY3NjI3MTM3MzcsLHY5LTAwMDEtMDAwNSw0LDQwLDE0Mi45 MSwzLjE4Nzg0OTI4ODQ1NTQzLCwxMDAuMDIlDQptYXN0ZXIsNSw0MCwxNzEuMDgsMS45MzIyOTQy MjQwNjg0LCx2OS0wMDAxLTAwMDQsNSw0MCwxMDkuODcsMy4zNjE2OTE2NzY3OTA4NCwsdjktMDAw MS0wMDA1LDUsNDAsMTExLjc0LDQuMTMzNDgzNjkwODM4MDEsLDEwMS43MCUNCm1hc3Rlciw2LDQw LDE2OC4xNCwyLjcwOTA4MDQ3NjkzNjc4LCx2OS0wMDAxLTAwMDQsNiw0MCwxNDIuNTEsMi44MjEz NTIxNjc2MjA1OCwsdjktMDAwMS0wMDA1LDYsNDAsMTQyLjkyLDMuNzIxNTQ5MzA4OTcyOTgsLDEw MC4yOSUNCm1hc3Rlciw3LDQwLDE2Ni4yNCwzLjQxOTEwNjkyNDQ0ODcyLCx2OS0wMDAxLTAwMDQs Nyw0MCwxNTcuMTYsMi41MTM0NzUyNzgyNjc2LCx2OS0wMDAxLTAwMDUsNyw0MCwxNDguNTMsMy43 MTgxNzYyNzM5NDMwMSwsOTQuNTElDQptYXN0ZXIsOCw0MCwxNjcuMjUsMy4zODQ5ODAzMTcyNjkw NSwsdjktMDAwMS0wMDA0LDgsNDAsMTU2LjAxLDMuNTU2OTU5ODg1OTM4NiwsdjktMDAwMS0wMDA1 LDgsNDAsMTQ5LjM5LDIuODIzMzkzNjU5NDM1MjQsLDk1Ljc2JQ0KLCwsLCwsLCwsLCwsLCwsLCws DQphbWQzOTkweCBjbGFuZywsLCwsLCwsLCwsLCwsLCwsLA0KYnJhbmNoLHRlc3RfaWQsZXh0cmFf Y29sdW1ucyxhdmdfbXMsc3RkZGV2LCxicmFuY2gsdGVzdF9pZCxleHRyYV9jb2x1bW5zLGF2Z19t cyxzdGRkZXYsLGJyYW5jaCx0ZXN0X2lkLGV4dHJhX2NvbHVtbnMsYXZnX21zLHN0ZGRldiwsMDAw NCB2cyAwMDA1DQptYXN0ZXIsMSwwLDMzLjIzLDEuMTUzNzgyODE5NTU4OTcsLHY5LTAwMDEtMDAw NCwxLDAsMjUuODksMS4yNDU2ODMwMTEyMDU1MiwsdjktMDAwMS0wMDA1LDEsMCwyNS42MiwxLjA5 MzcxNzUxNDg0MDEzLCw5OC45NiUNCm1hc3RlciwyLDAsMzUuNzEsMC45ODgxNzE2NDQwMjk1Myws djktMDAwMS0wMDA0LDIsMCwzMC43MSwxLjEzNDQxODU4MjMwMTAxLCx2OS0wMDAxLTAwMDUsMiww LDI5LjY2LDEuMTE2NTU1NzAzNjA0MzksLDk2LjU4JQ0KbWFzdGVyLDMsMCwzNC45OCwwLjk4OTU0 NTQyMzUwNDg2LCx2OS0wMDAxLTAwMDQsMywwLDMwLjM2LDEuMTg0MzQ4NjU0MjkzNjEsLHY5LTAw MDEtMDAwNSwzLDAsMzEuMTYsMS4zNjk0NDE4NjcyMTczNiwsMTAyLjY0JQ0KbWFzdGVyLDQsMCwz NC45OSwxLjAwMjE0MTUwMjkyOTQyLCx2OS0wMDAxLTAwMDQsNCwwLDMwLjQ1LDEuMjE0MTQ5MTIw NTgyODksLHY5LTAwMDEtMDAwNSw0LDAsMzEuNiwxLjM4NzgxNzI1NTAxNTYyLCwxMDMuNzglDQpt YXN0ZXIsNSwwLDM0LjEyLDAuOTk4NjMxMTc5NjI5ODI5LCx2OS0wMDAxLTAwMDQsNSwwLDI2Ljc2 LDEuMTM2ODg2ODAzOTQ4MjQsLHY5LTAwMDEtMDAwNSw1LDAsMjYuNjYsMS4wNzAzODgwNTA3MjI1 NSwsOTkuNjMlDQptYXN0ZXIsNiwwLDM3LjIzLDEuMDQzNjAzNzU0MTQzNDUsLHY5LTAwMDEtMDAw NCw2LDAsMzMuMDQsMS4xMTkxNzM1NzQxNjA1MywsdjktMDAwMS0wMDA1LDYsMCwzMi42NSwxLjA1 NjE1MDUzODI0MjExLCw5OC44MiUNCm1hc3Rlciw3LDAsMzQuNiwwLjc4NjE3ODY5NDYzOTgzLCx2 OS0wMDAxLTAwMDQsNywwLDMwLjE3LDAuNzk0NjYwODg3NjcyMjEzLCx2OS0wMDAxLTAwMDUsNyww LDMwLjQxLDEuMDM5NjM1MTg4MjQ1NjIsLDEwMC44MCUNCm1hc3Rlciw4LDAsMzQuMzYsMC44MzU1 MzcwODY0MTQxNjksLHY5LTAwMDEtMDAwNCw4LDAsMzAuMTQsMC43ODgwODUwMDc4NDA3NjgsLHY5 LTAwMDEtMDAwNSw4LDAsMzAuNjQsMS4xNjIwNTkxOTc4ODIyNCwsMTAxLjY2JQ0KbWFzdGVyLDEs MTAsNjMuODYsMS43ODY0ODQwOTg1NzU1NiwsdjktMDAwMS0wMDA0LDEsMTAsNDEuODEsMS42MTQ0 NDEzNDg2MTk5OSwsdjktMDAwMS0wMDA1LDEsMTAsNDEuMTMsMS44NDkxMDY0MDM0MDk3MSwsOTgu MzclDQptYXN0ZXIsMiwxMCw2Ni4yNCwyLjAzNzM4MTA5MzEyNzc5LCx2OS0wMDAxLTAwMDQsMiwx MCw1MC45MSwxLjg5NzQyMDAyNDUwNDQxLCx2OS0wMDAxLTAwMDUsMiwxMCw0OS4zMywyLjA2MzIw NzYwMzY5ODQ1LCw5Ni45MCUNCm1hc3RlciwzLDEwLDc1LjQ1LDIuNjM3NDA4MTYwNTgxNjIsLHY5 LTAwMDEtMDAwNCwzLDEwLDUyLjA1LDIuMTMwNDc1NjMyODc0NzksLHY5LTAwMDEtMDAwNSwzLDEw LDY3LjM4LDEuNzQzNjA1NDg5NzUyOTIsLDEyOS40NSUNCm1hc3Rlciw0LDEwLDc2LjI2LDIuMzYw NjA2NDQ5ODM2MjgsLHY5LTAwMDEtMDAwNCw0LDEwLDUyLjA4LDIuMTMzNDc0NzE0NTcyMTgsLHY5 LTAwMDEtMDAwNSw0LDEwLDY2Ljk0LDEuOTA5MTE0MDU2NTgxNzYsLDEyOC41MyUNCm1hc3Rlciw1 LDEwLDc0LjIyLDIuOTQ2NjA5MDc0NDYzOTMsLHY5LTAwMDEtMDAwNCw1LDEwLDQ3LjkxLDIuMTUy OTExOTk5MDYyMDcsLHY5LTAwMDEtMDAwNSw1LDEwLDUyLjEsMi4zODQzNTMzNDE5ODczOSwsMTA4 Ljc1JQ0KbWFzdGVyLDYsMTAsODMuNjEsMS45NjA1NDAxNDMzNDgyOCwsdjktMDAwMS0wMDA0LDYs MTAsNTUuODksMi4wNDU1NTM5ODM2MDY0NywsdjktMDAwMS0wMDA1LDYsMTAsNjAuNTcsMi4zNDU0 MjM4MTIxNjIzMiwsMTA4LjM3JQ0KbWFzdGVyLDcsMTAsNjYuOTUsMS44NDcxNTIzNDg4NTY5Miws djktMDAwMS0wMDA0LDcsMTAsNTEuNTMsMS42MjUzOTAxMjcyNDEyMywsdjktMDAwMS0wMDA1LDcs MTAsNTIuNDQsMS45NjE4NzI0MjQ5NDE4MSwsMTAxLjc3JQ0KbWFzdGVyLDgsMTAsNjcuMDIsMS45 NTE2MDEwODM5NDEwOCwsdjktMDAwMS0wMDA0LDgsMTAsNTEuNjEsMS42MDE5OTQ5Mjc2NjAzNiws djktMDAwMS0wMDA1LDgsMTAsNTIuNTMsMS45NDMwNjM5MjQ5MzU5NCwsMTAxLjc4JQ0KbWFzdGVy LDEsMjAsMTA0LjUyLDMuMjUwNDAyMzM4OTczMTgsLHY5LTAwMDEtMDAwNCwxLDIwLDcwLjI1LDMu Mzc4Mzk2MjUzNTc5OTksLHY5LTAwMDEtMDAwNSwxLDIwLDY3Ljc1LDEuODY2MTI3OTU3MjQyNTMs LDk2LjQ0JQ0KbWFzdGVyLDIsMjAsMTEwLjA3LDMuNDY2NDIxNTg1NTExMzgsLHY5LTAwMDEtMDAw NCwyLDIwLDg1LjU1LDMuMTk0MDY0NjE0MjcwOTMsLHY5LTAwMDEtMDAwNSwyLDIwLDgyLjA4LDIu NzUwNzI5NDk4Mzc1NTEsLDk1Ljk0JQ0KbWFzdGVyLDMsMjAsMTI5LjA0LDQuMzA3ODAzNTc5MzU2 NDMsLHY5LTAwMDEtMDAwNCwzLDIwLDg1LjA5LDIuODU5MTE5MTI4MjQ0ODksLHY5LTAwMDEtMDAw NSwzLDIwLDg2LjA4LDMuMDE3MTI4NzAyMTk4MTQsLDEwMS4xNiUNCm1hc3Rlciw0LDIwLDEyOS42 MSwzLjg1NTY1NTAzMjA1NDM0LCx2OS0wMDAxLTAwMDQsNCwyMCw4NS41MSwyLjg0NjU5NTkyODg5 NDQzLCx2OS0wMDAxLTAwMDUsNCwyMCw4NS4xMSwzLjMxNjcxMDAzMjM3NTU0LCw5OS41MyUNCm1h c3Rlciw1LDIwLDExNS45LDguNDg3NjU1NDI5MTQ4NTUsLHY5LTAwMDEtMDAwNCw1LDIwLDczLjgy LDMuMzU1MjkzNzA1NjA3MjcsLHY5LTAwMDEtMDAwNSw1LDIwLDcxLjExLDMuNzk3NDY5MDgwMTE1 MSwsOTYuMzMlDQptYXN0ZXIsNiwyMCwxMjkuNjgsMy4xOTA5MzIzMTAzNDAyNywsdjktMDAwMS0w MDA0LDYsMjAsODkuOSwzLjI5ODczNTQ5Mjc3NDM0LCx2OS0wMDAxLTAwMDUsNiwyMCw4NC4zOCw0 LjUyODg2MDY5MjY1MDAzLCw5My44NiUNCm1hc3Rlciw3LDIwLDEyMC43Nyw2LjUzNzA0NTA2OTU1 NjA2LCx2OS0wMDAxLTAwMDQsNywyMCw4NS44MiwzLjk2MTEwNjkxMDY0OTE3LCx2OS0wMDAxLTAw MDUsNywyMCw4NC4zMSw0LjU3Njk1ODczOTU3MzYzLCw5OC4yNCUNCm1hc3Rlciw4LDIwLDExOS41 LDYuNjY1ODA0NTU4Mzc5NzIsLHY5LTAwMDEtMDAwNCw4LDIwLDg1LjM5LDIuOTEyNjA0MTU2MDUy ODIsLHY5LTAwMDEtMDAwNSw4LDIwLDg3LjE5LDMuOTg1NDMzNDYxODc5MjQsLDEwMi4xMSUNCm1h c3RlciwxLDMwLDE0Ni43OSwzLjU4MTgzNjc0MjAwMTUyLCx2OS0wMDAxLTAwMDQsMSwzMCw5MS42 MywyLjY0MDAxMDc1MjY0NDA4LCx2OS0wMDAxLTAwMDUsMSwzMCw5My43MSwzLjE0NDQwODU2NTY5 MDkzLCwxMDIuMjclDQptYXN0ZXIsMiwzMCwxNTAuMzgsMy4yNDg0MTM4ODk5NjYyNSwsdjktMDAw MS0wMDA0LDIsMzAsMTA1LjU1LDMuMDkzNTM3NzE0Mzk3NzUsLHY5LTAwMDEtMDAwNSwyLDMwLDEx My4xMiwzLjQzMDkwNDMwMjM1MjYzLCwxMDcuMTclDQptYXN0ZXIsMywzMCwxNjIuNjUsMi4zODc5 NTAwNTMwNDcwMywsdjktMDAwMS0wMDA0LDMsMzAsMTExLjQzLDEuNzcxNDI5OTkwNjYyNiwsdjkt MDAwMS0wMDA1LDMsMzAsMTE3LjQ4LDMuMjE1NDU5NDY0NzU1NTUsLDEwNS40MyUNCm1hc3Rlciw0 LDMwLDE1Ny43Niw3Ljk3MjQxMTg5MDI1NDc4LCx2OS0wMDAxLTAwMDQsNCwzMCwxMTEuMDMsMi45 NzQzNTAxODA4ODE0MywsdjktMDAwMS0wMDA1LDQsMzAsMTE3LjA3LDEuNjY2MzQzMDE3ODMxMDks LDEwNS40NCUNCm1hc3Rlciw1LDMwLDE2MC41NiwxMC45MTk3ODM2NjU5OTg1LCx2OS0wMDAxLTAw MDQsNSwzMCw5NC42LDIuNDk3ODk2NDM3MDA0NDUsLHY5LTAwMDEtMDAwNSw1LDMwLDk1Ljk2LDMu NDI2OTM1MDk4MTUxOTYsLDEwMS40NCUNCm1hc3Rlciw2LDMwLDE2MC41NSwyLjgwNTgyMDg1NzUy NTA3LCx2OS0wMDAxLTAwMDQsNiwzMCwxMjMuNTQsMi4yMTM5NDIxOTI5MTgzMSwsdjktMDAwMS0w MDA1LDYsMzAsMTIxLjE2LDQuMTgwOTkzNTY2MzY3NDMsLDk4LjA3JQ0KbWFzdGVyLDcsMzAsMTUz LjY0LDIuMzU4MDY4NDYwOTc5OTQsLHY5LTAwMDEtMDAwNCw3LDMwLDEwNi4xMywzLjA2MzI4MzU2 MDg0MTg3LCx2OS0wMDAxLTAwMDUsNywzMCwxMTkuMjcsMi45Njc2NjUzMTc5NjE3LCwxMTIuMzgl DQptYXN0ZXIsOCwzMCwxNTIuNTcsMS44NjI0MTY0NTczMTg2NywsdjktMDAwMS0wMDA0LDgsMzAs MTA1Ljg1LDMuMDg1MTY0NzAxMTYyMDgsLHY5LTAwMDEtMDAwNSw4LDMwLDEyMC43MiwyLjQ3MzU2 OTcxMzQ1OTExLCwxMTQuMDUlDQptYXN0ZXIsMSw0MCwxODMsMy4yOTY3MDcyMzUzNzM0Nywsdjkt MDAwMS0wMDA0LDEsNDAsMTEwLjI0LDQuMzY4NjU1ODE2NzQzNDYsLHY5LTAwMDEtMDAwNSwxLDQw LDExNC4xOCwyLjkwMjk3NDMwOTQ1ODg4LCwxMDMuNTclDQptYXN0ZXIsMiw0MCwxODcuNjMsNC4z NjA1NTc3MjgyNDQxOSwsdjktMDAwMS0wMDA0LDIsNDAsMTQzLjYsNC4xNzUyODg2ODg1NjQ3NSws djktMDAwMS0wMDA1LDIsNDAsMTM2LjMzLDUuOTk1ODQ3MzEwMTIxODMsLDk0Ljk0JQ0KbWFzdGVy LDMsNDAsMTkzLjY0LDUuMTkyMjk4NzkzOTU4MjIsLHY5LTAwMDEtMDAwNCwzLDQwLDEzMC40MSwz LjU5MDkwNzk4Njc2Mjc1LCx2OS0wMDAxLTAwMDUsMyw0MCwxMzguNDUsMy4xODg3ODEwMzEzNDMw MiwsMTA2LjE3JQ0KbWFzdGVyLDQsNDAsMTkzLDUuNTY0OTg2MDcyMTY3NjIsLHY5LTAwMDEtMDAw NCw0LDQwLDEzMS41NSw0Ljc3MjIzOTI2MTk0MjIsLHY5LTAwMDEtMDAwNSw0LDQwLDEzOC42Nywy Ljk4MDgxMTY1MjY4MDAxLCwxMDUuNDElDQptYXN0ZXIsNSw0MCwxODYuMywxMC44MDkzNzU0NTky MDk5LCx2OS0wMDAxLTAwMDQsNSw0MCwxMTEuMzYsMy40NjY3MTE5MDkwODQ2LCx2OS0wMDAxLTAw MDUsNSw0MCwxMTQuODQsMi44NjA2MzQ0MTY3MTE0NiwsMTAzLjEzJQ0KbWFzdGVyLDYsNDAsMTkw LjYzLDMuNzM2NTg3NTUyMDY4MzksLHY5LTAwMDEtMDAwNCw2LDQwLDEzOC43Niw1LjI0OTg2ODg1 MzMyMTM4LCx2OS0wMDAxLTAwMDUsNiw0MCwxMzguNDgsMi43MzM2ODIzNzUwODk1NSwsOTkuODAl DQptYXN0ZXIsNyw0MCwxOTEuNywzLjM0Nzc0ODgzMDA4OTg5LCx2OS0wMDAxLTAwMDQsNyw0MCwx NDMuNjYsNC41NjM3MDk4MTQyODU3OSwsdjktMDAwMS0wMDA1LDcsNDAsMTQ5LjU3LDQuMDY5NDg5 MTQ1NDc0NjQsLDEwNC4xMSUNCm1hc3Rlciw4LDQwLDE5Mi42MSwyLjgxMDEwNjE2NzcwNDA0LCx2 OS0wMDAxLTAwMDQsOCw0MCwxNDIuMTQsNi4xMTIxNjcwMTQyNzI4MywsdjktMDAwMS0wMDA1LDgs NDAsMTQ4Ljk0LDQuMDk4MDg0MTMxOTM5MzksLDEwNC43OCUNCiwsLCwsLCwsLCwsLCwsLCwsLA0K YW1kNzk0NWh4IGdjYywsLCwsLCwsLCwsLCwsLCwsLA0KYnJhbmNoLHRlc3RfaWQsZXh0cmFfY29s dW1ucyxhdmdfbXMsc3RkZGV2LCxicmFuY2gsdGVzdF9pZCxleHRyYV9jb2x1bW5zLGF2Z19tcyxz dGRkZXYsLGJyYW5jaCx0ZXN0X2lkLGV4dHJhX2NvbHVtbnMsYXZnX21zLHN0ZGRldiwsMDAwNCB2 cyAwMDA1DQptYXN0ZXIsMSwwLDE2LjIyLDAuOTM0NzAzOTcyOTU2Nzk4LCx2OS0wMDAxLTAwMDQs MSwwLDE0LjAyLDAuOTA3MTk3ODI5MTM1MjQsLHY5LTAwMDEtMDAwNSwxLDAsMTQuNzUsMC43ODc4 MjQ3MTkyMTU1ODQsLDEwNS4yMSUNCm1hc3RlciwyLDAsMTYuMiwwLjc2OTg3OTAzODg3OTQ4Miws djktMDAwMS0wMDA0LDIsMCwxNS42NCwwLjcxODU2MDk5MTkyODY2MSwsdjktMDAwMS0wMDA1LDIs MCwxNi40NCwwLjcxMTAwMTY5MjMxOTg4MSwsMTA1LjEyJQ0KbWFzdGVyLDMsMCwxNi4yOSwwLjcy MTcyODA5ODk5NjczNiwsdjktMDAwMS0wMDA0LDMsMCwxNy41NCwwLjk0ODE1MzI4NTE3MDg1Niws djktMDAwMS0wMDA1LDMsMCwxOC40NiwwLjk1Nzk5OTk5NjI1MjE5NCwsMTA1LjI1JQ0KbWFzdGVy LDQsMCwxNy40NywwLjg4MTYyODE2MTA0NzExMiwsdjktMDAwMS0wMDA0LDQsMCwxNy4zNSwwLjky MjE4MDU5NTMxNDEzNywsdjktMDAwMS0wMDA1LDQsMCwxNy43MywwLjYxMTQ5ODQ2ODE1NjI3Nyws MTAyLjE5JQ0KbWFzdGVyLDUsMCwxNi41OCwwLjk1MTM1OTM1MTEzNTYyMiwsdjktMDAwMS0wMDA0 LDUsMCwxNC40NywxLjAwODA5MjU2OTk5MTcsLHY5LTAwMDEtMDAwNSw1LDAsMTUuMzgsMS4wNjUx MjExMDkwMDc0MywsMTA2LjI5JQ0KbWFzdGVyLDYsMCwxOC43NywwLjkwNzU5MTk2NjIzNDEwMiws djktMDAwMS0wMDA0LDYsMCwxOS41MSwwLjc0MTM3NDg0MDQ5MzQyNiwsdjktMDAwMS0wMDA1LDYs MCwxOC45LDEuMDM0NDE0NTc1MjQ0ODMsLDk2Ljg3JQ0KbWFzdGVyLDcsMCwxNS42NywwLjY0MTc1 NjA1NTExMTAyNywsdjktMDAwMS0wMDA0LDcsMCwxNy4zMiwwLjc1NDk5OTc5MjA1MjIyNCwsdjkt MDAwMS0wMDA1LDcsMCwxNy4xNiwwLjgxMzI5Mjk0OTUyNDE2OSwsOTkuMDglDQptYXN0ZXIsOCww LDE2LjAxLDAuNjc2NjYyMTYwNjYwNzgyLCx2OS0wMDAxLTAwMDQsOCwwLDE3LjQ1LDAuNjM1NzA5 OTYwMzY1NDcyLCx2OS0wMDAxLTAwMDUsOCwwLDE3LjE0LDAuNzUwMTg5NjIxNzI1ODIzLCw5OC4y MiUNCm1hc3RlciwxLDEwLDI3LjgzLDEuNTg0NjE4OTA0NTgxNzQsLHY5LTAwMDEtMDAwNCwxLDEw LDIzLjQxLDEuNTUyOTc2MjEwNzc3MzUsLHY5LTAwMDEtMDAwNSwxLDEwLDI1LjE0LDEuNDgwNTM3 MzMwMTgyOTgsLDEwNy4zOSUNCm1hc3RlciwyLDEwLDI4LjIxLDEuNjMyMDUwMzM1NzE0MzMsLHY5 LTAwMDEtMDAwNCwyLDEwLDI5LjQ2LDEuNzA4NzkwOTA4NzE1NzksLHY5LTAwMDEtMDAwNSwyLDEw LDMwLjkxLDEuODQzOTY4NjgwNjUxMDIsLDEwNC45MiUNCm1hc3RlciwzLDEwLDM0LjQ4LDEuOTU0 MzkwMjYzMTk3MDcsLHY5LTAwMDEtMDAwNCwzLDEwLDMyLjcyLDEuODU5MTMzNzE5MzUwNzcsLHY5 LTAwMDEtMDAwNSwzLDEwLDM0LjQxLDEuNzg0OTAwODk1MTQ0MjcsLDEwNS4xNyUNCm1hc3Rlciw0 LDEwLDMxLjg2LDEuODIxNTMxNDMzODc3MTQsLHY5LTAwMDEtMDAwNCw0LDEwLDMyLjY3LDEuODgw MjMzODM0NDA2ODMsLHY5LTAwMDEtMDAwNSw0LDEwLDMyLjczLDEuNzgwMjUyNDUyMDk3MTYsLDEw MC4xOCUNCm1hc3Rlciw1LDEwLDM0LjUxLDEuNzg3OTE0NDk0MjQ4MTQsLHY5LTAwMDEtMDAwNCw1 LDEwLDI0Ljg3LDEuOTAwMjI3NDY1MzQ1NTksLHY5LTAwMDEtMDAwNSw1LDEwLDI1LjgyLDEuNzM0 NDQ2MzQ0NTc2MywsMTAzLjgyJQ0KbWFzdGVyLDYsMTAsMzMuMDQsMS43NzgyNTU2Nzk3MDY4Niws djktMDAwMS0wMDA0LDYsMTAsMzMuMSwxLjg5MDU0NDgwNjQ4MDk2LCx2OS0wMDAxLTAwMDUsNiwx MCwzNC45MywyLjA1Mjk4NTExNTQ4MjI0LCwxMDUuNTMlDQptYXN0ZXIsNywxMCwzMS45NSwxLjYy NzgyMDQzMDIxNjk3LCx2OS0wMDAxLTAwMDQsNywxMCwzMC41NiwxLjQ0NTA4ODA5MTgxOTY0LCx2 OS0wMDAxLTAwMDUsNywxMCwzNC4yNywxLjg5ODkzNDEzNDE2NTA1LCwxMTIuMTQlDQptYXN0ZXIs OCwxMCwzMi4wMSwxLjY5MzE3MzkxNTE0MzExLCx2OS0wMDAxLTAwMDQsOCwxMCwzMC42NCwxLjU1 MjM1MzAxNDcyODA2LCx2OS0wMDAxLTAwMDUsOCwxMCwzNC4xMSwxLjg2MzAwMzQwMjI4MjM4LCwx MTEuMzMlDQptYXN0ZXIsMSwyMCw0MS4wNCwyLjM2NTkxOTUzMDQ2MzcxLCx2OS0wMDAxLTAwMDQs MSwyMCwzMi43NCwyLjI5Nzk0MDYwOTg0OTA1LCx2OS0wMDAxLTAwMDUsMSwyMCwzMy44NywyLjMx OTM3NDk2NzQzNjk5LCwxMDMuNDUlDQptYXN0ZXIsMiwyMCw0NC41MywyLjYwOTQzNTk5NjM2ODA0 LCx2OS0wMDAxLTAwMDQsMiwyMCw0My44NCwyLjQwMDIyMjMyMDIyNjYsLHY5LTAwMDEtMDAwNSwy LDIwLDQ1LjYsMi4xOTgyMTc3MjI3MzAwOSwsMTA0LjAxJQ0KbWFzdGVyLDMsMjAsNTEuNTEsMi43 MjA2NzUzNjg4ODE5NywsdjktMDAwMS0wMDA0LDMsMjAsNDguMzYsMi41NTg3Mzc5MjgzMTA5NSws djktMDAwMS0wMDA1LDMsMjAsNTAuNjMsMi4zMzQ1MTk0NzM4NzQxMywsMTA0LjY5JQ0KbWFzdGVy LDQsMjAsNTAsNC4wMTI0NjU2NjU4MDU3MiwsdjktMDAwMS0wMDA0LDQsMjAsNDYuMjYsMi43NTEz NjA0NDExNzIxOSwsdjktMDAwMS0wMDA1LDQsMjAsNTEuODEsMi42MzE0MjMyMjQ1Nzk3MiwsMTEy LjAwJQ0KbWFzdGVyLDUsMjAsNTYuNTgsMy4zMzk3MDAwODI0NjYzNiwsdjktMDAwMS0wMDA0LDUs MjAsMzMuNDYsMi40MjI3MzcyNzg4NiwsdjktMDAwMS0wMDA1LDUsMjAsMzYuMTIsMi43OTk3MDg0 NzQyMjAwNSwsMTA3Ljk1JQ0KbWFzdGVyLDYsMjAsNTIuNiw0LjAyMDM3MjIyODk4ODcxLCx2OS0w MDAxLTAwMDQsNiwyMCw0OS42NywyLjM2OTg1ODk5MzMxNjc3LCx2OS0wMDAxLTAwMDUsNiwyMCw1 MS4zNiwyLjYzNTQ0Nzc4MjIxNjcxLCwxMDMuNDAlDQptYXN0ZXIsNywyMCw0OC43Myw0LjA5MzEw ODUxNTI2NDksLHY5LTAwMDEtMDAwNCw3LDIwLDQ3Ljg0LDIuMTk4ODIxOTE2MjEyNjYsLHY5LTAw MDEtMDAwNSw3LDIwLDQ3LjMxLDIuNDAxODc1NTQyMTA5NDksLDk4Ljg5JQ0KbWFzdGVyLDgsMjAs NTAuNzUsMi42NTMxMDU0Mzg4NzQ1OCwsdjktMDAwMS0wMDA0LDgsMjAsNDguNzIsMi4zMDE5NTE1 OTgwOTQsLHY5LTAwMDEtMDAwNSw4LDIwLDUxLjM1LDIuMzQ3ODgyMTQzNDE3OTIsLDEwNS40MCUN Cm1hc3RlciwxLDMwLDU4LjIzLDIuNzk1OTk4MjYyMTkzMjcsLHY5LTAwMDEtMDAwNCwxLDMwLDQ2 LjQ1LDIuMTk3NjEyNDgzMzI5MTMsLHY5LTAwMDEtMDAwNSwxLDMwLDUwLjI5LDIuMDkzMjc3MTY3 OTI3OTEsLDEwOC4yNyUNCm1hc3RlciwyLDMwLDU4LjA5LDIuMDc1NzI4MDMxMDkyMDEsLHY5LTAw MDEtMDAwNCwyLDMwLDY2Ljg2LDIuNjQ2MTY2NDM1MTE4ODUsLHY5LTAwMDEtMDAwNSwyLDMwLDY5 Ljk2LDQuMzQ4MDU3Nzg1Njc2ODQsLDEwNC42NCUNCm1hc3RlciwzLDMwLDc2Ljg0LDIuNzM4NzM0 MDcyNjQ2MjQsLHY5LTAwMDEtMDAwNCwzLDMwLDY2Ljc1LDIuMzExNjEwNjk2NzQwMTQsLHY5LTAw MDEtMDAwNSwzLDMwLDczLjIsMy4wODIxMzI1NDIxOTkzMiwsMTA5LjY2JQ0KbWFzdGVyLDQsMzAs ODIuODQsMi42MjUwMzk5MjI2NDIwOSwsdjktMDAwMS0wMDA0LDQsMzAsNjYuOTcsMy45MDYxMTcw ODA0MDM1OCwsdjktMDAwMS0wMDA1LDQsMzAsNjcuMjIsMi40ODE4MzY3MTkzMTExNCwsMTAwLjM3 JQ0KbWFzdGVyLDUsMzAsODUuMDgsMy4yODI2MDExNTAxMDY3OSwsdjktMDAwMS0wMDA0LDUsMzAs NTEuMjMsMS44MDg4NjMyMjkyNTI5NywsdjktMDAwMS0wMDA1LDUsMzAsNDkuNjEsMi40MTY2MDUy MDc0MzQxNCwsOTYuODQlDQptYXN0ZXIsNiwzMCw4My40LDIuNzg4OTM1NDc4MzIwMzQsLHY5LTAw MDEtMDAwNCw2LDMwLDc2LjUzLDIuNzg2Nzg4MTYxODU0NTgsLHY5LTAwMDEtMDAwNSw2LDMwLDc2 LjU4LDIuMDQxNTQ4OTMzMTExMTEsLDEwMC4wNyUNCm1hc3Rlciw3LDMwLDcyLjI0LDQuNTMzOTEy NDA5Nzc3NDYsLHY5LTAwMDEtMDAwNCw3LDMwLDY4LjMsMi4yOTQzMzcwMzExMTIzNywsdjktMDAw MS0wMDA1LDcsMzAsNzIuMDksMS4yNTUyMjk1ODE1MjEyMywsMTA1LjU1JQ0KbWFzdGVyLDgsMzAs NzQuNTUsNC45MjkzNzkxNTk2NjQ5NCwsdjktMDAwMS0wMDA0LDgsMzAsNjkuNDcsMi4wOTIyMjAw MDU2NzQxLCx2OS0wMDAxLTAwMDUsOCwzMCw3NS42NywyLjE1NTEzOTk0MzUwMjU1LCwxMDguOTIl DQptYXN0ZXIsMSw0MCw4MS43MiwyLjIzNDgzODI5NTM0OTEsLHY5LTAwMDEtMDAwNCwxLDQwLDU3 LjgyLDIuMDUwNDQ5Nzg5NDU2MzcsLHY5LTAwMDEtMDAwNSwxLDQwLDU5Ljk2LDIuNjMzNjA3NTIx ODgxMDksLDEwMy43MCUNCm1hc3RlciwyLDQwLDkxLjksNC4xMjUzNTE2NjM0NzMyLCx2OS0wMDAx LTAwMDQsMiw0MCw4Ny4zOCw0LjAxODAzMTE3ODU3Mjc2LCx2OS0wMDAxLTAwMDUsMiw0MCw4NC45 NCwyLjg5Nzc1OTkxMTkyODY2LCw5Ny4yMSUNCm1hc3RlciwzLDQwLDkxLjc2LDIuMzc5NzgwNTMy OTYzMTUsLHY5LTAwMDEtMDAwNCwzLDQwLDg4LjM1LDIuNDk3NjI5OTkzMTU4MTMsLHY5LTAwMDEt MDAwNSwzLDQwLDkwLjcxLDIuNzQ0MjI4NTg4MTU2MTYsLDEwMi42NyUNCm1hc3Rlciw0LDQwLDk4 LjE1LDIuNzU3NTg5OTc3MDUyNjQsLHY5LTAwMDEtMDAwNCw0LDQwLDg5Ljk1LDIuNjczNTE5OTM2 OTMwMjQsLHY5LTAwMDEtMDAwNSw0LDQwLDkwLjM5LDIuODc3MTMzNTY5NDU2MDcsLDEwMC40OSUN Cm1hc3Rlciw1LDQwLDk1Ljk1LDIuNTYzMjA5NjY4NDAyOTgsLHY5LTAwMDEtMDAwNCw1LDQwLDU1 Ljk5LDIuNTU2MTg2NDAwOTgyMTksLHY5LTAwMDEtMDAwNSw1LDQwLDYwLjM3LDIuODE1NTc4NTg4 ODg1NjcsLDEwNy44MiUNCm1hc3Rlciw2LDQwLDk5LjE5LDIuODY3MTI1MjgxNTg3NjIsLHY5LTAw MDEtMDAwNCw2LDQwLDg5LjcsMi45MzA3ODk2MzY4NDE1OCwsdjktMDAwMS0wMDA1LDYsNDAsOTQu NDIsMi40Mjc3OTEzNDYzNDc3OCwsMTA1LjI2JQ0KbWFzdGVyLDcsNDAsOTIuMzQsMi4zNDM5ODYw MjQ0OTI1NCwsdjktMDAwMS0wMDA0LDcsNDAsOTQuNDIsMy4wMDA5MDY2MDQzODE4NSwsdjktMDAw MS0wMDA1LDcsNDAsOTAuNzgsMi40MTcwMTQwNTUyMzY3NywsOTYuMTQlDQptYXN0ZXIsOCw0MCw5 My45MiwyLjc0NDY4Njg1OTk0OTkxLCx2OS0wMDAxLTAwMDQsOCw0MCw5Ni45LDMuMDM4MzA3ODY0 NDEyMDQsLHY5LTAwMDEtMDAwNSw4LDQwLDkwLjYxLDIuMjIxMDM4MzYyNzg1NjksLDkzLjUxJQ0K LCwsLCwsLCwsLCwsLCwsLCwsDQphbWQ3OTQ1aHggY2xhbmcsLCwsLCwsLCwsLCwsLCwsLCwNCmJy YW5jaCx0ZXN0X2lkLGV4dHJhX2NvbHVtbnMsYXZnX21zLHN0ZGRldiwsYnJhbmNoLHRlc3RfaWQs ZXh0cmFfY29sdW1ucyxhdmdfbXMsc3RkZGV2LCxicmFuY2gsdGVzdF9pZCxleHRyYV9jb2x1bW5z LGF2Z19tcyxzdGRkZXYsLA0KbWFzdGVyLDEsMCwxNy41NywwLjUxNzU5OTg0ODIwMjAxNSwsdjkt MDAwMS0wMDA0LDEsMCwxNC41OCwwLjY4MTEwNTQ4OTg4NTI3OSwsdjktMDAwMS0wMDA1LDEsMCwx NC4yNywwLjg4NzE5NjY5NTk0MDM3NywsDQptYXN0ZXIsMiwwLDE5LjM0LDAuOTQ5NjAxODQzNjI2 Mzc1LCx2OS0wMDAxLTAwMDQsMiwwLDE3LjA3LDAuNzYzMzkxMjgxODYwODM5LCx2OS0wMDAxLTAw MDUsMiwwLDE4LjEzLDAuODk5MTgzNDIxMzM0NjEzLCwNCm1hc3RlciwzLDAsMTcuNzIsMC42MTUz NDk1Mjg3ODI2NTMsLHY5LTAwMDEtMDAwNCwzLDAsMTkuMjMsMS42NzQyNTY5NzY0NjY4MSwsdjkt MDAwMS0wMDA1LDMsMCwxOC45NCwwLjY5NDk2MTI3NzU5ODY4LCwNCm1hc3Rlciw0LDAsMTguMTYs MC43MjQ0NjgzMDg5MzcwODksLHY5LTAwMDEtMDAwNCw0LDAsMTkuMzksMi43OTYwMjg5NjUwNjYz OCwsdjktMDAwMS0wMDA1LDQsMCwxOS4yLDAuOTk3NjY2MjE0MzY1MzM5LCwNCm1hc3Rlciw1LDAs MTcuMjMsMC41OTc0MjkwNjU1ODgyMzgsLHY5LTAwMDEtMDAwNCw1LDAsMTUuMDYsMC44MzEwODgx NjE1MzkwNzksLHY5LTAwMDEtMDAwNSw1LDAsMTYuNiwxLjM4ODIxMjc3NTA2MjQ2LCwNCm1hc3Rl ciw2LDAsMTguOTUsMC42Njg1MDI4MTMzNDkwNzQsLHY5LTAwMDEtMDAwNCw2LDAsMTkuNDgsMC42 MjEzMjg1MDcwMzI0MjEsLHY5LTAwMDEtMDAwNSw2LDAsMTkuNjcsMC44MjUwMzg0NzEyNDk3NjMs LA0KbWFzdGVyLDcsMCwxNy45OCwwLjc3Mzc5Nzg5OTMyMzk2MiwsdjktMDAwMS0wMDA0LDcsMCwx OS41LDAuNTM4NTM0NTA2NDQxNDI5LCx2OS0wMDAxLTAwMDUsNywwLDE3LjQyLDAuNzcxNTE4MTY0 OTUwNzQ2LCwNCm1hc3Rlciw4LDAsMTcuNDUsMC41NzI1NDAwNTk1NTk1MTcsLHY5LTAwMDEtMDAw NCw4LDAsMTcuODksMC41ODc4MTU2OTQ0NTczMjksLHY5LTAwMDEtMDAwNSw4LDAsMTcuNiwwLjYz NDc4Mjk1NDUyMTkwOSwsDQptYXN0ZXIsMSwxMCwzMy40NSwxLjI5MjMwMDUyNTQ1NTQ4LCx2OS0w MDAxLTAwMDQsMSwxMCwyMy4yNiwxLjMzMjE3ODcxMTIzMDgyLCx2OS0wMDAxLTAwMDUsMSwxMCwy NC4yLDIuMTA4MjU1OTI4NjYxNDksLA0KbWFzdGVyLDIsMTAsMzguMjQsMS4yODIxNTA5MzU3MzY0 OSwsdjktMDAwMS0wMDA0LDIsMTAsMjguNzMsMS4yMTIxNzA1ODc5NTI4NywsdjktMDAwMS0wMDA1 LDIsMTAsMzAuNzgsMS42MjUwNDcyMzMzODI3NiwsDQptYXN0ZXIsMywxMCw0MC4zNywxLjcxOTY2 ODE0MDY2ODE0LCx2OS0wMDAxLTAwMDQsMywxMCwzMS43NCwxLjQ0MTA2MjI1NjcyNzQ5LCx2OS0w MDAxLTAwMDUsMywxMCwzNC4yOSwyLjMwOTAzNzAxNTE2OTY3LCwNCm1hc3Rlciw0LDEwLDM3Ljk4 LDEuMzg2NTQ4MjMzMDczNzksLHY5LTAwMDEtMDAwNCw0LDEwLDMyLjA5LDEuNzg3NDc2Mzc0MTgw NTUsLHY5LTAwMDEtMDAwNSw0LDEwLDMzLjI4LDEuNzU3NjUzNzkyNTk1MzQsLA0KbWFzdGVyLDUs MTAsMzMuOTgsMS4zNTA1NTU2MDIyNDQ1NywsdjktMDAwMS0wMDA0LDUsMTAsMjQuMDMsMS41NDE1 MjU0OTIzMzExNCwsdjktMDAwMS0wMDA1LDUsMTAsMjQuMjksMS45NjIxNzM0NTQ3MjQ5MSwsDQpt YXN0ZXIsNiwxMCwzOC42MiwxLjMzMjAwMTU4OTY3MDc4LCx2OS0wMDAxLTAwMDQsNiwxMCwzMy41 OSwxLjQzNzM2Njg0NDUwMTk0LCx2OS0wMDAxLTAwMDUsNiwxMCwzNC42MywxLjg5Mzc5NDY1MjI4 MTE2LCwNCm1hc3Rlciw3LDEwLDM3LjQ1LDEuMTExOTEwODQzNjA0NzEsLHY5LTAwMDEtMDAwNCw3 LDEwLDMxLjQsMS4zMzc5ODkyMDM2NTExNiwsdjktMDAwMS0wMDA1LDcsMTAsMzEuMDMsMS42MTY0 NzIwOTU2NTU0LCwNCm1hc3Rlciw4LDEwLDM3LjQxLDEuMTUxNjM1MjQxNDI1MSwsdjktMDAwMS0w MDA0LDgsMTAsMzEuMTksMS4zODcwMzY3OTY4Njk2NywsdjktMDAwMS0wMDA1LDgsMTAsMzMuMjYs MS41NjU5OTE0NTIxMDUzMSwsDQptYXN0ZXIsMSwyMCw0OC41MSwyLjc0NzE2MDk4NDY2NDcsLHY5 LTAwMDEtMDAwNCwxLDIwLDMxLjY4LDEuODY0OTc4NTkxOTc4LCx2OS0wMDAxLTAwMDUsMSwyMCwz NC41OCwyLjM2ODc5NjQwNzUyNDEzLCwNCm1hc3RlciwyLDIwLDU3LjMxLDEuNzg3NDg5MjIxOTcz MzYsLHY5LTAwMDEtMDAwNCwyLDIwLDQ1LjAyLDEuNzQ4MzU1NjczNDc0ODIsLHY5LTAwMDEtMDAw NSwyLDIwLDQ0Ljc2LDIuNTYwMzI2MzUxNzcxOTgsLA0KbWFzdGVyLDMsMjAsNTcuNDQsMS42NzU2 MDQxODU5MDgyNywsdjktMDAwMS0wMDA0LDMsMjAsNDYuNzcsMS44ODk2MjU5MjA1MDQ4Niwsdjkt MDAwMS0wMDA1LDMsMjAsNDkuMTksMi44MjQ1MTA5MDg3ODEyNSwsDQptYXN0ZXIsNCwyMCw1Ny41 LDEuOTIxOTg0OTY5MzI5NjIsLHY5LTAwMDEtMDAwNCw0LDIwLDQ5LjcyLDIuMTIzMjI4Mzk3MDA3 MDEsLHY5LTAwMDEtMDAwNSw0LDIwLDQ4Ljk2LDIuNzE0NTc1Mjc0MjAyNTUsLA0KbWFzdGVyLDUs MjAsNTEuMjEsMS41NTc0ODI1Mzg5NTg5MywsdjktMDAwMS0wMDA0LDUsMjAsMzQuMzQsMi4yMTc3 MjEyMTY3NjcsLHY5LTAwMDEtMDAwNSw1LDIwLDM2Ljk5LDIuNjQ3MjMwNjY5MjgxOTYsLA0KbWFz dGVyLDYsMjAsNTguNTIsMS44MDE0Mjk4MzUxNDg1NywsdjktMDAwMS0wMDA0LDYsMjAsNDYuMzEs Mi4wNzcwMzUzMTY5MTk1NCwsdjktMDAwMS0wMDA1LDYsMjAsNTEuNDUsMi45MTA4NzExNTkwNjA0 MywsDQptYXN0ZXIsNywyMCw1Ni42NiwxLjY2NTcxNjA5NTcxMjc2LCx2OS0wMDAxLTAwMDQsNywy MCw0OS43MiwyLjI2ODk0MjE3NjEzMDc2LCx2OS0wMDAxLTAwMDUsNywyMCw0OS4yNCwyLjM5NTQ5 NDU5NjEwODUxLCwNCm1hc3Rlciw4LDIwLDU2LjExLDEuNzIwNjQ2MjY2MzYxOTUsLHY5LTAwMDEt MDAwNCw4LDIwLDQ2Ljc4LDEuODMzNzg4MTY2MDM4ODcsLHY5LTAwMDEtMDAwNSw4LDIwLDQ3Ljg3 LDIuMjM5Njg1ODk0MzEwMTEsLA0KbWFzdGVyLDEsMzAsNzEuNDYsMS42NzMzNTY5MTM4MjAzOSws djktMDAwMS0wMDA0LDEsMzAsNDYuNDUsMS44NzU2MTE4MzI0OTg4MywsdjktMDAwMS0wMDA1LDEs MzAsNDguNjksMy4xNjYxMzE2NTQ2NDQxMywsDQptYXN0ZXIsMiwzMCw3OC41LDEuNTk4NzYwOTE2 ODIwMzEsLHY5LTAwMDEtMDAwNCwyLDMwLDY1Ljg5LDIuMTY0MzQxOTgzMTk2MTYsLHY5LTAwMDEt MDAwNSwyLDMwLDY1LjYxLDQuMDg0NDc5MTI3NDU2NzUsLA0KbWFzdGVyLDMsMzAsODQuMDYsMi4z NzM4NjgzNzMwMTk0OCwsdjktMDAwMS0wMDA0LDMsMzAsNjUuNiwxLjgzMTQ5MzQ3MDcwNjExLCx2 OS0wMDAxLTAwMDUsMywzMCw3MC40NSwyLjY2MzI1MzY4MTU4NDU5LCwNCm1hc3Rlciw0LDMwLDg5 LjkxLDIuMzgxNDA2NTA2MDI1NTIsLHY5LTAwMDEtMDAwNCw0LDMwLDY2LjczLDEuNjE5NzI5MDY4 ODk3OTMsLHY5LTAwMDEtMDAwNSw0LDMwLDY2LjY0LDMuNTQ4MzkyNTY3NjA1OTEsLA0KbWFzdGVy LDUsMzAsNzkuNTQsMS44MDgxODA3MjAzMDYwNCwsdjktMDAwMS0wMDA0LDUsMzAsNDcuODcsMS43 OTcxMDY2MDQ5OTcyNSwsdjktMDAwMS0wMDA1LDUsMzAsNTUuMjEsMi40ODc0NTgzODI0NTQ3NSws DQptYXN0ZXIsNiwzMCw4Ny43NiwxLjkzMTg4MTI1ODAyMzQzLCx2OS0wMDAxLTAwMDQsNiwzMCw2 NS4yMywyLjQ4MjMzNzMyNjEzNDcxLCx2OS0wMDAxLTAwMDUsNiwzMCw2OC45LDMuMzM3ODQ1MjM1 NTY4ODcsLA0KbWFzdGVyLDcsMzAsODUuMDgsMS42MTk3MDA3MTc1NTI5NiwsdjktMDAwMS0wMDA0 LDcsMzAsNjIuMTgsMi41MTU3NDM3Njg0MjMxNCwsdjktMDAwMS0wMDA1LDcsMzAsNjkuNDgsMi43 MDkwNzIxNTE4Nzk1NiwsDQptYXN0ZXIsOCwzMCw4Mi4zMywxLjc0OTMxNzY2NjY5NTQ0LCx2OS0w MDAxLTAwMDQsOCwzMCw2Mi4yNSwyLjUxODExNzAxOTkxOTYxLCx2OS0wMDAxLTAwMDUsOCwzMCw3 MC45NSwyLjU5MDU0MjAyMDQ3MDE2LCwNCm1hc3RlciwxLDQwLDkzLjI3LDEuODczNTk0ODA1NjA5 NDksLHY5LTAwMDEtMDAwNCwxLDQwLDU5LjA4LDEuOTM3MDMyOTYyNjAzNzQsLHY5LTAwMDEtMDAw NSwxLDQwLDYxLjE4LDMuMDcwODgwNzcyNDM2LCwNCm1hc3RlciwyLDQwLDExMi4wOSw1Ljk0NjEw NTI4MDQzOTUyLCx2OS0wMDAxLTAwMDQsMiw0MCw4OS4yNyw4LjA5OTgxMDA0MzA3ODYxLCx2OS0w MDAxLTAwMDUsMiw0MCw4NS4zOSwzLjQ1MDg1NTIyNDAxOTQ4LCwNCm1hc3RlciwzLDQwLDEwNi4x NCwyLjA0OTg3Mjk4MDcxMTIsLHY5LTAwMDEtMDAwNCwzLDQwLDgzLjA1LDMuNzE2MDI2NTY1NzQ2 NzYsLHY5LTAwMDEtMDAwNSwzLDQwLDg0Ljg0LDIuODUwMjY0NTA3NTI5MywsDQptYXN0ZXIsNCw0 MCwxMDYuNzcsMi42MjEwNjA2NDA3NzA5MiwsdjktMDAwMS0wMDA0LDQsNDAsODAuNjUsMS45MjY0 NDU4NDQ4NTEwNiwsdjktMDAwMS0wMDA1LDQsNDAsOTYuMjcsOC40MzY4NjI1NzAyOTkwNywsDQpt YXN0ZXIsNSw0MCw5OS4yNSwyLjQzMDcxMDIyNzM0OTgzLCx2OS0wMDAxLTAwMDQsNSw0MCw1Ny44 NCwyLjA0MDg4MzYyMTY2Njk0LCx2OS0wMDAxLTAwMDUsNSw0MCw2Mi41NCw2LjIwNDU5MzI4NDM1 Nzk3LCwNCm1hc3Rlciw2LDQwLDEwOS4wNywxLjkwNzExNDQ5MzkyNDUyLCx2OS0wMDAxLTAwMDQs Niw0MCw4Ny4zMywxLjk3NzkxOTgxMDc5Mjc1LCx2OS0wMDAxLTAwMDUsNiw0MCw4Ni4wOCwyLjc0 MzQwMjcxMTE0NjI1LCwNCm1hc3Rlciw3LDQwLDEwOC44MSwxLjcxNzk4NDc3MTMyNzk0LCx2OS0w MDAxLTAwMDQsNyw0MCw4NS41NiwyLjY5ODcxOTMyODA5OTY5LCx2OS0wMDAxLTAwMDUsNyw0MCw4 NS4xNywyLjM4MDUyMTQ4MDExOTUxLCwNCm1hc3Rlciw4LDQwLDEwOS4wMSwxLjY1MDE2NDYxNzAz NzczLCx2OS0wMDAxLTAwMDQsOCw0MCw4NC41NSwyLjg3NTA4MDQ1NDU4Mjk4LCx2OS0wMDAxLTAw MDUsOCw0MCw4OS43MSwzLjE1NjIwMDA3OTM0NjUxLCwNCiwsLCwsLCwsLCwsLCwsLCwsLA0KbTIg Y2xhbmcsLCwsLCwsLCwsLCwsLCwsLCwNCmJyYW5jaCx0ZXN0X2lkLGV4dHJhX2NvbHVtbnMsYXZn X21zLHN0ZGRldiwsYnJhbmNoLHRlc3RfaWQsZXh0cmFfY29sdW1ucyxhdmdfbXMsc3RkZGV2LCxi cmFuY2gsdGVzdF9pZCxleHRyYV9jb2x1bW5zLGF2Z19tcyxzdGRkZXYsLDAwMDQgdnMgMDAwNQ0K bWFzdGVyLDEsMCwyMS4zNCwzLjIwMTA2NDgwMDQ3ODE3LCx2OS0wMDAxLTAwMDQsMSwwLDE1LjQ5 LDMuNDIzMzQ0NzkzOTA0OTQsLHY5LTAwMDEtMDAwNSwxLDAsMTUuMDEsMy44NjAzNzkxNjM4Njgy MiwsOTYuOTAlDQptYXN0ZXIsMiwwLDE3Ljc2LDEuMzEyMTI4NDIyNjQ4MDYsLHY5LTAwMDEtMDAw NCwyLDAsMjQuNiwwLjkyODQzNDcwNjgxMDc4OSwsdjktMDAwMS0wMDA1LDIsMCwyNS4xMiwwLjk3 NjkwNDE0MjgxNDcwNywsMTAyLjExJQ0KbWFzdGVyLDMsMCwxNi44OCwxLjE5OTQ4NTQ1NzQyNTA5 LCx2OS0wMDAxLTAwMDQsMywwLDE1LjY1LDEuMTkxMTQ5NDIyODUwNTEsLHY5LTAwMDEtMDAwNSwz LDAsMTYuMDMsMS4yNzg1MDUxMTI3MTU5OCwsMTAyLjQzJQ0KbWFzdGVyLDQsMCwxNi44NiwxLjAw ODA2MDExMzg2MzM4LCx2OS0wMDAxLTAwMDQsNCwwLDE1LjkzLDEuMzU3NTQ3MjUwMTczNzEsLHY5 LTAwMDEtMDAwNSw0LDAsMTYuMDYsMS4zNjY1ODAyMjg2NjcyNywsMTAwLjgyJQ0KbWFzdGVyLDUs MCwxOC43MiwxLjEzNDM0Mzc5MTc5NDI0LCx2OS0wMDAxLTAwMDQsNSwwLDEzLjg0LDEuNDY0Mjc5 NjA5NjE2ODIsLHY5LTAwMDEtMDAwNSw1LDAsMTMuMjcsMS4yNDQ4NDg2MDMzMzU3MywsOTUuODgl DQptYXN0ZXIsNiwwLDE3Ljg5LDEuMTMwMDE3NzY2OTEwMDYsLHY5LTAwMDEtMDAwNCw2LDAsMTku MjIsMS4yODE1MDYzMTE0MDg2LCx2OS0wMDAxLTAwMDUsNiwwLDE5LjEyLDEuMjM2MDg3NDg5MjA0 NDgsLDk5LjQ4JQ0KbWFzdGVyLDcsMCwxNi43OCwwLjc1NjEyMjkzMDQ2MTY0NiwsdjktMDAwMS0w MDA0LDcsMCwxNS4yOSwwLjkxOTY0MDMzNzE5NTgwMSwsdjktMDAwMS0wMDA1LDcsMCwxNS4zOSww Ljg5MjIwNDc5NDE3MjExNiwsMTAwLjY1JQ0KbWFzdGVyLDgsMCwxNi41LDAuNjc5MzgwNzU4Mzkx MDcxLCx2OS0wMDAxLTAwMDQsOCwwLDE1LjI5LDAuOTM2ODY3Njc4OTIzODU3LCx2OS0wMDAxLTAw MDUsOCwwLDE1LjUsMS4xNDczODAwMTY5MTg0NSwsMTAxLjM3JQ0KbWFzdGVyLDEsMTAsNDMuNTIs Mi4yOTk4ODcwODYzNjE0NCwsdjktMDAwMS0wMDA0LDEsMTAsMjIuMDUsMy42MDIzODQyODUwODk0 MywsdjktMDAwMS0wMDA1LDEsMTAsMTkuNjUsMi40Njc2Nzc5MDAxMDI5LCw4OS4xMiUNCm1hc3Rl ciwyLDEwLDQ1LjEsMi4xNDYyNzYzMjM0NjQ5MSwsdjktMDAwMS0wMDA0LDIsMTAsMjYuMywyLjU5 NTQ2ODQ5OTQ3NDQxLCx2OS0wMDAxLTAwMDUsMiwxMCwyNi40MiwyLjY0NjEzNzM4ODcwMzUxLCwx MDAuNDYlDQptYXN0ZXIsMywxMCw0Ni4xMywyLjQyNjkwMDgwMzIwODMsLHY5LTAwMDEtMDAwNCwz LDEwLDI5LjEzLDIuNTgzMDcxNTA5NDA0NzQsLHY5LTAwMDEtMDAwNSwzLDEwLDI5LjE5LDIuODI1 MTE5Njc1NTI2MTEsLDEwMC4yMSUNCm1hc3Rlciw0LDEwLDQ1LjY4LDIuMjE2MDUzMzc3ODg3MTks LHY5LTAwMDEtMDAwNCw0LDEwLDI5LjAzLDIuNDc5MjA2ODczNTEwMzEsLHY5LTAwMDEtMDAwNSw0 LDEwLDI5LjE1LDIuNjQ3MjM4MTc3MjQzNjksLDEwMC40MSUNCm1hc3Rlciw1LDEwLDQzLjc0LDIu NTk3OTM0MjQzMTEzNDYsLHY5LTAwMDEtMDAwNCw1LDEwLDI0LjU1LDIuODA0MjkzNjc4NzExMDgs LHY5LTAwMDEtMDAwNSw1LDEwLDIyLjE2LDEuOTc5OTA1NjIxODE5MzUsLDkwLjI2JQ0KbWFzdGVy LDYsMTAsNDIuMzMsMy4xNzY1NTY1Mjc4OTc4OSwsdjktMDAwMS0wMDA0LDYsMTAsMzAuNjMsMi43 MTUyNzA2OTg1MDc2NiwsdjktMDAwMS0wMDA1LDYsMTAsMzAuMzgsMy4xMjc0MTExOTUzMzg1LCw5 OS4xOCUNCm1hc3Rlciw3LDEwLDQ1LjYzLDIuNDc2NDgyMTMzMjgwNDMsLHY5LTAwMDEtMDAwNCw3 LDEwLDI3LjMsMy4xMTAzMzU2ODE3ODg2MywsdjktMDAwMS0wMDA1LDcsMTAsMjcuNTMsMi45ODk4 ODc0ODIzNDYzNywsMTAwLjg0JQ0KbWFzdGVyLDgsMTAsNDUuMDIsMi4wNTU2NDI4MjI3NzU2Miws djktMDAwMS0wMDA0LDgsMTAsMjcuMTksMi43Mzc4Nzk4MzQyODQyMiwsdjktMDAwMS0wMDA1LDgs MTAsMjcuNTYsMy4xNDAxNTAxMjM4NjY2MSwsMTAxLjM2JQ0KbWFzdGVyLDEsMjAsNjUuODYsNC42 ODM5ODQwODg3Mjk4MiwsdjktMDAwMS0wMDA0LDEsMjAsMzMuMDQsMy4xMjUyMTI0MzY5NTA2Nyws djktMDAwMS0wMDA1LDEsMjAsMzEuNjUsMi4zNjgwOTcyMTgxODIyOSwsOTUuNzklDQptYXN0ZXIs MiwyMCw3Mi4zNCwzLjQ1MzE4ODQ0NjgyNjU3LCx2OS0wMDAxLTAwMDQsMiwyMCwzOS43OSwyLjc1 ODIyMjg3MzQ0Mjk3LCx2OS0wMDAxLTAwMDUsMiwyMCw0MC41LDIuODg5OTk0NzMzNjMsLDEwMS43 OCUNCm1hc3RlciwzLDIwLDcxLjk4LDMuODcxMTMxMDg0NzM5NDgsLHY5LTAwMDEtMDAwNCwzLDIw LDQwLjc1LDQuNzAxNTM0MDQwNDM2MjIsLHY5LTAwMDEtMDAwNSwzLDIwLDQwLjEzLDQuNjIxMDUw MDk3MDQxNTgsLDk4LjQ4JQ0KbWFzdGVyLDQsMjAsNzIuNDcsNS41NDMyOTY5MTEyMDgsLHY5LTAw MDEtMDAwNCw0LDIwLDQxLjA4LDUuNjY4OTk1MDM4MzczNDgsLHY5LTAwMDEtMDAwNSw0LDIwLDQw LjgxLDYuMTYwNDcyOTYxMTk5NzEsLDk5LjM0JQ0KbWFzdGVyLDUsMjAsNjYuMDUsNC4wMjI0NjIw NjMyMTgwMywsdjktMDAwMS0wMDA0LDUsMjAsMzEuNTMsNS41NzMyMzAwMjYzMTI5OSwsdjktMDAw MS0wMDA1LDUsMjAsMjkuMjIsNC40NjI3MjM3NDY1NzM2LCw5Mi42NyUNCm1hc3Rlciw2LDIwLDcw Ljg5LDQuMjgzMTk2MzE5NTAwOTIsLHY5LTAwMDEtMDAwNCw2LDIwLDQxLjkxLDQuODE5NDcwMjEw MTE1NzgsLHY5LTAwMDEtMDAwNSw2LDIwLDQwLjcyLDQuNTY4MjM2NjIyNjIzMDYsLDk3LjE2JQ0K bWFzdGVyLDcsMjAsNzEsNS4yMDM5NDcwMTg4NjcxLCx2OS0wMDAxLTAwMDQsNywyMCw0Mi44Mywz Ljc2Njg5MzE1NTM1MzEzLCx2OS0wMDAxLTAwMDUsNywyMCw0Mi4zNiw0LjQxNzQzNjIyNzEwOTY3 LCw5OC45MCUNCm1hc3Rlciw4LDIwLDcwLjczLDMuNDg5ODY5NzU1NjU1OTUsLHY5LTAwMDEtMDAw NCw4LDIwLDQyLjYsMi44MTA3NDEzNjk2MDcwNSwsdjktMDAwMS0wMDA1LDgsMjAsNDEuNzYsMy4z NTc2MTI1MzMzMjU5NywsOTguMDMlDQptYXN0ZXIsMSwzMCw4MS4xNCw0LjYxMjU4MjAwMTgwNjky LCx2OS0wMDAxLTAwMDQsMSwzMCwzNy4zNSw0LjgwMDQzMjQ0NTkzMDE0LCx2OS0wMDAxLTAwMDUs MSwzMCwzNi43NiwzLjgyMTcyODMwNjg1ODUyLCw5OC40MiUNCm1hc3RlciwyLDMwLDkwLjI3LDUu Mzk5MTIyMTE1ODc2NzcsLHY5LTAwMDEtMDAwNCwyLDMwLDUyLjIxLDMuNDc0NTM1MjI1NTMxMDEs LHY5LTAwMDEtMDAwNSwyLDMwLDUwLjgsNC4wMjExOTk4NTQ5OTE5OCwsOTcuMzAlDQptYXN0ZXIs MywzMCw5MC45NSw0LjYxNjA4MDA3MzM3NTIzLCx2OS0wMDAxLTAwMDQsMywzMCw1Mi43NSw0LjY3 ODcyOTY2Njg1NTUxLCx2OS0wMDAxLTAwMDUsMywzMCw1Mi43LDQuNjg2ODA3NDM1MDg3MjgsLDk5 LjkxJQ0KbWFzdGVyLDQsMzAsOTAuNjMsNC4zMTEwODkxMzg0NDk2LCx2OS0wMDAxLTAwMDQsNCwz MCw1My41OSw0LjQyMjg5OTM0NDE4NTA4LCx2OS0wMDAxLTAwMDUsNCwzMCw1My4xNCw0LjY5NDM2 NDYxNzkyNzE4LCw5OS4xNiUNCm1hc3Rlciw1LDMwLDgyLjc0LDQuMzc0OTcyODg3NDgxNDgsLHY5 LTAwMDEtMDAwNCw1LDMwLDQyLjUyLDUuNDA1OTU0NzcyOTgyMDMsLHY5LTAwMDEtMDAwNSw1LDMw LDQxLjUsNC4xNTE4ODMzODQzMTk2NSwsOTcuNjAlDQptYXN0ZXIsNiwzMCw5MS4yOSw0LjQxMDE5 NDc5MDE1ODg2LCx2OS0wMDAxLTAwMDQsNiwzMCw2MS4xNCw1Ljk5MTM0MjY5ODg4NTMsLHY5LTAw MDEtMDAwNSw2LDMwLDU4LjE4LDYuNzY1MDk3MDYwNDM3NTgsLDk1LjE2JQ0KbWFzdGVyLDcsMzAs OTAuMDcsNC41ODQ4NjA3NzU1MjcxNCwsdjktMDAwMS0wMDA0LDcsMzAsNTEuNiw0LjYxNDQ2MDk5 MzE3NzE4LCx2OS0wMDAxLTAwMDUsNywzMCw1MS44NCw0LjI3NTczNTU5NzY0NjI4LCwxMDAuNDcl DQptYXN0ZXIsOCwzMCw5MC41Niw0LjM3ODU4Mzk3NjcwMzkzLCx2OS0wMDAxLTAwMDQsOCwzMCw1 My40MSw1LjMzMzgzOTc2NTcwNjA0LCx2OS0wMDAxLTAwMDUsOCwzMCw1Mi42Myw0LjQxODYwNjQ4 NTQyNzMyLCw5OC41NCUNCm1hc3RlciwxLDQwLDk3LjI4LDUuODQwODY2MjcyNDAyMDgsLHY5LTAw MDEtMDAwNCwxLDQwLDQ0LjU5LDUuNDI3ODY0MTA3NTU5OSwsdjktMDAwMS0wMDA1LDEsNDAsNDYu NTYsNC4xNTg1NzM5ODAxMDA1NSwsMTA0LjQyJQ0KbWFzdGVyLDIsNDAsMTEwLjQyLDcuMzM2MjMx MzEzMTk5MTcsLHY5LTAwMDEtMDAwNCwyLDQwLDY1Ljg5LDUuMjYzMjAyNTg2ODA4MTQsLHY5LTAw MDEtMDAwNSwyLDQwLDYzLjA0LDYuMjIzMTU1MjkwMjM1MzcsLDk1LjY3JQ0KbWFzdGVyLDMsNDAs MTA3LjI4LDUuNzkxNTEzNjcxMjc4ODYsLHY5LTAwMDEtMDAwNCwzLDQwLDY2LjYyLDUuMzQ3MjUz MzM4OTI3MDYsLHY5LTAwMDEtMDAwNSwzLDQwLDY2LjY0LDUuNDU5NTYwMTYwMjU5NTIsLDEwMC4w MyUNCm1hc3Rlciw0LDQwLDEwNy43OCw1LjcwMzg5Mjc2NjA3MTI3LCx2OS0wMDAxLTAwMDQsNCw0 MCw2NS43LDUuNDQxMzQ2ODUwNjIzMzQsLHY5LTAwMDEtMDAwNSw0LDQwLDY2LjM0LDUuNDY5MjM2 NTg2OTg2NDksLDEwMC45NyUNCm1hc3Rlciw1LDQwLDk4LjA5LDguMDE5Nzc1NjgwMTc0NTQsLHY5 LTAwMDEtMDAwNCw1LDQwLDQ5LjIsNy45NjU0NTkxMTgwMDcxMywsdjktMDAwMS0wMDA1LDUsNDAs NTAuNCw2LjgyOTU1MzQzNzk3NTMyLCwxMDIuNDQlDQptYXN0ZXIsNiw0MCwxMDguNTQsNS42MTU0 Njg5MTY4MjIxOCwsdjktMDAwMS0wMDA0LDYsNDAsNjUuNzIsNi4wMDU3NTE5MDk3MDExNSwsdjkt MDAwMS0wMDA1LDYsNDAsNjUuNzgsNi4zMDI1Mjc0NTM5NjU0NiwsMTAwLjA5JQ0KbWFzdGVyLDcs NDAsMTA2Ljk5LDUuMTM2ODA3NTI4NTk4NjEsLHY5LTAwMDEtMDAwNCw3LDQwLDcwLjg0LDMuOTk3 NjQ0MjE2NTQwOTMsLHY5LTAwMDEtMDAwNSw3LDQwLDY3LjMyLDUuMzU3Njc2MjE2OTgzMDgsLDk1 LjAzJQ0KbWFzdGVyLDgsNDAsMTA5LjA0LDguNDA1NzE5Mzk3MjU3NDksLHY5LTAwMDEtMDAwNCw4 LDQwLDcyLjE1LDYuNTM2MTk1MTMyNzUwNzcsLHY5LTAwMDEtMDAwNSw4LDQwLDY4Ljg4LDYuOTA4 ODU4NjAxMDI2NywsOTUuNDclDQo= --000000000000c0b48e064b8892d7--