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 gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (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 D3CD3C433F5 for ; Fri, 14 Jan 2022 07:17:01 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 40A7F10E158; Fri, 14 Jan 2022 07:17:01 +0000 (UTC) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 71CE010E158 for ; Fri, 14 Jan 2022 07:17:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1642144620; x=1673680620; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=QVDI0xb3kSkQtWX8jgqoeaaSHiJYCuu1hXWA2cPGJgI=; b=MIxXR/xf55BpW8H63yz2uXfSkhGx3QHPeSlUudph3KMm4y2aiWwv7a7g 5u95EEdFK47wRsoH4QjxWXiWKIHQsg/hogPAIcRPkSDgdCd2RaftfAmXG LKKPsylEHVS0xMuKcHM4uuqrJ7P2LcBCjZ/JKexZVTfE/GGI0+SkycVAB 9KCEsqZN0s/BjJ/XRY3DM10EfWvn+x+wMc6lPS5oAQD8Z2F8GPsWjX2iy Ky3OkGlSxZn9HjS203fU0WEsgd39gQSH/6XfEMV39Q1E/+cSJi1/h1j50 BVwgEAXo9Ohk+0vC0SNbE8dMzjMrvuyoSHACTSZVpDzT3SoUL84cV5jYV Q==; X-IronPort-AV: E=McAfee;i="6200,9189,10226"; a="244153262" X-IronPort-AV: E=Sophos;i="5.88,287,1635231600"; d="scan'208";a="244153262" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Jan 2022 23:16:59 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.88,287,1635231600"; d="scan'208";a="765794416" Received: from orsmsx602.amr.corp.intel.com ([10.22.229.15]) by fmsmga005.fm.intel.com with ESMTP; 13 Jan 2022 23:16:59 -0800 Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) by ORSMSX602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.20; Thu, 13 Jan 2022 23:16:59 -0800 Received: from orsmsx609.amr.corp.intel.com (10.22.229.22) by ORSMSX611.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.20; Thu, 13 Jan 2022 23:16:58 -0800 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx609.amr.corp.intel.com (10.22.229.22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.20 via Frontend Transport; Thu, 13 Jan 2022 23:16:58 -0800 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (104.47.66.49) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.20; Thu, 13 Jan 2022 23:16:58 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FmbAHVO5Z6pSBZ5+vkwwYYNI5GKWGzEq5hBPVKPCaO1NznnBsuOKwNGeAnjb4kCDbnwmwuyhi5UEtFTNo0ByqWS6plUfNlLhELnTJtrGsegNjEs1nGB3Wg1PE8AFe+G8mfgpuWmqYyDRqWIGcA5XGGtVtkeQT1xfShWTIFUANDFEhY8NfeLxE2RvawHcySK6ahSDuoa7sBgbTO7y8tQfYMqPMxZa4E851WzdhNAlb9Pjpba18bKI6n/lvpKQQmSI8Xqf3Z8rlp7hTtu64y6ujJo4IYJOmWqBHo9f9dST7moivBUwF3RZ626Rc2j0akZNHq4Y2CvGIEEVk1rq210hhA== 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=QVDI0xb3kSkQtWX8jgqoeaaSHiJYCuu1hXWA2cPGJgI=; b=QsBGDQy/KwmEUL8B/fSYh9fMxngwb+Ccfmz739Bewc+R/eWOi362CA0R2P6H/O7gtqvx5tAbx0z3yWYN/5JrUb/pfwzfqTmBlKFnaF3Y5ncnXxLQMtRitYnMyTPnbT1dfVVw555wFliYSQ/BjfIvDOOv41Z5ja5Z9u730uHCxQ0UAsrxLCiuglqa7gZgUM2nCgb0dyvN4Rsq1vDPzAEVrbLwAoRGex0J6yypRruZc57KUQEbCNQnlXRPk2Et/N+1OV7pk3fvn1CvcGCBVBMr1qIfeS38OSxHfVqGuXP8cJFYE8lJGL+Ripb67GNh4H97IqbBA2TniFd3bTZKZJvkyw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from BYAPR11MB3784.namprd11.prod.outlook.com (2603:10b6:a03:fe::10) by SA0PR11MB4767.namprd11.prod.outlook.com (2603:10b6:806:97::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4888.11; Fri, 14 Jan 2022 07:16:57 +0000 Received: from BYAPR11MB3784.namprd11.prod.outlook.com ([fe80::a048:b2cb:5446:6b13]) by BYAPR11MB3784.namprd11.prod.outlook.com ([fe80::a048:b2cb:5446:6b13%7]) with mapi id 15.20.4888.011; Fri, 14 Jan 2022 07:16:57 +0000 From: "Teres Alexis, Alan Previn" To: Tvrtko Ursulin , "Brost, Matthew" Thread-Topic: [Intel-gfx] [RFC 7/7] drm/i915/guc: Print the GuC error capture output register list. Thread-Index: AQHX3/Ueewn73SRF5061jq6P87GJy6wn02QAgABnhACAGGKigIABIMoAgAAYIICAEU9sgIABzo2AgAEN3wCAAJYwAIAA8nYAgACGkQCABCDFAIAAq6AAgAEIpoCABIY6sA== Date: Fri, 14 Jan 2022 07:16:57 +0000 Message-ID: References: <20211122230402.2023576-1-alan.previn.teres.alexis@intel.com> <20211122230402.2023576-8-alan.previn.teres.alexis@intel.com> <20211208002215.GA17960@jons-linux-dev-box> <8257f42f-7bbd-c033-28f1-f43f21cc81af@linux.intel.com> <0267e249fbc650069e4c6d29438ce32289d535cb.camel@intel.com> <4da5fd63-d74f-2004-082b-a75cbdb024ad@linux.intel.com> <798a8740d1692541ee822535dbe880ce17b2bbbc.camel@intel.com> <3bdab0a4-f182-28bb-0206-8d6d4b34c690@linux.intel.com> <642bffb1-7878-38ac-a11b-4db462995374@linux.intel.com> <26d77a54cd3d32f57666e7447cd9fc5029abece6.camel@intel.com> <73a0758a-f54c-64da-7930-9e650ead82b0@linux.intel.com> In-Reply-To: <73a0758a-f54c-64da-7930-9e650ead82b0@linux.intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-reaction: no-action dlp-version: 11.6.200.16 dlp-product: dlpe-windows authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: e956c62c-1a65-44ad-f655-08d9d72dd98b x-ms-traffictypediagnostic: SA0PR11MB4767:EE_ x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: CgVsE07Hw29MLWe1nR0r+Gnnk2eRM9ZjgUI78AbWmmjL7ruBqRnwhJi/y5va7k7si23363rOEto/kWjJjXO6H3PlHX2XBOjJq1jpLPvK4pI//ChEHG/kW8vSkQecAqOMCBSacH5sHlTJIKnm9sDR2yPL7F5xymWJVQrHCtDopuCpsy1ZKhjhUYhYgWjHKAcRgRc9X/vzeQWa9ZnEEkBasJb/wt206UtqY7cbIrDqMWYlQZmAc8RJBxAEhavzGPq5os24yNnB7UH+wnxawir2JXbndzcTe2pDWw5rCYRGVJN9AZNjk2gqwvX7LnJOmE8vYlkOw0ciPOSxyFXW88YES3/DtB0WzaI2YxfIf/uEREuQDuZHXyZpz5Vt+BcqhFEUQNFI8DUmks5eWHicSkgKUbrQurfLK6FRrzAE0f7pnFx8allftvBDZWNenq/UU1uCVKNtuhHCtKKfTBgtlUF5HjmVsg4bZInqeCaHf26MhhhY921LzV1SgaFJvQc2gdl8WulmBI4Lb5DKUEKBKoA6HwBo2V/OrZlqoa29LPujnv1ryR0Q3hdJ+JgKjUNi7YOGAYAAOZmy7WFVzg8HBbkaS7tr1Sb80wY0iz1HRQTucvrcEt3Yvoa4Fx6rjxHx2yFzQKPgbpp15bEM8fggU6zVexNRL5RynSc0z9xO5+5BySVI0VCRdOqtCHIayAD+6ed5pkGkgmdL2NGQzvx9+0htpQ== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BYAPR11MB3784.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(366004)(186003)(66946007)(66476007)(2906002)(66446008)(52536014)(64756008)(66556008)(38100700002)(4326008)(30864003)(82960400001)(71200400001)(38070700005)(122000001)(83380400001)(9686003)(7696005)(55016003)(86362001)(5660300002)(6506007)(53546011)(508600001)(110136005)(33656002)(8936002)(6636002)(316002)(8676002)(26005)(76116006); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?aCt2TTVKSWlHZmFGUGpQcnY4dlErZktaU0xMMFZzbzRid1VrSmE5SFZXVklV?= =?utf-8?B?T0lHS1hVMnhJdEJOSHQySDhaSG02QzEzMFNHRlJiVDlUZ3NKdm5adEx0ZlZJ?= =?utf-8?B?R1dERnhpeHJTcDJPR1RIdVBJRWZhcWloaGJoVVprVmloSEtHUjFFRzFkb0Vh?= =?utf-8?B?UVIrZXByRjg4TEFLUU15Wk5Cb1RwNTJ1czFuMW1uNnFHaFcwQncvekFrUitC?= =?utf-8?B?MGRGSWkzQU52ZjVVUEp6MGppTCs4UDZRKzBwNDNhWnBsZzlGc0xzdVNkODF5?= =?utf-8?B?ZEtOS3U4YXhlS25wc0Zmd0tscCtRbzZMcno5dlRNd0MzYmdHNmM0Nk5jcWJx?= =?utf-8?B?TS9RQTQzNjhtdHkwemRON1NpK0thYXFsdHlLeWw1cUN5RnNNV3FjcTllM3h5?= =?utf-8?B?eHNqL1REZmVCYVdmOEMyS2NoZERTeHIwZkdtZUs3VERxUEFVNDRMS3dJdDN0?= =?utf-8?B?ZmpiYXAwZVQ0WmxDZ1lxYi9DS2NzN0JtemF2RDFZQ3ZSMWFud2czeEJNYzlG?= =?utf-8?B?ZEpHVzcxRXJBVm1XN1Zra25oenR4aDEwMlA1UVQ3QnRtOFpQdGdXTHlUTlhv?= =?utf-8?B?dXcvcWdMVnZ2eDhDQy90elVIUHorMDR4L0hOdnc5WFdhcUlUSk9WWjdPbVdB?= =?utf-8?B?WTk3aTA3ejVrWHFRQThpaUk2Wis3d1ZmeWZWYVBPS2JlZkVTcmtQY3NRNVlk?= =?utf-8?B?b1ZKdGhCeXhwM2RYNGlRd2RObUZ0SHZFQ0JSSG14azlsaUQ0ZkdOMmJQMEdR?= =?utf-8?B?UVBKOFZNMzFwVUZQV1hoSG1HMG1GVUJscVg5M21DaC9NcGl6OW9qeFpVVTYv?= =?utf-8?B?NDg4UjJ6c1JsOWRHckVVVnM1WFJBK2ltUXZ6UENPcEZUT1k2R0V4Mmw5Uk1U?= =?utf-8?B?cHA1VUVhQTV4MHZBeVc2RStGOUFuWkFialBnNklYSkFrd09VUXE2YUJxcHRG?= =?utf-8?B?T2JYZjFzS2c2citXVnFNdXhaOWJrYjh1QTFVTUd1Q3RCR1ZJU1c2WG5uUDBQ?= =?utf-8?B?VDQ4VHBIcGFFSUZ4QzNUV0dFRmtTc1ZzZHl0clVYWE9JeXdxN1dIL1VtTEJk?= =?utf-8?B?RUZ6V2pMSWdML0liMDlLUW1YRmxjR2hWVW01TFUyMTRQbVE4Ky9xdlNPemRj?= =?utf-8?B?cjd5V0RnZm1MODVpdXVORERMM09QSzFseUxtb0srQ0wzV1FTSWRkMHFSZkdL?= =?utf-8?B?bEsvV3ZPS1UyTVBsbWV6anJMVmFwcnVGNUwvTGI2UEg1NXYzaUZNKy83ek5C?= =?utf-8?B?L2VEUUFXYUxwVXVndDlZSHlidTd4bGRBSm9QVm44NEo0Qi9aSm9OaTVvaWRp?= =?utf-8?B?SEx2a3lXblFIL21CL09tSjFUczNSdlVTVW4xemo1KytKTW5kUXlMY0QyUUJL?= =?utf-8?B?UUxTMW10ZGRYS1pKNVh1NnhkeXkxWm94b1Rmd21HWDYyeUU5WDhsUXRCdTEr?= =?utf-8?B?Vk1mM0hyd1NjbDNkTTkxSzI0WlgveklYbjhYWFF5Ti9RalEwajFHcVZyblJ2?= =?utf-8?B?VmdhMFJMWnFWT21KUEhJazFYbHJXT3Vyb2V5WTZ5THBRUW5Vc3NNbXhpOHFr?= =?utf-8?B?TUhCeEVHT3JCRW0wNXRyTk1TMUVKTzIrQlFoN2ZjeUFWNzFpZHpYdFBwMkNx?= =?utf-8?B?emZ5RXcyL0RyRnpWa1VLSzZvU011ZVYvRVlyalhxeXM3amdYdXNiNnd5eGlO?= =?utf-8?B?NXV6TDBMc0JBSFp6TnRjUnNhRXVXTWJEZk9SSnpmbWlJcWFwZy8raUE0ZXJW?= =?utf-8?B?TEhPdG1OQmVqdU4zdVhKWGxId2d0aWFjR2NoYk9ydURua3FXT09zS3NVWHFY?= =?utf-8?B?a0lyRjRla212SU1vbnBVOWswSzQ1a0g4RHRUL2NtbjJIa3ZGR08ya0VSUEVr?= =?utf-8?B?enB4MSswMmpFdzYyd3dwbU9NMU9LVVYyMTU0QWU2SytITnB3TnJYSWlyNmM4?= =?utf-8?B?a1l0L3FWTzBHL1pPMFg0T09CSXNsTzltd2l5VC82YmVvWXVnOCt2TUZJME03?= =?utf-8?B?L1V6ZzNqRXhZMDQyUmQ2VzlOWWl2d1IycW5CNFM0N1c1YUplV3NRRkNQbGdK?= =?utf-8?B?ZGpVMWYzTzM3dHZHd2V4Tm1FTHk1azdMVENWNWt5L2xYbmpnT2ZMcHdicUxy?= =?utf-8?B?N0MreFMwSG1YZVFHdlNLRERaaFc5WmhvdG14MlNGMWw2em8vZXhpU203Q25w?= =?utf-8?B?ZStUNkJkWDlBaWQ0dllhK2ptSGp3WkdnVERQU2Jva0dibXFmYmlUazA2RFQy?= =?utf-8?B?cG5ZN0twZzAvUEYybm94SW9OSGdSUUw2OTUzRU9hSjBXVHZqZ21kNXVUTzR4?= =?utf-8?Q?imoF9a1Ep9uAyShwtc?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BYAPR11MB3784.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: e956c62c-1a65-44ad-f655-08d9d72dd98b X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Jan 2022 07:16:57.1870 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: XGTwmZ0U0H1LZ5nglvEPES39tWTPKSjIXcV59FbuwsCNXr79UWZ9DIxyOZCglkSMtmrpVvL/6RvX69ky/cobgXMKsVwfMDa2nIXCdrhXB3rsqYj8RSL2FqI8VTILNU0C X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR11MB4767 X-OriginatorOrg: intel.com Subject: Re: [Intel-gfx] [RFC 7/7] drm/i915/guc: Print the GuC error capture output register list. X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "intel-gfx@lists.freedesktop.org" Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" PiBUaGlzIG1hZGUgbWUgdGhpbmcgZ3VjIGVuZ2luZSByZXNldCBub3RpZmljYXRpb24gaXMgYSAi aGFuZHNoYWtlIiANCj4gb3BlcmF0aW9uIGFuZCBub3QgYSBwdXJlIG5vdGlmaWNhdGlvbj8gRG9l cyBpdCBpbXBseSBHdUMgd2lsbCB3YWl0IGZvcg0KPiBpOTE1IHRvIHJlcGx5IHdoYXQgdG8gZG8g bmV4dCBtZWFuaW5nIGl0IHdvbid0IGNvbnRpbnVlIHRvIGV4ZWN1dGUgQ29udGV4dEEgYmVmb3Jl IGk5MTUgcmVwbGllcyB0byBlbmdpbmUgcmVzZXQgbm90aWZpY2F0aW9uPw0KDQo+IElmIHNvIHRo YXQgd291bGQgcmVzb2x2ZSBteSBjb25jZXJuLg0KDQpZZXM6IFRoZSBHdUMgdG8gaG9zdCBhY3Rp b24gaXMgdXNlZCB0byByZXBvcnQgYSBodW5nIGNvbnRleHQgdG8gdGhlIFZGIGhvc3QgaWYgZW5n aW5lIHJlc2V0IHdhcyB0cmlnZ2VyZWQgYW5kIGEgaHVuZyBjb250ZXh0IHdhcyBkZXRlY3RlZCBk dXJpbmcgZW5naW5lIHJlc2V0LiBUaGlzIGNvbnRleHQgaXMgYXV0b21hdGljYWxseSBwdXQgaW4g YSBub24tcnVubmFibGUgc3RhdGUuDQpBcG9sb2dpZXMgZm9yIHRoZSBkZWxheSAtIHNvbWUgdGFz ayBJUlFzLg0KDQouLi5hbGFuDQoNCi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQpGcm9tOiBU dnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AbGludXguaW50ZWwuY29tPiANClNlbnQ6IFR1 ZXNkYXksIEphbnVhcnkgMTEsIDIwMjIgMjowOSBBTQ0KVG86IFRlcmVzIEFsZXhpcywgQWxhbiBQ cmV2aW4gPGFsYW4ucHJldmluLnRlcmVzLmFsZXhpc0BpbnRlbC5jb20+OyBCcm9zdCwgTWF0dGhl dyA8bWF0dGhldy5icm9zdEBpbnRlbC5jb20+DQpDYzogaW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZw0KU3ViamVjdDogUmU6IFtJbnRlbC1nZnhdIFtSRkMgNy83XSBkcm0vaTkxNS9ndWM6 IFByaW50IHRoZSBHdUMgZXJyb3IgY2FwdHVyZSBvdXRwdXQgcmVnaXN0ZXIgbGlzdC4NCg0KDQpP biAxMC8wMS8yMDIyIDE4OjE5LCBUZXJlcyBBbGV4aXMsIEFsYW4gUHJldmluIHdyb3RlOg0KPiAN Cj4gT24gTW9uLCAyMDIyLTAxLTEwIGF0IDA4OjA3ICswMDAwLCBUdnJ0a28gVXJzdWxpbiB3cm90 ZToNCj4+IE9uIDA3LzAxLzIwMjIgMTc6MDMsIFRlcmVzIEFsZXhpcywgQWxhbiBQcmV2aW4gd3Jv dGU6DQo+Pj4gT24gRnJpLCAyMDIyLTAxLTA3IGF0IDA5OjAzICswMDAwLCBUdnJ0a28gVXJzdWxp biB3cm90ZToNCj4+Pj4gT24gMDYvMDEvMjAyMiAxODozMywgVGVyZXMgQWxleGlzLCBBbGFuIFBy ZXZpbiB3cm90ZToNCj4+Pj4+IE9uIFRodSwgMjAyMi0wMS0wNiBhdCAwOTozOCArMDAwMCwgVHZy dGtvIFVyc3VsaW4gd3JvdGU6DQo+Pj4+Pj4gT24gMDUvMDEvMjAyMiAxNzozMCwgVGVyZXMgQWxl eGlzLCBBbGFuIFByZXZpbiB3cm90ZToNCj4+Pj4+Pj4gT24gVHVlLCAyMDIyLTAxLTA0IGF0IDEz OjU2ICswMDAwLCBUdnJ0a28gVXJzdWxpbiB3cm90ZToNCj4+Pj4+Pj4+PiBUaGUgZmxvdyBvZiBl dmVudHMgYXJlIGFzIGJlbG93Og0KPj4+Pj4+Pj4+DQo+Pj4+Pj4+Pj4gMS4gZ3VjIHNlbmRzIG5v dGlmaWNhdGlvbiB0aGF0IGFuIGVycm9yIGNhcHR1cmUgd2FzIGRvbmUgYW5kIHJlYWR5IHRvIHRh a2UuDQo+Pj4+Pj4+Pj4gCS0gYXQgdGhpcyBwb2ludCB3ZSBjb3B5IHRoZSBndWMgZXJyb3IgY2Fw dHVyZWQgZHVtcCBpbnRvIGFuIGludGVyaW0gc3RvcmUNCj4+Pj4+Pj4+PiAJICAobGFyZ2VyIGJ1 ZmZlciB0aGF0IGNhbiBob2xkIG11bHRpcGxlIGNhcHR1cmVzKS4NCj4+Pj4+Pj4+PiAyLiBndWMg c2VuZHMgbm90aWZpY2F0aW9uIHRoYXQgYSBjb250ZXh0IHdhcyByZXNldCAoYWZ0ZXIgdGhlIHBy aW9yKQ0KPj4+Pj4+Pj4+IAktIHRoaXMgdHJpZ2dlcnMgYSBjYWxsIHRvIGk5MTVfZ3B1X2NvcmVk dW1wIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgZW5naW5lLW1hc2sNCj4+Pj4+Pj4+PiAgICAgICAg ICAgICAgICBmcm9tIHRoZSBjb250ZXh0IHRoYXQgd2FzIHJlc2V0DQo+Pj4+Pj4+Pj4gCS0gaTkx NV9ncHVfY29yZWR1bXAgcHJvY2VlZHMgdG8gZ2F0aGVyIGVudGlyZSBncHUgc3RhdGUgaW5jbHVk aW5nIGRyaXZlciBzdGF0ZSwNCj4+Pj4+Pj4+PiAgICAgICAgICAgICAgICBnbG9iYWwgZ3B1IHN0 YXRlLCBlbmdpbmUgc3RhdGUsIGNvbnRleHQgdm1hcyBhbmQgYWxzbyBlbmdpbmUgcmVnaXN0ZXJz LiBGb3IgdGhlDQo+Pj4+Pj4+Pj4gICAgICAgICAgICAgICAgZW5naW5lIHJlZ2lzdGVycyBub3cg Y2FsbCBpbnRvIHRoZSBndWNfY2FwdHVyZSBjb2RlIHdoaWNoIG1lcmVseSBuZWVkcyB0byB2ZXJp ZnkNCj4+Pj4+Pj4+PiAJICB0aGF0IEd1QyBoYWQgYWxyZWFkeSBkb25lIGEgc3RlcCAxIGFuZCB3 ZSBoYXZlIGRhdGEgcmVhZHkgdG8gYmUgcGFyc2VkLg0KPj4+Pj4+Pj4NCj4+Pj4+Pj4+IFdoYXQg YWJvdXQgdGhlIHRpbWUgYmV0d2VlbiB0aGUgYWN0dWFsIHJlc2V0IGFuZCByZWNlaXZpbmcgdGhl IA0KPj4+Pj4+Pj4gY29udGV4dCByZXNldCBub3RpZmljYXRpb24/IExhdHRlciB3aWxsIGNvbnRh aW4gDQo+Pj4+Pj4+PiBpbnRlbF9jb250ZXh0LT5ndWNfaWQgLSBjYW4gdGhhdCBiZSByZS1hc3Np Z25lZCBvciAicmV0aXJlZCIgaW4gDQo+Pj4+Pj4+PiBiZXR3ZWVuIHRoZSB0d28gYW5kIHNvIGNh dXNlIHByb2JsZW1zIGZvciBtYXRjaGluZyB0aGUgY29ycmVjdCAob3IgYW55KSB2bWFzPw0KPj4+ Pj4+Pj4NCj4+Pj4+Pj4gTm90IGl0IGNhbm5vdCBiZWNhdXNlIGl0cyBvbmx5IGFmdGVyIHRoZSBj b250ZXh0IHJlc2V0IA0KPj4+Pj4+PiBub3RpZmljYXRpb24gdGhhdCBpOTE1IHN0YXJ0cyB0YWtp bmcgYWN0aW9uIGFnYWluc3QgdGhhdCBjb3RuZXh0IC0gYW5kIGV2ZW4gdGhhdCBoYXBwZW5zIGFm dGVyIHRoZSBpOTE1X2dwdV9jb2RlZHVtcCAoZW5naW5lLW1hc2stb2YtY29udGV4dCkgaGFwcGVu cy4NCj4+Pj4+Pj4gVGhhdCdzIHdoYXQgaSd2ZSBvYnNlcnZlZCBpbiB0aGUgY29kZSBmbG93Lg0K Pj4+Pj4+DQo+Pj4+Pj4gVGhlIGZhY3QgaXQgaXMgIm9ubHkgYWZ0ZXIiIGlzIGV4YWN0bHkgd2h5 IEkgYXNrZWQuDQo+Pj4+Pj4NCj4+Pj4+PiBSZXNldCBub3RpZmljYXRpb24gaXMgaW4gYSBDVCBx dWV1ZSB3aXRoIG90aGVyIHN0dWZmLCByaWdodD8gU28gDQo+Pj4+Pj4gY2FuIGJlIHNvbWUgdW5y ZWxhdGVkIHRpbWUgYWZ0ZXIgdGhlIGFjdHVhbCByZXNldC4gQ291bGQgaGF2ZSANCj4+Pj4+PiBj b250ZXh0IGJlIHJldGlyZWQgaW4gdGhlIG1lYW50aW1lIGFuZCBndWNfaWQgcmVsZWFzZWQgaXMg dGhlIHF1ZXN0aW9uLg0KPj4+Pj4+DQo+Pj4+Pj4gQmVjYXVzZSBpOTE1IGhhcyBubyBpZGVhIHRo ZXJlIHdhcyBhIHJlc2V0IHVudGlsIHRoaXMgZGVsYXllZCANCj4+Pj4+PiBtZXNzYWdlIGNvbWVz IG92ZXIsIGJ1dCBpdCBjb3VsZCBzZWUgdXNlciBpbnRlcnJ1cHQgc2lnbmFsaW5nIGVuZCANCj4+ Pj4+PiBvZiBiYXRjaCwgYWZ0ZXIgdGhlIHJlc2V0IGhhcyBoYXBwZW5lZCwgdW5iZWtub3duIHRv IGk5MTUsIHJpZ2h0Pw0KPj4+Pj4+DQo+Pj4+Pj4gUGVyaGFwcyB0aGUgYW5zd2VyIGlzIGd1Y19p ZCBjYW5ub3QgYmUgcmVsZWFzZWQgdmlhIHRoZSByZXF1ZXN0IA0KPj4+Pj4+IHJldGlyZSBmbG93 cy4gT3IgR3VDIHNpZ25hbGluZyByZWxlYXNlIG9mIGd1Y19pZCBpcyBhIHRoaW5nLCANCj4+Pj4+ PiB3aGljaCBpcyB0aGVuIG9yZGVyZWQgdmlhIHRoZSBzYW1lIENUIGJ1ZmZlci4NCj4+Pj4+Pg0K Pj4+Pj4+IEkgZG9uJ3Qga25vdywganVzdCBhc2tpbmcuDQo+Pj4+Pj4NCj4+Pj4+IEFzIGxvbmcg YXMgdGhlIGNvbnRleHQgaXMgcGlubmVkLCB0aGUgZ3VjLWlkIHdvbnQgYmUgcmUtYXNzaWduZWQu IA0KPj4+Pj4gQWZ0ZXIgYSBiaXQgb2Ygb2ZmbGluZSBicmFpbi1kdW1wIGZyb20gSm9obiBIYXJy aXNvbiwgdGhlcmUgYXJlIA0KPj4+Pj4gbWFueSBmYWN0b3JzIHRoYXQgY2FuIGtlZXAgdGhlIGNv bnRleHQgcGlubmVkIChyZWNvdW50cykgaW5jbHVkaW5nIA0KPj4+Pj4gbmV3IG9yIG91c3RhbmRp bmcgcmVxdWVzdHMuIFNvIGEgZ3VjLWlkIGNhbid0IGdldCByZS1hc3NpZ25lZCANCj4+Pj4+IGJl dHdlZW4gYSBjYXB0dXJlLW5vdGlmeSBhbmQgYSBjb250ZXh0LXJlc2V0IGV2ZW4gaWYgdGhhdCAN Cj4+Pj4+IG91dHN0YW5kaW5nIHJlcXVlc3QgaXMgdGhlIG9ubHkgcmVmY291bnQgbGVmdCBzaW5j ZSBpdCB3b3VsZCBzdGlsbCANCj4+Pj4+IGJlIGNvbnNpZGVyZWQgb3V0c3RhbmRpbmcgYnkgdGhl IGRyaXZlci4gSSBhbHNvIHRoaW5rIHdlIG1heSBhbHNvIGJlIHRhbGtpbmcgcGFzdCBlYWNoIG90 aGVyIGluIHRoZSBzZW5zZSB0aGF0IHRoZSBndWMtaWQgaXMgc29tZXRoaW5nIHRoZSBkcml2ZXIg YXNzaWducyB0byBhIGNvbnRleHQgYmVpbmcgcGlubmVkIGFuZCBvbmx5IHRoZSBkcml2ZXIgY2Fu IHVuLWFzc2lnbiBpdCAoYm90aCBhc3NpZ25pbmcgYW5kIHVuYXNpZ25pbmcgaXMgdmlhIEgyRyBp bnRlcmFjdGlvbnMpLg0KPj4+Pj4gSSBnZXQgdGhlIHNlbnNlIHlvdSBhcmUgYXNzdW1pbmcgdGhl IEd1QyBjYW4gdW4tYXNzaWduIHRoZSANCj4+Pj4+IGd1Yy1pZCdzIG9uIGl0cyBvd24gLSB3aGlj aCBpc24ndCB0aGUgY2FzZS4gQXBvbG9naWVzIGlmIGkgbWlzLWFzc3VtZWQuDQo+Pj4+DQo+Pj4+ IEkgZGlkIG5vdCB0aGluayBHdUMgY2FuIHJlLWFzc2lnbiBjZS0+Z3VjX2lkLiBJIGFza2VkIGFi b3V0IHJlcXVlc3QvY29udGV4dCBjb21wbGV0ZS9yZXRpcmUgaGFwcGVuaW5nIGJlZm9yZSByZXNl dC9jYXB0dXJlIG5vdGlmaWNhdGlvbiBpcyByZWNlaXZlZC4NCj4+Pj4NCj4+Pj4gVGhhdCB3b3Vs ZCBiZSB0aGUgdGltZSB3aW5kb3cgYmV0d2VlbiB0aGUgbGFzdCBpbnRlbF9jb250ZXh0X3B1dCwg c28gbGFzdCBpOTE1X3JlcXVlc3RfcHV0IGZyb20gcmV0aXJlLCBhdCB3aGljaCBwb2ludCBBRkFJ Q1QgR3VDIGNvZGUgcmVsZWFzZXMgdGhlIGd1Y19pZC4gRXhlY3V0aW9uIHRpbWVsaW5lIGxpa2U6 DQo+Pj4+DQo+Pj4+PiAtLS0tLS0gcnExIC0tLS0tLXwtLS0tLS0gcnEyIC0tLS0tLXwNCj4+Pj4g ICAgICAgXiBlbmdpbmUgcmVzZXQJCSAgICBeIHJxMiwgcnExIHJldGlyZSwgZ3VjIGlkIHJlbGVh c2VkDQo+Pj4+DQo+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAJCV4gR3VDIHJlc2V0IG5vdGlmeSByZWNlaXZlZCAtIGd1Y19p ZCBub3Qga25vd24gYW55IG1vcmU/DQo+Pj4+ICAgICANCj4+Pj4gWW91IGFyZSBzYXlpbmcgc29t ZXRoaW5nIGlzIGd1YXJhbnRlZWQgdG8gYmUgaG9sZGluZyBvbnRvIHRoZSBndWNfaWQgYXQgdGhl IHBvaW50IG9mIHJlY2VpdmluZyB0aGUgbm90aWZpY2F0aW9uPyAiVGhlcmUgYXJlIG1hbnkgZmFj dG9ycyB0aGF0IGNhbiBrZWVwIHRoZSBjb250ZXh0IHBpbm5lZCIgLSB3aGF0IGlzIGl0IGluIHRo aXMgY2FzZT8gT3IgdGhlIGNhc2UgY2Fubm90IGhhcHBlbj8NCj4+Pj4NCj4+Pj4gUmVnYXJkcywN Cj4+Pj4NCj4+Pj4gVHZydGtvDQo+Pj4NCj4+PiBhYm92ZSBjaGFydCBpcyBpbmNvcnJlY3Q6IEd1 QyByZXNldCBub3RpZmljYXRpb24gaXMgc2VudCBmcm9tIEd1QyB0byANCj4+PiBob3N0IGJlZm9y ZSBpdCBzZW5kcyB0aGUgZW5naW5lIHJlc2V0IG5vdGlmaWNhdGlvbg0KPj4NCj4+IE1lYW5pbmc/ IEFuZCBob3cgZG9lcyBpdCByZWxhdGUgdG8gYWN0dWFsIHJlc2V0IHZzIHJldGlyZSB2cyByZXNl dCANCj4+IG5vdGlmaWNhdGlvbiAoc2VudCBvciByZWNlaXZlZCk/DQo+Pg0KPj4gUGx1cywgSSB0 aG91Z2h0IHNvIGZhciB3ZSB3ZXJlIHRhbGtpbmcgYWJvdXQgcmVzZXQgbm90aWZpY2F0aW9uIGFu ZCANCj4+IGNhcHR1cmUgbm90aWZpY2F0aW9uLCBzbyB3aGF0IHlvdSBzYXkgaGVyZSBub3cgZXh0 cmEgY29uZnVzZXMgbWUgDQo+PiB3aXRob3V0IHByb3ZpZGluZyBhbiBhbnN3ZXIgdG8gbXkgcXVl c3Rpb24uDQo+Pg0KPj4gUmVnYXJkcywNCj4+DQo+PiBUdnJ0a28NCj4gU28gaSB0aGluayB0aGUg Y29uZnVzaW9uIGF0IHRoaXMgcG9pbnQgb2YgdGhlIGNvbnZlcnNhdGlvbiBpcyBiZWNhdXNlIA0K PiBpbiB0aGUgcHJpb3IgZGlzY3Vzc2lvbiB3ZSBoYXZlIGJlZW4gdGFsa2luZyBhYm91dCB0aGUg Zm9jdXMgd2FzIG9uIA0KPiBwcmludG91dCBvZiB0aGUgZXJyb3IgY2FwdHVyZSBzdGF0dXMgKHdo aWNoIGhhcHBlbnMgd2hlbiB1c2VyIHRyaWdnZXJzIA0KPiB0aGUgZGVidWdmcyB0byBkdW1wKS4g SW4geW91ciBwcmV2aW91cyByZXBseSwgeW91IGhhZCBwcm92aWRlZCBhIHRpbWVsaW5lIHRoYXQg cmVmZXJlbmNlcyB0aGUgZW5naW5lLXJlc2V0LCByZXF1ZXN0L3JldGlyZSBhbmQgcmVzZXQtbm90 aWZpY2F0aW9uIGV2ZW50cyB3aGljaCBhcmUgc2VwYXJhdGUgZnJvbSB0aGUgcHJpbnQtb3V0IGV2 ZW50Lg0KPiANCj4gDQo+IFNvIHJlY2FwIG9mIHRpbWVsaW5lIG9mIGV2ZW50cyB0aGF0IGhpZ2hs aWdodHMgd2hlbiB0aGluZ3Mgb2NjdXIgaW5jbHVkaW5nIHRoZSBwcmludG91dDoNCj4gKGFwb2xv Z2llcyBmb3IgYSBsb3Qgb2YgcmVwZWF0ZWQgYW5kIGtub3duIGluZm8gYmVsb3csIGkgYW0gcmVw ZWF0aW5nIA0KPiBmb3IgbXkgb3duIGJlbmVmaXQpDQo+IA0KPiB0MA0KPiAgICAgLSBDb250ZXh0 QSBtYWtlcyBhIHJlcXVlc3QNCj4gICAgICAgICAgIC0+IHBpbiBDb250ZXh0QSBhbmQgZ2V0IGEg Z3VjLWlkIE9SDQo+ICAgICAgICAgICAgICByZXVzZSBleGlzdGluZyBndWMtaWQgaWYgY29udGV4 dCBpcyBzdGlsbCBwaW5uZWQuDQo+ICAgICAgICAgICAtPiByZWYgY291bnQgaXMgYWx3YXlzIGlu Y3JlbWVudGVkIHdoZW4gYSBuZXcgcmVxdWVzdCBpcyBzZW50DQo+ICAgICAgICAgICAgICB0byBr ZWVwIHRoZSBjb250ZXh0IHBpbm5lZCB3aXRoIHRoZSBzYW1lIGd1Yy1pZA0KPiANCj4gdDEuLi50 MTANCj4gICAgIDEtIENvbnRleHRBIGNvbnRpbnVlcyB0aHJvdWdoIG11bHRpcGxlIHJlcXVlc3Qg YW5kIHJldGlyZW1lbnQgZXZlbnRzDQo+ICAgICAyLSBubyBoYW5ncywgbm8gcmVzZXRzLCBDb250 ZXh0QSBpcyBnb29kDQo+IA0KPiB0MTENCj4gICAgIDEtIENvbnRleHRBIHNlbmRzIGEgZmF1bHR5 IHdvcmtsb2FkDQo+ICAgICAyLSBhcyBhbHdheXMsIGl0cyBlaXRoZXIgYWxyZWFkeSBwaW5uZWQg d2l0aCBzYW1lIGd1Yy1pZA0KPiAgICAgICAgb3IgZ2V0IGEgbmV3IGd1Yy1pZCBhbmQgcGlubmVk IGFnYWluDQo+ICAgICAzLSByZWZjb3VudCBpbmNyZWFzZXMNCj4gdDEyDQo+ICAgICAxLSBsZXRz IGFzc3VtZSBhbGwgb3V0c3RhbmRpbmcgQ29udGV4dEEgcmVxdWVzdCBzdWNjZXNzZnVsbHkgcmV0 aXJlDQo+ICAgICAgICBleGNlcHQgdGhlIHdvcmsgYXQgdDExLiBTbyB0aGVyZSBpcyBvbmUgcmVm Y291bnQgbGVmdCBob2xkaW5nIENvbnRleHRBDQo+ICAgICAgICBwaW5uZWQgd2l0aCB0aGF0IHNh bWUgZ3VjLWlkDQo+IHQxMw0KPiAgICAgMS0gR3VDIGRlY2lkZXMgdG8gcmVzZXQgQ29udGV4dEEg KHRoaXMgbWVhbnMgS01EIGhhZCBwcmV2aW91c2x5IHNldHVwIEd1Qw0KPiAgICAgICAgc2NoZWR1 bGVyIHBvbGljaWVzLCBleGVjdXRpb24tcXVhbnRhIGFuZCBwcmVlbXB0aW9uLXRpbWVvdXQgdGhh dCB0ZWxscw0KPiAgICAgICAgR3VDIGl0IHdhbnRzIEd1QyB0byByZXNldCBhIGNvbnRleHQgdGhh dCBkb2VzbnQgY29tcGxldGUgaW4gdGltZSBhbmQgY2FudA0KPiAgICAgICAgYmUgcHJlZW1wdGVk IGlmIGEgaGlnaGVyIHByaW9yaXR5IHdvcmtsb2FkIG5lZWRzIHRvIGdldCBpbikuDQo+IHQxNA0K PiAgICAgMS0gR3VDIGRvZXMgYSBmdWxsIGVycm9yLXN0YXRlIGNhcHR1cmVzIG9uIGl0cyBzaWRl IGFuZCBzZW5kcyB0aGUNCj4gICAgICAgIEcySCBmb3IgZXJyb3ItY2FwdHVyZS1ub3RpZmljYXRp b24gdG8gS01ELiBBdCB0aGlzIHBvaW50LCByZWZjb3VudA0KPiAgICAgICAgcmVtYWlucyB1bnRv dWNoZWQgYW5kIGNvbnRleHQgaXMgc3RpbGwgcGlubmVkLg0KDQpBbGwgZ29vZCB1bnRpbCB0aGlz IHN0ZXAgSSB0aGluay4NCg0KQXQgdGhpcyBwb2ludCBpbiB0aGUgdGltZWxpbmUgbXkgcXVlc3Rp b24gaXMgdGhpczoNCg0KT25jZSBHdUMgaXMgZG9uZSBpdCdzIGVycm9yIGNhcHR1cmUgYW5kIGVu Z2luZSByZXNldCwgaGF2aW5nIHNlbnQgb3V0IHRoZSBub3RpZmljYXRpb24gKG9yIHBsdXJhbCks IGRvZXMgaXQgY29udGludWUgdG8gZXhlY3V0ZSBDb250ZXh0QT8NCg0KSWYgaXQgZG9lcyBub3Qs IGdpdmVuIHdoYXQgeW91IHdyb3RlIGluIHQxNS0zLCBwbGVhc2Ugc2tpcCB0byB0aGF0IGxvY2F0 aW9uICh0MTUtMykuDQoNCklmIGl0IGRvZXMgY29udGludWUgZXhlY3V0aW9uLCBpdCB0aGVuIGhp dHMgdGhlIHJlcXVlc3QgcG9zdC1hbWJsZSBjb250YWluaW5nIHRoZSBzZXFubyB3cml0ZSBhbmQg dXNlciBpbnRlcnJ1cHQuDQoNCkVuZ2luZS9jYXB0dXJlIG5vdGlmaWNhdGlvbnMgYXJlIHNpdHRp bmcgaW4gdGhlIENUIGJ1ZmZlciB3YWl0aW5nIGZvciB0aGUgaTkxNSB0byByZWFkIHRoZW0uDQoN CkluIHBhcmFsbGVsLCBhaGVhZCBvZiB0aGUgQ1Qgd29yaywgaTkxNSBub3RpY2VzIHRoZSBDb250 ZXh0QSByZXF1ZXN0IGhhcyBiZWVuIGNvbXBsZXRlZCBhbmQgcHJvY2VlZHMgdG8gcmV0aXJlIGl0 Lg0KDQpEb2VzIHRoaXMgcmVsZWFzZSB0aGUgZmluYWwgcmVmZXJlbmNlIG9uIHRoZSBndWNfaWQg YXNzb2NpYXRlZCB3aXRoIENvbnRleHRBPw0KDQo+ICAgICAyLSBlcnJvciBjYXB0dXJlIG1vZHVs ZSBjb3BpZXMgdGhlIG5ldyBlcnJvci1jYXB0dXJlIHRvIGludGVyaW0gc3RvcmUNCj4gICAgICAg IGJ1dCBkb2VzIG5vdCBwYXJzZSBpdCB5ZXQuDQo+IHQxNQ0KPiAgICAgMS0gR3VDIHNlbmRzIHRo ZSBHMkggZm9yIGVuZ2luZSByZXNldCAvIGNvbnRleHQgcmVzZXQgdG8gS01ELiBBdCB0aGlzDQo+ ICAgICAgICBwb2ludCwgS01EIGNhbGxzIHRoZSBpOTE1X2dwdV9jb3JlZHVtcCBmdW5jdGlvbiBh bmQgd2lsbCBjYXB0dXJlIGENCj4gICAgICAgIHNuYXBzaG90IG9mIGFsbCByZWxldmFudCBjb250 ZXh0IGluZm9ybWF0aW9uIGFuZCBpdHMgZmF1bHRpbmcgcmVxdWVzdC4NCj4gICAgICAgIFRoaXMg aW5jbHVkZXMgdGhlIGNvbnRleHQsIExSQ0EgYW5kIHZtYXMgKHN1Y2ggYXMgdGhlIGJhdGNoIGJ1 ZmZlcikuDQo+ICAgICAgICBBdCB0aGlzIHBvaW50IHRoZSBndWMtZXJyb3IgY2FwdHVyZSBpcyBu b3QgcGFyc2VkIGJ1dCB3ZSBhbHJlYWR5IGhhdmUgYQ0KPiAgICAgICAgc25hcHNob3Qgb2YgdGhl IGd1Yy1lcnJvci1jYXB0dXJlLWR1bXAgZnJvbSB0MTQuDQo+ICAgICAyLSBpOTE1X2dwdV9jb3Jl ZHVtcCBzaGFsbCBjaG9zZSB0byBrZWVwIGFsbCBvZiB0aGUgaW5mb3JtYXRpb24gY29sbGVjdGVk DQo+ICAgICAgICBpZiBpdHMgdGhlIGZpcnN0IGVycm9yIG9yIHdpbGwgZGlzY2FyZCBldmVyeXRo aW5nLg0KPiAgICAgMy0gaTkxNSBtYXkgYXR0ZW1wdCB0byByZXBsYXkgdGhlIGNvbnRleHQgb3Ig aXQgbWF5IG5vdCBhbmQgaWYgbm90IGl0DQo+ICAgICAgICBjb3VsZCBsb3NlIHRoZSBndWMtaWQu DQoNClRoaXMgbWFkZSBtZSB0aGluZyBndWMgZW5naW5lIHJlc2V0IG5vdGlmaWNhdGlvbiBpcyBh ICJoYW5kc2hha2UiIA0Kb3BlcmF0aW9uIGFuZCBub3QgYSBwdXJlIG5vdGlmaWNhdGlvbj8gRG9l cyBpdCBpbXBseSBHdUMgd2lsbCB3YWl0IGZvcg0KaTkxNSB0byByZXBseSB3aGF0IHRvIGRvIG5l eHQgbWVhbmluZyBpdCB3b24ndCBjb250aW51ZSB0byBleGVjdXRlIENvbnRleHRBIGJlZm9yZSBp OTE1IHJlcGxpZXMgdG8gZW5naW5lIHJlc2V0IG5vdGlmaWNhdGlvbj8NCg0KSWYgc28gdGhhdCB3 b3VsZCByZXNvbHZlIG15IGNvbmNlcm4uDQoNClJlZ2FyZHMsDQoNClR2cnRrbw0KDQo+IHRuDQo+ ICAgICAxLSBUaGUgZW5kIHVzZXIgdHJpZ2dlcnMgdGhlIGRlYnVnZnMgdG8gZHVtcCB0aGUgZ3B1 IGVycm9yIHN0YXRlLg0KPiAgICAgMi0gbXVsdGlwbGUgaW5mb3JtYXRpb24gaXMgcHJpbnRlZCBh bmQgaW5jbHVkZXMgdGhlIGNhbGwgdG8NCj4gICAgICAgIGludGVsX2d1Y19jYXB0dXJlX291dF9w cmludF9uZXh0X2dyb3VwIGZ1bmN0aW9uLiBUaGUgZ3VjLWVyci1jYXB0dXJlIG1vZHVsZQ0KPiAg ICAgICAgbm93IGZpbmFsbHkgcGFyc2VzIHRoZSBpbmZvcm1hdGlvbiBhbmQgcHJpbnRzIGV2ZXJ5 dGhpbmcgaXQgZmluZHMuDQo+ICAgICAzLSBiYXNlZCBvbiB0aGUgc2VxdWVuY2Ugb2YgZXZlbnRz IGluIHQxNCBhbmQgdDE1IChpLmUuIGd1YyBzZW5kcyBlcnJvci1jYXB0dXJlDQo+ICAgICAgICBu b3RpZmljYXRpb24gZmlyc3QsIGd1YyBzZW5kcyBjb250ZXh0LXJlc2V0IG5vdGlmaWNhdGlvbiBz ZWNvbmQgYW5kIHRoZQ0KPiAgICAgICAgaTkxNV9jcHVfY29yZWR1bXAgd2lsbCBvbmx5IGtlZXAg ZHVtcCBpbmZvcm1hdGlvbiB0aGUgZmlyc3QtZXJyb3Igb2YgYSBjb250ZXh0LQ0KPiAgICAgICAg b3ItZW5naW5lIHJlc2UpIHRoZSBmaXJzdCBlbmdpbmUtc3RhdGUtZHVtcCB0aGF0IGludGVsX2d1 Y19jYXB0dXJlX291dF9wcmludF9uZXh0X2dyb3VwDQo+ICAgICAgICBmaW5kcyBmcm9tIHRoZSBi dWZmZXIgdGhhdCBHdUMgaGFkIHNlbnQgaW4gdDE0IGlzIGV4cGVjdGVkIHRvIG1hdGNoLCBidXQg d2Uga25vdw0KPiAgICAgICAgYXQgdGhpcyBwb2ludCB0aGUgZ3VjLWlkIGNvdWxkIG9mIGNvdXJz ZSBiZSBsb3N0Lg0KPiAgICAgICAgICAtIE5PVEUxOiBpbiBwcmlvciByZXBsaWVzLCBpIGhhZCBt ZW50aW9uZWQgc29tZXRoaW5nIGFsb25nIHRoZSBsaW5lcyBvZiAibm90DQo+ICAgICAgICAgICAg YWJsZSB0byBleHRyYWN0IGluZm9ybWF0aW9uIGFib3V0IHRoZSBjb250ZXh0IGFuZCBwcm9jZXNz Ii4gSSBkaWRudCBkbw0KPiAgICAgICAgICAgIGEgZ29vZCBqb2Igb2YgZXhwbGFpbmluZyB0aGF0 IHRoaXMgZ2FwIGlzIHBlcnRhaW5pbmcgdG8gdGhlIG5ldw0KPiAgICAgICAgICAgIGludGVsX2d1 Y19jYXB0dXJlX291dF9wcmludF9uZXh0X2dyb3VwIGZ1bmN0aW9uIGJlaW5nIGFibGUgdG8gZ2V0 IHRoYXQNCj4gICAgICAgICAgICBvbiBpdHMgb3duLiBJIHNob3VsZCBoYXZlIGFsc28gc3RhdGVk IHRoYXQgYWxsIHRoYXQgaW5mbyB3YXMgYWxyZWFkeQ0KPiAgICAgICAgICAgIGNhcHR1cmVkIGJ5 IGk5MTVfZ3B1X2NvcmVkdW1wIGluIHN0ZXAgMTUgYW5kIHRoZSBmaXJzdCBlbmdpbmUtcmVzZXQt ZHVtcCB3ZQ0KPiAgICAgICAgICAgIGZpbmQgaW4gaW50ZWxfZ3VjX2NhcHR1cmVfb3V0X3ByaW50 X25leHRfZ3JvdXAgc2hvdWxkIGNvcnJlbGF0ZS4NCj4gICAgICAgICAgLSBOT1RFMjogU2luY2Ug dGhlIGk5MTVfZ3B1X2NvcmVkdW1wIGZ1bmN0aW9uIG9ubHkga2VlcHMgdGhlIGZpcnN0IGVycm9y LXN0YXRlDQo+ICAgICAgICAgICAgYnV0IGRpc2NhcmRzIGFueSBzdWJzZXF1ZW50IG9uZXMgKGlm IHRoZSBlbmQgdXNlciBoYXNuJ3QgY2xlYXJlZCB0aGUgMXN0IG9uZQ0KPiAgICAgICAgICAgIHZp YSB0aGUgZGVidWdmcyksIEkgYW0gbm90IGhhdmluZyB0aGUgZ3VjLWVyci1jYXB0dXJlIG1vZHVs ZSBwYXJzZSBhbGwgb2YgdGhlDQo+ICAgICAgICAgICAgZXJyb3ItY2FwdHVyZSBpbmZvIGF0IHRo ZSB0aW1lIG9mIHQxNCBhbmQgaG9sZCBvZmYgdW50aWwgbm93IGF0IHRuLg0KPiANCj4gQW4gaW1w b3J0YW50IGFzc3VtcHRpb24gaGVyZSBpcyB0aGF0IGF0IHRoZSB0aW1lIG9mIHRuLCB0aGUgdmVy eSBmaXJzdCANCj4gZW5naW5lLWR1bXAgd2UgcGFyc2UgdmlhIHRoZSBndWMtZXJyb3ItY2FwdHVy ZSBkdW1wIHNob3VsZCBjb3JyZWxhdGUgDQo+IHdpdGggdGhlIGZpcnN0IGVycm9yLWNhcHR1cmUg dGhhdCBpOTE1X2dwdV9jb3JlZHVtcCBpcyBwYXJzaW5nIGF0IHRuIA0KPiAoY2FwdHVyZWQgYXQg dDE1KS4gVGhpcyB3YXMgd2hhdCBpIGhhZCBzdW1tYXJpemVkIG9uIHRoaXMgdGhyZWFkIG9uIERl YyAyM3JkIG1vcm5pbmcgUFNULg0KPiANCj4gSG93ZXZlciwgaWYgd2Ugd2FudCB0byBhZGQgYWRk aXRpb25hbCBjaGVjay1hbmQtYmFsYW5jZSAodG8gZW5zdXJlIHRoZSANCj4gZHVtcHMgYXJlDQo+ IGFsaWduZWQpIGlzIHRvIGtlZXAgYSBjb3B5IG9mIHRoZSBndWMtaWQgYW5kIExSQ0EgKG5vdCBy ZWYtY291bnRpbmcgDQo+IGFuZCBrZWVwaW5nIHBpbm5lZCBidXQganVzdCBtYWtpbmcgYSBjb3B5 IG9mIHRoZSB2YWx1ZXMpIHdoZW4gDQo+IGk5MTVfZ3B1X2NvcmVkdW1wIGRvZXMgTk9UIGRpc2Nh cmQgdGhlIGNhcHR1cmUgY296IHRoYXQgd2lsbCBiZSB0aGUgDQo+IG9uZSBwcmludGVkIG91dCB3 aGVuIHRyaWdnZXJlZCBieSBlbmQtdXNlciBhbmQgaXMgZXhwZWN0ZWQgdG8gbWF0Y2ggDQo+IHRo ZSBmaXJzdCBlbnRyeSBmcm9tIHRoZSB0aGUgb3VzdGFuZGluZyBndWMtZXJyLWNhcHR1cmUgZHVt cHMuIEkgY2FuIA0KPiBpbmNsdWRlIHRoaXMgaW4gbXkgdXBjb21pbmcgcmV2IGJ1dCB3aWxsIG9u bHkgbWFrZSB0aGF0IGNvcHkgaWYgdGhlIGk5MTVfZ3B1X2NvcmVkdW1wIGRvZXMgTk9UIGRpc2Nh cmQgdGhlIGR1bXAuDQo+IA0KPiAuLi5hbGFuDQo+IA0K