From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 11AC3C77B73 for ; Thu, 20 Apr 2023 12:38:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:Content-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:In-Reply-To:From:References:Cc:To: Subject:Date:Message-ID:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=pUJ2CqoesLi4ky6SkwzZbM0dcuus3xNmAPaGSpYZkNY=; b=e3+U59+nmr8hX1g+dkxcpUdFak lQTKLG3poiTqSJMo5d22qEsKB8XE9sjI1f1OsDkla7nW8PgsbfqupPZKDjnHA6V2//mF9fK/c71aR Yc1Y23cQlqr71/yLeJP9cEbxEo5TvDnO4nnqxRDA5KCZ3mNnq92r+dCAg4rPlbyx+6MmN6Y6u4icl bvaSVSHB22U/MFNXPZEeozar6Tv/g2sQ44Od68nDYamWcjnr7igY+T5ElcnGjGoCHaZOmyCzPQm5v wXXwkaSPf0T9bIQsQwEaA4wmVFGAOeBLpfUiYzZ3gDdu6KBpPFhkDJqjhn3vURVsDfrHJSfpSLsyH OmT5gN0A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1ppTXp-0085sp-2T; Thu, 20 Apr 2023 12:37:49 +0000 Received: from mail-bn8nam11on20700.outbound.protection.outlook.com ([2a01:111:f400:7eae::700] helo=NAM11-BN8-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1ppTXm-0085qx-09 for linux-arm-kernel@lists.infradead.org; Thu, 20 Apr 2023 12:37:48 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XO9nc0UVrLlV9KPm1FCt2RifUHM4KJfzfr1Fh4A2t0Yt0fv8O9hsukJuGoVbr1xVUCkaUITAn/I93AQiUY0ymwdKsjA96KaKFcjXBX3VzG4bSFFlV4aSsL0mmARXyHWhFsCb44qe9FhnSbHPja+08v5uaB1PLb6JmKZ5tHg8r9pDMTAm2XBKYyuAjOnHTCG1wvNTOyX1BECTypwd6mwdrr8tHasnlkUhmC9OtIu4rg/KXY8xMr7Iy+npuzVMQ6jko1Bno6fJ0F3EugmKEpJC8aFs0oHiArXovq2Oj/EsaYkslfmaXcOXg94uqVI6sMuEFFZ/5h3BpSowFsl6OAInSQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=NmWdcxjPaKbE+0WFxjpxUXkOPATC3JoEeej3qFFXnMc=; b=P2lawpBf4CRqyChFIreWBb7j+uyAAJO+NeiXeTSQLank9xsBOtHmS86mO55/oIdVBKsZpjsOLwWikoTk1sPDFoY7AdhlbqsQcRAEYmunBHyk2J9uDXfRI7SkXB/axG/3y5VWIdp3TemFxOHqo5OGKsLZlueJ6xLjGrgor6rjJ2o91dkyBEl0BZv7UmUAmaO3O0jG12kfwL3ZMPMfYwpASZsTm/N3icizKJkJTUNkSKJoaZBKfB0bWv+RgFmDEBJ7APe3CYApoiY3QFfGHloCQ44AsuaBZd8gB6JUIyL3l9iqPOKoshBOQttYMn1/TtvJq18ZLgUCUkomRt6FfewLwg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=os.amperecomputing.com; dmarc=pass action=none header.from=os.amperecomputing.com; dkim=pass header.d=os.amperecomputing.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=os.amperecomputing.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=NmWdcxjPaKbE+0WFxjpxUXkOPATC3JoEeej3qFFXnMc=; b=kP00xQud92zNzeduzVRFMxi/nMbjZNFDr/i7cBx0YdQB+cu0tUhQGThuUnaZExVBxOhGGxcLkIgcL/ROBnL7ZDF/wugk28Al0X3BbEiOOpjPLPVxJbRdfJiePj5/UN1pbARWY0I6WJl8oNwLlj3VB+arTWHiGC67nnYITPjVZu4= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=os.amperecomputing.com; Received: from DM8PR01MB6824.prod.exchangelabs.com (2603:10b6:8:23::24) by MWHPR0101MB3165.prod.exchangelabs.com (2603:10b6:301:2f::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6319.20; Thu, 20 Apr 2023 12:37:29 +0000 Received: from DM8PR01MB6824.prod.exchangelabs.com ([fe80::5cf:2baf:f5ab:ac87]) by DM8PR01MB6824.prod.exchangelabs.com ([fe80::5cf:2baf:f5ab:ac87%5]) with mapi id 15.20.6319.022; Thu, 20 Apr 2023 12:37:29 +0000 Message-ID: Date: Thu, 20 Apr 2023 18:07:20 +0530 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.10.0 Subject: Re: [PATCH] perf cs-etm: Add support for coresight trace for any range of CPUs Content-Language: en-US To: James Clark Cc: mathieu.poirier@linaro.org, acme@kernel.org, darren@os.amperecomputing.com, scott@os.amperecomputing.com, scclevenger@os.amperecomputing.com, linux-kernel@vger.kernel.org, coresight@lists.linaro.org, linux-arm-kernel@lists.infradead.org, mike.leach@linaro.org, suzuki.poulose@arm.com References: <20230419172101.78638-1-gankulkarni@os.amperecomputing.com> <84eb3363-2ef8-d3f1-4613-805959dbf334@os.amperecomputing.com> <91ba66e7-737f-6526-a703-a755e114f9d4@arm.com> From: Ganapatrao Kulkarni In-Reply-To: <91ba66e7-737f-6526-a703-a755e114f9d4@arm.com> X-ClientProxiedBy: CH2PR20CA0025.namprd20.prod.outlook.com (2603:10b6:610:58::35) To DM8PR01MB6824.prod.exchangelabs.com (2603:10b6:8:23::24) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM8PR01MB6824:EE_|MWHPR0101MB3165:EE_ X-MS-Office365-Filtering-Correlation-Id: 24446540-8098-4bf6-2fa8-08db419c011d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: wS7/VqdqIFC719khyUG2GEzLCFINP2WJxkb0f3G+WQdpoqGx3DJXfe6csqCLS9jTisfSFoMV3qaplZ1M6ajFUwu5mxDZHE7Kqdoo5vgRYOrzsCqO9v5SsbIUdqO1LzDbrrZyUS+rZ8Z/IgJW2ct3/fxB2dlHgVBlzpsCSoKH8oyaUyjq/X0vS9EqJ4aIW4OJskJvgMc7ebRttswtVyUqpjvwjdyBqddMLZSH64OzFrRVIzVhl1eQ3cVahJtkH2wIf3hvTprPcWmGN8NZd1jQpAj4bqVopbUg86YufuFjbwv/+wb4T60X+m4nHR4xzCMShxzxyiM75BNp2rQcmzW6LADhqwQ7X15OYdNSEfQZuxisHx2lI8IdbgFUUvY6SiPc/02cB9xDxDQ4S1SHK5BvDOLyoisci9L0GVOvXvYlHRZnbwdQsDeiPifvo7i8i75+ZU7ik3Kn+67hTOLB5Fb+qwuFLgShk2dLnuymDhTmgVn5lWp04P0BY9BkYwzWs8bPI2T5eFQYJx69jYWqL1hhUevSnQvs3i81U8DY5G9QeNzPwP6rLo6+9qisqeFopsaTo1MyrgU+U8tqBrjeF0wcav8eSmdDn8TNlYwOSFW4VUY= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM8PR01MB6824.prod.exchangelabs.com;PTR:;CAT:NONE;SFS:(13230028)(4636009)(396003)(136003)(376002)(346002)(366004)(39850400004)(451199021)(5660300002)(2616005)(31696002)(53546011)(6512007)(186003)(26005)(86362001)(6506007)(38100700002)(478600001)(6486002)(4326008)(316002)(8936002)(6666004)(966005)(8676002)(41300700001)(66946007)(6916009)(66556008)(66476007)(31686004)(83380400001)(30864003)(2906002)(43740500002);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?b1JaZGpWVjhqR1VWZksxQ0tWa2gwV1JSMWVtK0J5L25DYTQxaE9zbnE0bjR0?= =?utf-8?B?Mm9IRnRFajlJc3M0MWRlbGpuLzZhL2tlbkhWQ1VMMnZCVjhPNXdyeHlsWmY2?= =?utf-8?B?NWc2amxkeDBsZGlYa0NUUmw4c3FMc0FLUWpZVDdjZFFnN3o3MTBmYzZHckUy?= =?utf-8?B?VmwwMURPY1R1TFV0ejA1UmJFNnhENGdacUNwTzRPMFRKNHV3dE91SXJkMkVI?= =?utf-8?B?WFZZUkJ6ekgycG5kWGlXNDVReEtzSjQ1djczN3c0SHVtTUxBckpGekw5VVJN?= =?utf-8?B?QUo4elY3czlBSzYrU0hPeS95czJ5N2Zuc1VZQUpCSS9xdmpSUG8yL1o0UVds?= =?utf-8?B?RjBKaG1nYWNhY1NPWEROaGxOU2ZQUTRoT2w4VnA1bHM0clozYnd3M2tEL1N6?= =?utf-8?B?S0lNdHZIeExMQm10dzRlL01iYWVMSGtEbHZCdCtwMjNDNStSbkF0dEhTaGhv?= =?utf-8?B?Vm80MkFkNnZBS3NSMGovUWNGdVFmOUNqcW8xZEMvb2lVNkxzRS9nT09HVnpq?= =?utf-8?B?LzYwNlVqZmZsUERhVnM1NHloOTF2R3gxMmIrMjlLOHhLZXc1QUY1dUxpdi9O?= =?utf-8?B?OCtoMGNTMG0rNGJYWGxJZmZHWjRaZjE1VnE3QjVzOW5ML0ZodVhaUU8relF2?= =?utf-8?B?K09DWXd2UDNsbjAyMldoRllaUDYrZW9oZWlFTXFaNEtwLzFDZFBWQXdxamxi?= =?utf-8?B?ZVRKTVBsaUlBRTRXMi9GK21ZTTZQcjlpUDk1dDd3YzVpRlVoT09aT2xNQTFO?= =?utf-8?B?dUVVcFR0TzkvSThlQUtUbW9CejlPakNST0tHR3dhVmFSQVZvNWd1N2hvTGxT?= =?utf-8?B?Mi9sUWJOY3hJZ1RnbytsbGxydEFMcnR5eHlJdzBiMlkvTER0ZTNOVS9kdjJi?= =?utf-8?B?K3FiNFdzR3A0ZFN6N3dCMCtsa25ndncxZHdSK01Wc24wNEM4bUhBMlUySGJr?= =?utf-8?B?Y3hOSWpwZDFzMlZaalRyaUVMVzY1WEd0d0g2QndoK1VEdEFFcWxySTBnazQ3?= =?utf-8?B?SjROYWN3NHc2OG90dGwyUW9GYStERE9uQmtnT1NMVVIxejdSRDlXME55djFQ?= =?utf-8?B?R2FDRWgvMzE1bTNsMVc5NDFIZ2lMd1hPMkIvNkZiM0JZQVFCMlNLYlBjWnBO?= =?utf-8?B?NUJYaktnbmZFOEd4eEZZTEZGd3ZSdkNseW1pNmRBMkN6bzVJMlBRdHpXS2dN?= =?utf-8?B?TUsyVE9ZZlBuSVd6d1I2Rm1IVG5qWi9ra1R2Vy9kZTZDR0h2d2FBZmNMUVgz?= =?utf-8?B?dnpUaW00VGJiekhPc3VVU2lnc3o5VlRkQ1lBNllCTXRkaWVEL21rdTNwc1pM?= =?utf-8?B?Q0hTTmphYnB0dUNPTWY0R24yYWlaWFlkQ3lNYUY3dTBnRG1hSUFsd29LU3Jt?= =?utf-8?B?V2hQY3h1SG9PL3VsRWxxZ1B2alBjM0dYTGNPbmxSVXJqOXpvZFcwdElFV3U1?= =?utf-8?B?citzVE5pZW9kNC8xa3MwUmhUcTl6aDFDODdvbUdqN2YrcnA2ampSRVFTL3Bh?= =?utf-8?B?QXd4T0UvWC9TWHpBaXhma09Pc0NEL2lUMWw4ZHduOUdPdi9XREkzdVZIR2lh?= =?utf-8?B?OXJhRk9kemxSaWlpanB4VE43QnVTbzdZbjhIdXlwcnAzTGFQUldHZXdnSG1q?= =?utf-8?B?Z1BpdjRaKyttRWk4azVxWDlMeFdNZHA2aTFsTC9NMWczWjhzUUpCUCtMT2hs?= =?utf-8?B?eHdmYWFPSzZWdGYrQ3ZvTmFFTENueXBYZTlYNGk3aEd6b1c4dkNpWlByd1BR?= =?utf-8?B?emVuQlNKaG52bGFBZGNhQ3ZwVnQ3Tk13TkU5SG9tZE9VSXhvUTg3cEg3QW5B?= =?utf-8?B?djdoTldIcFFYeEpqVGJXRUtjWEtNS3V6UldLb0VoZHBsV3ZUVXFSUlMvcVNL?= =?utf-8?B?WlZ5SFFZNEE4djE2SUgvMDhrb3hWVDE3WW5ka3p0cDNQM1g5eHdQazVCWVVR?= =?utf-8?B?M3gxcjl4VzhodkFDOFRMRVM0ZzYzTXEwNXpXcGM2dUlrZldoQW9TeWJuNk41?= =?utf-8?B?dU82TGZzandHTS8zdURHc09wR3gxSTJWS2dWcyt2bzBJamIyWm8vMVpEWHk2?= =?utf-8?B?N3pSUlRXQjdKSEpZUHhCYlRVTUdhK045dkdtL256S2lnSndPbTNuY01SWnkz?= =?utf-8?B?N081bHRqRVFqYU4vYWsrTzE3YVlRN0FyYkFUY0dpaW5nZVp1VXIzTEhoSWIv?= =?utf-8?Q?2dVaA3ze8bZ8mhfFjQarLdRCduaaYJfAuRBoVk5gPxUy?= X-OriginatorOrg: os.amperecomputing.com X-MS-Exchange-CrossTenant-Network-Message-Id: 24446540-8098-4bf6-2fa8-08db419c011d X-MS-Exchange-CrossTenant-AuthSource: DM8PR01MB6824.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2023 12:37:29.4431 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3bc2b170-fd94-476d-b0ce-4229bdc904a7 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: eG24tQHfQepWFtg7GWN1R4FDM3sMT3dDfrO0PoQ9QnkAMrl7bvQaDNnSvtz4oJnZZ2E0IuPNsQx4BYUsaiIoHoKvvkXcOajbyEd652FQq0LpDHETkpYTKDsmmBg3nr5J X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR0101MB3165 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230420_053746_156913_4F89494F X-CRM114-Status: GOOD ( 14.57 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org CgpPbiAyMC0wNC0yMDIzIDA2OjAwIHBtLCBKYW1lcyBDbGFyayB3cm90ZToKPiAKPiAKPiBPbiAy MC8wNC8yMDIzIDEyOjQ3LCBHYW5hcGF0cmFvIEt1bGthcm5pIHdyb3RlOgo+Pgo+PiBIaSBKYW1l cywKPj4KPj4gT24gMjAtMDQtMjAyMyAwMzoxMyBwbSwgSmFtZXMgQ2xhcmsgd3JvdGU6Cj4+Pgo+ Pj4KPj4+IE9uIDE5LzA0LzIwMjMgMTg6MjEsIEdhbmFwYXRyYW8gS3Vsa2Fybmkgd3JvdGU6Cj4+ Pj4gVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gc3VwcG9ydHMgY29yZXNpZ2h0IHRyYWNlIGZv ciBhIHJhbmdlIG9mCj4+Pj4gQ1BVcywgaWYgdGhlIGZpcnN0IENQVSBpcyBDUFUwLgo+Pj4+Cj4+ Pj4gQWRkaW5nIGNoYW5nZXMgdG8gZW5hYmxlIGNvcmVzaWdodCB0cmFjZSBmb3IgYW55IHJhbmdl IG9mIENQVXMgYnkKPj4+PiBkZWNvZGluZyB0aGUgZmlyc3QgQ1BVIGFsc28gZnJvbSB0aGUgaGVh ZGVyLgo+Pj4+IExhdGVyLCBmaXJzdCBDUFUgaWQgaXMgdXNlZCBpbnN0ZWFkIG9mIENQVTAgYWNy b3NzIHRoZSBkZWNvZGVyCj4+Pj4gZnVuY3Rpb25zLgo+Pj4+Cj4+Pj4gU2lnbmVkLW9mZi1ieTog R2FuYXBhdHJhbyBLdWxrYXJuaSA8Z2Fua3Vsa2FybmlAb3MuYW1wZXJlY29tcHV0aW5nLmNvbT4K Pj4+PiAtLS0KPj4+PiAgwqAgLi4uL3BlcmYvdXRpbC9jcy1ldG0tZGVjb2Rlci9jcy1ldG0tZGVj b2Rlci5jIHzCoCA0ICstCj4+Pj4gIMKgIC4uLi9wZXJmL3V0aWwvY3MtZXRtLWRlY29kZXIvY3Mt ZXRtLWRlY29kZXIuaCB8wqAgMyArLQo+Pj4+ICDCoCB0b29scy9wZXJmL3V0aWwvY3MtZXRtLmPC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA2MiArKysrKysrKysr KystLS0tLS0tCj4+Pj4gIMKgIDMgZmlsZXMgY2hhbmdlZCwgNDIgaW5zZXJ0aW9ucygrKSwgMjcg ZGVsZXRpb25zKC0pCj4+Pj4KPj4+PiBkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91dGlsL2NzLWV0 bS1kZWNvZGVyL2NzLWV0bS1kZWNvZGVyLmMKPj4+PiBiL3Rvb2xzL3BlcmYvdXRpbC9jcy1ldG0t ZGVjb2Rlci9jcy1ldG0tZGVjb2Rlci5jCj4+Pj4gaW5kZXggODJhMjdhYjkwYzhiLi40MWFiMjk5 YjY0M2IgMTAwNjQ0Cj4+Pj4gLS0tIGEvdG9vbHMvcGVyZi91dGlsL2NzLWV0bS1kZWNvZGVyL2Nz LWV0bS1kZWNvZGVyLmMKPj4+PiArKysgYi90b29scy9wZXJmL3V0aWwvY3MtZXRtLWRlY29kZXIv Y3MtZXRtLWRlY29kZXIuYwo+Pj4+IEBAIC03MjQsNyArNzI0LDcgQEAgY3NfZXRtX2RlY29kZXJf X2NyZWF0ZV9ldG1fZGVjb2RlcihzdHJ1Y3QKPj4+PiBjc19ldG1fZGVjb2Rlcl9wYXJhbXMgKmRf cGFyYW1zLAo+Pj4+ICDCoCB9Cj4+Pj4gIMKgIMKgIHN0cnVjdCBjc19ldG1fZGVjb2RlciAqCj4+ Pj4gLWNzX2V0bV9kZWNvZGVyX19uZXcoaW50IGRlY29kZXJzLCBzdHJ1Y3QgY3NfZXRtX2RlY29k ZXJfcGFyYW1zCj4+Pj4gKmRfcGFyYW1zLAo+Pj4+ICtjc19ldG1fZGVjb2Rlcl9fbmV3KGludCBm aXJzdF9kZWNvZGVyLCBpbnQgZGVjb2RlcnMsIHN0cnVjdAo+Pj4+IGNzX2V0bV9kZWNvZGVyX3Bh cmFtcyAqZF9wYXJhbXMsCj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBj c19ldG1fdHJhY2VfcGFyYW1zIHRfcGFyYW1zW10pCj4+Pj4gIMKgIHsKPj4+PiAgwqDCoMKgwqDC oCBzdHJ1Y3QgY3NfZXRtX2RlY29kZXIgKmRlY29kZXI7Cj4+Pj4gQEAgLTc2OSw3ICs3NjksNyBA QCBjc19ldG1fZGVjb2Rlcl9fbmV3KGludCBkZWNvZGVycywgc3RydWN0Cj4+Pj4gY3NfZXRtX2Rl Y29kZXJfcGFyYW1zICpkX3BhcmFtcywKPj4+PiAgwqDCoMKgwqDCoCAvKiBpbml0IHJhdyBmcmFt ZSBsb2dnaW5nIGlmIHJlcXVpcmVkICovCj4+Pj4gIMKgwqDCoMKgwqAgY3NfZXRtX2RlY29kZXJf X2luaXRfcmF3X2ZyYW1lX2xvZ2dpbmcoZF9wYXJhbXMsIGRlY29kZXIpOwo+Pj4+ICDCoCAtwqDC oMKgIGZvciAoaSA9IDA7IGkgPCBkZWNvZGVyczsgaSsrKSB7Cj4+Pj4gK8KgwqDCoCBmb3IgKGkg PSBmaXJzdF9kZWNvZGVyOyBpIDwgZGVjb2RlcnM7IGkrKykgewo+Pj4+ICDCoMKgwqDCoMKgwqDC oMKgwqAgcmV0ID0gY3NfZXRtX2RlY29kZXJfX2NyZWF0ZV9ldG1fZGVjb2RlcihkX3BhcmFtcywK Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgICZ0X3BhcmFtc1tpXSwKPj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRlY29kZXIpOwo+Pj4+IGRpZmYgLS1n aXQgYS90b29scy9wZXJmL3V0aWwvY3MtZXRtLWRlY29kZXIvY3MtZXRtLWRlY29kZXIuaAo+Pj4+ IGIvdG9vbHMvcGVyZi91dGlsL2NzLWV0bS1kZWNvZGVyL2NzLWV0bS1kZWNvZGVyLmgKPj4+PiBp bmRleCA5MmE4NTVmYmU1YjguLmIwNjE5M2ZjNzViNCAxMDA2NDQKPj4+PiAtLS0gYS90b29scy9w ZXJmL3V0aWwvY3MtZXRtLWRlY29kZXIvY3MtZXRtLWRlY29kZXIuaAo+Pj4+ICsrKyBiL3Rvb2xz L3BlcmYvdXRpbC9jcy1ldG0tZGVjb2Rlci9jcy1ldG0tZGVjb2Rlci5oCj4+Pj4gQEAgLTkwLDcg KzkwLDggQEAgaW50IGNzX2V0bV9kZWNvZGVyX19wcm9jZXNzX2RhdGFfYmxvY2soc3RydWN0Cj4+ Pj4gY3NfZXRtX2RlY29kZXIgKmRlY29kZXIsCj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzaXplX3QgbGVuLCBzaXplX3QgKmNvbnN1bWVkKTsK Pj4+PiAgwqAgwqAgc3RydWN0IGNzX2V0bV9kZWNvZGVyICoKPj4+PiAtY3NfZXRtX2RlY29kZXJf X25ldyhpbnQgbnVtX2NwdSwKPj4+PiArY3NfZXRtX2RlY29kZXJfX25ldyhpbnQgZmlyc3RfZGVj b2RlciwKPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnQgZGVjb2RlcnMsCj4+Pj4gIMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBjc19ldG1fZGVjb2Rlcl9wYXJhbXMgKmRf cGFyYW1zLAo+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgY3NfZXRtX3Ry YWNlX3BhcmFtcyB0X3BhcmFtc1tdKTsKPj4+PiAgwqAgZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYv dXRpbC9jcy1ldG0uYyBiL3Rvb2xzL3BlcmYvdXRpbC9jcy1ldG0uYwo+Pj4+IGluZGV4IDk0ZTJk MDIwMDllYi4uMjYxOTUxM2FlMDg4IDEwMDY0NAo+Pj4+IC0tLSBhL3Rvb2xzL3BlcmYvdXRpbC9j cy1ldG0uYwo+Pj4+ICsrKyBiL3Rvb2xzL3BlcmYvdXRpbC9jcy1ldG0uYwo+Pj4+IEBAIC01NSw2 ICs1NSw4IEBAIHN0cnVjdCBjc19ldG1fYXV4dHJhY2Ugewo+Pj4+ICDCoMKgwqDCoMKgIHU4IGhh c192aXJ0dWFsX3RzOyAvKiBWaXJ0dWFsL0tlcm5lbCB0aW1lc3RhbXBzIGluIHRoZSB0cmFjZS4g Ki8KPj4+PiAgwqAgwqDCoMKgwqDCoCBpbnQgbnVtX2NwdTsKPj4+PiArwqDCoMKgIGludCBmaXJz dF9jcHU7Cj4+Pj4gK8KgwqDCoCBpbnQgbGFzdF9jcHU7Cj4+Pj4gIMKgwqDCoMKgwqAgdTY0IGxh dGVzdF9rZXJuZWxfdGltZXN0YW1wOwo+Pj4+ICDCoMKgwqDCoMKgIHUzMiBhdXh0cmFjZV90eXBl Owo+Pj4+ICDCoMKgwqDCoMKgIHU2NCBicmFuY2hlc19zYW1wbGVfdHlwZTsKPj4+PiBAQCAtNjM4 LDE0ICs2NDAsMTMgQEAgc3RhdGljIHZvaWQgY3NfZXRtX19zZXRfdHJhY2VfcGFyYW1fZXRlKHN0 cnVjdAo+Pj4+IGNzX2V0bV90cmFjZV9wYXJhbXMgKnRfcGFyYW1zLAo+Pj4+ICDCoCB9Cj4+Pj4g IMKgIMKgIHN0YXRpYyBpbnQgY3NfZXRtX19pbml0X3RyYWNlX3BhcmFtcyhzdHJ1Y3QgY3NfZXRt X3RyYWNlX3BhcmFtcwo+Pj4+ICp0X3BhcmFtcywKPj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgY3NfZXRtX2F1eHRyYWNlICpldG0sCj4+Pj4gLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaW50IGRlY29kZXJzKQo+Pj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBjc19ldG1f YXV4dHJhY2UgKmV0bSkKPj4+PiAgwqAgewo+Pj4+ICDCoMKgwqDCoMKgIGludCBpOwo+Pj4+ICDC oMKgwqDCoMKgIHUzMiBldG1pZHI7Cj4+Pj4gIMKgwqDCoMKgwqAgdTY0IGFyY2hpdGVjdHVyZTsK Pj4+PiAgwqAgLcKgwqDCoCBmb3IgKGkgPSAwOyBpIDwgZGVjb2RlcnM7IGkrKykgewo+Pj4+ICvC oMKgwqAgZm9yIChpID0gZXRtLT5maXJzdF9jcHU7IGkgPCBldG0tPmxhc3RfY3B1OyBpKyspIHsK Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgIGFyY2hpdGVjdHVyZSA9IGV0bS0+bWV0YWRhdGFbaV1b Q1NfRVRNX01BR0lDXTsKPj4+PiAgwqAgwqDCoMKgwqDCoMKgwqDCoMKgIHN3aXRjaCAoYXJjaGl0 ZWN0dXJlKSB7Cj4+Pj4gQEAgLTgxNyw3ICs4MTgsNyBAQCBzdGF0aWMgdm9pZCBjc19ldG1fX2Zy ZWUoc3RydWN0IHBlcmZfc2Vzc2lvbgo+Pj4+ICpzZXNzaW9uKQo+Pj4+ICDCoMKgwqDCoMKgIC8q IFRoZW4gdGhlIFJCIHRyZWUgaXRzZWxmICovCj4+Pj4gIMKgwqDCoMKgwqAgaW50bGlzdF9fZGVs ZXRlKHRyYWNlaWRfbGlzdCk7Cj4+Pj4gIMKgIC3CoMKgwqAgZm9yIChpID0gMDsgaSA8IGF1eC0+ bnVtX2NwdTsgaSsrKQo+Pj4+ICvCoMKgwqAgZm9yIChpID0gYXV4LT5maXJzdF9jcHU7IGkgPCBh dXgtPmxhc3RfY3B1OyBpKyspCj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoCB6ZnJlZSgmYXV4LT5t ZXRhZGF0YVtpXSk7Cj4+Pj4gIMKgIMKgwqDCoMKgwqAgdGhyZWFkX196cHV0KGF1eC0+dW5rbm93 bl90aHJlYWQpOwo+Pj4+IEBAIC05MjEsNyArOTIyLDggQEAgc3RhdGljIHN0cnVjdCBjc19ldG1f cXVldWUKPj4+PiAqY3NfZXRtX19hbGxvY19xdWV1ZShzdHJ1Y3QgY3NfZXRtX2F1eHRyYWNlICpl dG0sCj4+Pj4gIMKgwqDCoMKgwqDCoCAqIEVhY2ggcXVldWUgY2FuIG9ubHkgY29udGFpbiBkYXRh IGZyb20gb25lIENQVSB3aGVuCj4+Pj4gdW5mb3JtYXR0ZWQsIHNvIG9ubHkgb25lIGRlY29kZXIg aXMKPj4+PiAgwqDCoMKgwqDCoMKgICogbmVlZGVkLgo+Pj4+ICDCoMKgwqDCoMKgwqAgKi8KPj4+ PiAtwqDCoMKgIGludCBkZWNvZGVycyA9IGZvcm1hdHRlZCA/IGV0bS0+bnVtX2NwdSA6IDE7Cj4+ Pj4gK8KgwqDCoCBpbnQgZmlyc3RfZGVjb2RlciA9IGZvcm1hdHRlZCA/IGV0bS0+Zmlyc3RfY3B1 IDogMDsKPj4+PiArwqDCoMKgIGludCBkZWNvZGVycyA9IGZpcnN0X2RlY29kZXIgKyAoZm9ybWF0 dGVkID8gZXRtLT5udW1fY3B1IDogMSk7Cj4+Pj4gIMKgIMKgwqDCoMKgwqAgZXRtcSA9IHphbGxv YyhzaXplb2YoKmV0bXEpKTsKPj4+PiAgwqDCoMKgwqDCoCBpZiAoIWV0bXEpCj4+Pj4gQEAgLTkz Nyw3ICs5MzksNyBAQCBzdGF0aWMgc3RydWN0IGNzX2V0bV9xdWV1ZQo+Pj4+ICpjc19ldG1fX2Fs bG9jX3F1ZXVlKHN0cnVjdCBjc19ldG1fYXV4dHJhY2UgKmV0bSwKPj4+PiAgwqDCoMKgwqDCoCBp ZiAoIXRfcGFyYW1zKQo+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBvdXRfZnJlZTsKPj4+ PiAgwqAgLcKgwqDCoCBpZiAoY3NfZXRtX19pbml0X3RyYWNlX3BhcmFtcyh0X3BhcmFtcywgZXRt LCBkZWNvZGVycykpCj4+Pj4gK8KgwqDCoCBpZiAoY3NfZXRtX19pbml0X3RyYWNlX3BhcmFtcyh0 X3BhcmFtcywgZXRtKSkKPj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gb3V0X2ZyZWU7Cj4+ Pj4gIMKgIMKgwqDCoMKgwqAgLyogU2V0IGRlY29kZXIgcGFyYW1ldGVycyB0byBkZWNvZGUgdHJh Y2UgcGFja2V0cyAqLwo+Pj4+IEBAIC05NDcsOCArOTQ5LDcgQEAgc3RhdGljIHN0cnVjdCBjc19l dG1fcXVldWUKPj4+PiAqY3NfZXRtX19hbGxvY19xdWV1ZShzdHJ1Y3QgY3NfZXRtX2F1eHRyYWNl ICpldG0sCj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBm b3JtYXR0ZWQpKQo+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBvdXRfZnJlZTsKPj4+PiAg wqAgLcKgwqDCoCBldG1xLT5kZWNvZGVyID0gY3NfZXRtX2RlY29kZXJfX25ldyhkZWNvZGVycywg JmRfcGFyYW1zLAo+Pj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHRfcGFyYW1zKTsKPj4+PiArwqDCoMKgIGV0bXEtPmRlY29kZXIgPSBjc19ldG1fZGVj b2Rlcl9fbmV3KGZpcnN0X2RlY29kZXIsIGRlY29kZXJzLAo+Pj4+ICZkX3BhcmFtcywgdF9wYXJh bXMpOwo+Pj4+ICDCoCDCoMKgwqDCoMKgIGlmICghZXRtcS0+ZGVjb2RlcikKPj4+PiAgwqDCoMKg wqDCoMKgwqDCoMKgIGdvdG8gb3V0X2ZyZWU7Cj4+Pj4gQEAgLTI5NTksMTEgKzI5NjAsMTEgQEAg c3RhdGljIGludCBjc19ldG1fX3F1ZXVlX2F1eF9yZWNvcmRzKHN0cnVjdAo+Pj4+IHBlcmZfc2Vz c2lvbiAqc2Vzc2lvbikKPj4+PiAgwqDCoCAqIExvb3AgdGhyb3VnaCB0aGUgRVRNcyBhbmQgY29t cGxhaW4gaWYgd2UgZmluZCBhdCBsZWFzdCBvbmUgd2hlcmUKPj4+PiB0c19zb3VyY2UgIT0gMSAo dmlydHVhbAo+Pj4+ICDCoMKgICogdGltZXN0YW1wcykuCj4+Pj4gIMKgwqAgKi8KPj4+PiAtc3Rh dGljIGJvb2wgY3NfZXRtX19oYXNfdmlydHVhbF90cyh1NjQgKiptZXRhZGF0YSwgaW50IG51bV9j cHUpCj4+Pj4gK3N0YXRpYyBib29sIGNzX2V0bV9faGFzX3ZpcnR1YWxfdHModTY0ICoqbWV0YWRh dGEsIHN0cnVjdAo+Pj4+IGNzX2V0bV9hdXh0cmFjZSAqZXRtKQo+Pj4+ICDCoCB7Cj4+Pj4gIMKg wqDCoMKgwqAgaW50IGo7Cj4+Pj4gIMKgIC3CoMKgwqAgZm9yIChqID0gMDsgaiA8IG51bV9jcHU7 IGorKykgewo+Pj4+ICvCoMKgwqAgZm9yIChqID0gZXRtLT5maXJzdF9jcHU7IGogPCBldG0tPmxh c3RfY3B1OyBqKyspIHsKPj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgIHN3aXRjaCAobWV0YWRhdGFb al1bQ1NfRVRNX01BR0lDXSkgewo+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqAgY2FzZSBfX3BlcmZf Y3NfZXRtdjRfbWFnaWM6Cj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChIQVNf UEFSQU0oaiwgRVRNVjQsIFRTX1NPVVJDRSkgfHwKPj4+PiBtZXRhZGF0YVtqXVtDU19FVE1WNF9U U19TT1VSQ0VdICE9IDEpCj4+Pj4gQEAgLTI5ODIsMTMgKzI5ODMsMTQgQEAgc3RhdGljIGJvb2wg Y3NfZXRtX19oYXNfdmlydHVhbF90cyh1NjQKPj4+PiAqKm1ldGFkYXRhLCBpbnQgbnVtX2NwdSkK Pj4+PiAgwqAgfQo+Pj4+ICDCoCDCoCAvKiBtYXAgdHJhY2UgaWRzIHRvIGNvcnJlY3QgbWV0YWRh dGEgYmxvY2ssIGZyb20gaW5mb3JtYXRpb24gaW4KPj4+PiBtZXRhZGF0YSAqLwo+Pj4+IC1zdGF0 aWMgaW50IGNzX2V0bV9fbWFwX3RyYWNlX2lkc19tZXRhZGF0YShpbnQgbnVtX2NwdSwgdTY0ICoq bWV0YWRhdGEpCj4+Pj4gK3N0YXRpYyBpbnQgY3NfZXRtX19tYXBfdHJhY2VfaWRzX21ldGFkYXRh KHN0cnVjdCBjc19ldG1fYXV4dHJhY2UgKmV0bSkKPj4+PiAgwqAgewo+Pj4+ICDCoMKgwqDCoMKg IHU2NCBjc19ldG1fbWFnaWM7Cj4+Pj4gK8KgwqDCoCB1NjQgKiptZXRhZGF0YSA9IGV0bS0+bWV0 YWRhdGE7Cj4+Pj4gIMKgwqDCoMKgwqAgdTggdHJhY2VfY2hhbl9pZDsKPj4+PiAgwqDCoMKgwqDC oCBpbnQgaSwgZXJyOwo+Pj4+ICDCoCAtwqDCoMKgIGZvciAoaSA9IDA7IGkgPCBudW1fY3B1OyBp KyspIHsKPj4+PiArwqDCoMKgIGZvciAoaSA9IGV0bS0+Zmlyc3RfY3B1OyBpIDwgZXRtLT5sYXN0 X2NwdTsgaSsrKSB7Cj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoCBjc19ldG1fbWFnaWMgPSBtZXRh ZGF0YVtpXVtDU19FVE1fTUFHSUNdOwo+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqAgc3dpdGNoIChj c19ldG1fbWFnaWMpIHsKPj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgIGNhc2UgX19wZXJmX2NzX2V0 bXYzX21hZ2ljOgo+Pj4+IEBAIC0zMDE1LDEyICszMDE3LDEzIEBAIHN0YXRpYyBpbnQgY3NfZXRt X19tYXBfdHJhY2VfaWRzX21ldGFkYXRhKGludAo+Pj4+IG51bV9jcHUsIHU2NCAqKm1ldGFkYXRh KQo+Pj4+ICDCoMKgICogSWYgd2UgZm91bmQgQVVYX0hXX0lEIHBhY2tldHMsIHRoZW4gc2V0IGFu eSBtZXRhZGF0YSBtYXJrZWQgYXMKPj4+PiB1bnVzZWQgdG8gdGhlCj4+Pj4gIMKgwqAgKiB1bnVz ZWQgdmFsdWUgdG8gcmVkdWNlIHRoZSBudW1iZXIgb2YgdW5uZWVkZWQgZGVjb2RlcnMgY3JlYXRl ZC4KPj4+PiAgwqDCoCAqLwo+Pj4+IC1zdGF0aWMgaW50IGNzX2V0bV9fY2xlYXJfdW51c2VkX3Ry YWNlX2lkc19tZXRhZGF0YShpbnQgbnVtX2NwdSwgdTY0Cj4+Pj4gKiptZXRhZGF0YSkKPj4+PiAr c3RhdGljIGludCBjc19ldG1fX2NsZWFyX3VudXNlZF90cmFjZV9pZHNfbWV0YWRhdGEoc3RydWN0 Cj4+Pj4gY3NfZXRtX2F1eHRyYWNlICpldG0pCj4+Pj4gIMKgIHsKPj4+PiAgwqDCoMKgwqDCoCB1 NjQgY3NfZXRtX21hZ2ljOwo+Pj4+ICvCoMKgwqAgdTY0ICoqbWV0YWRhdGEgPSBldG0tPm1ldGFk YXRhOwo+Pj4+ICDCoMKgwqDCoMKgIGludCBpOwo+Pj4+ICDCoCAtwqDCoMKgIGZvciAoaSA9IDA7 IGkgPCBudW1fY3B1OyBpKyspIHsKPj4+PiArwqDCoMKgIGZvciAoaSA9IGV0bS0+Zmlyc3RfY3B1 OyBpIDwgZXRtLT5sYXN0X2NwdTsgaSsrKSB7Cj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoCBjc19l dG1fbWFnaWMgPSBtZXRhZGF0YVtpXVtDU19FVE1fTUFHSUNdOwo+Pj4+ICDCoMKgwqDCoMKgwqDC oMKgwqAgc3dpdGNoIChjc19ldG1fbWFnaWMpIHsKPj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgIGNh c2UgX19wZXJmX2NzX2V0bXYzX21hZ2ljOgo+Pj4+IEBAIC0zMDQ5LDcgKzMwNTIsNyBAQCBpbnQg Y3NfZXRtX19wcm9jZXNzX2F1eHRyYWNlX2luZm9fZnVsbCh1bmlvbgo+Pj4+IHBlcmZfZXZlbnQg KmV2ZW50LAo+Pj4+ICDCoMKgwqDCoMKgIGludCBldmVudF9oZWFkZXJfc2l6ZSA9IHNpemVvZihz dHJ1Y3QgcGVyZl9ldmVudF9oZWFkZXIpOwo+Pj4+ICDCoMKgwqDCoMKgIGludCB0b3RhbF9zaXpl ID0gYXV4dHJhY2VfaW5mby0+aGVhZGVyLnNpemU7Cj4+Pj4gIMKgwqDCoMKgwqAgaW50IHByaXZf c2l6ZSA9IDA7Cj4+Pj4gLcKgwqDCoCBpbnQgbnVtX2NwdTsKPj4+PiArwqDCoMKgIGludCBudW1f Y3B1LCBmaXJzdF9jcHUgPSAwLCBsYXN0X2NwdTsKPj4+PiAgwqDCoMKgwqDCoCBpbnQgZXJyID0g MDsKPj4+PiAgwqDCoMKgwqDCoCBpbnQgYXV4X2h3X2lkX2ZvdW5kOwo+Pj4+ICDCoMKgwqDCoMKg IGludCBpLCBqOwo+Pj4+IEBAIC0zMDY4LDIyICszMDcxLDMxIEBAIGludCBjc19ldG1fX3Byb2Nl c3NfYXV4dHJhY2VfaW5mb19mdWxsKHVuaW9uCj4+Pj4gcGVyZl9ldmVudCAqZXZlbnQsCj4+Pj4g IMKgwqDCoMKgwqAgLyogRmlyc3QgdGhlIGdsb2JhbCBwYXJ0ICovCj4+Pj4gIMKgwqDCoMKgwqAg cHRyID0gKHU2NCAqKSBhdXh0cmFjZV9pbmZvLT5wcml2Owo+Pj4+ICDCoMKgwqDCoMKgIG51bV9j cHUgPSBwdHJbQ1NfUE1VX1RZUEVfQ1BVU10gJiAweGZmZmZmZmZmOwo+Pj4+IC3CoMKgwqAgbWV0 YWRhdGEgPSB6YWxsb2Moc2l6ZW9mKCptZXRhZGF0YSkgKiBudW1fY3B1KTsKPj4+PiArCj4+Pj4g K8KgwqDCoCAvKiBTdGFydCBwYXJzaW5nIGFmdGVyIHRoZSBjb21tb24gcGFydCBvZiB0aGUgaGVh ZGVyICovCj4+Pj4gK8KgwqDCoCBpID0gQ1NfSEVBREVSX1ZFUlNJT05fTUFYOwo+Pj4+ICsKPj4+ PiArwqDCoMKgIC8qR2V0IENQVSBpZCBvZiBmaXJzdCBldmVudCAqLwo+Pj4+ICvCoMKgwqAgZmly c3RfY3B1ID0gcHRyW2kgKyBDU19FVE1fQ1BVXTsKPj4+PiArwqDCoMKgIGxhc3RfY3B1ID0gZmly c3RfY3B1ICsgbnVtX2NwdTsKPj4+PiArCj4+Pj4gK8KgwqDCoCBpZiAoZmlyc3RfY3B1ID4gY3B1 X19tYXhfY3B1KCkuY3B1IHx8Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbGFzdF9jcHUg PiBjcHVfX21heF9jcHUoKS5jcHUpCj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAtRUlOVkFM Owo+Pj4+ICsKPj4+PiArwqDCoMKgIG1ldGFkYXRhID0gemFsbG9jKHNpemVvZigqbWV0YWRhdGEp ICogbGFzdF9jcHUpOwo+Pj4KPj4+IEhpIEdhbmFwYXRyYW8sCj4+Pgo+Pj4gSSB0aGluayBJIHNl ZSB3aGF0IHRoZSBwcm9ibGVtIGlzLCBidXQgSSdtIHdvbmRlcmluZyBpZiBhIGJldHRlciBmaXgK Pj4+IHdvdWxkIGJlIHRvIGZ1cnRoZXIgZGVjb3VwbGUgdGhlIENQVSBJRCBmcm9tIHRoZSBpbmRl eCBpbiB0aGUgYXJyYXkuCj4+Pgo+Pj4gV2l0aCB5b3VyIGNoYW5nZSBpdCdzIG5vdCBjbGVhciB3 aGF0IGhhcHBlbnMgd2l0aCBzcGFyc2UgcmVjb3JkaW5ncywgZm9yCj4+PiBleGFtcGxlICdwZXJm IHJlY29yZCAtZSBjc19ldG0vLyAtQyAxLDMsNScuIEFuZCBpdCBzZWVtcyBsaWtlIHRoZXJlIGlz Cj4+Cj4+IFRoaXMgcGF0Y2ggZml4ZXMgZm9yIGFueSByYW5nZSBvZiBDUFVzLgo+PiBSZWNvcmQg d2l0aCBzcGFyc2UgbGlzdCBvZiBDUFVzIHdpbGwgbm90IHdvcmsgd2l0aCBjdXJyZW50IGNvZGUg c3RpbGwuCj4+Cj4gCj4gSXMgdGhlcmUgYSBtYWpvciBpc3N1ZSB0aGF0IG1lYW5zIHNwYXJzZSBj YW4ndCBiZSBkb25lPyBJJ20gdGhpbmtpbmcgaXQKPiB3b3VsZCBiZSBiZXN0IHRvIGZpeCBib3Ro IGlzc3VlcyB3aXRoIG9uZSBjaGFuZ2Ugd2hpbGUgd2UgdW5kZXJzdGFuZAo+IHRoaXMgcGFydCBy YXRoZXIgdGhhbiBhIGhhbGYgZml4IHRoYXQgbWlnaHQgaGF2ZSBkbyBiZSBjb21wbGV0ZWx5Cj4g cmUtdW5kZXJzdG9vZCBhbmQgcmUtZG9uZSBsYXRlciBhbnl3YXkuIFVubGVzcyB0aGVyZSBpcyBz b21lIGJpZyBibG9ja2VyCj4gYnV0IEkgY2FuJ3Qgc2VlIGl0Pwo+IAo+Pj4gc29tZSB3YXN0YWdl IGluIHRoZSB6YWxsb2MgaGVyZSBmb3IgZXhhbXBsZSBpZiBvbmx5IENQVSAyNTYgaXMgdHJhY2Vk Cj4+PiB0aGVuIHdlJ2Qgc3RpbGwgbWFrZSAyNTYgZGVjb2RlcnMgYnV0IDI1NSBvZiB0aGVtIHdv dWxkIGJlIHVudXNlZD8KPj4+Cj4+PiBJIHRyaWVkIHRvIHRlc3Qgc3BhcnNlIHJlY29yZGluZ3Ms IGJ1dCB5b3VyIGNoYW5nZSBkb2Vzbid0IGFwcGx5IHRvIHRoZQo+Pj4gbGF0ZXN0IGNvcmVzaWdo dC9uZXh0IGJyYW5jaC4gSSBkaWQgbm90aWNlIHRoYXQgJ3BlcmYgcmVwb3J0IC1EJyBkb2Vzbid0 Cj4+PiB3b3JrIHdpdGggdGhlbSBvbiBjb3Jlc2lnaHQvbmV4dCAoaXQganVzdCBxdWl0cyksIGJ1 dCBJIGNvdWxkbid0IHNlZSBpZgo+Pj4gdGhhdCdzIGZpeGVkIHdpdGggeW91ciBjaGFuZ2UuCj4+ Cj4+IE15IHBhdGNoIGlzIHJlYmFzZWQgb24gNi4zLVJDNyBjb2RlYmFzZSB3aXRoIE1pa2UncyAz IHBlcmYgcGF0Y2hlcwo+PiByZWxhdGVkIHRvIGR5bmFtaWMgaWQgWzFdIHN1cHBvcnQocXVldWVk IGZvciA2LjQpLgo+Pgo+PiAicGVyZiByZXBvcnQgLUQiIHdvcmtzIGZvciBtZS4KPiAKPiBJIHdh cyByZWZlcnJpbmcgdG8gc3BhcnNlIENQVSBsaXN0cywgd2hpY2ggSSB0aGluayB5b3UgbWVudGlv bmVkIGFib3ZlCj4gZG9lc24ndCB3b3JrIGV2ZW4gd2l0aCB0aGlzIHBhdGNoLgo+IAo+Pgo+PiBb MV0gaHR0cHM6Ly93d3cuc3Bpbmljcy5uZXQvbGlzdHMvbGludXgtcGVyZi11c2Vycy9tc2cyNzQ1 Mi5odG1sCj4+Cj4gCj4gSXQgc2hvdWxkIGJlIGJhc2VkIG9uIHRoZSBuZXh0IGJyYW5jaCBoZXJl Ogo+IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9jb3Jlc2ln aHQvbGludXguZ2l0CgpPSy4KPiAKPj4+Cj4+PiBXb3VsZCBhIGJldHRlciBmaXggbm90IGJlIHRv IGtlZXAgdGhlIG1ldGFkYXRhIGxvb3BzIGZyb20gMC1OIGFuZAo+Pj4gaW5zdGVhZCBzYXZlIHRo ZSBDUFUgSUQgaW4gY3NfZXRtX2RlY29kZXJfcGFyYW1zIG9yIHRoZSBkZWNvZGVyLiBUaGF0Cj4+ PiB3YXkgaXQgd291bGQgc3VwcG9ydCBib3RoIHNwYXJzZSBhbmQgbm90IHN0YXJ0aW5nIGZyb20g MCBjYXNlcz8gSSB0aGluawo+Pgo+PiBZZXAsIEkgdGhvdWdoIHRoaXMgaW5pdGlhbGx5LCBpdCBn b3QgY29tcGxpY2F0ZWQgZHVlIHRvIGZvciBtb3JlCj4+IGZvci1sb29wcy4gSSB3aWxsIHRyeSBh Z2FpbiBhbmQgcG9zdCBWMi4KPj4KPiAKPiBJIGNhbid0IGltYWdpbmUgaXQgd291bGQgbmVlZCBh bnkgZXh0cmEgZm9yIGxvb3BzIG9mZiB0aGUgdG9wIG9mIG15Cj4gaGVhZC4gSnVzdCBzYXZpbmcg dGhlIENQVSBJRCBpbiBhIGZldyBzdHJ1Y3RzIGFuZCB1c2luZyBpdCB3aGVyZXZlciBpdCdzCj4g bmVlZGVkIGluc3RlYWQgb2YgdGhlIGxvb3AgaW5kZXguIEkgaW1hZ2luZSBtb3N0IG9mIHRoZSBs b29wcyB3b3VsZAo+IGFjdHVhbGx5IHN0YXkgdGhlIHNhbWUgcmF0aGVyIHRoYW4gYmUgY2hhbmdl ZCBsaWtlIHlvdSBoYXZlIGluIFYxLgoKV29ya2luZyBvbiBWMiwgSSB3aWxsIHBvc3QgaXQgYXQg dGhlIGVhcmxpZXN0Lgo+IAo+Pj4gdGhlIGNvZGUgd291bGQgYmUgYmV0dGVyIGlmIGl0J3Mgd29y ZGVkIGxpa2UgImkgPCByZWNvcmRlZF9jcHVzIiByYXRoZXIKPj4+IHRoYW4gImkgPCBjcHUiIHRv IG1ha2UgaXQgY2xlYXIgdGhhdCBpIGlzbid0IGFjdHVhbGx5IHRoZSBDUFUgSUQgaXQncwo+Pj4g anVzdCBhbiBpbmRleC4KPj4KPj4gWWVzLCBtYWtlcyBzZW5zZSB0byBjYWxsIGl0ICJyZWNvcmRl ZF9jcHVzIi4KPj4KPj4+Cj4+PiBBbHNvIGEgbmV3IHRlc3QgZm9yIHRoaXMgc2NlbmFyaW8gd291 bGQgcHJvYmFibHkgYmUgYSBnb29kIGlkZWEuCj4+Pgo+Pj4gVGhhbmtzCj4+PiBKYW1lcwo+Pj4K Pj4gVGhhbmtzLAo+PiBHYW5hcGF0CgpUaGFua3MsCkdhbmFwYXQKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBs aXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5m cmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK