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 1vUUdF-00DP4a-1o for pgsql-hackers@arkaria.postgresql.org; Sat, 13 Dec 2025 18:46:18 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vUUdE-00BNoQ-0V for pgsql-hackers@arkaria.postgresql.org; Sat, 13 Dec 2025 18:46:16 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vUUdD-00BNoI-1U for pgsql-hackers@lists.postgresql.org; Sat, 13 Dec 2025 18:46:16 +0000 Received: from mail-lf1-x12e.google.com ([2a00:1450:4864:20::12e]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vUUdB-000VhG-0N for pgsql-hackers@lists.postgresql.org; Sat, 13 Dec 2025 18:46:15 +0000 Received: by mail-lf1-x12e.google.com with SMTP id 2adb3069b0e04-59584301f0cso2304743e87.0 for ; Sat, 13 Dec 2025 10:46:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1765651570; x=1766256370; 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=c1TzetV2dXXLiSWlxQqor9nbo8WD1d+uyEfH9fMM7BE=; b=YjL8blAgNExhLjTtHEdCvqLaopZG4iHoj6BJYhdr64Kq/sLTti5vGRTg543M5Jgtv2 WAHp91Ukpre5s4RWbqOKcgj5hUqPn7i3LygjL3RxqUDRiyV/u9AnGHDqSL2GJGDWt4xB Ent3nckRI4t1eyEb9g1+mbx9FEZprWFlUGK36O55FMzsfagvX6b+tOc1O6y34JztIj4+ KR2Rsq4Ut5pdFz7YdhS+o/qwgmw3ZOxJgJYaxJVsznBgFV7V/U6NHgWbsvIPJ7P5Rjax VPk6+8fwtqdFdxkKF2KTGCaz5Z18tDFEp8ZTqdm8hNkXYo0FhKxLnbtu9vrMvHpy+KJN ziyg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765651570; x=1766256370; 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=c1TzetV2dXXLiSWlxQqor9nbo8WD1d+uyEfH9fMM7BE=; b=lVJ1hUBbycbSWfq/CNyu3OSlcQA2Xr1m7KlfPMELutHqraQVdzr2IWhEhH2su6nWc/ meZ3ia+zjav+f8Yu9uXZ68wLpBp9kMu80CWJF+MeJGJRbeAh0R3U70jHKkHQO2frQLsU 7Ath5Utdk+BBlx7ur4XvWhuNuEaU1VEKs581pO/WOkawUnJ6Z3uydTJUD1tctQFpPa+D f0QcIhPavbctpI2jqBHipknOVZnZglY70T1ZtqffOZpUJwjWdy+vtbEe6QIP6osDaewN /jhAEc/U5l0Z3gVBi0d/+fCjXSZK+mAVbYvrFvX36jrrGJmQPLgYbY7YoSiW+XmWRutv BSlQ== X-Forwarded-Encrypted: i=1; AJvYcCXPFxqZd7GAxyPNDFq986csTVVRNbonnNimctfLA8gRHLJzBmco1rKmQx6YkW6b/yzmX7H0MjkvYeHz5sIO@lists.postgresql.org X-Gm-Message-State: AOJu0YyIXLtp/HvgOzECup6M8TyNzbLSVlnt/MqEOrvd6kGPr2dXwTNz DFFlwIyv3RwCfOyB7U8kv/BI1Zi0SyA79zeGSLWFsg3cORX+LRFvwxEUEfO48dxkpzLflde/0SU on2vwQWdUhWpjtC9vIJdoVCheBcFVmSE= X-Gm-Gg: AY/fxX59pIAVNtEt/z6CqJrk7QlnYaYLfa4folItyt/BFPMW2jhq+8ZvpyCyd+Sy2xR dzkhoRI4dVV5G/MN3lXx4Y/RVzRX8jgQL4k4j7rL1C/Dln6tIBWfnuRdlAsJrWuTg5BYbDP+ZVk m6UEnd0dJ7ZjI9m3CVInzLp4hOmSNReuULIXI1A+hBUokS10me5pwG6sErbGgfCVY7JlUu7NR6w GYEkFUI12ZoArRIdhhnn8AM1gOmJ70EbzSqfOu8+lqQjoythj6APydudsGzusBSzePfuOwotfzE yjCZSA== X-Google-Smtp-Source: AGHT+IGTfCp5tnFWmBPBvfPhRWCiu5N7C3BN6cxRv/ddsR6fJAM0q3HTcZw3j4FkGY6G4p+CPDqMBHUtJkKzNV6wOpA= X-Received: by 2002:a05:6512:1191:b0:592:f521:188a with SMTP id 2adb3069b0e04-598faa97aedmr1982425e87.49.1765651569905; Sat, 13 Dec 2025 10:46:09 -0800 (PST) MIME-Version: 1.0 References: <202510301734.pj4uds3mqxx4@alvherre.pgsql> <116433.1764870207@localhost> <171530.1765306357@localhost> In-Reply-To: From: Mihail Nikalayeu Date: Sat, 13 Dec 2025 19:45:28 +0100 X-Gm-Features: AQt7F2p40Xzbwfi6VfnGv6CcfMStuzo7JgLvgDI_1e64U4FH6tnJEzSAZaSh_HE Message-ID: Subject: Re: Adding REPACK [concurrently] To: Antonin Houska Cc: Alvaro Herrera , Pg Hackers , Robert Treat Content-Type: multipart/mixed; boundary="0000000000009f31c10645d9ca1c" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000009f31c10645d9ca1c Content-Type: text/plain; charset="UTF-8" Hello, everyone. Stress tests for REPACK concurrently in attachment. So far I can't break anything (except MVCC of course). A rebased version of the MVCC-safe "light" version with its own stress test is attached also. Best regards, Mikhail. --0000000000009f31c10645d9ca1c Content-Type: text/plain; charset="US-ASCII"; name="nocfbot-0006-Preserve-visibility-information-of-the-conc.patch" Content-Disposition: attachment; filename="nocfbot-0006-Preserve-visibility-information-of-the-conc.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj4na8d62 RnJvbSA0NTcyMzVjNzQzYTJkZWMyYzE5MTdmYmRmYTdmNWE0OGQzMDVjNjNlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogU2F0LCAxMyBEZWMgMjAyNSAxOTo0Mjo1MiArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdm5vY2Zib3RdIFByZXNlcnZlIHZpc2liaWxpdHkgaW5mb3JtYXRpb24gb2YgdGhlIGNv bmN1cnJlbnQgCiBkYXRhICBjaGFuZ2VzLgoKQXMgZXhwbGFpbmVkIGluIHRoZSBjb21taXQgbWVz c2FnZSBvZiB0aGUgcHJlY2VkaW5nIHBhdGNoIG9mIHRoZSBzZXJpZXMsIHRoZQpkYXRhIGNoYW5n ZXMgZG9uZSBieSBhcHBsaWNhdGlvbnMgd2hpbGUgUkVQQUNLIENPTkNVUlJFTlRMWSBpcyBjb3B5 aW5nIHRoZQp0YWJsZSBjb250ZW50cyB0byBhIG5ldyBmaWxlIGFyZSBkZWNvZGVkIGZyb20gV0FM IGFuZCBldmVudHVhbGx5IGFsc28gYXBwbGllZAp0byB0aGUgbmV3IGZpbGUuIFRvIHJlZHVjZSB0 aGUgY29tcGxleGl0eSBhIGxpdHRsZSBiaXQsIHRoZSBwcmVjZWRpbmcgcGF0Y2gKdXNlcyB0aGUg Y3VycmVudCB0cmFuc2FjdGlvbiAoaS5lLiB0cmFuc2FjdGlvbiBvcGVuZWQgYnkgdGhlIFJFUEFD SyBjb21tYW5kKQp0byBleGVjdXRlIHRob3NlIElOU0VSVCwgVVBEQVRFIGFuZCBERUxFVEUgY29t bWFuZHMuCgpIb3dldmVyLCBSRVBBQ0sgaXMgbm90IGV4cGVjdGVkIHRvIGNoYW5nZSB2aXNpYmls aXR5IG9mIHR1cGxlcy4gVGhlcmVmb3JlLAp0aGlzIHBhdGNoIGZpeGVzIHRoZSBoYW5kbGluZyBv ZiB0aGUgImNvbmN1cnJlbnQgZGF0YSBjaGFuZ2VzIi4gSXQgZW5zdXJlcwp0aGF0IHR1cGxlcyB3 cml0dGVuIGludG8gdGhlIG5ldyB0YWJsZSBoYXZlIHRoZSBzYW1lIFhJRCBhbmQgY29tbWFuZCBJ RCAoQ0lEKQphcyB0aGV5IGhhZCBpbiB0aGUgb2xkIHRhYmxlLgoKVG8gInJlcGxheSIgYW4gVVBE QVRFIG9yIERFTEVURSBjb21tYW5kIG9uIHRoZSBuZXcgdGFibGUsIHdlIHVzZSBTbmFwc2hvdFNl bGYgdG8gZmluZCB0aGUgbGFzdCBhbGl2ZSB2ZXJzaW9uIG9mIHR1cGxlIGFuZCB1cGRhdGUgd2l0 aCBzdGFtcCB3aXRoIHhpZCBvZiBvcmlnaW5hbCB0cmFuc2FjdGlvbi4gSXQgaXMgc2FmZSBiZWNh dXNlOgoqIGFsbCB0cmFuc2FjdGlvbnMgd2UgcmVwbGF5aW5nIGFyZSBjb21taXR0ZWQKKiBhcHBs eSB3b3JrZXIgd29ya2luZyB3aXRob3V0IGFueSBjb25jdXJyZW50IG1vZGlmaWVycyBvZiB0aGUg dGFibGUKCkFzIGxvbmcgYXMgd2UgcHJlc2VydmUgdGhlIHR1cGxlIHZpc2liaWxpdHkgaW5mb3Jt YXRpb24gKHdoaWNoIGluY2x1ZGVzIFhJRCksCml0J3MgaW1wb3J0YW50IHRvIGF2b2lkIGxvZ2lj YWwgZGVjb2Rpbmcgb2YgdGhlIFdBTCBnZW5lcmF0ZWQgYnkgRE1McyBvbiB0aGUKbmV3IHRhYmxl OiB0aGUgbG9naWNhbCBkZWNvZGluZyBzdWJzeXN0ZW0gcHJvYmFibHkgZG9lcyBub3QgZXhwZWN0 IHRoYXQgdGhlCmluY29taW5nIFdBTCByZWNvcmRzIGNvbnRhaW4gWElEcyBvZiBhbiBhbHJlYWR5 IGRlY29kZWQgdHJhbnNhY3Rpb25zLiAoQW5kIG9mCmNvdXJzZSwgcmVwZWF0ZWQgZGVjb2Rpbmcg d291bGQgYmUgd2FzdGVkIGVmZm9ydC4pCgpBdXRob3I6IEFudG9uaW4gSG91c2thIDxhaEBjeWJl cnRlYy5hdD4gd2l0aCBjaGFuZ2VzIGZyb20gTWlraGFpbCBOaWthbGF5ZXUgPG1paGFpbG5pa2Fs YXlldUBnbWFpbC5jb20KLS0tCiBjb250cmliL2FtY2hlY2svbWVzb24uYnVpbGQgICAgICAgICAg ICAgICAgICAgfCAgIDEgKwogLi4uL2FtY2hlY2svdC8wMDlfcmVwYWNrX2NvbmN1cnJlbnRseV9t dmNjLnBsIHwgMTEzICsrKysrKysrKysrKysrKysrKwogZG9jL3NyYy9zZ21sL212Y2Muc2dtbCAg ICAgICAgICAgICAgICAgICAgICAgIHwgIDEyICstCiBkb2Mvc3JjL3NnbWwvcmVmL3JlcGFjay5z Z21sICAgICAgICAgICAgICAgICAgfCAgIDkgLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24v dG9hc3RfaW50ZXJuYWxzLmMgICB8ICAgMyArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVh cGFtLmMgICAgICAgICAgICAgIHwgIDI5ICsrKy0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW1faGFuZGxlci5jICAgICAgfCAgMjQgKystLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvY2x1 c3Rlci5jICAgICAgICAgICAgICAgIHwgMTA3ICsrKysrKysrKysrKy0tLS0tCiAuLi4vcGdvdXRw dXRfcmVwYWNrL3Bnb3V0cHV0X3JlcGFjay5jICAgICAgICAgfCAgMTYgKystCiBzcmMvaW5jbHVk ZS9hY2Nlc3MvaGVhcGFtLmggICAgICAgICAgICAgICAgICAgfCAgIDYgKy0KIC4uLi9pbmplY3Rp b25fcG9pbnRzL3NwZWNzL3JlcGFjay5zcGVjICAgICAgICB8ICAgNCAtCiAxMSBmaWxlcyBjaGFu Z2VkLCAyNDMgaW5zZXJ0aW9ucygrKSwgODEgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2 NDQgY29udHJpYi9hbWNoZWNrL3QvMDA5X3JlcGFja19jb25jdXJyZW50bHlfbXZjYy5wbAoKZGlm ZiAtLWdpdCBhL2NvbnRyaWIvYW1jaGVjay9tZXNvbi5idWlsZCBiL2NvbnRyaWIvYW1jaGVjay9t ZXNvbi5idWlsZAppbmRleCBmN2M3MDczNTk4OS4uNjk0NmM2ODQyNTkgMTAwNjQ0Ci0tLSBhL2Nv bnRyaWIvYW1jaGVjay9tZXNvbi5idWlsZAorKysgYi9jb250cmliL2FtY2hlY2svbWVzb24uYnVp bGQKQEAgLTUyLDYgKzUyLDcgQEAgdGVzdHMgKz0gewogICAgICAgJ3QvMDA2X3ZlcmlmeV9naW4u cGwnLAogICAgICAgJ3QvMDA3X3JlcGFja19jb25jdXJyZW50bHkucGwnLAogICAgICAgJ3QvMDA4 X3JlcGFja19jb25jdXJyZW50bHkucGwnLAorICAgICAgJ3QvMDA5X3JlcGFja19jb25jdXJyZW50 bHlfbXZjYy5wbCcsCiAgICAgXSwKICAgfSwKIH0KZGlmZiAtLWdpdCBhL2NvbnRyaWIvYW1jaGVj ay90LzAwOV9yZXBhY2tfY29uY3VycmVudGx5X212Y2MucGwgYi9jb250cmliL2FtY2hlY2svdC8w MDlfcmVwYWNrX2NvbmN1cnJlbnRseV9tdmNjLnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwLi5hODNmZDViODE0MQotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvYW1j aGVjay90LzAwOV9yZXBhY2tfY29uY3VycmVudGx5X212Y2MucGwKQEAgLTAsMCArMSwxMTMgQEAK KworIyBDb3B5cmlnaHQgKGMpIDIwMjEtMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1l bnQgR3JvdXAKKworIyBUZXN0IFJFUEFDSyBDT05DVVJSRU5UTFkgd2l0aCBjb25jdXJyZW50IG1v ZGlmaWNhdGlvbnMKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7CisK K3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0 aWxzOworCit1c2UgVGVzdDo6TW9yZTsKKworbXkgJG5vZGU7CisKKyMKKyMgVGVzdCBzZXQtdXAK KyMKKyRub2RlID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdDSUNfdGVzdCcpOwor JG5vZGUtPmluaXQ7Ciskbm9kZS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJJ2xv Y2tfdGltZW91dCA9ICcgLiAoMTAwMCAqICRQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGltZW91 dF9kZWZhdWx0KSk7Ciskbm9kZS0+YXBwZW5kX2NvbmYoCisJJ3Bvc3RncmVzcWwuY29uZicsIHFx KAord2FsX2xldmVsID0gbG9naWNhbAorKSk7Ciskbm9kZS0+c3RhcnQ7Ciskbm9kZS0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsIHEoQ1JFQVRFIFRBQkxFIHRibDEoaSBpbnQgUFJJTUFSWSBLRVksIGog aW50KSkpOworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxKENSRUFURSBUQUJMRSB0Ymwy KGkgaW50IFBSSU1BUlkgS0VZLCBqIGludCkpKTsKKworCisjIEluc2VydCAxMDAgcm93cyBpbnRv IHRibDEKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcSgKKyAgICBJTlNFUlQgSU5UTyB0 YmwxIFNFTEVDVCBpLCBpICUgMTAwIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwKSBpCispKTsK KworIyBJbnNlcnQgMTAwIHJvd3MgaW50byB0YmwyCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsIHEoCisgICAgSU5TRVJUIElOVE8gdGJsMiBTRUxFQ1QgaSwgaSAlIDEwMCBGUk9NIGdlbmVy YXRlX3NlcmllcygxLDEwMCkgaQorKSk7CisKKworIyBJbnNlcnQgMTAwIHJvd3MgaW50byB0Ymwx Ciskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEoCisJQ1JFQVRFIE9SIFJFUExBQ0UgRlVO Q1RJT04gbG9nX3JhaXNlKGkgaW50LCBqMSBpbnQsIGoyIGludCkgUkVUVVJOUyBWT0lEIEFTICQk CisJQkVHSU4KKwkgIFJBSVNFIE5PVElDRSAnRVJST1IgaT0lIGoxPSUgajI9JScsIGksIGoxLCBq MjsKKwlFTkQ7JCQgTEFOR1VBR0UgcGxwZ3NxbDsKKykpOworCiskbm9kZS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsIHEoQ1JFQVRFIFVOTE9HR0VEIFNFUVVFTkNFIGluX3Jvd19yZWJ1aWxkIFNUQVJU IDEgSU5DUkVNRU5UIDE7KSk7Ciskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEoU0VMRUNU IG5leHR2YWwoJ2luX3Jvd19yZWJ1aWxkJyk7KSk7CisKKworJG5vZGUtPnBnYmVuY2goCisnLS1u by12YWN1dW0gLS1jbGllbnQ9MTAgLS1qb2JzPTQgLS1leGl0LW9uLWFib3J0IC0tdHJhbnNhY3Rp b25zPTI1MDAnLAorMCwKK1txcnthY3R1YWxseSBwcm9jZXNzZWR9XSwKK1txcnteJH1dLAorJ2Nv bmN1cnJlbnQgb3BlcmF0aW9ucyB3aXRoIFJFSU5ERVgvQ1JFQVRFIElOREVYIENPTkNVUlJFTlRM WScsCit7CisJJ2NvbmN1cnJlbnRfb3BzJyA9PiBxKAorCQlTRUxFQ1QgcGdfdHJ5X2Fkdmlzb3J5 X2xvY2soNDIpOjppbnRlZ2VyIEFTIGdvdGxvY2sgXGdzZXQKKwkJXGlmIDpnb3Rsb2NrCisJCQlT RUxFQ1QgbmV4dHZhbCgnaW5fcm93X3JlYnVpbGQnKSBBUyBsYXN0X3ZhbHVlIFxnc2V0CisJCQlc aWYgOmxhc3RfdmFsdWUgPSAyCisJCQkJUkVQQUNLIChDT05DVVJSRU5UTFkpIHRibDEgVVNJTkcg SU5ERVggdGJsMV9wa2V5OworCQkJCVxzbGVlcCAxMCBtcworCQkJCVJFUEFDSyAoQ09OQ1VSUkVO VExZKSB0YmwyIFVTSU5HIElOREVYIHRibDJfcGtleTsKKwkJCQlcc2xlZXAgMTAgbXMKKwkJCVxl bmRpZgorCQkJU0VMRUNUIHBnX2Fkdmlzb3J5X3VubG9jayg0Mik7CisJCVxlbHNlCisJCQlcc2V0 IG51bSByYW5kb20oMSwgMTAwKQorCQkJQkVHSU47CisJCQlVUERBVEUgdGJsMSBTRVQgaiA9IGog KyAxIFdIRVJFIGkgPSA6bnVtOworCQkJXHNsZWVwIDEgbXMKKwkJCVVQREFURSB0YmwxIFNFVCBq ID0gaiArIDIgV0hFUkUgaSA9IDpudW07CisJCQlcc2xlZXAgMSBtcworCQkJVVBEQVRFIHRibDEg U0VUIGogPSBqICsgMyBXSEVSRSBpID0gOm51bTsKKwkJCVxzbGVlcCAxIG1zCisJCQlVUERBVEUg dGJsMSBTRVQgaiA9IGogKyA0IFdIRVJFIGkgPSA6bnVtOworCQkJXHNsZWVwIDEgbXMKKworCQkJ VVBEQVRFIHRibDIgU0VUIGogPSBqICsgMSBXSEVSRSBpID0gOm51bTsKKwkJCVxzbGVlcCAxIG1z CisJCQlVUERBVEUgdGJsMiBTRVQgaiA9IGogKyAyIFdIRVJFIGkgPSA6bnVtOworCQkJXHNsZWVw IDEgbXMKKwkJCVVQREFURSB0YmwyIFNFVCBqID0gaiArIDMgV0hFUkUgaSA9IDpudW07CisJCQlc c2xlZXAgMSBtcworCQkJVVBEQVRFIHRibDIgU0VUIGogPSBqICsgNCBXSEVSRSBpID0gOm51bTsK KworCQkJQ09NTUlUOworCQkJU0VMRUNUIHNldHZhbCgnaW5fcm93X3JlYnVpbGQnLCAxKTsKKwor CQkJQkVHSU4gVFJBTlNBQ1RJT04gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsKKwkJ CVNFTEVDVCBDT0FMRVNDRShTVU0oaiksIDApIEFTIHQxIEZST00gdGJsMSBXSEVSRSBpID0gOm51 bSBcZ3NldCBwXworCQkJXHNsZWVwIDEwIG1zCisJCQlTRUxFQ1QgQ09BTEVTQ0UoU1VNKGopLCAw KSBBUyB0MiBGUk9NIHRibDIgV0hFUkUgaSA9IDpudW0gXGdzZXQgcF8KKwkJCVxpZiA6cF90MSAh PSA6cF90MgorCQkJCUNPTU1JVDsKKwkJCQlTRUxFQ1QgbG9nX3JhaXNlKHRibDEuaSwgdGJsMS5q LCB0YmwyLmopIEZST00gdGJsMSBMRUZUIE9VVEVSIEpPSU4gdGJsMiBPTiB0YmwxLmkgPSB0Ymwy LmkgV0hFUkUgdGJsMS5qICE9IHRibDIuajsKKwkJCQlcc2xlZXAgMTAgbXMKKwkJCQlTRUxFQ1Qg bG9nX3JhaXNlKHRibDEuaSwgdGJsMS5qLCB0YmwyLmopIEZST00gdGJsMSBMRUZUIE9VVEVSIEpP SU4gdGJsMiBPTiB0YmwxLmkgPSB0YmwyLmkgV0hFUkUgdGJsMS5qICE9IHRibDIuajsKKwkJCQlT RUxFQ1QgKDpwX3QxICsgOnBfdDIpIC8gMDsKKwkJCVxlbmRpZgorCisJCQlDT01NSVQ7CisJCVxl bmRpZgorCSkKK30pOworCiskbm9kZS0+c3RvcDsKK2RvbmVfdGVzdGluZygpOwpkaWZmIC0tZ2l0 IGEvZG9jL3NyYy9zZ21sL212Y2Muc2dtbCBiL2RvYy9zcmMvc2dtbC9tdmNjLnNnbWwKaW5kZXgg MGY1YzM0YWY1NDIuLjA0OWVlNzVhNGJhIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvbXZjYy5z Z21sCisrKyBiL2RvYy9zcmMvc2dtbC9tdmNjLnNnbWwKQEAgLTE4MzMsMTcgKzE4MzMsMTUgQEAg U0VMRUNUIHBnX2Fkdmlzb3J5X2xvY2socS5pZCkgRlJPTQogICAgPHRpdGxlPkNhdmVhdHM8L3Rp dGxlPgogCiAgICA8cGFyYT4KLSAgICBTb21lIGNvbW1hbmRzLCBjdXJyZW50bHkgb25seSA8bGlu ayBsaW5rZW5kPSJzcWwtdHJ1bmNhdGUiPjxjb21tYW5kPlRSVU5DQVRFPC9jb21tYW5kPjwvbGlu az4sIHRoZQotICAgIHRhYmxlLXJld3JpdGluZyBmb3JtcyBvZiA8bGluayBsaW5rZW5kPSJzcWwt YWx0ZXJ0YWJsZSI+PGNvbW1hbmQ+QUxURVIKLSAgICBUQUJMRTwvY29tbWFuZD48L2xpbms+IGFu ZCA8Y29tbWFuZD5SRVBBQ0s8L2NvbW1hbmQ+IHdpdGgKLSAgICB0aGUgPGxpdGVyYWw+Q09OQ1VS UkVOVExZPC9saXRlcmFsPiBvcHRpb24sIGFyZSBub3QKKyAgICBTb21lIERETCBjb21tYW5kcywg Y3VycmVudGx5IG9ubHkgPGxpbmsgbGlua2VuZD0ic3FsLXRydW5jYXRlIj48Y29tbWFuZD5UUlVO Q0FURTwvY29tbWFuZD48L2xpbms+IGFuZCB0aGUKKyAgICB0YWJsZS1yZXdyaXRpbmcgZm9ybXMg b2YgPGxpbmsgbGlua2VuZD0ic3FsLWFsdGVydGFibGUiPjxjb21tYW5kPkFMVEVSIFRBQkxFPC9j b21tYW5kPjwvbGluaz4sIGFyZSBub3QKICAgICBNVkNDLXNhZmUuICBUaGlzIG1lYW5zIHRoYXQg YWZ0ZXIgdGhlIHRydW5jYXRpb24gb3IgcmV3cml0ZSBjb21taXRzLCB0aGUKICAgICB0YWJsZSB3 aWxsIGFwcGVhciBlbXB0eSB0byBjb25jdXJyZW50IHRyYW5zYWN0aW9ucywgaWYgdGhleSBhcmUg dXNpbmcgYQotICAgIHNuYXBzaG90IHRha2VuIGJlZm9yZSB0aGUgY29tbWFuZCBjb21taXR0ZWQu ICBUaGlzIHdpbGwgb25seSBiZSBhbgorICAgIHNuYXBzaG90IHRha2VuIGJlZm9yZSB0aGUgRERM IGNvbW1hbmQgY29tbWl0dGVkLiAgVGhpcyB3aWxsIG9ubHkgYmUgYW4KICAgICBpc3N1ZSBmb3Ig YSB0cmFuc2FjdGlvbiB0aGF0IGRpZCBub3QgYWNjZXNzIHRoZSB0YWJsZSBpbiBxdWVzdGlvbgot ICAgIGJlZm9yZSB0aGUgY29tbWFuZCBzdGFydGVkICZtZGFzaDsgYW55IHRyYW5zYWN0aW9uIHRo YXQgaGFzIGRvbmUgc28KKyAgICBiZWZvcmUgdGhlIERETCBjb21tYW5kIHN0YXJ0ZWQgJm1kYXNo OyBhbnkgdHJhbnNhY3Rpb24gdGhhdCBoYXMgZG9uZSBzbwogICAgIHdvdWxkIGhvbGQgYXQgbGVh c3QgYW4gPGxpdGVyYWw+QUNDRVNTIFNIQVJFPC9saXRlcmFsPiB0YWJsZSBsb2NrLAotICAgIHdo aWNoIHdvdWxkIGJsb2NrIHRoZSB0cnVuY2F0aW5nIG9yIHJld3JpdGluZyBjb21tYW5kIHVudGls IHRoYXQgdHJhbnNhY3Rpb24gY29tcGxldGVzLgorICAgIHdoaWNoIHdvdWxkIGJsb2NrIHRoZSBE REwgY29tbWFuZCB1bnRpbCB0aGF0IHRyYW5zYWN0aW9uIGNvbXBsZXRlcy4KICAgICBTbyB0aGVz ZSBjb21tYW5kcyB3aWxsIG5vdCBjYXVzZSBhbnkgYXBwYXJlbnQgaW5jb25zaXN0ZW5jeSBpbiB0 aGUKICAgICB0YWJsZSBjb250ZW50cyBmb3Igc3VjY2Vzc2l2ZSBxdWVyaWVzIG9uIHRoZSB0YXJn ZXQgdGFibGUsIGJ1dCB0aGV5CiAgICAgY291bGQgY2F1c2UgdmlzaWJsZSBpbmNvbnNpc3RlbmN5 IGJldHdlZW4gdGhlIGNvbnRlbnRzIG9mIHRoZSB0YXJnZXQKZGlmZiAtLWdpdCBhL2RvYy9zcmMv c2dtbC9yZWYvcmVwYWNrLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3JlcGFjay5zZ21sCmluZGV4 IDMwYzQzYzQ5MDY5Li45Nzk2YTkyMzU5NyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9y ZXBhY2suc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL3JlcGFjay5zZ21sCkBAIC0zMDgsMTUg KzMwOCw2IEBAIFJFUEFDSyBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9wdGlv bjwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSBdIFVTSU5HCiAgICAgICAgPC9saXN0aXRlbT4KICAg ICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICA8L3BhcmE+Ci0KLSAgICAgPHdhcm5pbmc+Ci0gICAg ICA8cGFyYT4KLSAgICAgICA8Y29tbWFuZD5SRVBBQ0s8L2NvbW1hbmQ+IHdpdGggdGhlIDxsaXRl cmFsPkNPTkNVUlJFTlRMWTwvbGl0ZXJhbD4KLSAgICAgICBvcHRpb24gaXMgbm90IE1WQ0Mtc2Fm ZSwgc2VlIDx4cmVmIGxpbmtlbmQ9Im12Y2MtY2F2ZWF0cyIvPiBmb3IKLSAgICAgICBkZXRhaWxz LgotICAgICAgPC9wYXJhPgotICAgICA8L3dhcm5pbmc+Ci0KICAgICA8L2xpc3RpdGVtPgogICAg PC92YXJsaXN0ZW50cnk+CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24v dG9hc3RfaW50ZXJuYWxzLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL3RvYXN0X2ludGVy bmFscy5jCmluZGV4IDYzYjg0ODQ3M2Y4Li45MTExOWRhNWNkNSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2NvbW1vbi90b2FzdF9pbnRlcm5hbHMuYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvY29tbW9uL3RvYXN0X2ludGVybmFscy5jCkBAIC0zMTEsNyArMzExLDggQEAgdG9hc3Rf c2F2ZV9kYXR1bShSZWxhdGlvbiByZWwsIERhdHVtIHZhbHVlLAogCiAJCXRvYXN0dHVwID0gaGVh cF9mb3JtX3R1cGxlKHRvYXN0dHVwRGVzYywgdF92YWx1ZXMsIHRfaXNudWxsKTsKIAotCQloZWFw X2luc2VydCh0b2FzdHJlbCwgdG9hc3R0dXAsIG15Y2lkLCBvcHRpb25zLCBOVUxMKTsKKwkJaGVh cF9pbnNlcnQodG9hc3RyZWwsIHRvYXN0dHVwLCBHZXRDdXJyZW50VHJhbnNhY3Rpb25JZCgpLCBt eWNpZCwKKwkJCQkJb3B0aW9ucywgTlVMTCk7CiAKIAkJLyoKIAkJICogQ3JlYXRlIHRoZSBpbmRl eCBlbnRyeS4gIFdlIGNoZWF0IGEgbGl0dGxlIGhlcmUgYnkgbm90IHVzaW5nCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL2hlYXBhbS5jCmluZGV4IGUxMTgzM2YwMWI0Li45NGNhMDdlNGI1NSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvaGVhcGFtLmMKQEAgLTIwODUsNyArMjA4NSw3IEBAIFJlbGVhc2VCdWxrSW5zZXJ0U3Rh dGVQaW4oQnVsa0luc2VydFN0YXRlIGJpc3RhdGUpCiAvKgogICoJaGVhcF9pbnNlcnQJCS0gaW5z ZXJ0IHR1cGxlIGludG8gYSBoZWFwCiAgKgotICogVGhlIG5ldyB0dXBsZSBpcyBzdGFtcGVkIHdp dGggY3VycmVudCB0cmFuc2FjdGlvbiBJRCBhbmQgdGhlIHNwZWNpZmllZAorICogVGhlIG5ldyB0 dXBsZSBpcyBzdGFtcGVkIHdpdGggc3BlY2lmaWVkIHRyYW5zYWN0aW9uIElEIGFuZCB0aGUgc3Bl Y2lmaWVkCiAgKiBjb21tYW5kIElELgogICoKICAqIFNlZSB0YWJsZV90dXBsZV9pbnNlcnQgZm9y IGNvbW1lbnRzIGFib3V0IG1vc3Qgb2YgdGhlIGlucHV0IGZsYWdzLCBleGNlcHQKQEAgLTIxMDEs MTUgKzIxMDEsMTYgQEAgUmVsZWFzZUJ1bGtJbnNlcnRTdGF0ZVBpbihCdWxrSW5zZXJ0U3RhdGUg YmlzdGF0ZSkKICAqIHJlZmxlY3RlZCBpbnRvICp0dXAuCiAgKi8KIHZvaWQKLWhlYXBfaW5zZXJ0 KFJlbGF0aW9uIHJlbGF0aW9uLCBIZWFwVHVwbGUgdHVwLCBDb21tYW5kSWQgY2lkLAotCQkJaW50 IG9wdGlvbnMsIEJ1bGtJbnNlcnRTdGF0ZSBiaXN0YXRlKQoraGVhcF9pbnNlcnQoUmVsYXRpb24g cmVsYXRpb24sIEhlYXBUdXBsZSB0dXAsIFRyYW5zYWN0aW9uSWQgeGlkLAorCQkJQ29tbWFuZElk IGNpZCwgaW50IG9wdGlvbnMsIEJ1bGtJbnNlcnRTdGF0ZSBiaXN0YXRlKQogewotCVRyYW5zYWN0 aW9uSWQgeGlkID0gR2V0Q3VycmVudFRyYW5zYWN0aW9uSWQoKTsKIAlIZWFwVHVwbGUJaGVhcHR1 cDsKIAlCdWZmZXIJCWJ1ZmZlcjsKIAlCdWZmZXIJCXZtYnVmZmVyID0gSW52YWxpZEJ1ZmZlcjsK IAlib29sCQlhbGxfdmlzaWJsZV9jbGVhcmVkID0gZmFsc2U7CiAKKwlBc3NlcnQoVHJhbnNhY3Rp b25JZElzVmFsaWQoeGlkKSk7CisKIAkvKiBDaGVhcCwgc2ltcGxpc3RpYyBjaGVjayB0aGF0IHRo ZSB0dXBsZSBtYXRjaGVzIHRoZSByZWwncyByb3d0eXBlLiAqLwogCUFzc2VydChIZWFwVHVwbGVI ZWFkZXJHZXROYXR0cyh0dXAtPnRfZGF0YSkgPD0KIAkJICAgUmVsYXRpb25HZXROdW1iZXJPZkF0 dHJpYnV0ZXMocmVsYXRpb24pKTsKQEAgLTIzNzUsNyArMjM3Niw2IEBAIHZvaWQKIGhlYXBfbXVs dGlfaW5zZXJ0KFJlbGF0aW9uIHJlbGF0aW9uLCBUdXBsZVRhYmxlU2xvdCAqKnNsb3RzLCBpbnQg bnR1cGxlcywKIAkJCQkgIENvbW1hbmRJZCBjaWQsIGludCBvcHRpb25zLCBCdWxrSW5zZXJ0U3Rh dGUgYmlzdGF0ZSkKIHsKLQlUcmFuc2FjdGlvbklkIHhpZCA9IEdldEN1cnJlbnRUcmFuc2FjdGlv bklkKCk7CiAJSGVhcFR1cGxlICAqaGVhcHR1cGxlczsKIAlpbnQJCQlpOwogCWludAkJCW5kb25l OwpAQCAtMjQwOCw3ICsyNDA4LDcgQEAgaGVhcF9tdWx0aV9pbnNlcnQoUmVsYXRpb24gcmVsYXRp b24sIFR1cGxlVGFibGVTbG90ICoqc2xvdHMsIGludCBudHVwbGVzLAogCQl0dXBsZSA9IEV4ZWNG ZXRjaFNsb3RIZWFwVHVwbGUoc2xvdHNbaV0sIHRydWUsIE5VTEwpOwogCQlzbG90c1tpXS0+dHRz X3RhYmxlT2lkID0gUmVsYXRpb25HZXRSZWxpZChyZWxhdGlvbik7CiAJCXR1cGxlLT50X3RhYmxl T2lkID0gc2xvdHNbaV0tPnR0c190YWJsZU9pZDsKLQkJaGVhcHR1cGxlc1tpXSA9IGhlYXBfcHJl cGFyZV9pbnNlcnQocmVsYXRpb24sIHR1cGxlLCB4aWQsIGNpZCwKKwkJaGVhcHR1cGxlc1tpXSA9 IGhlYXBfcHJlcGFyZV9pbnNlcnQocmVsYXRpb24sIHR1cGxlLCBHZXRDdXJyZW50VHJhbnNhY3Rp b25JZCgpLCBjaWQsCiAJCQkJCQkJCQkJCW9wdGlvbnMpOwogCX0KIApAQCAtMjc0Niw3ICsyNzQ2 LDggQEAgaGVhcF9tdWx0aV9pbnNlcnQoUmVsYXRpb24gcmVsYXRpb24sIFR1cGxlVGFibGVTbG90 ICoqc2xvdHMsIGludCBudHVwbGVzLAogdm9pZAogc2ltcGxlX2hlYXBfaW5zZXJ0KFJlbGF0aW9u IHJlbGF0aW9uLCBIZWFwVHVwbGUgdHVwKQogewotCWhlYXBfaW5zZXJ0KHJlbGF0aW9uLCB0dXAs IEdldEN1cnJlbnRDb21tYW5kSWQodHJ1ZSksIDAsIE5VTEwpOworCWhlYXBfaW5zZXJ0KHJlbGF0 aW9uLCB0dXAsIEdldEN1cnJlbnRUcmFuc2FjdGlvbklkKCksCisJCQkJR2V0Q3VycmVudENvbW1h bmRJZCh0cnVlKSwgMCwgTlVMTCk7CiB9CiAKIC8qCkBAIC0yODAzLDExICsyODA0LDEwIEBAIHht YXhfaW5mb21hc2tfY2hhbmdlZCh1aW50MTYgbmV3X2luZm9tYXNrLCB1aW50MTYgb2xkX2luZm9t YXNrKQogICovCiBUTV9SZXN1bHQKIGhlYXBfZGVsZXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25z dCBJdGVtUG9pbnRlckRhdGEgKnRpZCwKLQkJCUNvbW1hbmRJZCBjaWQsIFNuYXBzaG90IGNyb3Nz Y2hlY2ssIGJvb2wgd2FpdCwKKwkJCVRyYW5zYWN0aW9uSWQgeGlkLCBDb21tYW5kSWQgY2lkLCBT bmFwc2hvdCBjcm9zc2NoZWNrLCBib29sIHdhaXQsCiAJCQlUTV9GYWlsdXJlRGF0YSAqdG1mZCwg Ym9vbCBjaGFuZ2luZ1BhcnQsIGJvb2wgd2FsTG9naWNhbCkKIHsKIAlUTV9SZXN1bHQJcmVzdWx0 OwotCVRyYW5zYWN0aW9uSWQgeGlkID0gR2V0Q3VycmVudFRyYW5zYWN0aW9uSWQoKTsKIAlJdGVt SWQJCWxwOwogCUhlYXBUdXBsZURhdGEgdHA7CiAJUGFnZQkJcGFnZTsKQEAgLTI4MjQsNiArMjgy NCw3IEBAIGhlYXBfZGVsZXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRh dGEgKnRpZCwKIAlib29sCQlvbGRfa2V5X2NvcGllZCA9IGZhbHNlOwogCiAJQXNzZXJ0KEl0ZW1Q b2ludGVySXNWYWxpZCh0aWQpKTsKKwlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQoeGlkKSk7 CiAKIAlBc3NlcnRIYXNTbmFwc2hvdEZvclRvYXN0KHJlbGF0aW9uKTsKIApAQCAtMzI0MCw3ICsz MjQxLDcgQEAgc2ltcGxlX2hlYXBfZGVsZXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVt UG9pbnRlckRhdGEgKnRpZCkKIAlUTV9SZXN1bHQJcmVzdWx0OwogCVRNX0ZhaWx1cmVEYXRhIHRt ZmQ7CiAKLQlyZXN1bHQgPSBoZWFwX2RlbGV0ZShyZWxhdGlvbiwgdGlkLAorCXJlc3VsdCA9IGhl YXBfZGVsZXRlKHJlbGF0aW9uLCB0aWQsIEdldEN1cnJlbnRUcmFuc2FjdGlvbklkKCksCiAJCQkJ CQkgR2V0Q3VycmVudENvbW1hbmRJZCh0cnVlKSwgSW52YWxpZFNuYXBzaG90LAogCQkJCQkJIHRy dWUgLyogd2FpdCBmb3IgY29tbWl0ICovICwKIAkJCQkJCSAmdG1mZCwgZmFsc2UsCS8qIGNoYW5n aW5nUGFydCAqLwpAQCAtMzI4MywxMiArMzI4NCwxMSBAQCBzaW1wbGVfaGVhcF9kZWxldGUoUmVs YXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqdGlkKQogICovCiBUTV9SZXN1 bHQKIGhlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEg Km90aWQsIEhlYXBUdXBsZSBuZXd0dXAsCi0JCQlDb21tYW5kSWQgY2lkLCBTbmFwc2hvdCBjcm9z c2NoZWNrLCBib29sIHdhaXQsCisJCQlUcmFuc2FjdGlvbklkIHhpZCwgQ29tbWFuZElkIGNpZCwg U25hcHNob3QgY3Jvc3NjaGVjaywgYm9vbCB3YWl0LAogCQkJVE1fRmFpbHVyZURhdGEgKnRtZmQs IExvY2tUdXBsZU1vZGUgKmxvY2ttb2RlLAogCQkJVFVfVXBkYXRlSW5kZXhlcyAqdXBkYXRlX2lu ZGV4ZXMsIGJvb2wgd2FsTG9naWNhbCkKIHsKIAlUTV9SZXN1bHQJcmVzdWx0OwotCVRyYW5zYWN0 aW9uSWQgeGlkID0gR2V0Q3VycmVudFRyYW5zYWN0aW9uSWQoKTsKIAlCaXRtYXBzZXQgICpob3Rf YXR0cnM7CiAJQml0bWFwc2V0ICAqc3VtX2F0dHJzOwogCUJpdG1hcHNldCAgKmtleV9hdHRyczsK QEAgLTMzMjgsNiArMzMyOCw3IEBAIGhlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25z dCBJdGVtUG9pbnRlckRhdGEgKm90aWQsIEhlYXBUdXBsZSBuZXd0dXAsCiAJCQkJaW5mb21hc2sy X25ld190dXBsZTsKIAogCUFzc2VydChJdGVtUG9pbnRlcklzVmFsaWQob3RpZCkpOworCUFzc2Vy dChUcmFuc2FjdGlvbklkSXNWYWxpZCh4aWQpKTsKIAogCS8qIENoZWFwLCBzaW1wbGlzdGljIGNo ZWNrIHRoYXQgdGhlIHR1cGxlIG1hdGNoZXMgdGhlIHJlbCdzIHJvd3R5cGUuICovCiAJQXNzZXJ0 KEhlYXBUdXBsZUhlYWRlckdldE5hdHRzKG5ld3R1cC0+dF9kYXRhKSA8PQpAQCAtNDUzNCw3ICs0 NTM1LDcgQEAgc2ltcGxlX2hlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVt UG9pbnRlckRhdGEgKm90aWQsIEhlYXBUdXBsZSB0dXAKIAlUTV9GYWlsdXJlRGF0YSB0bWZkOwog CUxvY2tUdXBsZU1vZGUgbG9ja21vZGU7CiAKLQlyZXN1bHQgPSBoZWFwX3VwZGF0ZShyZWxhdGlv biwgb3RpZCwgdHVwLAorCXJlc3VsdCA9IGhlYXBfdXBkYXRlKHJlbGF0aW9uLCBvdGlkLCB0dXAs IEdldEN1cnJlbnRUcmFuc2FjdGlvbklkKCksCiAJCQkJCQkgR2V0Q3VycmVudENvbW1hbmRJZCh0 cnVlKSwgSW52YWxpZFNuYXBzaG90LAogCQkJCQkJIHRydWUgLyogd2FpdCBmb3IgY29tbWl0ICov ICwKIAkJCQkJCSAmdG1mZCwgJmxvY2ttb2RlLCB1cGRhdGVfaW5kZXhlcywKQEAgLTUzNzMsOCAr NTM3NCw2IEBAIGNvbXB1dGVfbmV3X3htYXhfaW5mb21hc2soVHJhbnNhY3Rpb25JZCB4bWF4LCB1 aW50MTYgb2xkX2luZm9tYXNrLAogCXVpbnQxNgkJbmV3X2luZm9tYXNrLAogCQkJCW5ld19pbmZv bWFzazI7CiAKLQlBc3NlcnQoVHJhbnNhY3Rpb25JZElzQ3VycmVudFRyYW5zYWN0aW9uSWQoYWRk X3RvX3htYXgpKTsKLQogbDU6CiAJbmV3X2luZm9tYXNrID0gMDsKIAluZXdfaW5mb21hc2syID0g MDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCmluZGV4IGU2ZDYzMGZh MmY3Li5iNDlmOWFkZDViYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVh cGFtX2hhbmRsZXIuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxl ci5jCkBAIC0yNTIsNyArMjUyLDggQEAgaGVhcGFtX3R1cGxlX2luc2VydChSZWxhdGlvbiByZWxh dGlvbiwgVHVwbGVUYWJsZVNsb3QgKnNsb3QsIENvbW1hbmRJZCBjaWQsCiAJdHVwbGUtPnRfdGFi bGVPaWQgPSBzbG90LT50dHNfdGFibGVPaWQ7CiAKIAkvKiBQZXJmb3JtIHRoZSBpbnNlcnRpb24s IGFuZCBjb3B5IHRoZSByZXN1bHRpbmcgSXRlbVBvaW50ZXIgKi8KLQloZWFwX2luc2VydChyZWxh dGlvbiwgdHVwbGUsIGNpZCwgb3B0aW9ucywgYmlzdGF0ZSk7CisJaGVhcF9pbnNlcnQocmVsYXRp b24sIHR1cGxlLCBHZXRDdXJyZW50VHJhbnNhY3Rpb25JZCgpLCBjaWQsIG9wdGlvbnMsCisJCQkJ YmlzdGF0ZSk7CiAJSXRlbVBvaW50ZXJDb3B5KCZ0dXBsZS0+dF9zZWxmLCAmc2xvdC0+dHRzX3Rp ZCk7CiAKIAlpZiAoc2hvdWxkRnJlZSkKQEAgLTI3NSw3ICsyNzYsOCBAQCBoZWFwYW1fdHVwbGVf aW5zZXJ0X3NwZWN1bGF0aXZlKFJlbGF0aW9uIHJlbGF0aW9uLCBUdXBsZVRhYmxlU2xvdCAqc2xv dCwKIAlvcHRpb25zIHw9IEhFQVBfSU5TRVJUX1NQRUNVTEFUSVZFOwogCiAJLyogUGVyZm9ybSB0 aGUgaW5zZXJ0aW9uLCBhbmQgY29weSB0aGUgcmVzdWx0aW5nIEl0ZW1Qb2ludGVyICovCi0JaGVh cF9pbnNlcnQocmVsYXRpb24sIHR1cGxlLCBjaWQsIG9wdGlvbnMsIGJpc3RhdGUpOworCWhlYXBf aW5zZXJ0KHJlbGF0aW9uLCB0dXBsZSwgR2V0Q3VycmVudFRyYW5zYWN0aW9uSWQoKSwgY2lkLCBv cHRpb25zLAorCQkJCWJpc3RhdGUpOwogCUl0ZW1Qb2ludGVyQ29weSgmdHVwbGUtPnRfc2VsZiwg JnNsb3QtPnR0c190aWQpOwogCiAJaWYgKHNob3VsZEZyZWUpCkBAIC0zMDksOCArMzExLDggQEAg aGVhcGFtX3R1cGxlX2RlbGV0ZShSZWxhdGlvbiByZWxhdGlvbiwgSXRlbVBvaW50ZXIgdGlkLCBD b21tYW5kSWQgY2lkLAogCSAqIHRoZSBzdG9yYWdlIGl0c2VsZiBpcyBjbGVhbmluZyB0aGUgZGVh ZCB0dXBsZXMgYnkgaXRzZWxmLCBpdCBpcyB0aGUKIAkgKiB0aW1lIHRvIGNhbGwgdGhlIGluZGV4 IHR1cGxlIGRlbGV0aW9uIGFsc28uCiAJICovCi0JcmV0dXJuIGhlYXBfZGVsZXRlKHJlbGF0aW9u LCB0aWQsIGNpZCwgY3Jvc3NjaGVjaywgd2FpdCwgdG1mZCwgY2hhbmdpbmdQYXJ0LAotCQkJCQkg ICB0cnVlKTsKKwlyZXR1cm4gaGVhcF9kZWxldGUocmVsYXRpb24sIHRpZCwgR2V0Q3VycmVudFRy YW5zYWN0aW9uSWQoKSwgY2lkLAorCQkJCQkgICBjcm9zc2NoZWNrLCB3YWl0LCB0bWZkLCBjaGFu Z2luZ1BhcnQsIHRydWUpOwogfQogCiAKQEAgLTMyOCw3ICszMzAsOCBAQCBoZWFwYW1fdHVwbGVf dXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBJdGVtUG9pbnRlciBvdGlkLCBUdXBsZVRhYmxlU2xv dCAqc2xvdCwKIAlzbG90LT50dHNfdGFibGVPaWQgPSBSZWxhdGlvbkdldFJlbGlkKHJlbGF0aW9u KTsKIAl0dXBsZS0+dF90YWJsZU9pZCA9IHNsb3QtPnR0c190YWJsZU9pZDsKIAotCXJlc3VsdCA9 IGhlYXBfdXBkYXRlKHJlbGF0aW9uLCBvdGlkLCB0dXBsZSwgY2lkLCBjcm9zc2NoZWNrLCB3YWl0 LAorCXJlc3VsdCA9IGhlYXBfdXBkYXRlKHJlbGF0aW9uLCBvdGlkLCB0dXBsZSwgR2V0Q3VycmVu dFRyYW5zYWN0aW9uSWQoKSwKKwkJCQkJCSBjaWQsIGNyb3NzY2hlY2ssIHdhaXQsCiAJCQkJCQkg dG1mZCwgbG9ja21vZGUsIHVwZGF0ZV9pbmRleGVzLCB0cnVlKTsKIAlJdGVtUG9pbnRlckNvcHko JnR1cGxlLT50X3NlbGYsICZzbG90LT50dHNfdGlkKTsKIApAQCAtMjQ0MSw5ICsyNDQ0LDE2IEBA IHJlZm9ybV9hbmRfcmV3cml0ZV90dXBsZShIZWFwVHVwbGUgdHVwbGUsCiAJCSAqIGZsYWcgdG8g c2tpcCBsb2dpY2FsIGRlY29kaW5nOiBhcyBzb29uIGFzIFJFUEFDSyBDT05DVVJSRU5UTFkgc3dh cHMKIAkJICogdGhlIHJlbGF0aW9uIGZpbGVzLCBpdCBkcm9wcyB0aGlzIHJlbGF0aW9uLCBzbyBu byBsb2dpY2FsCiAJCSAqIHJlcGxpY2F0aW9uIHN1YnNjcmlwdGlvbiBzaG91bGQgbmVlZCB0aGUg ZGF0YS4KKwkJICoKKwkJICogSXQgaXMgYWxzbyBjcnVjaWFsIHRvIHN0YW1wIHRoZSBuZXcgcmVj b3JkIHdpdGggdGhlIGV4YWN0IHNhbWUgeGlkCisJCSAqIGFuZCBjaWQsIGJlY2F1c2UgdGhlIHR1 cGxlIG11c3QgYmUgdmlzaWJsZSB0byB0aGUgc25hcHNob3RzIG9mIHRoZQorCQkgKiBjb25jdXJy ZW50IHRyYW5zYWN0aW9ucyBsYXRlci4KIAkJICovCi0JCWhlYXBfaW5zZXJ0KE5ld0hlYXAsIGNv cGllZFR1cGxlLCBHZXRDdXJyZW50Q29tbWFuZElkKHRydWUpLAotCQkJCQlIRUFQX0lOU0VSVF9O T19MT0dJQ0FMLCBOVUxMKTsKKwkJLy8gVE9ETzogbG9va3MgbGlrZSBjaWQgaXMgbm90IHJlcXVp cmVkCisJCUNvbW1hbmRJZAljaWQgPSBIZWFwVHVwbGVIZWFkZXJHZXRSYXdDb21tYW5kSWQodHVw bGUtPnRfZGF0YSk7CisJCVRyYW5zYWN0aW9uSWQgeGlkID0gSGVhcFR1cGxlSGVhZGVyR2V0WG1p bih0dXBsZS0+dF9kYXRhKTsKKworCQloZWFwX2luc2VydChOZXdIZWFwLCBjb3BpZWRUdXBsZSwg eGlkLCBjaWQsIEhFQVBfSU5TRVJUX05PX0xPR0lDQUwsIE5VTEwpOwogCX0KIAogCWhlYXBfZnJl ZXR1cGxlKGNvcGllZFR1cGxlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Ns dXN0ZXIuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NsdXN0ZXIuYwppbmRleCBmMmEyZWM2ZDNl NS4uMWIxOTI4Y2UzMDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NsdXN0ZXIu YworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jbHVzdGVyLmMKQEAgLTU4LDYgKzU4LDcgQEAK ICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgogI2lu Y2x1ZGUgInN0b3JhZ2UvcHJlZGljYXRlLmgiCisjaW5jbHVkZSAic3RvcmFnZS9wcm9jYXJyYXku aCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NzaWduYWwuaCIKICNpbmNsdWRlICJ0Y29wL3Rjb3Bw cm90LmgiCiAjaW5jbHVkZSAidXRpbHMvYWNsLmgiCkBAIC0yNDksMTUgKzI1MCwyMCBAQCBzdGF0 aWMgYm9vbCBkZWNvZGVfY29uY3VycmVudF9jaGFuZ2VzKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQg KmN0eCwKIAkJCQkJCQkJCSAgRGVjb2RpbmdXb3JrZXJTaGFyZWQgKnNoYXJlZCk7CiBzdGF0aWMg dm9pZCBhcHBseV9jb25jdXJyZW50X2NoYW5nZXMoQnVmRmlsZSAqZmlsZSwgQ2hhbmdlRGVzdCAq ZGVzdCk7CiBzdGF0aWMgdm9pZCBhcHBseV9jb25jdXJyZW50X2luc2VydChSZWxhdGlvbiByZWws IEhlYXBUdXBsZSB0dXAsCisJCQkJCQkJCQlUcmFuc2FjdGlvbklkIHhpZCwKIAkJCQkJCQkJCUlu ZGV4SW5zZXJ0U3RhdGUgKmlpc3RhdGUsCiAJCQkJCQkJCQlUdXBsZVRhYmxlU2xvdCAqaW5kZXhf c2xvdCk7CiBzdGF0aWMgdm9pZCBhcHBseV9jb25jdXJyZW50X3VwZGF0ZShSZWxhdGlvbiByZWws IEhlYXBUdXBsZSB0dXAsCiAJCQkJCQkJCQlIZWFwVHVwbGUgdHVwX3RhcmdldCwKKwkJCQkJCQkJ CVRyYW5zYWN0aW9uSWQgeGlkLAogCQkJCQkJCQkJSW5kZXhJbnNlcnRTdGF0ZSAqaWlzdGF0ZSwK IAkJCQkJCQkJCVR1cGxlVGFibGVTbG90ICppbmRleF9zbG90KTsKLXN0YXRpYyB2b2lkIGFwcGx5 X2NvbmN1cnJlbnRfZGVsZXRlKFJlbGF0aW9uIHJlbCwgSGVhcFR1cGxlIHR1cF90YXJnZXQpOwor c3RhdGljIHZvaWQgYXBwbHlfY29uY3VycmVudF9kZWxldGUoUmVsYXRpb24gcmVsLAorCQkJCQkJ CQkJVHJhbnNhY3Rpb25JZCB4aWQsCisJCQkJCQkJCQlIZWFwVHVwbGUgdHVwX3RhcmdldCk7CiBz dGF0aWMgSGVhcFR1cGxlIGZpbmRfdGFyZ2V0X3R1cGxlKFJlbGF0aW9uIHJlbCwgQ2hhbmdlRGVz dCAqZGVzdCwKIAkJCQkJCQkJICAgSGVhcFR1cGxlIHR1cF9rZXksCisJCQkJCQkJCSAgIFNuYXBz aG90IHNuYXBzaG90LAogCQkJCQkJCQkgICBUdXBsZVRhYmxlU2xvdCAqaWRlbnRfc2xvdCk7CiBz dGF0aWMgdm9pZCBwcm9jZXNzX2NvbmN1cnJlbnRfY2hhbmdlcyhYTG9nUmVjUHRyIGVuZF9vZl93 YWwsCiAJCQkJCQkJCQkgICBDaGFuZ2VEZXN0ICpkZXN0LApAQCAtMTA5MSw3ICsxMDk3LDE0IEBA IHJlYnVpbGRfcmVsYXRpb24oUmVsYXRpb24gT2xkSGVhcCwgUmVsYXRpb24gaW5kZXgsIGJvb2wg dmVyYm9zZSwgYm9vbCBjb25jdXJyZW50CiAKIAkvKiBUaGUgaGlzdG9yaWMgc25hcHNob3Qgd29u J3QgYmUgbmVlZGVkIGFueW1vcmUuICovCiAJaWYgKHNuYXBzaG90KQorCXsKKwkJVHJhbnNhY3Rp b25JZCB4bWluID0gc25hcHNob3QtPnhtaW47CiAJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisJCUFz c2VydChjb25jdXJyZW50KTsKKwkJLy8gVE9ETzogc2VlbXMgbGlrZSBpdCBub3QgcmVxdWlyZWQ6 IG5lZWQgdG8gY2hlY2sgU25hcEJ1aWxkSW5pdGlhbFNuYXBzaG90Rm9yUmVwYWNrCisJCVdhaXRG b3JPbGRlclNuYXBzaG90cyh4bWluLCBmYWxzZSk7CisJfQorCiAKIAlpZiAoY29uY3VycmVudCkK IAl7CkBAIC0xMzgyLDMwICsxMzk1LDM1IEBAIGNvcHlfdGFibGVfZGF0YShSZWxhdGlvbiBOZXdI ZWFwLCBSZWxhdGlvbiBPbGRIZWFwLCBSZWxhdGlvbiBPbGRJbmRleCwKIAkgKiBub3QgdG8gYmUg YWdncmVzc2l2ZSBhYm91dCB0aGlzLgogCSAqLwogCW1lbXNldCgmcGFyYW1zLCAwLCBzaXplb2Yo VmFjdXVtUGFyYW1zKSk7Ci0JdmFjdXVtX2dldF9jdXRvZmZzKE9sZEhlYXAsIHBhcmFtcywgJmN1 dG9mZnMpOwotCi0JLyoKLQkgKiBGcmVlemVYaWQgd2lsbCBiZWNvbWUgdGhlIHRhYmxlJ3MgbmV3 IHJlbGZyb3plbnhpZCwgYW5kIHRoYXQgbXVzdG4ndCBnbwotCSAqIGJhY2t3YXJkcywgc28gdGFr ZSB0aGUgbWF4LgotCSAqLworCWlmICghY29uY3VycmVudCkKIAl7CiAJCVRyYW5zYWN0aW9uSWQg cmVsZnJvemVueGlkID0gT2xkSGVhcC0+cmRfcmVsLT5yZWxmcm96ZW54aWQ7CisJCU11bHRpWGFj dElkIHJlbG1pbm14aWQgPSBPbGRIZWFwLT5yZF9yZWwtPnJlbG1pbm14aWQ7CiAKKwkJdmFjdXVt X2dldF9jdXRvZmZzKE9sZEhlYXAsIHBhcmFtcywgJmN1dG9mZnMpOworCQkvKgorCQkgKiBGcmVl emVYaWQgd2lsbCBiZWNvbWUgdGhlIHRhYmxlJ3MgbmV3IHJlbGZyb3plbnhpZCwgYW5kIHRoYXQg bXVzdG4ndCBnbworCQkgKiBiYWNrd2FyZHMsIHNvIHRha2UgdGhlIG1heC4KKwkJICovCiAJCWlm IChUcmFuc2FjdGlvbklkSXNWYWxpZChyZWxmcm96ZW54aWQpICYmCiAJCQlUcmFuc2FjdGlvbklk UHJlY2VkZXMoY3V0b2Zmcy5GcmVlemVMaW1pdCwgcmVsZnJvemVueGlkKSkKIAkJCWN1dG9mZnMu RnJlZXplTGltaXQgPSByZWxmcm96ZW54aWQ7Ci0JfQotCi0JLyoKLQkgKiBNdWx0aVhhY3RDdXRv ZmYsIHNpbWlsYXJseSwgc2hvdWxkbid0IGdvIGJhY2t3YXJkcyBlaXRoZXIuCi0JICovCi0Jewot CQlNdWx0aVhhY3RJZCByZWxtaW5teGlkID0gT2xkSGVhcC0+cmRfcmVsLT5yZWxtaW5teGlkOwot CisJCS8qCisJCSAqIE11bHRpWGFjdEN1dG9mZiwgc2ltaWxhcmx5LCBzaG91bGRuJ3QgZ28gYmFj a3dhcmRzIGVpdGhlci4KKwkJICovCiAJCWlmIChNdWx0aVhhY3RJZElzVmFsaWQocmVsbWlubXhp ZCkgJiYKIAkJCU11bHRpWGFjdElkUHJlY2VkZXMoY3V0b2Zmcy5NdWx0aVhhY3RDdXRvZmYsIHJl bG1pbm14aWQpKQogCQkJY3V0b2Zmcy5NdWx0aVhhY3RDdXRvZmYgPSByZWxtaW5teGlkOwogCX0K KwllbHNlCisJeworCQkvKgorCQkgKiBJbiBjb25jdXJyZW50IG1vZGUgd2UgcmV1c2UgYWxsIHRo ZSB4bWluL3htYXgsCisJCSAqIHNvIGp1c3QgdXNlIGN1cnJlbnQgdmFsdWVzIGZvciBzaW1wbGlj aXR5LgorCQkgKi8KKwkJY3V0b2Zmcy5GcmVlemVMaW1pdCA9IE9sZEhlYXAtPnJkX3JlbC0+cmVs ZnJvemVueGlkOworCQljdXRvZmZzLk11bHRpWGFjdEN1dG9mZiA9IE9sZEhlYXAtPnJkX3JlbC0+ cmVsbWlubXhpZDsKKwl9CiAKIAkvKgogCSAqIERlY2lkZSB3aGV0aGVyIHRvIHVzZSBhbiBpbmRl eHNjYW4gb3Igc2Vxc2Nhbi1hbmQtb3B0aW9uYWwtc29ydCB0byBzY2FuCkBAIC0yNzQ1LDYgKzI3 NjMsNyBAQCBhcHBseV9jb25jdXJyZW50X2NoYW5nZXMoQnVmRmlsZSAqZmlsZSwgQ2hhbmdlRGVz dCAqZGVzdCkKIAkJc2l6ZV90CQlucmVhZDsKIAkJSGVhcFR1cGxlCXR1cCwKIAkJCQkJdHVwX2V4 aXN0OworCQlUcmFuc2FjdGlvbklkIHhpZDsKIAogCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwog CkBAIC0yNzYxLDYgKzI3ODAsMTcgQEAgYXBwbHlfY29uY3VycmVudF9jaGFuZ2VzKEJ1ZkZpbGUg KmZpbGUsIENoYW5nZURlc3QgKmRlc3QpCiAJCXR1cC0+dF9sZW4gPSB0X2xlbjsKIAkJSXRlbVBv aW50ZXJTZXRJbnZhbGlkKCZ0dXAtPnRfc2VsZik7CiAJCXR1cC0+dF90YWJsZU9pZCA9IFJlbGF0 aW9uR2V0UmVsaWQoZGVzdC0+cmVsKTsKKwkJQnVmRmlsZVJlYWRFeGFjdChmaWxlLCAmeGlkLCBz aXplb2YoVHJhbnNhY3Rpb25JZCkpOworCisJCWlmIChUcmFuc2FjdGlvbklkSXNWYWxpZCh4aWQg JiYgVHJhbnNhY3Rpb25JZElzSW5Qcm9ncmVzcyh4aWQpKSkKKwkJeworCQkJLyogeG1pbiBpcyBj b21taXR0ZWQgZm9yIHN1cmUgYmVjYXVzZSB3ZSBnb3QgdGhhdCB1cGRhdGUgZnJvbSByZW9yZGVy YnVmZmVyLgorCQkJICogYnV0IHRoZXJlIGlzIGEgcG9zc2liaWxpdHkgcHJvY2FycmF5IGlzIG5v dCB5ZXQgdXBkYXRlZCBhbmQgY3VycmVudCBiYWNrZW5kIHN0aWxsIHNlZSBpdCBhcworCQkJICog aW4tcHJvZ3Jlc3MuIExldCdzIHdhaXQgZm9yIHByb2NhcnJheSB0byBiZSB1cGRhdGVkLiAqLwor CQkJWGFjdExvY2tUYWJsZVdhaXQoeGlkLCBOVUxMLCBOVUxMLCBYTFRXX05vbmUpOworCQkJQXNz ZXJ0KCFUcmFuc2FjdGlvbklkSXNJblByb2dyZXNzKHhpZCkpOworCQkJQXNzZXJ0KFRyYW5zYWN0 aW9uSWREaWRDb21taXQoeGlkKSk7CisJCX0KIAogCQlpZiAoa2luZCA9PSBDSEFOR0VfVVBEQVRF X09MRCkKIAkJewpAQCAtMjc3MSw3ICsyODAxLDcgQEAgYXBwbHlfY29uY3VycmVudF9jaGFuZ2Vz KEJ1ZkZpbGUgKmZpbGUsIENoYW5nZURlc3QgKmRlc3QpCiAJCXsKIAkJCUFzc2VydCh0dXBfb2xk ID09IE5VTEwpOwogCi0JCQlhcHBseV9jb25jdXJyZW50X2luc2VydChyZWwsIHR1cCwgZGVzdC0+ aWlzdGF0ZSwgaW5kZXhfc2xvdCk7CisJCQlhcHBseV9jb25jdXJyZW50X2luc2VydChyZWwsIHR1 cCwgeGlkLCBkZXN0LT5paXN0YXRlLCBpbmRleF9zbG90KTsKIAogCQkJcGZyZWUodHVwKTsKIAkJ fQpAQCAtMjc5MCwxNyArMjgyMCwyMSBAQCBhcHBseV9jb25jdXJyZW50X2NoYW5nZXMoQnVmRmls ZSAqZmlsZSwgQ2hhbmdlRGVzdCAqZGVzdCkKIAkJCX0KIAogCQkJLyoKLQkJCSAqIEZpbmQgdGhl IHR1cGxlIHRvIGJlIHVwZGF0ZWQgb3IgZGVsZXRlZC4KKwkJCSAqIEZpbmQgdGhlIHR1cGxlIHRv IGJlIHVwZGF0ZWQgb3IgZGVsZXRlZCB1c2luZyBTbmFwc2hvdFNlbGYuCisJCQkgKiBUaGF0IHdh eSB3ZSByZWNlaXZlIHRoZSBsYXN0IGFsaXZlIHZlcnNpb24gaW4gY2FzZSBvZiBIT1QgY2hhaW4u CisJCQkgKiBJdCBpcyBndWFyYW50ZWVkIHRoZXJlIGlzIG5vIGFueSBub24teWV0IGNvbW1pdHRl ZCwgYnV0IHVwZGF0ZWQgdmVyc2lvbgorCQkJICogYmVjYXVzZSB3ZSBoZXJlIHJlcGxheWluZyBh bGwtY29tbWl0dGVkIHRyYW5zYWN0aW9ucyB3aXRob3V0IGFueSBjb25jdXJyZW5jeQorCQkJICog aW52b2x2ZWQuCiAJCQkgKi8KLQkJCXR1cF9leGlzdCA9IGZpbmRfdGFyZ2V0X3R1cGxlKHJlbCwg ZGVzdCwgdHVwX2tleSwgaWRlbnRfc2xvdCk7CisJCQl0dXBfZXhpc3QgPSBmaW5kX3RhcmdldF90 dXBsZShyZWwsIGRlc3QsIHR1cF9rZXksIFNuYXBzaG90U2VsZiwgaWRlbnRfc2xvdCk7CiAJCQlp ZiAodHVwX2V4aXN0ID09IE5VTEwpCiAJCQkJZWxvZyhFUlJPUiwgImZhaWxlZCB0byBmaW5kIHRh cmdldCB0dXBsZSIpOwogCiAJCQlpZiAoa2luZCA9PSBDSEFOR0VfVVBEQVRFX05FVykKLQkJCQlh cHBseV9jb25jdXJyZW50X3VwZGF0ZShyZWwsIHR1cCwgdHVwX2V4aXN0LCBkZXN0LT5paXN0YXRl LAorCQkJCWFwcGx5X2NvbmN1cnJlbnRfdXBkYXRlKHJlbCwgdHVwLCB0dXBfZXhpc3QsIHhpZCwg ZGVzdC0+aWlzdGF0ZSwKIAkJCQkJCQkJCQlpbmRleF9zbG90KTsKIAkJCWVsc2UKLQkJCQlhcHBs eV9jb25jdXJyZW50X2RlbGV0ZShyZWwsIHR1cF9leGlzdCk7CisJCQkJYXBwbHlfY29uY3VycmVu dF9kZWxldGUocmVsLCB4aWQsIHR1cF9leGlzdCk7CiAKIAkJCWlmICh0dXBfb2xkICE9IE5VTEwp CiAJCQl7CkBAIC0yODE5LDYgKzI4NTMsNyBAQCBhcHBseV9jb25jdXJyZW50X2NoYW5nZXMoQnVm RmlsZSAqZmlsZSwgQ2hhbmdlRGVzdCAqZGVzdCkKIAkJICovCiAJCWlmIChraW5kICE9IENIQU5H RV9VUERBVEVfT0xEKQogCQl7CisJCQkvLyBUT0RPOiBub3Qgc3VyZSBpdCBpcyByZXF1aXJlZCBh dCBhbGw6IHdlIGFyZSByZXBsYXlpbmcgY29tbWl0dGVkIHRyYW5zYWN0aW9ucyBzdGFtcGluZyB0 aGVtIHdpdGggY29tbWl0dGVkIFhJRAogCQkJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQoKTsKIAkJ CVVwZGF0ZUFjdGl2ZVNuYXBzaG90Q29tbWFuZElkKCk7CiAJCX0KQEAgLTI4MzAsNyArMjg2NSw3 IEBAIGFwcGx5X2NvbmN1cnJlbnRfY2hhbmdlcyhCdWZGaWxlICpmaWxlLCBDaGFuZ2VEZXN0ICpk ZXN0KQogfQogCiBzdGF0aWMgdm9pZAotYXBwbHlfY29uY3VycmVudF9pbnNlcnQoUmVsYXRpb24g cmVsLCBIZWFwVHVwbGUgdHVwLCBJbmRleEluc2VydFN0YXRlICppaXN0YXRlLAorYXBwbHlfY29u Y3VycmVudF9pbnNlcnQoUmVsYXRpb24gcmVsLCBIZWFwVHVwbGUgdHVwLCBUcmFuc2FjdGlvbklk IHhpZCwgSW5kZXhJbnNlcnRTdGF0ZSAqaWlzdGF0ZSwKIAkJCQkJCVR1cGxlVGFibGVTbG90ICpp bmRleF9zbG90KQogewogCUxpc3QJICAgKnJlY2hlY2s7CkBAIC0yODQwLDkgKzI4NzUsMTIgQEAg YXBwbHlfY29uY3VycmVudF9pbnNlcnQoUmVsYXRpb24gcmVsLCBIZWFwVHVwbGUgdHVwLCBJbmRl eEluc2VydFN0YXRlICppaXN0YXRlLAogCSAqIExpa2Ugc2ltcGxlX2hlYXBfaW5zZXJ0KCksIGJ1 dCBtYWtlIHN1cmUgdGhhdCB0aGUgSU5TRVJUIGlzIG5vdAogCSAqIGxvZ2ljYWxseSBkZWNvZGVk IC0gc2VlIHJlZm9ybV9hbmRfcmV3cml0ZV90dXBsZSgpIGZvciBtb3JlCiAJICogaW5mb3JtYXRp b24uCisJICoKKwkgKiBVc2UgYWxyZWFkeSBjb21taXR0ZWQgeGlkIHRvIHN0YW1wIHRoZSB0dXBs ZS4KIAkgKi8KLQloZWFwX2luc2VydChyZWwsIHR1cCwgR2V0Q3VycmVudENvbW1hbmRJZCh0cnVl KSwgSEVBUF9JTlNFUlRfTk9fTE9HSUNBTCwKLQkJCQlOVUxMKTsKKwlBc3NlcnQoVHJhbnNhY3Rp b25JZElzVmFsaWQoeGlkKSk7CisJaGVhcF9pbnNlcnQocmVsLCB0dXAsIHhpZCwgR2V0Q3VycmVu dENvbW1hbmRJZCh0cnVlKSwKKwkJCQlIRUFQX0lOU0VSVF9OT19MT0dJQ0FMLCBOVUxMKTsKIAog CS8qCiAJICogVXBkYXRlIGluZGV4ZXMuCkBAIC0yODUwLDYgKzI4ODgsNyBAQCBhcHBseV9jb25j dXJyZW50X2luc2VydChSZWxhdGlvbiByZWwsIEhlYXBUdXBsZSB0dXAsIEluZGV4SW5zZXJ0U3Rh dGUgKmlpc3RhdGUsCiAJICogSW4gY2FzZSBmdW5jdGlvbnMgaW4gdGhlIGluZGV4IG5lZWQgdGhl IGFjdGl2ZSBzbmFwc2hvdCBhbmQgY2FsbGVyCiAJICogaGFzbid0IHNldCBvbmUuCiAJICovCisJ UHVzaEFjdGl2ZVNuYXBzaG90KEdldExhdGVzdFNuYXBzaG90KCkpOwogCUV4ZWNTdG9yZUhlYXBU dXBsZSh0dXAsIGluZGV4X3Nsb3QsIGZhbHNlKTsKIAlyZWNoZWNrID0gRXhlY0luc2VydEluZGV4 VHVwbGVzKGlpc3RhdGUtPnJyaSwKIAkJCQkJCQkJCWluZGV4X3Nsb3QsCkBAIC0yODYwLDYgKzI4 OTksNyBAQCBhcHBseV9jb25jdXJyZW50X2luc2VydChSZWxhdGlvbiByZWwsIEhlYXBUdXBsZSB0 dXAsIEluZGV4SW5zZXJ0U3RhdGUgKmlpc3RhdGUsCiAJCQkJCQkJCQlOSUwsCS8qIGFyYml0ZXJJ bmRleGVzICovCiAJCQkJCQkJCQlmYWxzZQkvKiBvbmx5U3VtbWFyaXppbmcgKi8KIAkJKTsKKwlQ b3BBY3RpdmVTbmFwc2hvdCgpOwogCiAJLyoKIAkgKiBJZiByZWNoZWNrIGlzIHJlcXVpcmVkLCBp dCBtdXN0IGhhdmUgYmVlbiBwcmVmb3JtZWQgb24gdGhlIHNvdXJjZQpAQCAtMjg3Myw2ICsyOTEz LDcgQEAgYXBwbHlfY29uY3VycmVudF9pbnNlcnQoUmVsYXRpb24gcmVsLCBIZWFwVHVwbGUgdHVw LCBJbmRleEluc2VydFN0YXRlICppaXN0YXRlLAogCiBzdGF0aWMgdm9pZAogYXBwbHlfY29uY3Vy cmVudF91cGRhdGUoUmVsYXRpb24gcmVsLCBIZWFwVHVwbGUgdHVwLCBIZWFwVHVwbGUgdHVwX3Rh cmdldCwKKwkJCQkJCVRyYW5zYWN0aW9uSWQgeGlkLAogCQkJCQkJSW5kZXhJbnNlcnRTdGF0ZSAq aWlzdGF0ZSwgVHVwbGVUYWJsZVNsb3QgKmluZGV4X3Nsb3QpCiB7CiAJTG9ja1R1cGxlTW9kZSBs b2NrbW9kZTsKQEAgLTI4ODcsOSArMjkyOCwxMiBAQCBhcHBseV9jb25jdXJyZW50X3VwZGF0ZShS ZWxhdGlvbiByZWwsIEhlYXBUdXBsZSB0dXAsIEhlYXBUdXBsZSB0dXBfdGFyZ2V0LAogCSAqCiAJ ICogRG8gaXQgbGlrZSBpbiBzaW1wbGVfaGVhcF91cGRhdGUoKSwgZXhjZXB0IGZvciAnd2FsX2xv Z2ljYWwnIChhbmQKIAkgKiBleGNlcHQgZm9yICd3YWl0JykuCisJICoKKwkgKiBVc2UgYWxyZWFk eSBjb21taXR0ZWQgeGlkIHRvIHN0YW1wIHRoZSB0dXBsZS4KIAkgKi8KKwlBc3NlcnQoVHJhbnNh Y3Rpb25JZElzVmFsaWQoeGlkKSk7CiAJcmVzID0gaGVhcF91cGRhdGUocmVsLCAmdHVwX3Rhcmdl dC0+dF9zZWxmLCB0dXAsCi0JCQkJCSAgR2V0Q3VycmVudENvbW1hbmRJZCh0cnVlKSwKKwkJCQkJ ICB4aWQsIEdldEN1cnJlbnRDb21tYW5kSWQodHJ1ZSksCiAJCQkJCSAgSW52YWxpZFNuYXBzaG90 LAogCQkJCQkgIGZhbHNlLAkvKiBubyB3YWl0IC0gb25seSB3ZSBhcmUgZG9pbmcgY2hhbmdlcyAq LwogCQkJCQkgICZ0bWZkLCAmbG9ja21vZGUsICZ1cGRhdGVfaW5kZXhlcywKQEAgLTI5MDEsNiAr Mjk0NSw3IEBAIGFwcGx5X2NvbmN1cnJlbnRfdXBkYXRlKFJlbGF0aW9uIHJlbCwgSGVhcFR1cGxl IHR1cCwgSGVhcFR1cGxlIHR1cF90YXJnZXQsCiAKIAlpZiAodXBkYXRlX2luZGV4ZXMgIT0gVFVf Tm9uZSkKIAl7CisJCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRMYXRlc3RTbmFwc2hvdCgpKTsKIAkJ cmVjaGVjayA9IEV4ZWNJbnNlcnRJbmRleFR1cGxlcyhpaXN0YXRlLT5ycmksCiAJCQkJCQkJCQkJ aW5kZXhfc2xvdCwKIAkJCQkJCQkJCQlpaXN0YXRlLT5lc3RhdGUsCkBAIC0yOTEwLDYgKzI5NTUs NyBAQCBhcHBseV9jb25jdXJyZW50X3VwZGF0ZShSZWxhdGlvbiByZWwsIEhlYXBUdXBsZSB0dXAs IEhlYXBUdXBsZSB0dXBfdGFyZ2V0LAogCQkJCQkJCQkJCU5JTCwJLyogYXJiaXRlckluZGV4ZXMg Ki8KIAkJLyogb25seVN1bW1hcml6aW5nICovCiAJCQkJCQkJCQkJdXBkYXRlX2luZGV4ZXMgPT0g VFVfU3VtbWFyaXppbmcpOworCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCQlsaXN0X2ZyZWUocmVj aGVjayk7CiAJfQogCkBAIC0yOTE3LDcgKzI5NjMsNyBAQCBhcHBseV9jb25jdXJyZW50X3VwZGF0 ZShSZWxhdGlvbiByZWwsIEhlYXBUdXBsZSB0dXAsIEhlYXBUdXBsZSB0dXBfdGFyZ2V0LAogfQog CiBzdGF0aWMgdm9pZAotYXBwbHlfY29uY3VycmVudF9kZWxldGUoUmVsYXRpb24gcmVsLCBIZWFw VHVwbGUgdHVwX3RhcmdldCkKK2FwcGx5X2NvbmN1cnJlbnRfZGVsZXRlKFJlbGF0aW9uIHJlbCwg VHJhbnNhY3Rpb25JZCB4aWQsIEhlYXBUdXBsZSB0dXBfdGFyZ2V0KQogewogCVRNX1Jlc3VsdAly ZXM7CiAJVE1fRmFpbHVyZURhdGEgdG1mZDsKQEAgLTI5MjcsOSArMjk3MywxMiBAQCBhcHBseV9j b25jdXJyZW50X2RlbGV0ZShSZWxhdGlvbiByZWwsIEhlYXBUdXBsZSB0dXBfdGFyZ2V0KQogCSAq CiAJICogRG8gaXQgbGlrZSBpbiBzaW1wbGVfaGVhcF9kZWxldGUoKSwgZXhjZXB0IGZvciAnd2Fs X2xvZ2ljYWwnIChhbmQKIAkgKiBleGNlcHQgZm9yICd3YWl0JykuCisJICoKKwkgKiBVc2UgYWxy ZWFkeSBjb21taXR0ZWQgeGlkIHRvIHN0YW1wIHRoZSB0dXBsZS4KIAkgKi8KLQlyZXMgPSBoZWFw X2RlbGV0ZShyZWwsICZ0dXBfdGFyZ2V0LT50X3NlbGYsIEdldEN1cnJlbnRDb21tYW5kSWQodHJ1 ZSksCi0JCQkJCSAgSW52YWxpZFNuYXBzaG90LCBmYWxzZSwKKwlBc3NlcnQoVHJhbnNhY3Rpb25J ZElzVmFsaWQoeGlkKSk7CisJcmVzID0gaGVhcF9kZWxldGUocmVsLCAmdHVwX3RhcmdldC0+dF9z ZWxmLCB4aWQsCisJCQkJCSAgR2V0Q3VycmVudENvbW1hbmRJZCh0cnVlKSwgSW52YWxpZFNuYXBz aG90LCBmYWxzZSwKIAkJCQkJICAmdG1mZCwKIAkJCQkJICBmYWxzZSwJLyogbm8gd2FpdCAtIG9u bHkgd2UgYXJlIGRvaW5nIGNoYW5nZXMgKi8KIAkJCQkJICBmYWxzZSAvKiB3YWxfbG9naWNhbCAq LyApOwpAQCAtMjk1MCw3ICsyOTk5LDcgQEAgYXBwbHlfY29uY3VycmVudF9kZWxldGUoUmVsYXRp b24gcmVsLCBIZWFwVHVwbGUgdHVwX3RhcmdldCkKICAqLwogc3RhdGljIEhlYXBUdXBsZQogZmlu ZF90YXJnZXRfdHVwbGUoUmVsYXRpb24gcmVsLCBDaGFuZ2VEZXN0ICpkZXN0LCBIZWFwVHVwbGUg dHVwX2tleSwKLQkJCQkgIFR1cGxlVGFibGVTbG90ICppZGVudF9zbG90KQorCQkJCSAgU25hcHNo b3Qgc25hcHNob3QsIFR1cGxlVGFibGVTbG90ICppZGVudF9zbG90KQogewogCVJlbGF0aW9uCWlk ZW50X2luZGV4ID0gZGVzdC0+aWRlbnRfaW5kZXg7CiAJSW5kZXhTY2FuRGVzYyBzY2FuOwpAQCAt Mjk1OSw3ICszMDA4LDcgQEAgZmluZF90YXJnZXRfdHVwbGUoUmVsYXRpb24gcmVsLCBDaGFuZ2VE ZXN0ICpkZXN0LCBIZWFwVHVwbGUgdHVwX2tleSwKIAlIZWFwVHVwbGUJcmVzdWx0ID0gTlVMTDsK IAogCS8qIFhYWCBubyBpbnN0cnVtZW50YXRpb24gZm9yIG5vdyAqLwotCXNjYW4gPSBpbmRleF9i ZWdpbnNjYW4ocmVsLCBpZGVudF9pbmRleCwgR2V0QWN0aXZlU25hcHNob3QoKSwKKwlzY2FuID0g aW5kZXhfYmVnaW5zY2FuKHJlbCwgaWRlbnRfaW5kZXgsIHNuYXBzaG90LAogCQkJCQkJICAgTlVM TCwgZGVzdC0+aWRlbnRfa2V5X25lbnRyaWVzLCAwKTsKIAogCS8qCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dF9yZXBhY2svcGdvdXRwdXRfcmVwYWNrLmMgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dF9yZXBhY2svcGdvdXRwdXRfcmVwYWNrLmMK aW5kZXggZmI5OTU2ZDM5MmQuLjhkNzk2ZTBhNjg0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9wZ291dHB1dF9yZXBhY2svcGdvdXRwdXRfcmVwYWNrLmMKKysrIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXRfcmVwYWNrL3Bnb3V0cHV0X3JlcGFjay5jCkBAIC0y OSw3ICsyOSw4IEBAIHN0YXRpYyB2b2lkIHBsdWdpbl9jb21taXRfdHhuKExvZ2ljYWxEZWNvZGlu Z0NvbnRleHQgKmN0eCwKIHN0YXRpYyB2b2lkIHBsdWdpbl9jaGFuZ2UoTG9naWNhbERlY29kaW5n Q29udGV4dCAqY3R4LCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiAJCQkJCQkgIFJlbGF0aW9uIHJl bCwgUmVvcmRlckJ1ZmZlckNoYW5nZSAqY2hhbmdlKTsKIHN0YXRpYyB2b2lkIHN0b3JlX2NoYW5n ZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCi0JCQkJCQkgQ29uY3VycmVudENoYW5nZUtp bmQga2luZCwgSGVhcFR1cGxlIHR1cGxlKTsKKwkJCQkJCSBDb25jdXJyZW50Q2hhbmdlS2luZCBr aW5kLCBIZWFwVHVwbGUgdHVwbGUsCisJCQkJCQkgVHJhbnNhY3Rpb25JZCB4aWQpOwogCiB2b2lk CiBfUEdfb3V0cHV0X3BsdWdpbl9pbml0KE91dHB1dFBsdWdpbkNhbGxiYWNrcyAqY2IpCkBAIC0x MjAsNyArMTIxLDcgQEAgcGx1Z2luX2NoYW5nZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgs IFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKIAkJCQlpZiAobmV3dHVwbGUgPT0gTlVMTCkKIAkJCQkJ ZWxvZyhFUlJPUiwgIkluY29tcGxldGUgaW5zZXJ0IGluZm8uIik7CiAKLQkJCQlzdG9yZV9jaGFu Z2UoY3R4LCBDSEFOR0VfSU5TRVJULCBuZXd0dXBsZSk7CisJCQkJc3RvcmVfY2hhbmdlKGN0eCwg Q0hBTkdFX0lOU0VSVCwgbmV3dHVwbGUsIGNoYW5nZS0+dHhuLT54aWQpOwogCQkJfQogCQkJYnJl YWs7CiAJCWNhc2UgUkVPUkRFUl9CVUZGRVJfQ0hBTkdFX1VQREFURToKQEAgLTEzNyw5ICsxMzgs MTEgQEAgcGx1Z2luX2NoYW5nZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFJlb3JkZXJC dWZmZXJUWE4gKnR4biwKIAkJCQkJZWxvZyhFUlJPUiwgIkluY29tcGxldGUgdXBkYXRlIGluZm8u Iik7CiAKIAkJCQlpZiAob2xkdHVwbGUgIT0gTlVMTCkKLQkJCQkJc3RvcmVfY2hhbmdlKGN0eCwg Q0hBTkdFX1VQREFURV9PTEQsIG9sZHR1cGxlKTsKKwkJCQkJc3RvcmVfY2hhbmdlKGN0eCwgQ0hB TkdFX1VQREFURV9PTEQsIG9sZHR1cGxlLAorCQkJCQkJCQkgY2hhbmdlLT50eG4tPnhpZCk7CiAK LQkJCQlzdG9yZV9jaGFuZ2UoY3R4LCBDSEFOR0VfVVBEQVRFX05FVywgbmV3dHVwbGUpOworCQkJ CXN0b3JlX2NoYW5nZShjdHgsIENIQU5HRV9VUERBVEVfTkVXLCBuZXd0dXBsZSwKKwkJCQkJCQkg Y2hhbmdlLT50eG4tPnhpZCk7CiAJCQl9CiAJCQlicmVhazsKIAkJY2FzZSBSRU9SREVSX0JVRkZF Ul9DSEFOR0VfREVMRVRFOgpAQCAtMTUyLDcgKzE1NSw3IEBAIHBsdWdpbl9jaGFuZ2UoTG9naWNh bERlY29kaW5nQ29udGV4dCAqY3R4LCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiAJCQkJaWYgKG9s ZHR1cGxlID09IE5VTEwpCiAJCQkJCWVsb2coRVJST1IsICJJbmNvbXBsZXRlIGRlbGV0ZSBpbmZv LiIpOwogCi0JCQkJc3RvcmVfY2hhbmdlKGN0eCwgQ0hBTkdFX0RFTEVURSwgb2xkdHVwbGUpOwor CQkJCXN0b3JlX2NoYW5nZShjdHgsIENIQU5HRV9ERUxFVEUsIG9sZHR1cGxlLCBjaGFuZ2UtPnR4 bi0+eGlkKTsKIAkJCX0KIAkJCWJyZWFrOwogCQlkZWZhdWx0OgpAQCAtMTY1LDcgKzE2OCw3IEBA IHBsdWdpbl9jaGFuZ2UoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBSZW9yZGVyQnVmZmVy VFhOICp0eG4sCiAvKiBTdG9yZSBjb25jdXJyZW50IGRhdGEgY2hhbmdlLiAqLwogc3RhdGljIHZv aWQKIHN0b3JlX2NoYW5nZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIENvbmN1cnJlbnRD aGFuZ2VLaW5kIGtpbmQsCi0JCQkgSGVhcFR1cGxlIHR1cGxlKQorCQkJIEhlYXBUdXBsZSB0dXBs ZSwgVHJhbnNhY3Rpb25JZCB4aWQpCiB7CiAJUmVwYWNrRGVjb2RpbmdTdGF0ZSAqZHN0YXRlOwog CWNoYXIJCWtpbmRfYnl0ZSA9IChjaGFyKSBraW5kOwpAQCAtMTk1LDYgKzE5OCw3IEBAIHN0b3Jl X2NoYW5nZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIENvbmN1cnJlbnRDaGFuZ2VLaW5k IGtpbmQsCiAJQnVmRmlsZVdyaXRlKGRzdGF0ZS0+ZmlsZSwgJnR1cGxlLT50X2xlbiwgc2l6ZW9m KHR1cGxlLT50X2xlbikpOwogCS8qIC4uLiBhbmQgdGhlIHR1cGxlIGl0c2VsZi4gKi8KIAlCdWZG aWxlV3JpdGUoZHN0YXRlLT5maWxlLCB0dXBsZS0+dF9kYXRhLCB0dXBsZS0+dF9sZW4pOworCUJ1 ZkZpbGVXcml0ZShkc3RhdGUtPmZpbGUsICZ4aWQsIHNpemVvZihUcmFuc2FjdGlvbklkKSk7CiAK IAkvKiBGcmVlIHRoZSBmbGF0IGNvcHkgaWYgY3JlYXRlZCBhYm92ZS4gKi8KIAlpZiAoZmxhdHRl bmVkKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL2hlYXBhbS5oCmluZGV4IGI3Y2QyNTg5NmY2Li5kOTc3NmY2MWEwZCAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vz cy9oZWFwYW0uaApAQCAtMzU0LDIwICszNTQsMjAgQEAgZXh0ZXJuIEJ1bGtJbnNlcnRTdGF0ZSBH ZXRCdWxrSW5zZXJ0U3RhdGUodm9pZCk7CiBleHRlcm4gdm9pZCBGcmVlQnVsa0luc2VydFN0YXRl KEJ1bGtJbnNlcnRTdGF0ZSk7CiBleHRlcm4gdm9pZCBSZWxlYXNlQnVsa0luc2VydFN0YXRlUGlu KEJ1bGtJbnNlcnRTdGF0ZSBiaXN0YXRlKTsKIAotZXh0ZXJuIHZvaWQgaGVhcF9pbnNlcnQoUmVs YXRpb24gcmVsYXRpb24sIEhlYXBUdXBsZSB0dXAsIENvbW1hbmRJZCBjaWQsCitleHRlcm4gdm9p ZCBoZWFwX2luc2VydChSZWxhdGlvbiByZWxhdGlvbiwgSGVhcFR1cGxlIHR1cCwgVHJhbnNhY3Rp b25JZCB4aWQsIENvbW1hbmRJZCBjaWQsCiAJCQkJCQlpbnQgb3B0aW9ucywgQnVsa0luc2VydFN0 YXRlIGJpc3RhdGUpOwogZXh0ZXJuIHZvaWQgaGVhcF9tdWx0aV9pbnNlcnQoUmVsYXRpb24gcmVs YXRpb24sIFR1cGxlVGFibGVTbG90ICoqc2xvdHMsCiAJCQkJCQkJICBpbnQgbnR1cGxlcywgQ29t bWFuZElkIGNpZCwgaW50IG9wdGlvbnMsCiAJCQkJCQkJICBCdWxrSW5zZXJ0U3RhdGUgYmlzdGF0 ZSk7CiBleHRlcm4gVE1fUmVzdWx0IGhlYXBfZGVsZXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25z dCBJdGVtUG9pbnRlckRhdGEgKnRpZCwKLQkJCQkJCQkgQ29tbWFuZElkIGNpZCwgU25hcHNob3Qg Y3Jvc3NjaGVjaywgYm9vbCB3YWl0LAorCQkJCQkJCSBUcmFuc2FjdGlvbklkIHhpZCwgQ29tbWFu ZElkIGNpZCwgU25hcHNob3QgY3Jvc3NjaGVjaywgYm9vbCB3YWl0LAogCQkJCQkJCSBUTV9GYWls dXJlRGF0YSAqdG1mZCwgYm9vbCBjaGFuZ2luZ1BhcnQsCiAJCQkJCQkJIGJvb2wgd2FsX2xvZ2lj YWwpOwogZXh0ZXJuIHZvaWQgaGVhcF9maW5pc2hfc3BlY3VsYXRpdmUoUmVsYXRpb24gcmVsYXRp b24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqdGlkKTsKIGV4dGVybiB2b2lkIGhlYXBfYWJvcnRf c3BlY3VsYXRpdmUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqdGlk KTsKIGV4dGVybiBUTV9SZXN1bHQgaGVhcF91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0 IEl0ZW1Qb2ludGVyRGF0YSAqb3RpZCwKIAkJCQkJCQkgSGVhcFR1cGxlIG5ld3R1cCwKLQkJCQkJ CQkgQ29tbWFuZElkIGNpZCwgU25hcHNob3QgY3Jvc3NjaGVjaywgYm9vbCB3YWl0LAorCQkJCQkJ CSBUcmFuc2FjdGlvbklkIHhpZCwgQ29tbWFuZElkIGNpZCwgU25hcHNob3QgY3Jvc3NjaGVjaywg Ym9vbCB3YWl0LAogCQkJCQkJCSBUTV9GYWlsdXJlRGF0YSAqdG1mZCwgTG9ja1R1cGxlTW9kZSAq bG9ja21vZGUsCiAJCQkJCQkJIFRVX1VwZGF0ZUluZGV4ZXMgKnVwZGF0ZV9pbmRleGVzLCBib29s IHdhbF9sb2dpY2FsKTsKIGV4dGVybiBUTV9SZXN1bHQgaGVhcF9sb2NrX3R1cGxlKFJlbGF0aW9u IHJlbGF0aW9uLCBIZWFwVHVwbGUgdHVwbGUsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVz L2luamVjdGlvbl9wb2ludHMvc3BlY3MvcmVwYWNrLnNwZWMgYi9zcmMvdGVzdC9tb2R1bGVzL2lu amVjdGlvbl9wb2ludHMvc3BlY3MvcmVwYWNrLnNwZWMKaW5kZXggZDcyN2E5YjA1NmIuLmFjY2Q0 MmQ3OGFhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvc3Bl Y3MvcmVwYWNrLnNwZWMKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3Nw ZWNzL3JlcGFjay5zcGVjCkBAIC04NSw5ICs4NSw2IEBAIHN0ZXAgY2hhbmdlX25ldwogIyBXaGVu IGFwcGx5aW5nIGNvbmN1cnJlbnQgZGF0YSBjaGFuZ2VzLCB3ZSBzaG91bGQgc2VlIHRoZSBlZmZl Y3RzIG9mIGFuCiAjIGluLXByb2dyZXNzIHN1YnRyYW5zYWN0aW9uLgogIwotIyBYWFggTm90IHN1 cmUgdGhpcyB0ZXN0IGlzIHVzZWZ1bCBub3cgLSBpdCB3YXMgZGVzaWduZWQgZm9yIHRoZSBwYXRj aCB0aGF0Ci0jIHByZXNlcnZlcyB0dXBsZSB2aXNpYmlsaXR5IGFuZCB3aGljaCB0aGVyZWZvcmUg bW9kaWZpZXMKLSMgVHJhbnNhY3Rpb25JZElzQ3VycmVudFRyYW5zYWN0aW9uSWQoKS4KIHN0ZXAg Y2hhbmdlX3N1YnhhY3QxCiB7CiAJQkVHSU47CkBAIC0xMDIsNyArOTksNiBAQCBzdGVwIGNoYW5n ZV9zdWJ4YWN0MQogIyBXaGVuIGFwcGx5aW5nIGNvbmN1cnJlbnQgZGF0YSBjaGFuZ2VzLCB3ZSBz aG91bGQgbm90IHNlZSB0aGUgZWZmZWN0cyBvZiBhCiAjIHJvbGxlZCBiYWNrIHN1YnRyYW5zYWN0 aW9uLgogIwotIyBYWFggSXMgdGhpcyB0ZXN0IHVzZWZ1bD8gU2VlIGFib3ZlLgogc3RlcCBjaGFu Z2Vfc3VieGFjdDIKIHsKIAlCRUdJTjsKLS0gCjIuNDMuMAoK --0000000000009f31c10645d9ca1c Content-Type: application/x-patch; name="nocfbot-0002-one-more-stress-test-for-repack-concurrentl.patch" Content-Disposition: attachment; filename="nocfbot-0002-one-more-stress-test-for-repack-concurrentl.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj4l96000 RnJvbSAyNWZjODQ4MDY4YjI4ZTViMmFlMDk5YmRlY2FlMzVmZGY4Y2I2MjQwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogU2F0LCAxMyBEZWMgMjAyNSAxODo0Njo0NiArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdm5vY2Zib3QgMi8yXSBvbmUgbW9yZSBzdHJlc3MgdGVzdCBmb3IgcmVwYWNrIGNvbmN1 cnJlbnRseQoKLS0tCiBjb250cmliL2FtY2hlY2svbWVzb24uYnVpbGQgICAgICAgICAgICAgICAg ICB8ICAgMSArCiBjb250cmliL2FtY2hlY2svdC8wMDhfcmVwYWNrX2NvbmN1cnJlbnRseS5wbCB8 IDEwMSArKysrKysrKysrKysrKysrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDEwMiBpbnNlcnRpb25z KCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgY29udHJpYi9hbWNoZWNrL3QvMDA4X3JlcGFja19jb25j dXJyZW50bHkucGwKCmRpZmYgLS1naXQgYS9jb250cmliL2FtY2hlY2svbWVzb24uYnVpbGQgYi9j b250cmliL2FtY2hlY2svbWVzb24uYnVpbGQKaW5kZXggMmI2OTA4MWQzYmYuLmY3YzcwNzM1OTg5 IDEwMDY0NAotLS0gYS9jb250cmliL2FtY2hlY2svbWVzb24uYnVpbGQKKysrIGIvY29udHJpYi9h bWNoZWNrL21lc29uLmJ1aWxkCkBAIC01MSw2ICs1MSw3IEBAIHRlc3RzICs9IHsKICAgICAgICd0 LzAwNV9waXRyLnBsJywKICAgICAgICd0LzAwNl92ZXJpZnlfZ2luLnBsJywKICAgICAgICd0LzAw N19yZXBhY2tfY29uY3VycmVudGx5LnBsJywKKyAgICAgICd0LzAwOF9yZXBhY2tfY29uY3VycmVu dGx5LnBsJywKICAgICBdLAogICB9LAogfQpkaWZmIC0tZ2l0IGEvY29udHJpYi9hbWNoZWNrL3Qv MDA4X3JlcGFja19jb25jdXJyZW50bHkucGwgYi9jb250cmliL2FtY2hlY2svdC8wMDhfcmVwYWNr X2NvbmN1cnJlbnRseS5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u MjIwNTI0ZDQxYjMKLS0tIC9kZXYvbnVsbAorKysgYi9jb250cmliL2FtY2hlY2svdC8wMDhfcmVw YWNrX2NvbmN1cnJlbnRseS5wbApAQCAtMCwwICsxLDEwMSBAQAorCisjIENvcHlyaWdodCAoYykg MjAyMS0yMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCisjIFRlc3Qg UkVQQUNLIENPTkNVUlJFTlRMWSB3aXRoIGNvbmN1cnJlbnQgbW9kaWZpY2F0aW9ucwordXNlIHN0 cmljdDsKK3VzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKKwordXNlIFBvc3RncmVTUUw6OlRl c3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CisKK3VzZSBUZXN0OjpN b3JlOworCitteSAkbm9kZTsKKworIworIyBUZXN0IHNldC11cAorIworJG5vZGUgPSBQb3N0Z3Jl U1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ0NJQ190ZXN0Jyk7Ciskbm9kZS0+aW5pdDsKKyRub2Rl LT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwknbG9ja190aW1lb3V0ID0gJyAuICgx MDAwICogJFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0aW1lb3V0X2RlZmF1bHQpKTsKKyRub2Rl LT5hcHBlbmRfY29uZigKKwkncG9zdGdyZXNxbC5jb25mJywgcXEoCit3YWxfbGV2ZWwgPSBsb2dp Y2FsCispKTsKKworbXkgJG5vX2hvdCA9IGludChyYW5kKDIpKTsKKworJG5vZGUtPnN0YXJ0Owor JG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxKENSRUFURSBUQUJMRSB0YmwoaSBTRVJJQUwg UFJJTUFSWSBLRVksIGogaW50KSkpOworaWYgKCRub19ob3QpCit7CisJJG5vZGUtPnNhZmVfcHNx bCgncG9zdGdyZXMnLCBxKENSRUFURSBJTkRFWCB0ZXN0X2lkeCBPTiB0Ymwoaik7KSk7Cit9Citl bHNlCit7CisJJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxKENSRUFURSBJTkRFWCB0ZXN0 X2lkeCBPTiB0YmwoaSk7KSk7Cit9CisKKyMgTG9hZCBhbWNoZWNrCiskbm9kZS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsIHEoQ1JFQVRFIEVYVEVOU0lPTiBhbWNoZWNrKSk7CisKK215ICRzdW0gPSAk bm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEoCisJU0VMRUNUIFNVTShqKSBBUyBzdW0gRlJP TSB0YmwKKykpOworCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEoQ1JFQVRFIFVOTE9H R0VEIFNFUVVFTkNFIGxhc3RfaiBTVEFSVCAxIElOQ1JFTUVOVCAxOykpOworCisKKyRub2RlLT5w Z2JlbmNoKAorJy0tbm8tdmFjdXVtIC0tY2xpZW50PTMwIC0tam9icz00IC0tZXhpdC1vbi1hYm9y dCAtLXRyYW5zYWN0aW9ucz0xMDAwJywKKzAsCitbcXJ7YWN0dWFsbHkgcHJvY2Vzc2VkfV0sCitb cXJ7XiR9XSwKKydjb25jdXJyZW50IG9wZXJhdGlvbnMgd2l0aCBSRUlOREVYL0NSRUFURSBJTkRF WCBDT05DVVJSRU5UTFknLAoreworCSdjb25jdXJyZW50X29wcycgPT4gcXEoCisJCVNFTEVDVCBw Z190cnlfYWR2aXNvcnlfbG9jayg0Mik6OmludGVnZXIgQVMgZ290bG9jayBcXGdzZXQKKwkJXFxp ZiA6Z290bG9jaworCQkJUkVQQUNLIChDT05DVVJSRU5UTFkpIHRibCBVU0lORyBJTkRFWCB0Ymxf cGtleTsKKwkJCVNFTEVDVCBidF9pbmRleF9wYXJlbnRfY2hlY2soJ3RibF9wa2V5JywgaGVhcGFs bGluZGV4ZWQgPT4gdHJ1ZSk7CisJCQlTRUxFQ1QgYnRfaW5kZXhfcGFyZW50X2NoZWNrKCd0ZXN0 X2lkeCcsIGhlYXBhbGxpbmRleGVkID0+IHRydWUpOworCQkJXFxzbGVlcCAxMCBtcworCisJCQlS RVBBQ0sgKENPTkNVUlJFTlRMWSkgdGJsIFVTSU5HIElOREVYIHRlc3RfaWR4OworCQkJU0VMRUNU IGJ0X2luZGV4X3BhcmVudF9jaGVjaygndGJsX3BrZXknLCBoZWFwYWxsaW5kZXhlZCA9PiB0cnVl KTsKKwkJCVNFTEVDVCBidF9pbmRleF9wYXJlbnRfY2hlY2soJ3Rlc3RfaWR4JywgaGVhcGFsbGlu ZGV4ZWQgPT4gdHJ1ZSk7CisJCQlcXHNsZWVwIDEwIG1zCisKKwkJCVJFUEFDSyAoQ09OQ1VSUkVO VExZKSB0Ymw7CisJCQlTRUxFQ1QgYnRfaW5kZXhfcGFyZW50X2NoZWNrKCd0YmxfcGtleScsIGhl YXBhbGxpbmRleGVkID0+IHRydWUpOworCQkJU0VMRUNUIGJ0X2luZGV4X3BhcmVudF9jaGVjaygn dGVzdF9pZHgnLCBoZWFwYWxsaW5kZXhlZCA9PiB0cnVlKTsKKwkJCVxcc2xlZXAgMTAgbXMKKwor CQkJU0VMRUNUIHBnX2Fkdmlzb3J5X3VubG9jayg0Mik7CisJCVxcZWxzZQorCQkJU0VMRUNUIHBn X2Fkdmlzb3J5X2xvY2soNDMpOworCQkJCUJFR0lOOworCQkJCUlOU0VSVCBJTlRPIHRibChqKSBW QUxVRVMgKG5leHR2YWwoJ2xhc3RfaicpKSBSRVRVUk5JTkcgaiBcXGdzZXQgcF8KKwkJCQlDT01N SVQ7CisJCQlTRUxFQ1QgcGdfYWR2aXNvcnlfdW5sb2NrKDQzKTsKKwkJCVxcc2xlZXAgMSBtcwor CisJCQlCRUdJTgorCQkJLS1UUkFOU0FDVElPTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBS RUFECisJCQk7CisJCQlTRUxFQ1QgMTsKKwkJCVxcc2xlZXAgMSBtcworCQkJU0VMRUNUIENPVU5U KCopIEFTIGNvdW50IEZST00gdGJsIFdIRVJFIGogPD0gOnBfaiBcXGdzZXQgcF8KKwkJCVxcaWYg OnBfY291bnQgIT0gOnBfagorCQkJCUNPTU1JVDsKKwkJCQlTRUxFQ1QgKDpwX2NvdW50KSAvIDA7 CisJCQlcXGVuZGlmCisKKwkJCUNPTU1JVDsKKwkJXFxlbmRpZgorCSkKK30pOworCiskbm9kZS0+ c3RvcDsKK2RvbmVfdGVzdGluZygpOwotLSAKMi40My4wCgo= --0000000000009f31c10645d9ca1c Content-Type: application/x-patch; name="nocfbot-0001-stress-test-for-repack-concurrently.patch" Content-Disposition: attachment; filename="nocfbot-0001-stress-test-for-repack-concurrently.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj4l96041 RnJvbSBkYjg0YmJhZDlkMTBmZmFjZmZjNzYzZGJmMGVkNGJiNDgxZjQyMzk5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogU2F0LCAxMyBEZWMgMjAyNSAxODoxMzozNyArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdm5vY2Zib3QgMS8yXSBzdHJlc3MgdGVzdCBmb3IgcmVwYWNrIGNvbmN1cnJlbnRseQoK LS0tCiBjb250cmliL2FtY2hlY2svbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgICB8ICAgMSAr CiBjb250cmliL2FtY2hlY2svdC8wMDdfcmVwYWNrX2NvbmN1cnJlbnRseS5wbCB8IDExMCArKysr KysrKysrKysrKysrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDExMSBpbnNlcnRpb25zKCspCiBjcmVh dGUgbW9kZSAxMDA2NDQgY29udHJpYi9hbWNoZWNrL3QvMDA3X3JlcGFja19jb25jdXJyZW50bHku cGwKCmRpZmYgLS1naXQgYS9jb250cmliL2FtY2hlY2svbWVzb24uYnVpbGQgYi9jb250cmliL2Ft Y2hlY2svbWVzb24uYnVpbGQKaW5kZXggMWYwYzM0N2VkNTQuLjJiNjkwODFkM2JmIDEwMDY0NAot LS0gYS9jb250cmliL2FtY2hlY2svbWVzb24uYnVpbGQKKysrIGIvY29udHJpYi9hbWNoZWNrL21l c29uLmJ1aWxkCkBAIC01MCw2ICs1MCw3IEBAIHRlc3RzICs9IHsKICAgICAgICd0LzAwNF92ZXJp ZnlfbmJ0cmVlX3VuaXF1ZS5wbCcsCiAgICAgICAndC8wMDVfcGl0ci5wbCcsCiAgICAgICAndC8w MDZfdmVyaWZ5X2dpbi5wbCcsCisgICAgICAndC8wMDdfcmVwYWNrX2NvbmN1cnJlbnRseS5wbCcs CiAgICAgXSwKICAgfSwKIH0KZGlmZiAtLWdpdCBhL2NvbnRyaWIvYW1jaGVjay90LzAwN19yZXBh Y2tfY29uY3VycmVudGx5LnBsIGIvY29udHJpYi9hbWNoZWNrL3QvMDA3X3JlcGFja19jb25jdXJy ZW50bHkucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmE0N2NlYmIz NDdiCi0tLSAvZGV2L251bGwKKysrIGIvY29udHJpYi9hbWNoZWNrL3QvMDA3X3JlcGFja19jb25j dXJyZW50bHkucGwKQEAgLTAsMCArMSwxMTAgQEAKKworIyBDb3B5cmlnaHQgKGMpIDIwMjEtMjAy NSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworIyBUZXN0IFJFUEFDSyBD T05DVVJSRU5UTFkgd2l0aCBjb25jdXJyZW50IG1vZGlmaWNhdGlvbnMKK3VzZSBzdHJpY3Q7Cit1 c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7CisKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVz dGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOworCit1c2UgVGVzdDo6TW9yZTsKKwor bXkgJG5vZGU7CisKKyMKKyMgVGVzdCBzZXQtdXAKKyMKKyRub2RlID0gUG9zdGdyZVNRTDo6VGVz dDo6Q2x1c3Rlci0+bmV3KCdDSUNfdGVzdCcpOworJG5vZGUtPmluaXQ7Ciskbm9kZS0+YXBwZW5k X2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJJ2xvY2tfdGltZW91dCA9ICcgLiAoMTAwMCAqICRQ b3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGltZW91dF9kZWZhdWx0KSk7Ciskbm9kZS0+YXBwZW5k X2NvbmYoCisJJ3Bvc3RncmVzcWwuY29uZicsIHFxKAord2FsX2xldmVsID0gbG9naWNhbAorKSk7 CisKK215ICRuPTEwMDA7CitteSAkbm9faG90ID0gaW50KHJhbmQoMikpOworCiskbm9kZS0+c3Rh cnQ7Ciskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEoQ1JFQVRFIFRBQkxFIHRibChpIGlu dCBQUklNQVJZIEtFWSwgaiBpbnQpKSk7CisKK2lmICgkbm9faG90KQoreworCSRub2RlLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgcShDUkVBVEUgSU5ERVggdGVzdF9pZHggT04gdGJsKGopOykpOwor fQorZWxzZQoreworCSRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcShDUkVBVEUgSU5ERVgg dGVzdF9pZHggT04gdGJsKGkpOykpOworfQorCisKKyMgTG9hZCBhbWNoZWNrCiskbm9kZS0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsIHEoQ1JFQVRFIEVYVEVOU0lPTiBhbWNoZWNrKSk7CisKKyMgSW5z ZXJ0ICRuIHJvd3MgaW50byB0YmwKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXEoCisJ SU5TRVJUIElOVE8gdGJsIFNFTEVDVCBpLCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsJG4pIGkK KykpOworCitteSAkc3VtID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxKAorCVNFTEVD VCBTVU0oaikgQVMgc3VtIEZST00gdGJsCispKTsKKworCiskbm9kZS0+cGdiZW5jaCgKKyctLW5v LXZhY3V1bSAtLWNsaWVudD0zMCAtLWpvYnM9NCAtLWV4aXQtb24tYWJvcnQgLS10cmFuc2FjdGlv bnM9NTAwMCcsCiswLAorW3Fye2FjdHVhbGx5IHByb2Nlc3NlZH1dLAorW3Fye14kfV0sCisnY29u Y3VycmVudCBvcGVyYXRpb25zIHdpdGggUkVJTkRFWC9DUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZ JywKK3sKKwknY29uY3VycmVudF9vcHMnID0+IHFxKAorCQlTRUxFQ1QgcGdfdHJ5X2Fkdmlzb3J5 X2xvY2soNDIpOjppbnRlZ2VyIEFTIGdvdGxvY2sgXFxnc2V0CisJCVxcaWYgOmdvdGxvY2sKKwkJ CVJFUEFDSyAoQ09OQ1VSUkVOVExZKSB0YmwgVVNJTkcgSU5ERVggdGJsX3BrZXk7CisJCQlTRUxF Q1QgYnRfaW5kZXhfcGFyZW50X2NoZWNrKCd0YmxfcGtleScsIGhlYXBhbGxpbmRleGVkID0+IHRy dWUpOworCQkJU0VMRUNUIGJ0X2luZGV4X3BhcmVudF9jaGVjaygndGVzdF9pZHgnLCBoZWFwYWxs aW5kZXhlZCA9PiB0cnVlKTsKKwkJCVxcc2xlZXAgMTAgbXMKKworCQkJUkVQQUNLIChDT05DVVJS RU5UTFkpIHRibCBVU0lORyBJTkRFWCB0ZXN0X2lkeDsKKwkJCVNFTEVDVCBidF9pbmRleF9wYXJl bnRfY2hlY2soJ3RibF9wa2V5JywgaGVhcGFsbGluZGV4ZWQgPT4gdHJ1ZSk7CisJCQlTRUxFQ1Qg YnRfaW5kZXhfcGFyZW50X2NoZWNrKCd0ZXN0X2lkeCcsIGhlYXBhbGxpbmRleGVkID0+IHRydWUp OworCQkJXFxzbGVlcCAxMCBtcworCisJCQlSRVBBQ0sgKENPTkNVUlJFTlRMWSkgdGJsOworCQkJ U0VMRUNUIGJ0X2luZGV4X3BhcmVudF9jaGVjaygndGJsX3BrZXknLCBoZWFwYWxsaW5kZXhlZCA9 PiB0cnVlKTsKKwkJCVNFTEVDVCBidF9pbmRleF9wYXJlbnRfY2hlY2soJ3Rlc3RfaWR4JywgaGVh cGFsbGluZGV4ZWQgPT4gdHJ1ZSk7CisJCQlcXHNsZWVwIDEwIG1zCisKKwkJCVNFTEVDVCBwZ19h ZHZpc29yeV91bmxvY2soNDIpOworCQlcXGVsc2UKKwkJCVxcc2V0IG51bV9hIHJhbmRvbSgxLCAk bikKKwkJCVxcc2V0IG51bV9iIHJhbmRvbSgxLCAkbikKKwkJCVxcc2V0IGRpZmYgcmFuZG9tKDEs IDEwMDAwKQorCQkJQkVHSU47CisJCQlVUERBVEUgdGJsIFNFVCBqID0gaiArIDpkaWZmIFdIRVJF IGkgPSA6bnVtX2E7CisJCQlcXHNsZWVwIDEgbXMKKwkJCVVQREFURSB0YmwgU0VUIGogPSBqIC0g OmRpZmYgV0hFUkUgaSA9IDpudW1fYjsKKwkJCVxcc2xlZXAgMSBtcworCQkJQ09NTUlUOworCisJ CQlCRUdJTgorCQkJLS1UUkFOU0FDVElPTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFE CisJCQk7CisJCQlTRUxFQ1QgMTsKKwkJCVxcc2xlZXAgMSBtcworCQkJU0VMRUNUIENPQUxFU0NF KFNVTShqKSwgMCkgQVMgc3VtIEZST00gdGJsIFxcZ3NldCBwXworCQkJXFxpZiA6cF9zdW0gIT0g JHN1bQorCQkJCUNPTU1JVDsKKwkJCQlTRUxFQ1QgKDpwX3N1bSkgLyAwOworCQkJXFxlbmRpZgor CisJCQlDT01NSVQ7CisJCVxcZW5kaWYKKwkpCit9KTsKKworJG5vZGUtPnN0b3A7Citkb25lX3Rl c3RpbmcoKTsKLS0gCjIuNDMuMAoK --0000000000009f31c10645d9ca1c--