From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by mx.groups.io with SMTP id smtpd.web12.12.1620744364842188117 for ; Tue, 11 May 2021 07:46:04 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=hAO4xgyy; spf=pass (domain: intel.com, ip: 192.55.52.120, mailfrom: jiewen.yao@intel.com) IronPort-SDR: ns2K9sZr2EQX71yZCc+g3t1mIqjTScGXHdBuisrtCwp5af8e/Sd2PaUsOYT/BfMrlywt8z6x36 7bNArdQB+X+Q== X-IronPort-AV: E=McAfee;i="6200,9189,9981"; a="197477891" X-IronPort-AV: E=Sophos;i="5.82,291,1613462400"; d="scan'208";a="197477891" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 May 2021 07:46:02 -0700 IronPort-SDR: GBmru/3kr0CtEq9spTQrqMKNks6WYCEpV0HDwFU2olE/E9wj65ETL5mdokvjIdWFl+Hp2Jv3D2 0FSEuV/t0rEg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.82,291,1613462400"; d="scan'208";a="408824682" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by orsmga002.jf.intel.com with ESMTP; 11 May 2021 07:45:54 -0700 Received: from fmsmsx607.amr.corp.intel.com (10.18.126.87) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2; Tue, 11 May 2021 07:45:51 -0700 Received: from fmsmsx612.amr.corp.intel.com (10.18.126.92) by fmsmsx607.amr.corp.intel.com (10.18.126.87) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2; Tue, 11 May 2021 07:45:50 -0700 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx612.amr.corp.intel.com (10.18.126.92) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2 via Frontend Transport; Tue, 11 May 2021 07:45:50 -0700 Received: from NAM04-MW2-obe.outbound.protection.outlook.com (104.47.73.169) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2106.2; Tue, 11 May 2021 07:45:49 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nCSr632G2A+fl3h8NlnAEqJCBq0IfPfpxYOAdPhMDrE9Hw7SQOo78qCqA5JUsuiM+C0kxpXYRm25dFlH95ZzdE2AjpB4sqRU/67bzX9/2A2sHoINwx4LX7NhL3U29Ldj85LdWFg1fWytJ6DHMFLrJSSHOcCeZlvVtdDwhKdyM/tR61mkwVJQP31OzyQHfZ9jW+fcjyinNqM83QsCcjgZY097oyJdS6jxNC7qViGuYQiKXdYKK5WE++0Sfv+jJiQdDS1ou/xKTYbmUDnLMAshU+ZE1G6oUd2f5mnI4UAhbhK0yYEk2EVVssmk747Djoo9MG1A8UaPZa8jzlyYjTuJ/g== 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-SenderADCheck; bh=lDqMA9EI91/oELHszWvveHfmZ2LfjR87nwfA6CZb5ls=; b=EEh51keNZDuZp3tpqKSznuM3+D3Y5EDfiWDlTKP2bwYJCApb1zgzLTwcBeMNcdT54QbiQd2yvP8r7Tb4BWwjeK5J/6Lu9wJwIF5p4mNlTDwND7BDHIX1Jg9H8l9G2x36nCV83/rMA982wOHi9kOyW3vfvsoqlOmmj7V3Wf94+Cot4KTWThDJZk7NH5M/aMwBH5OOa75RK5Q4JFeKQZ3rqFJBGTNPnP37Ry1pgMQdQ7yqZ4N8LugPD6IBR24Z6yWq118bwhhQdagwJ9ijuMhSLL+CJskZZ1aR88D6XNw52xyic3xaQtUXndi4DoQCVv3vBIgDfUdqWKL2KeCIWPFOvQ== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=lDqMA9EI91/oELHszWvveHfmZ2LfjR87nwfA6CZb5ls=; b=hAO4xgyywDkKjvVLqJMu8ZgFQ7l4k5MG+zjJiMEOm2+UN0gOkApYZIa0adsvYmPLwbYHLGKLLRHIem99sY1QCQk6mgYBY1rpIhPeFok1CyUd1fb0pkqxKC+PTNhaHsFcNA4q4sD2xsVoEt5YgDKaJi3Q3Ux6KQHy6yDhGrL1FXk= Received: from PH0PR11MB4885.namprd11.prod.outlook.com (2603:10b6:510:35::14) by PH0PR11MB5189.namprd11.prod.outlook.com (2603:10b6:510:3d::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4108.27; Tue, 11 May 2021 14:45:48 +0000 Received: from PH0PR11MB4885.namprd11.prod.outlook.com ([fe80::4cf8:ac8:a6fd:d386]) by PH0PR11MB4885.namprd11.prod.outlook.com ([fe80::4cf8:ac8:a6fd:d386%7]) with mapi id 15.20.4108.031; Tue, 11 May 2021 14:45:48 +0000 From: "Yao, Jiewen" To: "devel@edk2.groups.io" , "ardb@kernel.org" , Rebecca Cran , "Wang, Jian J" CC: "Kinney, Michael D" , Liming Gao , "Liu, Zhiguang" , "Ard Biesheuvel" , Sami Mujawar Subject: Re: [edk2-devel] [PATCH v3 2/2] SecurityPkg: Add support for RngDxe on AARCH64 Thread-Topic: [edk2-devel] [PATCH v3 2/2] SecurityPkg: Add support for RngDxe on AARCH64 Thread-Index: AQHXRebpTWFuYyHHuUW/+An/vz7aP6reXDqAgAAAfNA= Date: Tue, 11 May 2021 14:45:48 +0000 Message-ID: References: <20210510215308.28745-1-rebecca@nuviainc.com> <20210510215308.28745-3-rebecca@nuviainc.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-version: 11.5.1.3 dlp-product: dlpe-windows dlp-reaction: no-action authentication-results: edk2.groups.io; dkim=none (message not signed) header.d=none;edk2.groups.io; dmarc=none action=none header.from=intel.com; x-originating-ip: [192.198.147.198] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 3ccb6838-f4c1-4ba4-227d-08d9148b7757 x-ms-traffictypediagnostic: PH0PR11MB5189: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: C2tvum8s3XyYUT29/8jdF/3gJQeBvmSURKaTsmBwdyg5HBTNbo/doVSV6yF3MQ7fbyw4OG3oT/VXEmcytDIzjaIk3KCHlN+dmJSZDK/DeNmd0P6sMfhjz//7mGW6QTqguaqVQT9scDqI4BnigIrM+Q2qvmgDrWRdE3ekRWZajD80chVBjXaGaSCKyLFhoNr7T5JN8GLHQv5dP2vWSZ0H+6vq0O74ZI4Kest0BShSxsyFw08rSOwVjxZUDe+6M7eybZv/Qaes+tetxO9hfPeg6hk4I76DduGea21OaI40E67zxQqHrJWV4uKVQjYRz6n22XwA2Wh10Z/Y2QG1q9jzg+1ws2dCTvqluWcorZ3ZDG6AX/GVW8eLrPdyRtv/m3+WppY96UfB5LWpcE+BBsPffTPBU0j3iZFJMaduB1/ZFtoPGyweJONBUZNpBgPzij4/5p9G6srKzcIe3uQXXvoltryXoKt8zbpVKGVUtlrg6/JjcaZIBhh5bLvL+m7LSr16DjSB+IlODFTkpGMWjXna8jNOKjr9FjEIplEJHM2qXxCsiM1KCiFRvvJsWGFu0LNW+X4rGXjfQzl7ZuArhoOaaQyYGMbkuSqFZ1gw/68COcqFFX7p9nAnud6/H0AYqGXUSS3CsmciJPZAnsLtVcWKxuyEEYMz+7qRYMIzaOumBZAD3p6qqz/BrNyEVq2BboKAtulxBWXwbQKPQ4AzOvTuQeH/IUL9YMmwpg/LxkGPSSw= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH0PR11MB4885.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(366004)(55016002)(71200400001)(6636002)(498600001)(15650500001)(19627235002)(26005)(30864003)(966005)(53546011)(4326008)(9686003)(7696005)(5660300002)(86362001)(33656002)(2906002)(8676002)(8936002)(110136005)(66556008)(66446008)(6506007)(76116006)(54906003)(186003)(122000001)(52536014)(83380400001)(66946007)(66476007)(38100700002)(64756008)(559001)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: =?utf-8?B?NW5KMTN4eTAvRG13di9EdUNBem1RUytLRFJLMWRYblh0U2hHR2ppTVh6QmF2?= =?utf-8?B?c00wLzZncGtzL05IS2N3Nm1Sb3Q2YUtVRW5CdnBXK0tTR1ZzWkdtK2NHMWsz?= =?utf-8?B?ckNZOHZEVTgxTlV4V3NjYytwaXIwWFlMZzF4WHZEYXhGcWhPd3hSaUhDZ1NH?= =?utf-8?B?WWw5VGN0V0ZvcUpMbGJ6VVpmTzhFRUVNRXRZWStTc090MTJOQmhmK2o3Z1dD?= =?utf-8?B?TFZVVGxuSHhaejhvODRLd2tKSmpjSnFiUVNmWVhZeno4Q3BNby9TYi9scDhH?= =?utf-8?B?MXBQc3U0OHpaK0twcVJLWHMvK2JlVEU2ZnB6cmprL25pVXVmWXA1QkNETVpE?= =?utf-8?B?TDluRHJRSU1UMDFWdmRETEVFWEh1dTZyVTJyM0NyNkFPWmh2U1I2UW04LzBE?= =?utf-8?B?TkV5OGdqOFlvbVlpTEJvOUJWbXJIZklySmZmamE0ZjE1YThkZm1qZWtXUG1y?= =?utf-8?B?MVhUaTZXSUV1bUUrak9sUk5vaDNVOXdDSjVpNWprMGorcXdFcklOWWpVZ3c1?= =?utf-8?B?N0FCaVJGdEhJMmNMNWxOOG52MzJBZ1hDRjk0MHQ4b2JkdEhVK3hmc0x5MW1D?= =?utf-8?B?WjZDZHZRQ3JvRitIUGk4TnQ1NzR3Y1VXVUpYZllnbW94Ylloc0V1c1BEM25Q?= =?utf-8?B?c2pRQm5nSWxSOFp0NmRSUkV4ZkZwUjljUUVlUXlwTEZXdWJ5SnNuRFo3K2dU?= =?utf-8?B?ZTYrTFZEM3JLYU5CMUc0VXRNc3RjaFV5S1hVNHNJaHdwMmR1VE1xaExpSTBW?= =?utf-8?B?Z0hBQjRncXlEclMwMm4yQUo4ZzJDeTRub3FEdktadWFpTmZxS0hKRDlkeFkx?= =?utf-8?B?emdaVWFoZzJBdEMzTm5zZ083Z2hmY2ZKN1dPRFkrdkFrWThENjZJUm1EWjZX?= =?utf-8?B?RjJUb2VlZ2hWYWZlUG01b1JNam9WT01aMkJxbkVOR2VXck9DdDY1ZGdjWVBi?= =?utf-8?B?UURvM2JweENzUmFyUktzaXczVFFxRjRIaExiQjVYMThYYkxKMFBHeFZRQjRN?= =?utf-8?B?M0U2ajFlY3Y3QjdBUzZhQzc3WXVtWTIwc1NrYVFra1hBUWhzcGV2aGhsVzFL?= =?utf-8?B?RTZuQStJb05BTk5lRWh0a1RnRFNwZ1phQW84M2pEYmxwV2NRNHIwd0gwdm5F?= =?utf-8?B?b1RxQlQ0eS9CTXZVeVFPMS9vOENVcENpM0txaTFrY0RTQlNuSUF5RFIwUHJP?= =?utf-8?B?R01yOEhXQk5nWkZROTJubSsyYk16TnpWRjhGRWpNZnl0UWFlTFJtckxrRWdK?= =?utf-8?B?Ymw3UXNKWWJ2L0ZSVzRZbU5oRmNCY2ZpakxlWmdibmFQQ2tWVWM2cTBmcFU5?= =?utf-8?B?YnFMaURtaHZQN3FrRHBqQm1LVkRqb3pGdmVPQzRGcUFEb1BtY054TUtUeHdn?= =?utf-8?B?TUM3QmZoUSs0WU9aTnlOVWVTaWdHa2pwWFRsMGp5eWNPTkZhN0U4NkVQWUJW?= =?utf-8?B?UG8xR3FwK2kvUkR6cGhaL1UxWnhmb25kS3g1dGVkQWZEWld4K3RibjAyNmNs?= =?utf-8?B?cW5CY1JmSy9WUjZXYzdCWkpsVGpqcTRQVnVsTnhlaFM5b21BMUdZN1FXMEps?= =?utf-8?B?RXFqSS9mcUcrcHoyeUJ5WDlyUDJTWVFweCtiVGF3c0VScmYwd2xzK3NQSGV3?= =?utf-8?B?N0NUa1BZRERLN0p4U2NIU3lHK1VuODgrM2l5SkFBdkhzNlZGdk5xdGVQS3Ns?= =?utf-8?B?Y3VYZjdBYzFFY05EZ1BVS2UwdHdEQkV4V3RBOTdSRnpDVTMyNE9vQ3ZvUmNS?= =?utf-8?Q?QbjZAvS0G/U9Y9pIo0Jo2H+fk81oZwivlFx/M8x?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH0PR11MB4885.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3ccb6838-f4c1-4ba4-227d-08d9148b7757 X-MS-Exchange-CrossTenant-originalarrivaltime: 11 May 2021 14:45:48.3829 (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: bVk6oRFHaWCJi0FTOudBxZjz6IJClGPgc3AtwBUIQEN0de6H0rEtbL8oHV6MEmGQikne4kDpdZL6vsB+EnseBw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR11MB5189 Return-Path: jiewen.yao@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 QWNrZWQtYnk6IEppZXdlbiBZYW8gPEppZXdlbi55YW9AaW50ZWwuY29tPg0KDQpOZWVkIEFSTSBl eHBlcnQgdG8gZG91YmxlIGNvbmZpcm0uDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0N Cj4gRnJvbTogZGV2ZWxAZWRrMi5ncm91cHMuaW8gPGRldmVsQGVkazIuZ3JvdXBzLmlvPiBPbiBC ZWhhbGYgT2YgQXJkDQo+IEJpZXNoZXV2ZWwNCj4gU2VudDogVHVlc2RheSwgTWF5IDExLCAyMDIx IDEwOjQ0IFBNDQo+IFRvOiBSZWJlY2NhIENyYW4gPHJlYmVjY2FAbnV2aWFpbmMuY29tPjsgWWFv LCBKaWV3ZW4NCj4gPGppZXdlbi55YW9AaW50ZWwuY29tPjsgV2FuZywgSmlhbiBKIDxqaWFuLmou d2FuZ0BpbnRlbC5jb20+DQo+IENjOiBlZGsyLWRldmVsLWdyb3Vwcy1pbyA8ZGV2ZWxAZWRrMi5n cm91cHMuaW8+OyBLaW5uZXksIE1pY2hhZWwgRA0KPiA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5j b20+OyBMaW1pbmcgR2FvIDxnYW9saW1pbmdAYnlvc29mdC5jb20uY24+OyBMaXUsDQo+IFpoaWd1 YW5nIDx6aGlndWFuZy5saXVAaW50ZWwuY29tPjsgQXJkIEJpZXNoZXV2ZWwNCj4gPGFyZGIrdGlh bm9jb3JlQGtlcm5lbC5vcmc+OyBTYW1pIE11amF3YXIgPHNhbWkubXVqYXdhckBhcm0uY29tPg0K PiBTdWJqZWN0OiBSZTogW2VkazItZGV2ZWxdIFtQQVRDSCB2MyAyLzJdIFNlY3VyaXR5UGtnOiBB ZGQgc3VwcG9ydCBmb3IgUm5nRHhlDQo+IG9uIEFBUkNINjQNCj4gDQo+IE9uIE1vbiwgMTAgTWF5 IDIwMjEgYXQgMjM6NTMsIFJlYmVjY2EgQ3JhbiA8cmViZWNjYUBudXZpYWluYy5jb20+IHdyb3Rl Og0KPiA+DQo+ID4gQUFSQ0g2NCBzdXBwb3J0IGhhcyBiZWVuIGFkZGVkIHRvIEJhc2VSbmdMaWIg dmlhIHRoZSBvcHRpb25hbA0KPiA+IEFSTXY4LjUgRkVBVF9STkcuDQo+ID4NCj4gPiBSZWZhY3Rv ciBSbmdEeGUgdG8gc3VwcG9ydCBBQVJDSDY0LCBub3RlIHN1cHBvcnQgZm9yIGl0IGluIHRoZQ0K PiA+IFZBTElEX0FSQ0hJVEVDVFVSRVMgbGluZSBvZiBSbmdEeGUuaW5mIGFuZCBlbmFibGUgaXQg aW4gU2VjdXJpdHlQa2cuZHNjLg0KPiA+DQo+ID4gU2lnbmVkLW9mZi1ieTogUmViZWNjYSBDcmFu IDxyZWJlY2NhQG51dmlhaW5jLmNvbT4NCj4gDQo+IEknbSBoYXBweSB0byB0YWtlIHRoZXNlIGFu ZCBtZXJnZSB0aGVtIGlmIEkgY2FuIGdldCBhbiBhY2sgZnJvbSBhDQo+IFNlY3VyaXR5UGtnIG1h aW50YWluZXIuDQo+IA0KPiANCj4gPiAtLS0NCj4gPiAgU2VjdXJpdHlQa2cvU2VjdXJpdHlQa2cu ZGVjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArDQo+ID4gIFNlY3Vy aXR5UGtnL1NlY3VyaXR5UGtnLmRzYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgMTEgKy0NCj4gPiAgU2VjdXJpdHlQa2cvUmFuZG9tTnVtYmVyR2VuZXJhdG9yL1JuZ0R4ZS9S bmdEeGUuaW5mICAgICAgICAgICB8ICAyNCArKy0NCj4gPiAgU2VjdXJpdHlQa2cvUmFuZG9tTnVt YmVyR2VuZXJhdG9yL1JuZ0R4ZS97ID0+IFJhbmR9L0Flc0NvcmUuaCB8ICAgMA0KPiA+ICBTZWN1 cml0eVBrZy9SYW5kb21OdW1iZXJHZW5lcmF0b3IvUm5nRHhlL3sgPT4gUmFuZH0vUmRSYW5kLmgg IHwgIDE3IC0tDQo+ID4gIFNlY3VyaXR5UGtnL1JhbmRvbU51bWJlckdlbmVyYXRvci9SbmdEeGUv Um5nRHhlSW50ZXJuYWxzLmggICAgfCAxMTcNCj4gKysrKysrKysrKysrKysNCj4gPiAgU2VjdXJp dHlQa2cvUmFuZG9tTnVtYmVyR2VuZXJhdG9yL1JuZ0R4ZS9BQXJjaDY0L1JuZ0R4ZS5jICAgICB8 IDEyNw0KPiArKysrKysrKysrKysrKysNCj4gPiAgU2VjdXJpdHlQa2cvUmFuZG9tTnVtYmVyR2Vu ZXJhdG9yL1JuZ0R4ZS97ID0+IFJhbmR9L0Flc0NvcmUuYyB8ICAgMA0KPiA+ICBTZWN1cml0eVBr Zy9SYW5kb21OdW1iZXJHZW5lcmF0b3IvUm5nRHhlL3sgPT4gUmFuZH0vUmRSYW5kLmMgIHwgIDQ1 ICstDQo+IC0tLS0NCj4gPiAgU2VjdXJpdHlQa2cvUmFuZG9tTnVtYmVyR2VuZXJhdG9yL1JuZ0R4 ZS9SYW5kL1JuZ0R4ZS5jICAgICAgICB8IDE0Ng0KPiArKysrKysrKysrKysrKysrKw0KPiA+ICBT ZWN1cml0eVBrZy9SYW5kb21OdW1iZXJHZW5lcmF0b3IvUm5nRHhlL1JuZ0R4ZS5jICAgICAgICAg ICAgIHwgMTcwDQo+ICsrKysrKysrLS0tLS0tLS0tLS0tDQo+ID4gIDExIGZpbGVzIGNoYW5nZWQs IDQ4MyBpbnNlcnRpb25zKCspLCAxNzYgZGVsZXRpb25zKC0pDQo+ID4NCj4gPiBkaWZmIC0tZ2l0 IGEvU2VjdXJpdHlQa2cvU2VjdXJpdHlQa2cuZGVjIGIvU2VjdXJpdHlQa2cvU2VjdXJpdHlQa2cu ZGVjDQo+ID4gaW5kZXggZGZiYmIwMzY1YTJiLi40MDAxNjUwZmEyOGUgMTAwNjQ0DQo+ID4gLS0t IGEvU2VjdXJpdHlQa2cvU2VjdXJpdHlQa2cuZGVjDQo+ID4gKysrIGIvU2VjdXJpdHlQa2cvU2Vj dXJpdHlQa2cuZGVjDQo+ID4gQEAgLTI5Nyw2ICsyOTcsOCBAQCBbUGNkc0ZpeGVkQXRCdWlsZCwg UGNkc1BhdGNoYWJsZUluTW9kdWxlXQ0KPiA+DQo+IGdFZmlTZWN1cml0eVBrZ1Rva2VuU3BhY2VH dWlkLlBjZFN0YXR1c0NvZGVGdlZlcmlmaWNhdGlvblBhc3N8MHgwMzAzMTAwQXwNCj4gVUlOVDMy fDB4MDAwMTAwMzANCj4gPg0KPiBnRWZpU2VjdXJpdHlQa2dUb2tlblNwYWNlR3VpZC5QY2RTdGF0 dXNDb2RlRnZWZXJpZmljYXRpb25GYWlsfDB4MDMwMzEwMEJ8DQo+IFVJTlQzMnwweDAwMDEwMDMx DQo+ID4NCj4gPiArDQo+IGdFZmlTZWN1cml0eVBrZ1Rva2VuU3BhY2VHdWlkLlBjZENwdVJuZ1N1 cHBvcnRlZEFsZ29yaXRobXx7MHgwMCwweDAwLDB4MA0KPiAwLDB4MDAsMHgwMCwweDAwLDB4MDAs MHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDB9fFZPSUQNCj4gKnww eDAwMDEwMDMyDQo+ID4gKw0KPiA+ICBbUGNkc0ZpeGVkQXRCdWlsZCwgUGNkc1BhdGNoYWJsZUlu TW9kdWxlLCBQY2RzRHluYW1pYywgUGNkc0R5bmFtaWNFeF0NCj4gPiAgICAjIyBJbWFnZSB2ZXJp ZmljYXRpb24gcG9saWN5IGZvciBPcHRpb25Sb20uIE9ubHkgZm9sbG93aW5nIHZhbHVlcyBhcmUN Cj4gdmFsaWQ6PEJSPjxCUj4NCj4gPiAgICAjICBOT1RFOiBEbyBOT1QgdXNlIDB4NSBhbmQgMHgy IHNpbmNlIGl0IHZpb2xhdGVzIHRoZSBVRUZJIHNwZWNpZmljYXRpb24gYW5kDQo+IGhhcyBiZWVu IHJlbW92ZWQuPEJSPg0KPiA+IGRpZmYgLS1naXQgYS9TZWN1cml0eVBrZy9TZWN1cml0eVBrZy5k c2MgYi9TZWN1cml0eVBrZy9TZWN1cml0eVBrZy5kc2MNCj4gPiBpbmRleCAxMmNjZDE2MzQ5NDEu LmJkNGI4MTBiY2U2MSAxMDA2NDQNCj4gPiAtLS0gYS9TZWN1cml0eVBrZy9TZWN1cml0eVBrZy5k c2MNCj4gPiArKysgYi9TZWN1cml0eVBrZy9TZWN1cml0eVBrZy5kc2MNCj4gPiBAQCAtMjU5LDYg KzI1OSwxMiBAQCBbQ29tcG9uZW50c10NCj4gPiAgW0NvbXBvbmVudHMuSUEzMiwgQ29tcG9uZW50 cy5YNjQsIENvbXBvbmVudHMuQVJNLA0KPiBDb21wb25lbnRzLkFBUkNINjRdDQo+ID4gICAgU2Vj dXJpdHlQa2cvTGlicmFyeS9BdXRoVmFyaWFibGVMaWIvQXV0aFZhcmlhYmxlTGliLmluZg0KPiA+ DQo+ID4gK1tDb21wb25lbnRzLklBMzIsIENvbXBvbmVudHMuWDY0LCBDb21wb25lbnRzLkFBUkNI NjRdDQo+ID4gKyAgIw0KPiA+ICsgICMgUmFuZG9tIE51bWJlciBHZW5lcmF0b3INCj4gPiArICAj DQo+ID4gKyAgU2VjdXJpdHlQa2cvUmFuZG9tTnVtYmVyR2VuZXJhdG9yL1JuZ0R4ZS9SbmdEeGUu aW5mDQo+ID4gKw0KPiA+ICBbQ29tcG9uZW50cy5JQTMyLCBDb21wb25lbnRzLlg2NF0NCj4gPg0K PiBTZWN1cml0eVBrZy9WYXJpYWJsZUF1dGhlbnRpY2F0ZWQvU2VjdXJlQm9vdENvbmZpZ0R4ZS9T ZWN1cmVCb290Q29uZmlnRHgNCj4gZS5pbmYNCj4gPg0KPiA+IEBAIC0zMzQsMTEgKzM0MCw2IEBA IFtDb21wb25lbnRzLklBMzIsIENvbXBvbmVudHMuWDY0XQ0KPiA+DQo+IFNlY3VyaXR5UGtnL0xp YnJhcnkvU21tVGNnMlBoeXNpY2FsUHJlc2VuY2VMaWIvU21tVGNnMlBoeXNpY2FsUHJlc2VuY2VM aWINCj4gLmluZg0KPiA+DQo+IFNlY3VyaXR5UGtnL0xpYnJhcnkvU21tVGNnMlBoeXNpY2FsUHJl c2VuY2VMaWIvU3RhbmRhbG9uZU1tVGNnMlBoeXNpY2FsUA0KPiByZXNlbmNlTGliLmluZg0KPiA+ DQo+ID4gLSAgIw0KPiA+IC0gICMgUmFuZG9tIE51bWJlciBHZW5lcmF0b3INCj4gPiAtICAjDQo+ ID4gLSAgU2VjdXJpdHlQa2cvUmFuZG9tTnVtYmVyR2VuZXJhdG9yL1JuZ0R4ZS9SbmdEeGUuaW5m DQo+ID4gLQ0KPiA+ICAgICMNCj4gPiAgICAjIE9wYWwgUGFzc3dvcmQgc29sdXRpb24NCj4gPiAg ICAjDQo+ID4gZGlmZiAtLWdpdCBhL1NlY3VyaXR5UGtnL1JhbmRvbU51bWJlckdlbmVyYXRvci9S bmdEeGUvUm5nRHhlLmluZg0KPiBiL1NlY3VyaXR5UGtnL1JhbmRvbU51bWJlckdlbmVyYXRvci9S bmdEeGUvUm5nRHhlLmluZg0KPiA+IGluZGV4IDk5ZDZmNmIzNWZjMi4uZjMzMDA5NzE5OTNmIDEw MDY0NA0KPiA+IC0tLSBhL1NlY3VyaXR5UGtnL1JhbmRvbU51bWJlckdlbmVyYXRvci9SbmdEeGUv Um5nRHhlLmluZg0KPiA+ICsrKyBiL1NlY3VyaXR5UGtnL1JhbmRvbU51bWJlckdlbmVyYXRvci9S bmdEeGUvUm5nRHhlLmluZg0KPiA+IEBAIC0yNiwxNSArMjYsMjIgQEAgW0RlZmluZXNdDQo+ID4g ICMNCj4gPiAgIyBUaGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIGlzIGZvciByZWZlcmVuY2Ugb25s eSBhbmQgbm90IHJlcXVpcmVkIGJ5IHRoZSBidWlsZA0KPiB0b29scy4NCj4gPiAgIw0KPiA+IC0j ICBWQUxJRF9BUkNISVRFQ1RVUkVTICAgICAgICAgICA9IElBMzIgWDY0DQo+ID4gKyMgIFZBTElE X0FSQ0hJVEVDVFVSRVMgICAgICAgICAgID0gSUEzMiBYNjQgQUFSQ0g2NA0KPiA+ICAjDQo+ID4N Cj4gPiAgW1NvdXJjZXMuY29tbW9uXQ0KPiA+ICAgIFJuZ0R4ZS5jDQo+ID4gLSAgUmRSYW5kLmMN Cj4gPiAtICBSZFJhbmQuaA0KPiA+IC0gIEFlc0NvcmUuYw0KPiA+IC0gIEFlc0NvcmUuaA0KPiA+ ICsgIFJuZ0R4ZUludGVybmFscy5oDQo+ID4gKw0KPiA+ICtbU291cmNlcy5JQTMyLCBTb3VyY2Vz Llg2NF0NCj4gPiArICBSYW5kL1JuZ0R4ZS5jDQo+ID4gKyAgUmFuZC9SZFJhbmQuYw0KPiA+ICsg IFJhbmQvUmRSYW5kLmgNCj4gPiArICBSYW5kL0Flc0NvcmUuYw0KPiA+ICsgIFJhbmQvQWVzQ29y ZS5oDQo+ID4gKw0KPiA+ICtbU291cmNlcy5BQVJDSDY0XQ0KPiA+ICsgIEFBcmNoNjQvUm5nRHhl LmMNCj4gPg0KPiA+ICBbUGFja2FnZXNdDQo+ID4gICAgTWRlUGtnL01kZVBrZy5kZWMNCj4gPiBA QCAtNTAsMTIgKzU3LDE5IEBAIFtMaWJyYXJ5Q2xhc3Nlc10NCj4gPiAgICBSbmdMaWINCj4gPg0K PiA+ICBbR3VpZHNdDQo+ID4gKyAgZ0VmaVJuZ0FsZ29yaXRobVNwODAwOTBIYXNoMjU2R3VpZCAg IyMgU09NRVRJTUVTX1BST0RVQ0VTICAgICMjDQo+IEdVSUQgICAgICAgICMgVW5pcXVlIElEIG9m IHRoZSBhbGdvcml0aG0gZm9yIFJORw0KPiA+ICsgIGdFZmlSbmdBbGdvcml0aG1TcDgwMDkwSG1h YzI1Nkd1aWQgICMjIFNPTUVUSU1FU19QUk9EVUNFUyAgICAjIw0KPiBHVUlEICAgICAgICAjIFVu aXF1ZSBJRCBvZiB0aGUgYWxnb3JpdGhtIGZvciBSTkcNCj4gPiAgICBnRWZpUm5nQWxnb3JpdGht U3A4MDA5MEN0cjI1Nkd1aWQgICAjIyBTT01FVElNRVNfUFJPRFVDRVMgICAgIyMgR1VJRA0KPiAj IFVuaXF1ZSBJRCBvZiB0aGUgYWxnb3JpdGhtIGZvciBSTkcNCj4gPiArICBnRWZpUm5nQWxnb3Jp dGhtWDkzMTNEZXNHdWlkICAgICAgICAjIyBTT01FVElNRVNfUFJPRFVDRVMgICAgIyMgR1VJRA0K PiAjIFVuaXF1ZSBJRCBvZiB0aGUgYWxnb3JpdGhtIGZvciBSTkcNCj4gPiArICBnRWZpUm5nQWxn b3JpdGhtWDkzMUFlc0d1aWQgICAgICAgICAjIyBTT01FVElNRVNfUFJPRFVDRVMgICAgIyMgR1VJ RA0KPiAjIFVuaXF1ZSBJRCBvZiB0aGUgYWxnb3JpdGhtIGZvciBSTkcNCj4gPiAgICBnRWZpUm5n QWxnb3JpdGhtUmF3ICAgICAgICAgICAgICAgICAjIyBTT01FVElNRVNfUFJPRFVDRVMgICAgIyMg R1VJRCAgICAgICAgIw0KPiBVbmlxdWUgSUQgb2YgdGhlIGFsZ29yaXRobSBmb3IgUk5HDQo+ID4N Cj4gPiAgW1Byb3RvY29sc10NCj4gPiAgICBnRWZpUm5nUHJvdG9jb2xHdWlkICAgICAgICAgICAg ICAgICMjIFBST0RVQ0VTDQo+ID4NCj4gPiArW1BjZF0NCj4gPiArICBnRWZpU2VjdXJpdHlQa2dU b2tlblNwYWNlR3VpZC5QY2RDcHVSbmdTdXBwb3J0ZWRBbGdvcml0aG0gICAgICAjIw0KPiBDT05T VU1FUw0KPiA+ICsNCj4gPiAgW0RlcGV4XQ0KPiA+ICAgIFRSVUUNCj4gPg0KPiA+IGRpZmYgLS1n aXQgYS9TZWN1cml0eVBrZy9SYW5kb21OdW1iZXJHZW5lcmF0b3IvUm5nRHhlL0Flc0NvcmUuaA0K PiBiL1NlY3VyaXR5UGtnL1JhbmRvbU51bWJlckdlbmVyYXRvci9SbmdEeGUvUmFuZC9BZXNDb3Jl LmgNCj4gPiBzaW1pbGFyaXR5IGluZGV4IDEwMCUNCj4gPiByZW5hbWUgZnJvbSBTZWN1cml0eVBr Zy9SYW5kb21OdW1iZXJHZW5lcmF0b3IvUm5nRHhlL0Flc0NvcmUuaA0KPiA+IHJlbmFtZSB0byBT ZWN1cml0eVBrZy9SYW5kb21OdW1iZXJHZW5lcmF0b3IvUm5nRHhlL1JhbmQvQWVzQ29yZS5oDQo+ ID4gZGlmZiAtLWdpdCBhL1NlY3VyaXR5UGtnL1JhbmRvbU51bWJlckdlbmVyYXRvci9SbmdEeGUv UmRSYW5kLmgNCj4gYi9TZWN1cml0eVBrZy9SYW5kb21OdW1iZXJHZW5lcmF0b3IvUm5nRHhlL1Jh bmQvUmRSYW5kLmgNCj4gPiBzaW1pbGFyaXR5IGluZGV4IDcyJQ0KPiA+IHJlbmFtZSBmcm9tIFNl Y3VyaXR5UGtnL1JhbmRvbU51bWJlckdlbmVyYXRvci9SbmdEeGUvUmRSYW5kLmgNCj4gPiByZW5h bWUgdG8gU2VjdXJpdHlQa2cvUmFuZG9tTnVtYmVyR2VuZXJhdG9yL1JuZ0R4ZS9SYW5kL1JkUmFu ZC5oDQo+ID4gaW5kZXggMTJhYjFmMzRlYzZkLi4wNzIzNzhlMDYyZTcgMTAwNjQ0DQo+ID4gLS0t IGEvU2VjdXJpdHlQa2cvUmFuZG9tTnVtYmVyR2VuZXJhdG9yL1JuZ0R4ZS9SZFJhbmQuaA0KPiA+ ICsrKyBiL1NlY3VyaXR5UGtnL1JhbmRvbU51bWJlckdlbmVyYXRvci9SbmdEeGUvUmFuZC9SZFJh bmQuaA0KPiA+IEBAIC0yMywyMyArMjMsNiBAQCBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNE LTItQ2xhdXNlLVBhdGVudA0KPiA+ICAjaW5jbHVkZSA8TGlicmFyeS9UaW1lckxpYi5oPg0KPiA+ ICAjaW5jbHVkZSA8UHJvdG9jb2wvUm5nLmg+DQo+ID4NCj4gPiAtLyoqDQo+ID4gLSAgQ2FsbHMg UkRSQU5EIHRvIGZpbGwgYSBidWZmZXIgb2YgYXJiaXRyYXJ5IHNpemUgd2l0aCByYW5kb20gYnl0 ZXMuDQo+ID4gLQ0KPiA+IC0gIEBwYXJhbVtpbl0gICBMZW5ndGggICAgICAgIFNpemUgb2YgdGhl IGJ1ZmZlciwgaW4gYnl0ZXMsICB0byBmaWxsIHdpdGguDQo+ID4gLSAgQHBhcmFtW291dF0gIFJh bmRCdWZmZXIgICAgUG9pbnRlciB0byB0aGUgYnVmZmVyIHRvIHN0b3JlIHRoZSByYW5kb20gcmVz dWx0Lg0KPiA+IC0NCj4gPiAtICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICBSYW5kb20gYnl0 ZXMgZ2VuZXJhdGlvbiBzdWNjZWVkZWQuDQo+ID4gLSAgQHJldHZhbCBFRklfTk9UX1JFQURZICAg ICAgRmFpbGVkIHRvIHJlcXVlc3QgcmFuZG9tIGJ5dGVzLg0KPiA+IC0NCj4gPiAtKiovDQo+ID4g LUVGSV9TVEFUVVMNCj4gPiAtRUZJQVBJDQo+ID4gLVJkUmFuZEdldEJ5dGVzICgNCj4gPiAtICBJ TiBVSU5UTiAgICAgICAgIExlbmd0aCwNCj4gPiAtICBPVVQgVUlOVDggICAgICAgICpSYW5kQnVm ZmVyDQo+ID4gLSAgKTsNCj4gPiAtDQo+ID4gIC8qKg0KPiA+ICAgIEdlbmVyYXRlIGhpZ2gtcXVh bGl0eSBlbnRyb3B5IHNvdXJjZSB0aHJvdWdoIFJEUkFORC4NCj4gPg0KPiA+IGRpZmYgLS1naXQg YS9TZWN1cml0eVBrZy9SYW5kb21OdW1iZXJHZW5lcmF0b3IvUm5nRHhlL1JuZ0R4ZUludGVybmFs cy5oDQo+IGIvU2VjdXJpdHlQa2cvUmFuZG9tTnVtYmVyR2VuZXJhdG9yL1JuZ0R4ZS9SbmdEeGVJ bnRlcm5hbHMuaA0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAw MDAwLi4yNjYwZWQ1ODc1ZTANCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvU2VjdXJpdHlQ a2cvUmFuZG9tTnVtYmVyR2VuZXJhdG9yL1JuZ0R4ZS9SbmdEeGVJbnRlcm5hbHMuaA0KPiA+IEBA IC0wLDAgKzEsMTE3IEBADQo+ID4gKy8qKiBAZmlsZQ0KPiA+ICsgIEZ1bmN0aW9uIHByb3RvdHlw ZXMgZm9yIFVFRkkgUmFuZG9tIE51bWJlciBHZW5lcmF0b3IgcHJvdG9jb2wgc3VwcG9ydC4NCj4g PiArDQo+ID4gKyAgQ29weXJpZ2h0IChjKSAyMDIxLCBOVVZJQSBJbmMuIEFsbCByaWdodHMgcmVz ZXJ2ZWQuPEJSPg0KPiA+ICsNCj4gPiArICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTIt Q2xhdXNlLVBhdGVudA0KPiA+ICsNCj4gPiArKiovDQo+ID4gKw0KPiA+ICsjaWZuZGVmIFJOR0RY RV9JTlRFUk5BTFNfSF8NCj4gPiArI2RlZmluZSBSTkdEWEVfSU5URVJOQUxTX0hfDQo+ID4gKw0K PiA+ICsvKioNCj4gPiArICBSZXR1cm5zIGluZm9ybWF0aW9uIGFib3V0IHRoZSByYW5kb20gbnVt YmVyIGdlbmVyYXRpb24gaW1wbGVtZW50YXRpb24uDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0g ICAgIFRoaXMgICAgICAgICAgICAgICAgIEEgcG9pbnRlciB0byB0aGUgRUZJX1JOR19QUk9UT0NP TCBpbnN0YW5jZS4NCj4gPiArICBAcGFyYW1baW4sb3V0XSBSTkdBbGdvcml0aG1MaXN0U2l6ZSBP biBpbnB1dCwgdGhlIHNpemUgaW4gYnl0ZXMgb2YNCj4gUk5HQWxnb3JpdGhtTGlzdC4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbiBvdXRwdXQgd2l0aCBhIHJl dHVybiBjb2RlIG9mIEVGSV9TVUNDRVNTLCB0aGUgc2l6ZQ0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGluIGJ5dGVzIG9mIHRoZSBkYXRhIHJldHVybmVkIGluIFJO R0FsZ29yaXRobUxpc3QuIE9uDQo+IG91dHB1dA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHdpdGggYSByZXR1cm4gY29kZSBvZiBFRklfQlVGRkVSX1RPT19TTUFM TCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgc2l6ZSBv ZiBSTkdBbGdvcml0aG1MaXN0IHJlcXVpcmVkIHRvIG9idGFpbiB0aGUgbGlzdC4NCj4gPiArICBA cGFyYW1bb3V0XSBSTkdBbGdvcml0aG1MaXN0ICAgICAgICBBIGNhbGxlci1hbGxvY2F0ZWQgbWVt b3J5IGJ1ZmZlciBmaWxsZWQNCj4gYnkgdGhlIGRyaXZlcg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHdpdGggb25lIEVGSV9STkdfQUxHT1JJVEhNIGVsZW1lbnQg Zm9yIGVhY2gNCj4gc3VwcG9ydGVkDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUk5HIGFsZ29yaXRobS4gVGhlIGxpc3QgbXVzdCBub3QgY2hhbmdlIGFjcm9zcyBt dWx0aXBsZQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxz IHRvIHRoZSBzYW1lIGRyaXZlci4gVGhlIGZpcnN0IGFsZ29yaXRobSBpbiB0aGUgbGlzdA0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHRoZSBkZWZhdWx0IGFs Z29yaXRobSBmb3IgdGhlIGRyaXZlci4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VT UyAgICAgICAgICAgICAgICAgVGhlIFJORyBhbGdvcml0aG0gbGlzdCB3YXMgcmV0dXJuZWQNCj4g c3VjY2Vzc2Z1bGx5Lg0KPiA+ICsgIEByZXR2YWwgRUZJX1VOU1VQUE9SVEVEICAgICAgICAgICAg IFRoZSBzZXJ2aWNlcyBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMNCj4gZHJpdmVyLg0KPiA+ICsg IEByZXR2YWwgRUZJX0RFVklDRV9FUlJPUiAgICAgICAgICAgIFRoZSBsaXN0IG9mIGFsZ29yaXRo bXMgY291bGQgbm90IGJlDQo+IHJldHJpZXZlZCBkdWUgdG8gYQ0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGhhcmR3YXJlIG9yIGZpcm13YXJlIGVycm9yLg0KPiA+ ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSICAgICAgIE9uZSBvciBtb3JlIG9mIHRo ZSBwYXJhbWV0ZXJzIGFyZQ0KPiBpbmNvcnJlY3QuDQo+ID4gKyAgQHJldHZhbCBFRklfQlVGRkVS X1RPT19TTUFMTCAgICAgICAgVGhlIGJ1ZmZlciBSTkdBbGdvcml0aG1MaXN0IGlzIHRvbw0KPiBz bWFsbCB0byBob2xkIHRoZSByZXN1bHQuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRV Uw0KPiA+ICtFRklBUEkNCj4gPiArUm5nR2V0SW5mbyAoDQo+ID4gKyAgSU4gRUZJX1JOR19QUk9U T0NPTCAgICAgICAgICAgICAqVGhpcywNCj4gPiArICBJTiBPVVQgVUlOVE4gICAgICAgICAgICAg ICAgICAgICpSTkdBbGdvcml0aG1MaXN0U2l6ZSwNCj4gPiArICBPVVQgRUZJX1JOR19BTEdPUklU SE0gICAgICAgICAgICpSTkdBbGdvcml0aG1MaXN0DQo+ID4gKyAgKTsNCj4gPiArDQo+ID4gKy8q Kg0KPiA+ICsgIFByb2R1Y2VzIGFuZCByZXR1cm5zIGFuIFJORyB2YWx1ZSB1c2luZyBlaXRoZXIg dGhlIGRlZmF1bHQgb3Igc3BlY2lmaWVkIFJORw0KPiBhbGdvcml0aG0uDQo+ID4gKw0KPiA+ICsg IEBwYXJhbVtpbl0gIFRoaXMgICAgICAgICAgICAgICAgICAgIEEgcG9pbnRlciB0byB0aGUgRUZJ X1JOR19QUk9UT0NPTCBpbnN0YW5jZS4NCj4gPiArICBAcGFyYW1baW5dICBSTkdBbGdvcml0aG0g ICAgICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIEVGSV9STkdfQUxHT1JJVEhNDQo+IHRoYXQgaWRl bnRpZmllcyB0aGUgUk5HDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYWxnb3JpdGhtIHRvIHVzZS4gTWF5IGJlIE5VTEwgaW4gd2hpY2ggY2FzZSB0aGUNCj4gZnVu Y3Rpb24gd2lsbA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVz ZSBpdHMgZGVmYXVsdCBSTkcgYWxnb3JpdGhtLg0KPiA+ICsgIEBwYXJhbVtpbl0gIFJOR1ZhbHVl TGVuZ3RoICAgICAgICAgIFRoZSBsZW5ndGggaW4gYnl0ZXMgb2YgdGhlIG1lbW9yeQ0KPiBidWZm ZXIgcG9pbnRlZCB0byBieQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFJOR1ZhbHVlLiBUaGUgZHJpdmVyIHNoYWxsIHJldHVybiBleGFjdGx5IHRoaXMgbnVtYmVy cw0KPiBvZiBieXRlcy4NCj4gPiArICBAcGFyYW1bb3V0XSBSTkdWYWx1ZSAgICAgICAgICAgICAg ICBBIGNhbGxlci1hbGxvY2F0ZWQgbWVtb3J5IGJ1ZmZlciBmaWxsZWQgYnkNCj4gdGhlIGRyaXZl ciB3aXRoIHRoZQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl c3VsdGluZyBSTkcgdmFsdWUuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAg ICAgICAgICAgICAgIFRoZSBSTkcgdmFsdWUgd2FzIHJldHVybmVkIHN1Y2Nlc3NmdWxseS4NCj4g PiArICBAcmV0dmFsIEVGSV9VTlNVUFBPUlRFRCAgICAgICAgICAgICBUaGUgYWxnb3JpdGhtIHNw ZWNpZmllZCBieQ0KPiBSTkdBbGdvcml0aG0gaXMgbm90IHN1cHBvcnRlZCBieQ0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgZHJpdmVyLg0KPiA+ICsgIEBy ZXR2YWwgRUZJX0RFVklDRV9FUlJPUiAgICAgICAgICAgIEFuIFJORyB2YWx1ZSBjb3VsZCBub3Qg YmUgcmV0cmlldmVkIGR1ZQ0KPiB0byBhIGhhcmR3YXJlIG9yDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZmlybXdhcmUgZXJyb3IuDQo+ID4gKyAgQHJldHZhbCBF RklfTk9UX1JFQURZICAgICAgICAgICAgICAgVGhlcmUgaXMgbm90IGVub3VnaCByYW5kb20gZGF0 YSBhdmFpbGFibGUNCj4gdG8gc2F0aXNmeSB0aGUgbGVuZ3RoDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdGVkIGJ5IFJOR1ZhbHVlTGVuZ3RoLg0KPiA+ ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSICAgICAgIFJOR1ZhbHVlIGlzIE5VTEwg b3INCj4gUk5HVmFsdWVMZW5ndGggaXMgemVyby4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklf U1RBVFVTDQo+ID4gK0VGSUFQSQ0KPiA+ICtSbmdHZXRSTkcgKA0KPiA+ICsgIElOIEVGSV9STkdf UFJPVE9DT0wgICAgICAgICAgICAqVGhpcywNCj4gPiArICBJTiBFRklfUk5HX0FMR09SSVRITSAg ICAgICAgICAgKlJOR0FsZ29yaXRobSwgT1BUSU9OQUwNCj4gPiArICBJTiBVSU5UTiAgICAgICAg ICAgICAgICAgICAgICAgUk5HVmFsdWVMZW5ndGgsDQo+ID4gKyAgT1VUIFVJTlQ4ICAgICAgICAg ICAgICAgICAgICAgICpSTkdWYWx1ZQ0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiAr ICBSZXR1cm5zIGluZm9ybWF0aW9uIGFib3V0IHRoZSByYW5kb20gbnVtYmVyIGdlbmVyYXRpb24g aW1wbGVtZW50YXRpb24uDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbixvdXRdIFJOR0FsZ29yaXRo bUxpc3RTaXplIE9uIGlucHV0LCB0aGUgc2l6ZSBpbiBieXRlcyBvZg0KPiBSTkdBbGdvcml0aG1M aXN0Lg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uIG91dHB1 dCB3aXRoIGEgcmV0dXJuIGNvZGUgb2YgRUZJX1NVQ0NFU1MsIHRoZSBzaXplDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gYnl0ZXMgb2YgdGhlIGRhdGEgcmV0 dXJuZWQgaW4gUk5HQWxnb3JpdGhtTGlzdC4gT24NCj4gb3V0cHV0DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBhIHJldHVybiBjb2RlIG9mIEVGSV9CVUZG RVJfVE9PX1NNQUxMLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHRoZSBzaXplIG9mIFJOR0FsZ29yaXRobUxpc3QgcmVxdWlyZWQgdG8gb2J0YWluIHRoZSBsaXN0 Lg0KPiA+ICsgIEBwYXJhbVtvdXRdIFJOR0FsZ29yaXRobUxpc3QgICAgICAgIEEgY2FsbGVyLWFs bG9jYXRlZCBtZW1vcnkgYnVmZmVyIGZpbGxlZA0KPiBieSB0aGUgZHJpdmVyDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBvbmUgRUZJX1JOR19BTEdPUklU SE0gZWxlbWVudCBmb3IgZWFjaA0KPiBzdXBwb3J0ZWQNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBSTkcgYWxnb3JpdGhtLiBUaGUgbGlzdCBtdXN0IG5vdCBjaGFu Z2UgYWNyb3NzIG11bHRpcGxlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY2FsbHMgdG8gdGhlIHNhbWUgZHJpdmVyLiBUaGUgZmlyc3QgYWxnb3JpdGhtIGluIHRo ZSBsaXN0DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgdGhl IGRlZmF1bHQgYWxnb3JpdGhtIGZvciB0aGUgZHJpdmVyLg0KPiA+ICsNCj4gPiArICBAcmV0dmFs IEVGSV9TVUNDRVNTICAgICAgICAgICAgICAgICBUaGUgUk5HIGFsZ29yaXRobSBsaXN0IHdhcyBy ZXR1cm5lZA0KPiBzdWNjZXNzZnVsbHkuDQo+ID4gKyAgQHJldHZhbCBFRklfQlVGRkVSX1RPT19T TUFMTCAgICAgICAgVGhlIGJ1ZmZlciBSTkdBbGdvcml0aG1MaXN0IGlzIHRvbw0KPiBzbWFsbCB0 byBob2xkIHRoZSByZXN1bHQuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVUlOVE4NCj4gPiArRUZJ QVBJDQo+ID4gK0FyY2hHZXRTdXBwb3J0ZWRSbmdBbGdvcml0aG1zICgNCj4gPiArICBJTiBPVVQg VUlOVE4gICAgICAgICAgICAgICAgICAgICAqUk5HQWxnb3JpdGhtTGlzdFNpemUsDQo+ID4gKyAg T1VUICAgIEVGSV9STkdfQUxHT1JJVEhNICAgICAgICAgKlJOR0FsZ29yaXRobUxpc3QNCj4gPiAr ICApOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgUnVucyBDUFUgUk5HIGluc3RydWN0aW9uIHRv IGZpbGwgYSBidWZmZXIgb2YgYXJiaXRyYXJ5IHNpemUgd2l0aCByYW5kb20gYnl0ZXMuDQo+ID4g Kw0KPiA+ICsgIEBwYXJhbVtpbl0gICBMZW5ndGggICAgICAgIFNpemUgb2YgdGhlIGJ1ZmZlciwg aW4gYnl0ZXMsICB0byBmaWxsIHdpdGguDQo+ID4gKyAgQHBhcmFtW291dF0gIFJhbmRCdWZmZXIg ICAgUG9pbnRlciB0byB0aGUgYnVmZmVyIHRvIHN0b3JlIHRoZSByYW5kb20gcmVzdWx0Lg0KPiA+ ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICBSYW5kb20gYnl0ZXMgZ2VuZXJh dGlvbiBzdWNjZWVkZWQuDQo+ID4gKyAgQHJldHZhbCBFRklfTk9UX1JFQURZICAgICAgRmFpbGVk IHRvIHJlcXVlc3QgcmFuZG9tIGJ5dGVzLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFU VVMNCj4gPiArRUZJQVBJDQo+ID4gK1JuZ0dldEJ5dGVzICgNCj4gPiArICBJTiBVSU5UTiAgICAg ICAgIExlbmd0aCwNCj4gPiArICBPVVQgVUlOVDggICAgICAgICpSYW5kQnVmZmVyDQo+ID4gKyAg KTsNCj4gPiArDQo+ID4gKyNlbmRpZiAgLy8gUk5HRFhFX0lOVEVSTkFMU19IXw0KPiA+IGRpZmYg LS1naXQgYS9TZWN1cml0eVBrZy9SYW5kb21OdW1iZXJHZW5lcmF0b3IvUm5nRHhlL0FBcmNoNjQv Um5nRHhlLmMNCj4gYi9TZWN1cml0eVBrZy9SYW5kb21OdW1iZXJHZW5lcmF0b3IvUm5nRHhlL0FB cmNoNjQvUm5nRHhlLmMNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAw MDAwMDAwMC4uMjgxMGE5ZWI5NGFkDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL1NlY3Vy aXR5UGtnL1JhbmRvbU51bWJlckdlbmVyYXRvci9SbmdEeGUvQUFyY2g2NC9SbmdEeGUuYw0KPiA+ IEBAIC0wLDAgKzEsMTI3IEBADQo+ID4gKy8qKiBAZmlsZQ0KPiA+ICsgIFJORyBEcml2ZXIgdG8g cHJvZHVjZSB0aGUgVUVGSSBSYW5kb20gTnVtYmVyIEdlbmVyYXRvciBwcm90b2NvbC4NCj4gPiAr DQo+ID4gKyAgVGhlIGRyaXZlciB3aWxsIHVzZSB0aGUgUk5EUiBpbnN0cnVjdGlvbiB0byBwcm9k dWNlIHJhbmRvbSBudW1iZXJzLg0KPiA+ICsNCj4gPiArICBSTkcgQWxnb3JpdGhtcyBkZWZpbmVk IGluIFVFRkkgMi40Og0KPiA+ICsgICAtIEVGSV9STkdfQUxHT1JJVEhNX1NQODAwXzkwX0NUUl8y NTZfR1VJRA0KPiA+ICsgICAtIEVGSV9STkdfQUxHT1JJVEhNX1JBVyAgICAgICAgICAgICAgICAg ICAgLSBVbnN1cHBvcnRlZA0KPiA+ICsgICAtIEVGSV9STkdfQUxHT1JJVEhNX1NQODAwXzkwX0hN QUNfMjU2X0dVSUQNCj4gPiArICAgLSBFRklfUk5HX0FMR09SSVRITV9TUDgwMF85MF9IQVNIXzI1 Nl9HVUlEDQo+ID4gKyAgIC0gRUZJX1JOR19BTEdPUklUSE1fWDlfMzFfM0RFU19HVUlEICAgICAg ICAtIFVuc3VwcG9ydGVkDQo+ID4gKyAgIC0gRUZJX1JOR19BTEdPUklUSE1fWDlfMzFfQUVTX0dV SUQgICAgICAgICAtIFVuc3VwcG9ydGVkDQo+ID4gKw0KPiA+ICsgIENvcHlyaWdodCAoYykgMjAy MSwgTlVWSUEgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiArICBDb3B5cmlnaHQg KGMpIDIwMTMgLSAyMDE4LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48 QlI+DQo+ID4gKyAgKEMpIENvcHlyaWdodCAyMDE1IEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNl IERldmVsb3BtZW50IExQPEJSPg0KPiA+ICsNCj4gPiArICBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ICsNCj4gPiArKiovDQo+ID4gKw0KPiA+ICsjaW5j bHVkZSA8TGlicmFyeS9CYXNlTGliLmg+DQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VNZW1v cnlMaWIuaD4NCj4gPiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaUJvb3RTZXJ2aWNlc1RhYmxlTGli Lmg+DQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L1RpbWVyTGliLmg+DQo+ID4gKyNpbmNsdWRlIDxQ cm90b2NvbC9SbmcuaD4NCj4gPiArDQo+ID4gKyNpbmNsdWRlICJSbmdEeGVJbnRlcm5hbHMuaCIN Cj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFByb2R1Y2VzIGFuZCByZXR1cm5zIGFuIFJORyB2YWx1 ZSB1c2luZyBlaXRoZXIgdGhlIGRlZmF1bHQgb3Igc3BlY2lmaWVkIFJORw0KPiBhbGdvcml0aG0u DQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gIFRoaXMgICAgICAgICAgICAgICAgICAgIEEgcG9p bnRlciB0byB0aGUgRUZJX1JOR19QUk9UT0NPTCBpbnN0YW5jZS4NCj4gPiArICBAcGFyYW1baW5d ICBSTkdBbGdvcml0aG0gICAgICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIEVGSV9STkdfQUxHT1JJ VEhNDQo+IHRoYXQgaWRlbnRpZmllcyB0aGUgUk5HDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYWxnb3JpdGhtIHRvIHVzZS4gTWF5IGJlIE5VTEwgaW4gd2hpY2gg Y2FzZSB0aGUNCj4gZnVuY3Rpb24gd2lsbA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVzZSBpdHMgZGVmYXVsdCBSTkcgYWxnb3JpdGhtLg0KPiA+ICsgIEBwYXJh bVtpbl0gIFJOR1ZhbHVlTGVuZ3RoICAgICAgICAgIFRoZSBsZW5ndGggaW4gYnl0ZXMgb2YgdGhl IG1lbW9yeQ0KPiBidWZmZXIgcG9pbnRlZCB0byBieQ0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFJOR1ZhbHVlLiBUaGUgZHJpdmVyIHNoYWxsIHJldHVybiBleGFj dGx5IHRoaXMgbnVtYmVycw0KPiBvZiBieXRlcy4NCj4gPiArICBAcGFyYW1bb3V0XSBSTkdWYWx1 ZSAgICAgICAgICAgICAgICBBIGNhbGxlci1hbGxvY2F0ZWQgbWVtb3J5IGJ1ZmZlciBmaWxsZWQg YnkNCj4gdGhlIGRyaXZlciB3aXRoIHRoZQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJlc3VsdGluZyBSTkcgdmFsdWUuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwg RUZJX1NVQ0NFU1MgICAgICAgICAgICAgICAgIFRoZSBSTkcgdmFsdWUgd2FzIHJldHVybmVkIHN1 Y2Nlc3NmdWxseS4NCj4gPiArICBAcmV0dmFsIEVGSV9VTlNVUFBPUlRFRCAgICAgICAgICAgICBU aGUgYWxnb3JpdGhtIHNwZWNpZmllZCBieQ0KPiBSTkdBbGdvcml0aG0gaXMgbm90IHN1cHBvcnRl ZCBieQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgZHJp dmVyLg0KPiA+ICsgIEByZXR2YWwgRUZJX0RFVklDRV9FUlJPUiAgICAgICAgICAgIEFuIFJORyB2 YWx1ZSBjb3VsZCBub3QgYmUgcmV0cmlldmVkIGR1ZQ0KPiB0byBhIGhhcmR3YXJlIG9yDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlybXdhcmUgZXJyb3IuDQo+ ID4gKyAgQHJldHZhbCBFRklfTk9UX1JFQURZICAgICAgICAgICAgICAgVGhlcmUgaXMgbm90IGVu b3VnaCByYW5kb20gZGF0YSBhdmFpbGFibGUNCj4gdG8gc2F0aXNmeSB0aGUgbGVuZ3RoDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdGVkIGJ5IFJOR1Zh bHVlTGVuZ3RoLg0KPiA+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSICAgICAgIFJO R1ZhbHVlIGlzIE5VTEwgb3INCj4gUk5HVmFsdWVMZW5ndGggaXMgemVyby4NCj4gPiArDQo+ID4g KyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0VGSUFQSQ0KPiA+ICtSbmdHZXRSTkcgKA0KPiA+ ICsgIElOIEVGSV9STkdfUFJPVE9DT0wgICAgICAgICAgICAqVGhpcywNCj4gPiArICBJTiBFRklf Uk5HX0FMR09SSVRITSAgICAgICAgICAgKlJOR0FsZ29yaXRobSwgT1BUSU9OQUwNCj4gPiArICBJ TiBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgUk5HVmFsdWVMZW5ndGgsDQo+ID4gKyAgT1VU IFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICpSTkdWYWx1ZQ0KPiA+ICsgICkNCj4gPiArew0K PiA+ICsgIEVGSV9TVEFUVVMgICAgU3RhdHVzOw0KPiA+ICsNCj4gPiArICBpZiAoKFJOR1ZhbHVl TGVuZ3RoID09IDApIHx8IChSTkdWYWx1ZSA9PSBOVUxMKSkgew0KPiA+ICsgICAgcmV0dXJuIEVG SV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIGlmIChSTkdBbGdv cml0aG0gPT0gTlVMTCkgew0KPiA+ICsgICAgLy8NCj4gPiArICAgIC8vIFVzZSB0aGUgZGVmYXVs dCBSTkcgYWxnb3JpdGhtIGlmIFJOR0FsZ29yaXRobSBpcyBOVUxMLg0KPiA+ICsgICAgLy8NCj4g PiArICAgIFJOR0FsZ29yaXRobSA9IFBjZEdldFB0ciAoUGNkQ3B1Um5nU3VwcG9ydGVkQWxnb3Jp dGhtKTsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIGlmIChDb21wYXJlR3VpZCAoUk5HQWxnb3Jp dGhtLCBQY2RHZXRQdHINCj4gKFBjZENwdVJuZ1N1cHBvcnRlZEFsZ29yaXRobSkpKSB7DQo+ID4g KyAgICBTdGF0dXMgPSBSbmdHZXRCeXRlcyAoUk5HVmFsdWVMZW5ndGgsIFJOR1ZhbHVlKTsNCj4g PiArICAgIHJldHVybiBTdGF0dXM7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICAvLw0KPiA+ICsg IC8vIE90aGVyIGFsZ29yaXRobXMgYXJlIHVuc3VwcG9ydGVkIGJ5IHRoaXMgZHJpdmVyLg0KPiA+ ICsgIC8vDQo+ID4gKyAgcmV0dXJuIEVGSV9VTlNVUFBPUlRFRDsNCj4gPiArfQ0KPiA+ICsNCj4g PiArLyoqDQo+ID4gKyAgUmV0dXJucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcmFuZG9tIG51bWJl ciBnZW5lcmF0aW9uIGltcGxlbWVudGF0aW9uLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW4sb3V0 XSBSTkdBbGdvcml0aG1MaXN0U2l6ZSBPbiBpbnB1dCwgdGhlIHNpemUgaW4gYnl0ZXMgb2YNCj4g Uk5HQWxnb3JpdGhtTGlzdC4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBPbiBvdXRwdXQgd2l0aCBhIHJldHVybiBjb2RlIG9mIEVGSV9TVUNDRVNTLCB0aGUgc2l6 ZQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGJ5dGVzIG9m IHRoZSBkYXRhIHJldHVybmVkIGluIFJOR0FsZ29yaXRobUxpc3QuIE9uDQo+IG91dHB1dA0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggYSByZXR1cm4gY29k ZSBvZiBFRklfQlVGRkVSX1RPT19TTUFMTCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB0aGUgc2l6ZSBvZiBSTkdBbGdvcml0aG1MaXN0IHJlcXVpcmVkIHRvIG9i dGFpbiB0aGUgbGlzdC4NCj4gPiArICBAcGFyYW1bb3V0XSBSTkdBbGdvcml0aG1MaXN0ICAgICAg ICBBIGNhbGxlci1hbGxvY2F0ZWQgbWVtb3J5IGJ1ZmZlciBmaWxsZWQNCj4gYnkgdGhlIGRyaXZl cg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggb25lIEVG SV9STkdfQUxHT1JJVEhNIGVsZW1lbnQgZm9yIGVhY2gNCj4gc3VwcG9ydGVkDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUk5HIGFsZ29yaXRobS4gVGhlIGxpc3Qg bXVzdCBub3QgY2hhbmdlIGFjcm9zcyBtdWx0aXBsZQ0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNhbGxzIHRvIHRoZSBzYW1lIGRyaXZlci4gVGhlIGZpcnN0IGFs Z29yaXRobSBpbiB0aGUgbGlzdA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGlzIHRoZSBkZWZhdWx0IGFsZ29yaXRobSBmb3IgdGhlIGRyaXZlci4NCj4gPiArDQo+ ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgICAgICAgVGhlIFJORyBhbGdvcml0 aG0gbGlzdCB3YXMgcmV0dXJuZWQNCj4gc3VjY2Vzc2Z1bGx5Lg0KPiA+ICsgIEByZXR2YWwgRUZJ X0JVRkZFUl9UT09fU01BTEwgICAgICAgIFRoZSBidWZmZXIgUk5HQWxnb3JpdGhtTGlzdCBpcyB0 b28NCj4gc21hbGwgdG8gaG9sZCB0aGUgcmVzdWx0Lg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK1VJ TlRODQo+ID4gK0VGSUFQSQ0KPiA+ICtBcmNoR2V0U3VwcG9ydGVkUm5nQWxnb3JpdGhtcyAoDQo+ ID4gKyAgSU4gT1VUIFVJTlROICAgICAgICAgICAgICAgICAgICAgKlJOR0FsZ29yaXRobUxpc3RT aXplLA0KPiA+ICsgIE9VVCAgICBFRklfUk5HX0FMR09SSVRITSAgICAgICAgICpSTkdBbGdvcml0 aG1MaXN0DQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgVUlOVE4gUmVxdWlyZWRTaXplOw0KPiA+ ICsgIEVGSV9STkdfQUxHT1JJVEhNICpDcHVSbmdTdXBwb3J0ZWRBbGdvcml0aG07DQo+ID4gKw0K PiA+ICsgIFJlcXVpcmVkU2l6ZSA9IHNpemVvZiAoRUZJX1JOR19BTEdPUklUSE0pOw0KPiA+ICsN Cj4gPiArICBpZiAoKlJOR0FsZ29yaXRobUxpc3RTaXplIDwgUmVxdWlyZWRTaXplKSB7DQo+ID4g KyAgICAqUk5HQWxnb3JpdGhtTGlzdFNpemUgPSBSZXF1aXJlZFNpemU7DQo+ID4gKyAgICByZXR1 cm4gRUZJX0JVRkZFUl9UT09fU01BTEw7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBDcHVSbmdT dXBwb3J0ZWRBbGdvcml0aG0gPSBQY2RHZXRQdHIgKFBjZENwdVJuZ1N1cHBvcnRlZEFsZ29yaXRo bSk7DQo+ID4gKw0KPiA+ICsgIENvcHlNZW0oJlJOR0FsZ29yaXRobUxpc3RbMF0sIENwdVJuZ1N1 cHBvcnRlZEFsZ29yaXRobSwgc2l6ZW9mDQo+IChFRklfUk5HX0FMR09SSVRITSkpOw0KPiA+ICsN Cj4gPiArICAqUk5HQWxnb3JpdGhtTGlzdFNpemUgPSBSZXF1aXJlZFNpemU7DQo+ID4gKyAgcmV0 dXJuIEVGSV9TVUNDRVNTOw0KPiA+ICt9DQo+ID4gKw0KPiA+IGRpZmYgLS1naXQgYS9TZWN1cml0 eVBrZy9SYW5kb21OdW1iZXJHZW5lcmF0b3IvUm5nRHhlL0Flc0NvcmUuYw0KPiBiL1NlY3VyaXR5 UGtnL1JhbmRvbU51bWJlckdlbmVyYXRvci9SbmdEeGUvUmFuZC9BZXNDb3JlLmMNCj4gPiBzaW1p bGFyaXR5IGluZGV4IDEwMCUNCj4gPiByZW5hbWUgZnJvbSBTZWN1cml0eVBrZy9SYW5kb21OdW1i ZXJHZW5lcmF0b3IvUm5nRHhlL0Flc0NvcmUuYw0KPiA+IHJlbmFtZSB0byBTZWN1cml0eVBrZy9S YW5kb21OdW1iZXJHZW5lcmF0b3IvUm5nRHhlL1JhbmQvQWVzQ29yZS5jDQo+ID4gZGlmZiAtLWdp dCBhL1NlY3VyaXR5UGtnL1JhbmRvbU51bWJlckdlbmVyYXRvci9SbmdEeGUvUmRSYW5kLmMNCj4g Yi9TZWN1cml0eVBrZy9SYW5kb21OdW1iZXJHZW5lcmF0b3IvUm5nRHhlL1JhbmQvUmRSYW5kLmMN Cj4gPiBzaW1pbGFyaXR5IGluZGV4IDcxJQ0KPiA+IHJlbmFtZSBmcm9tIFNlY3VyaXR5UGtnL1Jh bmRvbU51bWJlckdlbmVyYXRvci9SbmdEeGUvUmRSYW5kLmMNCj4gPiByZW5hbWUgdG8gU2VjdXJp dHlQa2cvUmFuZG9tTnVtYmVyR2VuZXJhdG9yL1JuZ0R4ZS9SYW5kL1JkUmFuZC5jDQo+ID4gaW5k ZXggZTdkZDVhYjE4MTExLi44MzAyNWE0N2Q0M2QgMTAwNjQ0DQo+ID4gLS0tIGEvU2VjdXJpdHlQ a2cvUmFuZG9tTnVtYmVyR2VuZXJhdG9yL1JuZ0R4ZS9SZFJhbmQuYw0KPiA+ICsrKyBiL1NlY3Vy aXR5UGtnL1JhbmRvbU51bWJlckdlbmVyYXRvci9SbmdEeGUvUmFuZC9SZFJhbmQuYw0KPiA+IEBA IC04LDQ4ICs4LDkgQEAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRl bnQNCj4gPiAgKiovDQo+ID4gICNpbmNsdWRlIDxMaWJyYXJ5L1JuZ0xpYi5oPg0KPiA+DQo+ID4g LSNpbmNsdWRlICJSZFJhbmQuaCINCj4gPiAgI2luY2x1ZGUgIkFlc0NvcmUuaCINCj4gPiAtDQo+ ID4gLS8qKg0KPiA+IC0gIENhbGxzIFJEUkFORCB0byBmaWxsIGEgYnVmZmVyIG9mIGFyYml0cmFy eSBzaXplIHdpdGggcmFuZG9tIGJ5dGVzLg0KPiA+IC0NCj4gPiAtICBAcGFyYW1baW5dICAgTGVu Z3RoICAgICAgICBTaXplIG9mIHRoZSBidWZmZXIsIGluIGJ5dGVzLCAgdG8gZmlsbCB3aXRoLg0K PiA+IC0gIEBwYXJhbVtvdXRdICBSYW5kQnVmZmVyICAgIFBvaW50ZXIgdG8gdGhlIGJ1ZmZlciB0 byBzdG9yZSB0aGUgcmFuZG9tIHJlc3VsdC4NCj4gPiAtDQo+ID4gLSAgQHJldHZhbCBFRklfU1VD Q0VTUyAgICAgICAgUmFuZG9tIGJ5dGVzIGdlbmVyYXRpb24gc3VjY2VlZGVkLg0KPiA+IC0gIEBy ZXR2YWwgRUZJX05PVF9SRUFEWSAgICAgIEZhaWxlZCB0byByZXF1ZXN0IHJhbmRvbSBieXRlcy4N Cj4gPiAtDQo+ID4gLSoqLw0KPiA+IC1FRklfU1RBVFVTDQo+ID4gLUVGSUFQSQ0KPiA+IC1SZFJh bmRHZXRCeXRlcyAoDQo+ID4gLSAgSU4gVUlOVE4gICAgICAgICBMZW5ndGgsDQo+ID4gLSAgT1VU IFVJTlQ4ICAgICAgICAqUmFuZEJ1ZmZlcg0KPiA+IC0gICkNCj4gPiAtew0KPiA+IC0gIEJPT0xF QU4gICAgIElzUmFuZG9tOw0KPiA+IC0gIFVJTlQ2NCAgICAgIFRlbXBSYW5kWzJdOw0KPiA+IC0N Cj4gPiAtICB3aGlsZSAoTGVuZ3RoID4gMCkgew0KPiA+IC0gICAgSXNSYW5kb20gPSBHZXRSYW5k b21OdW1iZXIxMjggKFRlbXBSYW5kKTsNCj4gPiAtICAgIGlmICghSXNSYW5kb20pIHsNCj4gPiAt ICAgICAgcmV0dXJuIEVGSV9OT1RfUkVBRFk7DQo+ID4gLSAgICB9DQo+ID4gLSAgICBpZiAoTGVu Z3RoID49IHNpemVvZiAoVGVtcFJhbmQpKSB7DQo+ID4gLSAgICAgIFdyaXRlVW5hbGlnbmVkNjQg KChVSU5UNjQqKVJhbmRCdWZmZXIsIFRlbXBSYW5kWzBdKTsNCj4gPiAtICAgICAgUmFuZEJ1ZmZl ciArPSBzaXplb2YgKFVJTlQ2NCk7DQo+ID4gLSAgICAgIFdyaXRlVW5hbGlnbmVkNjQgKChVSU5U NjQqKVJhbmRCdWZmZXIsIFRlbXBSYW5kWzFdKTsNCj4gPiAtICAgICAgUmFuZEJ1ZmZlciArPSBz aXplb2YgKFVJTlQ2NCk7DQo+ID4gLSAgICAgIExlbmd0aCAtPSBzaXplb2YgKFRlbXBSYW5kKTsN Cj4gPiAtICAgIH0gZWxzZSB7DQo+ID4gLSAgICAgIENvcHlNZW0gKFJhbmRCdWZmZXIsIFRlbXBS YW5kLCBMZW5ndGgpOw0KPiA+IC0gICAgICBMZW5ndGggPSAwOw0KPiA+IC0gICAgfQ0KPiA+IC0g IH0NCj4gPiAtDQo+ID4gLSAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+IC19DQo+ID4gKyNpbmNs dWRlICJSZFJhbmQuaCINCj4gPiArI2luY2x1ZGUgIlJuZ0R4ZUludGVybmFscy5oIg0KPiA+DQo+ ID4gIC8qKg0KPiA+ICAgIENyZWF0ZXMgYSAxMjhiaXQgcmFuZG9tIHZhbHVlIHRoYXQgaXMgZnVs bHkgZm9yd2FyZCBhbmQgYmFja3dhcmQgcHJlZGljdGlvbg0KPiByZXNpc3RhbnQsDQo+ID4gQEAg LTkyLDcgKzUzLDcgQEAgUmRSYW5kR2V0U2VlZDEyOCAoDQo+ID4gICAgLy8NCj4gPiAgICBmb3Ig KEluZGV4ID0gMDsgSW5kZXggPCAzMjsgSW5kZXgrKykgew0KPiA+ICAgICAgTWljcm9TZWNvbmRE ZWxheSAoMTApOw0KPiA+IC0gICAgU3RhdHVzID0gUmRSYW5kR2V0Qnl0ZXMgKDE2LCBSYW5kQnl0 ZSk7DQo+ID4gKyAgICBTdGF0dXMgPSBSbmdHZXRCeXRlcyAoMTYsIFJhbmRCeXRlKTsNCj4gPiAg ICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiAgICAgICAgcmV0dXJuIFN0YXR1czsN Cj4gPiAgICAgIH0NCj4gPiBkaWZmIC0tZ2l0IGEvU2VjdXJpdHlQa2cvUmFuZG9tTnVtYmVyR2Vu ZXJhdG9yL1JuZ0R4ZS9SYW5kL1JuZ0R4ZS5jDQo+IGIvU2VjdXJpdHlQa2cvUmFuZG9tTnVtYmVy R2VuZXJhdG9yL1JuZ0R4ZS9SYW5kL1JuZ0R4ZS5jDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQN Cj4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLjZiNjI4YTlmOGJjNg0KPiA+IC0tLSAvZGV2L251bGwN Cj4gPiArKysgYi9TZWN1cml0eVBrZy9SYW5kb21OdW1iZXJHZW5lcmF0b3IvUm5nRHhlL1JhbmQv Um5nRHhlLmMNCj4gPiBAQCAtMCwwICsxLDE0NiBAQA0KPiA+ICsvKiogQGZpbGUNCj4gPiArICBS TkcgRHJpdmVyIHRvIHByb2R1Y2UgdGhlIFVFRkkgUmFuZG9tIE51bWJlciBHZW5lcmF0b3IgcHJv dG9jb2wuDQo+ID4gKw0KPiA+ICsgIFRoZSBkcml2ZXIgd2lsbCB1c2UgdGhlIG5ldyBSRFJBTkQg aW5zdHJ1Y3Rpb24gdG8gcHJvZHVjZSBoaWdoLXF1YWxpdHksDQo+IGhpZ2gtcGVyZm9ybWFuY2UN Cj4gPiArICBlbnRyb3B5IGFuZCByYW5kb20gbnVtYmVyLg0KPiA+ICsNCj4gPiArICBSTkcgQWxn b3JpdGhtcyBkZWZpbmVkIGluIFVFRkkgMi40Og0KPiA+ICsgICAtIEVGSV9STkdfQUxHT1JJVEhN X1NQODAwXzkwX0NUUl8yNTZfR1VJRCAgLSBTdXBwb3J0ZWQNCj4gPiArICAgICAoUkRSQU5EIGlt cGxlbWVudHMgYSBoYXJkd2FyZSBOSVNUIFNQODAwLTkwIEFFUy1DVFItMjU2IGJhc2VkDQo+IERS QkcpDQo+ID4gKyAgIC0gRUZJX1JOR19BTEdPUklUSE1fUkFXICAgICAgICAgICAgICAgICAgICAt IFN1cHBvcnRlZA0KPiA+ICsgICAgIChTdHJ1Y3R1cmluZyBSRFJBTkQgaW52b2NhdGlvbiBjYW4g YmUgZ3VhcmFudGVlZCBhcyBoaWdoLXF1YWxpdHkgZW50cm9weQ0KPiBzb3VyY2UpDQo+ID4gKyAg IC0gRUZJX1JOR19BTEdPUklUSE1fU1A4MDBfOTBfSE1BQ18yNTZfR1VJRCAtIFVuc3VwcG9ydGVk DQo+ID4gKyAgIC0gRUZJX1JOR19BTEdPUklUSE1fU1A4MDBfOTBfSEFTSF8yNTZfR1VJRCAtIFVu c3VwcG9ydGVkDQo+ID4gKyAgIC0gRUZJX1JOR19BTEdPUklUSE1fWDlfMzFfM0RFU19HVUlEICAg ICAgICAtIFVuc3VwcG9ydGVkDQo+ID4gKyAgIC0gRUZJX1JOR19BTEdPUklUSE1fWDlfMzFfQUVT X0dVSUQgICAgICAgICAtIFVuc3VwcG9ydGVkDQo+ID4gKw0KPiA+ICsgIENvcHlyaWdodCAoYykg MjAxMyAtIDIwMTgsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4N Cj4gPiArICAoQykgQ29weXJpZ2h0IDIwMTUgSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgRGV2 ZWxvcG1lbnQgTFA8QlI+DQo+ID4gKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNs YXVzZS1QYXRlbnQNCj4gPiArDQo+ID4gKyoqLw0KPiA+ICsNCj4gPiArI2luY2x1ZGUgIlJkUmFu ZC5oIg0KPiA+ICsjaW5jbHVkZSAiUm5nRHhlSW50ZXJuYWxzLmgiDQo+ID4gKw0KPiA+ICsvKioN Cj4gPiArICBQcm9kdWNlcyBhbmQgcmV0dXJucyBhbiBSTkcgdmFsdWUgdXNpbmcgZWl0aGVyIHRo ZSBkZWZhdWx0IG9yIHNwZWNpZmllZCBSTkcNCj4gYWxnb3JpdGhtLg0KPiA+ICsNCj4gPiArICBA cGFyYW1baW5dICBUaGlzICAgICAgICAgICAgICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIEVGSV9S TkdfUFJPVE9DT0wgaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFtW2luXSAgUk5HQWxnb3JpdGhtICAg ICAgICAgICAgQSBwb2ludGVyIHRvIHRoZSBFRklfUk5HX0FMR09SSVRITQ0KPiB0aGF0IGlkZW50 aWZpZXMgdGhlIFJORw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGFsZ29yaXRobSB0byB1c2UuIE1heSBiZSBOVUxMIGluIHdoaWNoIGNhc2UgdGhlDQo+IGZ1bmN0 aW9uIHdpbGwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Ug aXRzIGRlZmF1bHQgUk5HIGFsZ29yaXRobS4NCj4gPiArICBAcGFyYW1baW5dICBSTkdWYWx1ZUxl bmd0aCAgICAgICAgICBUaGUgbGVuZ3RoIGluIGJ5dGVzIG9mIHRoZSBtZW1vcnkNCj4gYnVmZmVy IHBvaW50ZWQgdG8gYnkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBSTkdWYWx1ZS4gVGhlIGRyaXZlciBzaGFsbCByZXR1cm4gZXhhY3RseSB0aGlzIG51bWJlcnMN Cj4gb2YgYnl0ZXMuDQo+ID4gKyAgQHBhcmFtW291dF0gUk5HVmFsdWUgICAgICAgICAgICAgICAg QSBjYWxsZXItYWxsb2NhdGVkIG1lbW9yeSBidWZmZXIgZmlsbGVkIGJ5DQo+IHRoZSBkcml2ZXIg d2l0aCB0aGUNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1 bHRpbmcgUk5HIHZhbHVlLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAg ICAgICAgICAgICBUaGUgUk5HIHZhbHVlIHdhcyByZXR1cm5lZCBzdWNjZXNzZnVsbHkuDQo+ID4g KyAgQHJldHZhbCBFRklfVU5TVVBQT1JURUQgICAgICAgICAgICAgVGhlIGFsZ29yaXRobSBzcGVj aWZpZWQgYnkNCj4gUk5HQWxnb3JpdGhtIGlzIG5vdCBzdXBwb3J0ZWQgYnkNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzIGRyaXZlci4NCj4gPiArICBAcmV0 dmFsIEVGSV9ERVZJQ0VfRVJST1IgICAgICAgICAgICBBbiBSTkcgdmFsdWUgY291bGQgbm90IGJl IHJldHJpZXZlZCBkdWUNCj4gdG8gYSBoYXJkd2FyZSBvcg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGZpcm13YXJlIGVycm9yLg0KPiA+ICsgIEByZXR2YWwgRUZJ X05PVF9SRUFEWSAgICAgICAgICAgICAgIFRoZXJlIGlzIG5vdCBlbm91Z2ggcmFuZG9tIGRhdGEg YXZhaWxhYmxlDQo+IHRvIHNhdGlzZnkgdGhlIGxlbmd0aA0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RlZCBieSBSTkdWYWx1ZUxlbmd0aC4NCj4gPiAr ICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgICAgICBSTkdWYWx1ZSBpcyBOVUxMIG9y DQo+IFJOR1ZhbHVlTGVuZ3RoIGlzIHplcm8uDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NU QVRVUw0KPiA+ICtFRklBUEkNCj4gPiArUm5nR2V0Uk5HICgNCj4gPiArICBJTiBFRklfUk5HX1BS T1RPQ09MICAgICAgICAgICAgKlRoaXMsDQo+ID4gKyAgSU4gRUZJX1JOR19BTEdPUklUSE0gICAg ICAgICAgICpSTkdBbGdvcml0aG0sIE9QVElPTkFMDQo+ID4gKyAgSU4gVUlOVE4gICAgICAgICAg ICAgICAgICAgICAgIFJOR1ZhbHVlTGVuZ3RoLA0KPiA+ICsgIE9VVCBVSU5UOCAgICAgICAgICAg ICAgICAgICAgICAqUk5HVmFsdWUNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBFRklfU1RBVFVT ICAgIFN0YXR1czsNCj4gPiArDQo+ID4gKyAgaWYgKChSTkdWYWx1ZUxlbmd0aCA9PSAwKSB8fCAo Uk5HVmFsdWUgPT0gTlVMTCkpIHsNCj4gPiArICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVU RVI7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBTdGF0dXMgPSBFRklfVU5TVVBQT1JURUQ7DQo+ ID4gKyAgaWYgKFJOR0FsZ29yaXRobSA9PSBOVUxMKSB7DQo+ID4gKyAgICAvLw0KPiA+ICsgICAg Ly8gVXNlIHRoZSBkZWZhdWx0IFJORyBhbGdvcml0aG0gaWYgUk5HQWxnb3JpdGhtIGlzIE5VTEwu DQo+ID4gKyAgICAvLw0KPiA+ICsgICAgUk5HQWxnb3JpdGhtID0gJmdFZmlSbmdBbGdvcml0aG1T cDgwMDkwQ3RyMjU2R3VpZDsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8g TklTVCBTUDgwMC05MC1BRVMtQ1RSLTI1NiBzdXBwb3J0ZWQgYnkgUkRSQU5EDQo+ID4gKyAgLy8N Cj4gPiArICBpZiAoQ29tcGFyZUd1aWQgKFJOR0FsZ29yaXRobSwgJmdFZmlSbmdBbGdvcml0aG1T cDgwMDkwQ3RyMjU2R3VpZCkpIHsNCj4gPiArICAgIFN0YXR1cyA9IFJuZ0dldEJ5dGVzIChSTkdW YWx1ZUxlbmd0aCwgUk5HVmFsdWUpOw0KPiA+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gPiArICB9 DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gVGhlICJyYXciIGFsZ29yaXRobSBpcyBpbnRl bmRlZCB0byBwcm92aWRlIGVudHJvcHkgZGlyZWN0bHkNCj4gPiArICAvLw0KPiA+ICsgIGlmIChD b21wYXJlR3VpZCAoUk5HQWxnb3JpdGhtLCAmZ0VmaVJuZ0FsZ29yaXRobVJhdykpIHsNCj4gPiAr ICAgIC8vDQo+ID4gKyAgICAvLyBXaGVuIGEgRFJCRyBpcyB1c2VkIG9uIHRoZSBvdXRwdXQgb2Yg YSBlbnRyb3B5IHNvdXJjZSwNCj4gPiArICAgIC8vIGl0cyBzZWN1cml0eSBsZXZlbCBtdXN0IGJl IGF0IGxlYXN0IDI1NiBiaXRzIGFjY29yZGluZyB0byBVRUZJIFNwZWMuDQo+ID4gKyAgICAvLw0K PiA+ICsgICAgaWYgKFJOR1ZhbHVlTGVuZ3RoIDwgMzIpIHsNCj4gPiArICAgICAgcmV0dXJuIEVG SV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPiArICAgIH0NCj4gPiArDQo+ID4gKyAgICBTdGF0dXMg PSBSZFJhbmRHZW5lcmF0ZUVudHJvcHkgKFJOR1ZhbHVlTGVuZ3RoLCBSTkdWYWx1ZSk7DQo+ID4g KyAgICByZXR1cm4gU3RhdHVzOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgLy8NCj4gPiArICAv LyBPdGhlciBhbGdvcml0aG1zIHdlcmUgdW5zdXBwb3J0ZWQgYnkgdGhpcyBkcml2ZXIuDQo+ID4g KyAgLy8NCj4gPiArICByZXR1cm4gU3RhdHVzOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4g PiArICBSZXR1cm5zIGluZm9ybWF0aW9uIGFib3V0IHRoZSByYW5kb20gbnVtYmVyIGdlbmVyYXRp b24gaW1wbGVtZW50YXRpb24uDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbixvdXRdIFJOR0FsZ29y aXRobUxpc3RTaXplIE9uIGlucHV0LCB0aGUgc2l6ZSBpbiBieXRlcyBvZg0KPiBSTkdBbGdvcml0 aG1MaXN0Lg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uIG91 dHB1dCB3aXRoIGEgcmV0dXJuIGNvZGUgb2YgRUZJX1NVQ0NFU1MsIHRoZSBzaXplDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gYnl0ZXMgb2YgdGhlIGRhdGEg cmV0dXJuZWQgaW4gUk5HQWxnb3JpdGhtTGlzdC4gT24NCj4gb3V0cHV0DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBhIHJldHVybiBjb2RlIG9mIEVGSV9C VUZGRVJfVE9PX1NNQUxMLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHRoZSBzaXplIG9mIFJOR0FsZ29yaXRobUxpc3QgcmVxdWlyZWQgdG8gb2J0YWluIHRoZSBs aXN0Lg0KPiA+ICsgIEBwYXJhbVtvdXRdIFJOR0FsZ29yaXRobUxpc3QgICAgICAgIEEgY2FsbGVy LWFsbG9jYXRlZCBtZW1vcnkgYnVmZmVyIGZpbGxlZA0KPiBieSB0aGUgZHJpdmVyDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBvbmUgRUZJX1JOR19BTEdP UklUSE0gZWxlbWVudCBmb3IgZWFjaA0KPiBzdXBwb3J0ZWQNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBSTkcgYWxnb3JpdGhtLiBUaGUgbGlzdCBtdXN0IG5vdCBj aGFuZ2UgYWNyb3NzIG11bHRpcGxlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY2FsbHMgdG8gdGhlIHNhbWUgZHJpdmVyLiBUaGUgZmlyc3QgYWxnb3JpdGhtIGlu IHRoZSBsaXN0DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMg dGhlIGRlZmF1bHQgYWxnb3JpdGhtIGZvciB0aGUgZHJpdmVyLg0KPiA+ICsNCj4gPiArICBAcmV0 dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgICAgICBUaGUgUk5HIGFsZ29yaXRobSBsaXN0IHdh cyByZXR1cm5lZA0KPiBzdWNjZXNzZnVsbHkuDQo+ID4gKyAgQHJldHZhbCBFRklfQlVGRkVSX1RP T19TTUFMTCAgICAgICAgVGhlIGJ1ZmZlciBSTkdBbGdvcml0aG1MaXN0IGlzIHRvbw0KPiBzbWFs bCB0byBob2xkIHRoZSByZXN1bHQuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVUlOVE4NCj4gPiAr RUZJQVBJDQo+ID4gK0FyY2hHZXRTdXBwb3J0ZWRSbmdBbGdvcml0aG1zICgNCj4gPiArICBJTiBP VVQgVUlOVE4gICAgICAgICAgICAgICAgICAgICAqUk5HQWxnb3JpdGhtTGlzdFNpemUsDQo+ID4g KyAgT1VUICAgIEVGSV9STkdfQUxHT1JJVEhNICAgICAgICAgKlJOR0FsZ29yaXRobUxpc3QNCj4g PiArICApDQo+ID4gK3sNCj4gPiArICBVSU5UTiBSZXF1aXJlZFNpemU7DQo+ID4gKyAgRUZJX1JO R19BTEdPUklUSE0gKkNwdVJuZ1N1cHBvcnRlZEFsZ29yaXRobTsNCj4gPiArDQo+ID4gKyAgUmVx dWlyZWRTaXplID0gMiAqIHNpemVvZiAoRUZJX1JOR19BTEdPUklUSE0pOw0KPiA+ICsNCj4gPiAr ICBpZiAoKlJOR0FsZ29yaXRobUxpc3RTaXplIDwgUmVxdWlyZWRTaXplKSB7DQo+ID4gKyAgICAq Uk5HQWxnb3JpdGhtTGlzdFNpemUgPSBSZXF1aXJlZFNpemU7DQo+ID4gKyAgICByZXR1cm4gRUZJ X0JVRkZFUl9UT09fU01BTEw7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBDcHVSbmdTdXBwb3J0 ZWRBbGdvcml0aG0gPSBQY2RHZXRQdHIgKFBjZENwdVJuZ1N1cHBvcnRlZEFsZ29yaXRobSk7DQo+ ID4gKw0KPiA+ICsgIENvcHlNZW0oJlJOR0FsZ29yaXRobUxpc3RbMF0sIENwdVJuZ1N1cHBvcnRl ZEFsZ29yaXRobSwgc2l6ZW9mDQo+IChFRklfUk5HX0FMR09SSVRITSkpOw0KPiA+ICsNCj4gPiAr ICAvLyB4ODYgcGxhdGZvcm1zIGFsc28gc3VwcG9ydCBFRklfUk5HX0FMR09SSVRITV9SQVcgdmlh IFJEU0VFRA0KPiA+ICsgIENvcHlNZW0oJlJOR0FsZ29yaXRobUxpc3RbMV0sICZnRWZpUm5nQWxn b3JpdGhtUmF3LCBzaXplb2YNCj4gKEVGSV9STkdfQUxHT1JJVEhNKSk7DQo+ID4gKw0KPiA+ICsg ICpSTkdBbGdvcml0aG1MaXN0U2l6ZSA9IFJlcXVpcmVkU2l6ZTsNCj4gPiArICByZXR1cm4gRUZJ X1NVQ0NFU1M7DQo+ID4gK30NCj4gPiArDQo+ID4gZGlmZiAtLWdpdCBhL1NlY3VyaXR5UGtnL1Jh bmRvbU51bWJlckdlbmVyYXRvci9SbmdEeGUvUm5nRHhlLmMNCj4gYi9TZWN1cml0eVBrZy9SYW5k b21OdW1iZXJHZW5lcmF0b3IvUm5nRHhlL1JuZ0R4ZS5jDQo+ID4gaW5kZXggMTNkM2RiZDBiZmJl Li5iOTU5YzcwNTM2ZWEgMTAwNjQ0DQo+ID4gLS0tIGEvU2VjdXJpdHlQa2cvUmFuZG9tTnVtYmVy R2VuZXJhdG9yL1JuZ0R4ZS9SbmdEeGUuYw0KPiA+ICsrKyBiL1NlY3VyaXR5UGtnL1JhbmRvbU51 bWJlckdlbmVyYXRvci9SbmdEeGUvUm5nRHhlLmMNCj4gPiBAQCAtMSwzNCArMSwzMiBAQA0KPiA+ ICAvKiogQGZpbGUNCj4gPiAgICBSTkcgRHJpdmVyIHRvIHByb2R1Y2UgdGhlIFVFRkkgUmFuZG9t IE51bWJlciBHZW5lcmF0b3IgcHJvdG9jb2wuDQo+ID4NCj4gPiAtICBUaGUgZHJpdmVyIHdpbGwg dXNlIHRoZSBuZXcgUkRSQU5EIGluc3RydWN0aW9uIHRvIHByb2R1Y2UgaGlnaC1xdWFsaXR5LA0K PiBoaWdoLXBlcmZvcm1hbmNlDQo+ID4gLSAgZW50cm9weSBhbmQgcmFuZG9tIG51bWJlci4NCj4g PiArICBUaGUgZHJpdmVyIHVzZXMgQ1BVIFJORyBpbnN0cnVjdGlvbnMgdG8gcHJvZHVjZSBoaWdo LXF1YWxpdHksDQo+ID4gKyAgaGlnaC1wZXJmb3JtYW5jZSBlbnRyb3B5IGFuZCByYW5kb20gbnVt YmVyLg0KPiA+DQo+ID4gICAgUk5HIEFsZ29yaXRobXMgZGVmaW5lZCBpbiBVRUZJIDIuNDoNCj4g PiAtICAgLSBFRklfUk5HX0FMR09SSVRITV9TUDgwMF85MF9DVFJfMjU2X0dVSUQgIC0gU3VwcG9y dGVkDQo+ID4gLSAgICAgKFJEUkFORCBpbXBsZW1lbnRzIGEgaGFyZHdhcmUgTklTVCBTUDgwMC05 MCBBRVMtQ1RSLTI1NiBiYXNlZCBEUkJHKQ0KPiA+IC0gICAtIEVGSV9STkdfQUxHT1JJVEhNX1JB VyAgICAgICAgICAgICAgICAgICAgLSBTdXBwb3J0ZWQNCj4gPiAtICAgICAoU3RydWN0dXJpbmcg UkRSQU5EIGludm9jYXRpb24gY2FuIGJlIGd1YXJhbnRlZWQgYXMgaGlnaC1xdWFsaXR5IGVudHJv cHkNCj4gc291cmNlKQ0KPiA+IC0gICAtIEVGSV9STkdfQUxHT1JJVEhNX1NQODAwXzkwX0hNQUNf MjU2X0dVSUQgLSBVbnN1cHBvcnRlZA0KPiA+IC0gICAtIEVGSV9STkdfQUxHT1JJVEhNX1NQODAw XzkwX0hBU0hfMjU2X0dVSUQgLSBVbnN1cHBvcnRlZA0KPiA+IC0gICAtIEVGSV9STkdfQUxHT1JJ VEhNX1g5XzMxXzNERVNfR1VJRCAgICAgICAgLSBVbnN1cHBvcnRlZA0KPiA+IC0gICAtIEVGSV9S TkdfQUxHT1JJVEhNX1g5XzMxX0FFU19HVUlEICAgICAgICAgLSBVbnN1cHBvcnRlZA0KPiA+ICsg ICAtIEVGSV9STkdfQUxHT1JJVEhNX1NQODAwXzkwX0NUUl8yNTZfR1VJRA0KPiA+ICsgICAtIEVG SV9STkdfQUxHT1JJVEhNX1JBVw0KPiA+ICsgICAtIEVGSV9STkdfQUxHT1JJVEhNX1NQODAwXzkw X0hNQUNfMjU2X0dVSUQNCj4gPiArICAgLSBFRklfUk5HX0FMR09SSVRITV9TUDgwMF85MF9IQVNI XzI1Nl9HVUlEDQo+ID4gKyAgIC0gRUZJX1JOR19BTEdPUklUSE1fWDlfMzFfM0RFU19HVUlEDQo+ ID4gKyAgIC0gRUZJX1JOR19BTEdPUklUSE1fWDlfMzFfQUVTX0dVSUQNCj4gPg0KPiA+ICBDb3B5 cmlnaHQgKGMpIDIwMTMgLSAyMDE4LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNl cnZlZC48QlI+DQo+ID4gIChDKSBDb3B5cmlnaHQgMjAxNSBIZXdsZXR0IFBhY2thcmQgRW50ZXJw cmlzZSBEZXZlbG9wbWVudCBMUDxCUj4NCj4gPiArDQo+ID4gIFNQRFgtTGljZW5zZS1JZGVudGlm aWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4NCj4gPiAgKiovDQo+ID4NCj4gPiAtI2luY2x1 ZGUgIlJkUmFuZC5oIg0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9CYXNlTGliLmg+DQo+ID4gKyNp bmNsdWRlIDxMaWJyYXJ5L0Jhc2VNZW1vcnlMaWIuaD4NCj4gPiArI2luY2x1ZGUgPExpYnJhcnkv VWVmaUJvb3RTZXJ2aWNlc1RhYmxlTGliLmg+DQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L1JuZ0xp Yi5oPg0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9UaW1lckxpYi5oPg0KPiA+ICsjaW5jbHVkZSA8 UHJvdG9jb2wvUm5nLmg+DQo+ID4NCj4gPiAtLy8NCj4gPiAtLy8gU3VwcG9ydGVkIFJORyBBbGdv cml0aG1zIGxpc3QgYnkgdGhpcyBkcml2ZXIuDQo+ID4gLS8vDQo+ID4gLUVGSV9STkdfQUxHT1JJ VEhNIG1TdXBwb3J0ZWRSbmdBbGdvcml0aG1zW10gPSB7DQo+ID4gLSAgRUZJX1JOR19BTEdPUklU SE1fU1A4MDBfOTBfQ1RSXzI1Nl9HVUlELA0KPiA+IC0gIEVGSV9STkdfQUxHT1JJVEhNX1JBVw0K PiA+IC19Ow0KPiA+ICsjaW5jbHVkZSAiUm5nRHhlSW50ZXJuYWxzLmgiDQo+ID4NCj4gPiAgLyoq DQo+ID4gICAgUmV0dXJucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcmFuZG9tIG51bWJlciBnZW5l cmF0aW9uIGltcGxlbWVudGF0aW9uLg0KPiA+IEBAIC02MiwxMDYgKzYwLDIzIEBAIFJuZ0dldElu Zm8gKA0KPiA+ICAgICkNCj4gPiAgew0KPiA+ICAgIEVGSV9TVEFUVVMgICAgU3RhdHVzOw0KPiA+ IC0gIFVJTlROICAgICAgICAgUmVxdWlyZWRTaXplOw0KPiA+DQo+ID4gICAgaWYgKChUaGlzID09 IE5VTEwpIHx8IChSTkdBbGdvcml0aG1MaXN0U2l6ZSA9PSBOVUxMKSkgew0KPiA+ICAgICAgcmV0 dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPiAgICB9DQo+ID4NCj4gPiAtICBSZXF1aXJl ZFNpemUgPSBzaXplb2YgKG1TdXBwb3J0ZWRSbmdBbGdvcml0aG1zKTsNCj4gPiAtICBpZiAoKlJO R0FsZ29yaXRobUxpc3RTaXplIDwgUmVxdWlyZWRTaXplKSB7DQo+ID4gLSAgICBTdGF0dXMgPSBF RklfQlVGRkVSX1RPT19TTUFMTDsNCj4gPiArICAvLw0KPiA+ICsgIC8vIFJldHVybiBhbGdvcml0 aG0gbGlzdCBzdXBwb3J0ZWQgYnkgZHJpdmVyLg0KPiA+ICsgIC8vDQo+ID4gKyAgaWYgKFJOR0Fs Z29yaXRobUxpc3QgIT0gTlVMTCkgew0KPiA+ICsgICAgU3RhdHVzID0gQXJjaEdldFN1cHBvcnRl ZFJuZ0FsZ29yaXRobXMgKFJOR0FsZ29yaXRobUxpc3RTaXplLA0KPiBSTkdBbGdvcml0aG1MaXN0 KTsNCj4gPiAgICB9IGVsc2Ugew0KPiA+IC0gICAgLy8NCj4gPiAtICAgIC8vIFJldHVybiBhbGdv cml0aG0gbGlzdCBzdXBwb3J0ZWQgYnkgZHJpdmVyLg0KPiA+IC0gICAgLy8NCj4gPiAtICAgIGlm IChSTkdBbGdvcml0aG1MaXN0ICE9IE5VTEwpIHsNCj4gPiAtICAgICAgQ29weU1lbSAoUk5HQWxn b3JpdGhtTGlzdCwgbVN1cHBvcnRlZFJuZ0FsZ29yaXRobXMsIFJlcXVpcmVkU2l6ZSk7DQo+ID4g LSAgICAgIFN0YXR1cyA9IEVGSV9TVUNDRVNTOw0KPiA+IC0gICAgfSBlbHNlIHsNCj4gPiAtICAg ICAgU3RhdHVzID0gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiA+IC0gICAgfQ0KPiA+ICsgICAg U3RhdHVzID0gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiA+ICAgIH0NCj4gPiAtICAqUk5HQWxn b3JpdGhtTGlzdFNpemUgPSBSZXF1aXJlZFNpemU7DQo+ID4NCj4gPiAgICByZXR1cm4gU3RhdHVz Ow0KPiA+ICB9DQo+ID4NCj4gPiAtLyoqDQo+ID4gLSAgUHJvZHVjZXMgYW5kIHJldHVybnMgYW4g Uk5HIHZhbHVlIHVzaW5nIGVpdGhlciB0aGUgZGVmYXVsdCBvciBzcGVjaWZpZWQgUk5HDQo+IGFs Z29yaXRobS4NCj4gPiAtDQo+ID4gLSAgQHBhcmFtW2luXSAgVGhpcyAgICAgICAgICAgICAgICAg ICAgQSBwb2ludGVyIHRvIHRoZSBFRklfUk5HX1BST1RPQ09MIGluc3RhbmNlLg0KPiA+IC0gIEBw YXJhbVtpbl0gIFJOR0FsZ29yaXRobSAgICAgICAgICAgIEEgcG9pbnRlciB0byB0aGUgRUZJX1JO R19BTEdPUklUSE0NCj4gdGhhdCBpZGVudGlmaWVzIHRoZSBSTkcNCj4gPiAtICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBhbGdvcml0aG0gdG8gdXNlLiBNYXkgYmUgTlVMTCBp biB3aGljaCBjYXNlIHRoZQ0KPiBmdW5jdGlvbiB3aWxsDQo+ID4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdXNlIGl0cyBkZWZhdWx0IFJORyBhbGdvcml0aG0uDQo+ID4g LSAgQHBhcmFtW2luXSAgUk5HVmFsdWVMZW5ndGggICAgICAgICAgVGhlIGxlbmd0aCBpbiBieXRl cyBvZiB0aGUgbWVtb3J5IGJ1ZmZlcg0KPiBwb2ludGVkIHRvIGJ5DQo+ID4gLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUk5HVmFsdWUuIFRoZSBkcml2ZXIgc2hhbGwgcmV0 dXJuIGV4YWN0bHkgdGhpcyBudW1iZXJzIG9mDQo+IGJ5dGVzLg0KPiA+IC0gIEBwYXJhbVtvdXRd IFJOR1ZhbHVlICAgICAgICAgICAgICAgIEEgY2FsbGVyLWFsbG9jYXRlZCBtZW1vcnkgYnVmZmVy IGZpbGxlZCBieQ0KPiB0aGUgZHJpdmVyIHdpdGggdGhlDQo+ID4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcmVzdWx0aW5nIFJORyB2YWx1ZS4NCj4gPiAtDQo+ID4gLSAg QHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgICAgICAgVGhlIFJORyB2YWx1ZSB3YXMgcmV0 dXJuZWQgc3VjY2Vzc2Z1bGx5Lg0KPiA+IC0gIEByZXR2YWwgRUZJX1VOU1VQUE9SVEVEICAgICAg ICAgICAgIFRoZSBhbGdvcml0aG0gc3BlY2lmaWVkIGJ5IFJOR0FsZ29yaXRobQ0KPiBpcyBub3Qg c3VwcG9ydGVkIGJ5DQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dGhpcyBkcml2ZXIuDQo+ID4gLSAgQHJldHZhbCBFRklfREVWSUNFX0VSUk9SICAgICAgICAgICAg QW4gUk5HIHZhbHVlIGNvdWxkIG5vdCBiZSByZXRyaWV2ZWQgZHVlDQo+IHRvIGEgaGFyZHdhcmUg b3INCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJtd2FyZSBl cnJvci4NCj4gPiAtICBAcmV0dmFsIEVGSV9OT1RfUkVBRFkgICAgICAgICAgICAgICBUaGVyZSBp cyBub3QgZW5vdWdoIHJhbmRvbSBkYXRhIGF2YWlsYWJsZQ0KPiB0byBzYXRpc2Z5IHRoZSBsZW5n dGgNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0ZWQg YnkgUk5HVmFsdWVMZW5ndGguDQo+ID4gLSAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIg ICAgICAgUk5HVmFsdWUgaXMgTlVMTCBvcg0KPiBSTkdWYWx1ZUxlbmd0aCBpcyB6ZXJvLg0KPiA+ IC0NCj4gPiAtKiovDQo+ID4gLUVGSV9TVEFUVVMNCj4gPiAtRUZJQVBJDQo+ID4gLVJuZ0dldFJO RyAoDQo+ID4gLSAgSU4gRUZJX1JOR19QUk9UT0NPTCAgICAgICAgICAgICpUaGlzLA0KPiA+IC0g IElOIEVGSV9STkdfQUxHT1JJVEhNICAgICAgICAgICAqUk5HQWxnb3JpdGhtLCBPUFRJT05BTA0K PiA+IC0gIElOIFVJTlROICAgICAgICAgICAgICAgICAgICAgICBSTkdWYWx1ZUxlbmd0aCwNCj4g PiAtICBPVVQgVUlOVDggICAgICAgICAgICAgICAgICAgICAgKlJOR1ZhbHVlDQo+ID4gLSAgKQ0K PiA+IC17DQo+ID4gLSAgRUZJX1NUQVRVUyAgICBTdGF0dXM7DQo+ID4gLQ0KPiA+IC0gIGlmICgo Uk5HVmFsdWVMZW5ndGggPT0gMCkgfHwgKFJOR1ZhbHVlID09IE5VTEwpKSB7DQo+ID4gLSAgICBy ZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiA+IC0gIH0NCj4gPiAtDQo+ID4gLSAgU3Rh dHVzID0gRUZJX1VOU1VQUE9SVEVEOw0KPiA+IC0gIGlmIChSTkdBbGdvcml0aG0gPT0gTlVMTCkg ew0KPiA+IC0gICAgLy8NCj4gPiAtICAgIC8vIFVzZSB0aGUgZGVmYXVsdCBSTkcgYWxnb3JpdGht IGlmIFJOR0FsZ29yaXRobSBpcyBOVUxMLg0KPiA+IC0gICAgLy8NCj4gPiAtICAgIFJOR0FsZ29y aXRobSA9ICZnRWZpUm5nQWxnb3JpdGhtU3A4MDA5MEN0cjI1Nkd1aWQ7DQo+ID4gLSAgfQ0KPiA+ IC0NCj4gPiAtICAvLw0KPiA+IC0gIC8vIE5JU1QgU1A4MDAtOTAtQUVTLUNUUi0yNTYgc3VwcG9y dGVkIGJ5IFJEUkFORA0KPiA+IC0gIC8vDQo+ID4gLSAgaWYgKENvbXBhcmVHdWlkIChSTkdBbGdv cml0aG0sICZnRWZpUm5nQWxnb3JpdGhtU3A4MDA5MEN0cjI1Nkd1aWQpKSB7DQo+ID4gLSAgICBT dGF0dXMgPSBSZFJhbmRHZXRCeXRlcyAoUk5HVmFsdWVMZW5ndGgsIFJOR1ZhbHVlKTsNCj4gPiAt ICAgIHJldHVybiBTdGF0dXM7DQo+ID4gLSAgfQ0KPiA+IC0NCj4gPiAtICAvLw0KPiA+IC0gIC8v IFRoZSAicmF3IiBhbGdvcml0aG0gaXMgaW50ZW5kZWQgdG8gcHJvdmlkZSBlbnRyb3B5IGRpcmVj dGx5DQo+ID4gLSAgLy8NCj4gPiAtICBpZiAoQ29tcGFyZUd1aWQgKFJOR0FsZ29yaXRobSwgJmdF ZmlSbmdBbGdvcml0aG1SYXcpKSB7DQo+ID4gLSAgICAvLw0KPiA+IC0gICAgLy8gV2hlbiBhIERS QkcgaXMgdXNlZCBvbiB0aGUgb3V0cHV0IG9mIGEgZW50cm9weSBzb3VyY2UsDQo+ID4gLSAgICAv LyBpdHMgc2VjdXJpdHkgbGV2ZWwgbXVzdCBiZSBhdCBsZWFzdCAyNTYgYml0cyBhY2NvcmRpbmcg dG8gVUVGSSBTcGVjLg0KPiA+IC0gICAgLy8NCj4gPiAtICAgIGlmIChSTkdWYWx1ZUxlbmd0aCA8 IDMyKSB7DQo+ID4gLSAgICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ID4gLSAg ICB9DQo+ID4gLQ0KPiA+IC0gICAgU3RhdHVzID0gUmRSYW5kR2VuZXJhdGVFbnRyb3B5IChSTkdW YWx1ZUxlbmd0aCwgUk5HVmFsdWUpOw0KPiA+IC0gICAgcmV0dXJuIFN0YXR1czsNCj4gPiAtICB9 DQo+ID4gLQ0KPiA+IC0gIC8vDQo+ID4gLSAgLy8gT3RoZXIgYWxnb3JpdGhtcyB3ZXJlIHVuc3Vw cG9ydGVkIGJ5IHRoaXMgZHJpdmVyLg0KPiA+IC0gIC8vDQo+ID4gLSAgcmV0dXJuIFN0YXR1czsN Cj4gPiAtfQ0KPiA+IC0NCj4gPiAgLy8NCj4gPiAgLy8gVGhlIFJhbmRvbSBOdW1iZXIgR2VuZXJh dG9yIChSTkcpIHByb3RvY29sDQo+ID4gIC8vDQo+ID4gQEAgLTIwNCwzICsxMTksNDQgQEAgUm5n RHJpdmVyRW50cnkgKA0KPiA+DQo+ID4gICAgcmV0dXJuIFN0YXR1czsNCj4gPiAgfQ0KPiA+ICsN Cj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIENhbGxzIFJEUkFORCB0byBmaWxsIGEgYnVmZmVyIG9m IGFyYml0cmFyeSBzaXplIHdpdGggcmFuZG9tIGJ5dGVzLg0KPiA+ICsNCj4gPiArICBAcGFyYW1b aW5dICAgTGVuZ3RoICAgICAgICBTaXplIG9mIHRoZSBidWZmZXIsIGluIGJ5dGVzLCAgdG8gZmls bCB3aXRoLg0KPiA+ICsgIEBwYXJhbVtvdXRdICBSYW5kQnVmZmVyICAgIFBvaW50ZXIgdG8gdGhl IGJ1ZmZlciB0byBzdG9yZSB0aGUgcmFuZG9tIHJlc3VsdC4NCj4gPiArDQo+ID4gKyAgQHJldHZh bCBFRklfU1VDQ0VTUyAgICAgICAgUmFuZG9tIGJ5dGVzIGdlbmVyYXRpb24gc3VjY2VlZGVkLg0K PiA+ICsgIEByZXR2YWwgRUZJX05PVF9SRUFEWSAgICAgIEZhaWxlZCB0byByZXF1ZXN0IHJhbmRv bSBieXRlcy4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0VGSUFQSQ0K PiA+ICtSbmdHZXRCeXRlcyAoDQo+ID4gKyAgSU4gVUlOVE4gICAgICAgICBMZW5ndGgsDQo+ID4g KyAgT1VUIFVJTlQ4ICAgICAgICAqUmFuZEJ1ZmZlcg0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsg IEJPT0xFQU4gICAgIElzUmFuZG9tOw0KPiA+ICsgIFVJTlQ2NCAgICAgIFRlbXBSYW5kWzJdOw0K PiA+ICsNCj4gPiArICB3aGlsZSAoTGVuZ3RoID4gMCkgew0KPiA+ICsgICAgSXNSYW5kb20gPSBH ZXRSYW5kb21OdW1iZXIxMjggKFRlbXBSYW5kKTsNCj4gPiArICAgIGlmICghSXNSYW5kb20pIHsN Cj4gPiArICAgICAgcmV0dXJuIEVGSV9OT1RfUkVBRFk7DQo+ID4gKyAgICB9DQo+ID4gKyAgICBp ZiAoTGVuZ3RoID49IHNpemVvZiAoVGVtcFJhbmQpKSB7DQo+ID4gKyAgICAgIFdyaXRlVW5hbGln bmVkNjQgKChVSU5UNjQqKVJhbmRCdWZmZXIsIFRlbXBSYW5kWzBdKTsNCj4gPiArICAgICAgUmFu ZEJ1ZmZlciArPSBzaXplb2YgKFVJTlQ2NCk7DQo+ID4gKyAgICAgIFdyaXRlVW5hbGlnbmVkNjQg KChVSU5UNjQqKVJhbmRCdWZmZXIsIFRlbXBSYW5kWzFdKTsNCj4gPiArICAgICAgUmFuZEJ1ZmZl ciArPSBzaXplb2YgKFVJTlQ2NCk7DQo+ID4gKyAgICAgIExlbmd0aCAtPSBzaXplb2YgKFRlbXBS YW5kKTsNCj4gPiArICAgIH0gZWxzZSB7DQo+ID4gKyAgICAgIENvcHlNZW0gKFJhbmRCdWZmZXIs IFRlbXBSYW5kLCBMZW5ndGgpOw0KPiA+ICsgICAgICBMZW5ndGggPSAwOw0KPiA+ICsgICAgfQ0K PiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+ICt9DQo+ID4g LS0NCj4gPiAyLjI2LjINCj4gPg0KPiANCj4gDQo+IA0KPiANCg0K