From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by mx.groups.io with SMTP id smtpd.web11.157.1662742158914524994 for ; Fri, 09 Sep 2022 09:49:19 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=REjVSHBI; spf=pass (domain: intel.com, ip: 192.55.52.115, mailfrom: michael.d.kinney@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1662742158; x=1694278158; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=vzJvzgqqSmb5/iyVfFvOd5DjOeZLQozeJEg06lOQKUY=; b=REjVSHBIZMBkFV/bSQXwTSqwRCFPbN7Uwjulvki1FL55cpTJU4LQhUjg 7jS4ThW9yU2du/mttI5gy8fRRBa/qFwkhdsJkug9T5LQ3B4Q05yzGWMv4 uV13sHBDc6Qt26LSectqdugBuheYWeXIZGny4nc97jfTzaebVSzNxUfvL TD/GpmC7K0CYyQreMCiHX8EBJzj6326dyw+weOigeF80AlG701W2w5g1f O89KLXpm3rdZd4rLq9yBm+/UbHQtq+pDVxl6NzdhxHQdhUhUcHPJ6YsCE D5k/4b8E8z3Ix1YqZs0UjwI/x+zMfOBCpAOcTEXxfte+P0iY0H8WBrqtK A==; X-IronPort-AV: E=McAfee;i="6500,9779,10465"; a="297519338" X-IronPort-AV: E=Sophos;i="5.93,303,1654585200"; d="scan'208";a="297519338" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Sep 2022 09:49:18 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.93,303,1654585200"; d="scan'208";a="611113655" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by orsmga007.jf.intel.com with ESMTP; 09 Sep 2022 09:49:18 -0700 Received: from orsmsx612.amr.corp.intel.com (10.22.229.25) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Fri, 9 Sep 2022 09:49:18 -0700 Received: from orsmsx603.amr.corp.intel.com (10.22.229.16) by ORSMSX612.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Fri, 9 Sep 2022 09:49:17 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31 via Frontend Transport; Fri, 9 Sep 2022 09:49:17 -0700 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (104.47.55.177) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2375.31; Fri, 9 Sep 2022 09:49:16 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cC9WJ1FF9Bw5X672Kx6wf0o2KlsL1BAXCxwBoR2zhXjcdOHYu3SPb3XjLOGyhAS+BCC2l6kdHWxmcJTFR0LZGrqW7u6YzZsERGa67MD/BgXI7rxvB/5fACapVq/rCazxwHA/80h79cb5NVRc944FLLaMU7ujSCDle+nor+MqOmJNr1Wbh5vSXg5jvEhtOe5tbNPBTuTEdRHrpLRQsAn4NxpFn/nsjqGq0tWkqobwj+UprfZQpTWCYLYlbhMlGB3wDjErDYDoln/diqZ1tTF4D2BqZhtE1rlTSyQTlQM735Pi3tWIVD87AkBo3RyERTUsh0W+EQ+euazJwotBDHy5HQ== 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=vzJvzgqqSmb5/iyVfFvOd5DjOeZLQozeJEg06lOQKUY=; b=Z9LxGIwQFTYiSmhJzndLP58bZbMwFW41jKYHoFdIlQWefGVhRQRRWqNskCSq1M4WSaam8uEdz4NJusBVtNQrnekAFexGym7StGru41CCimxVqcmohoxhYPQrXCpCFWGoG4+An6ejELA5ribTG8E8rkBetLvUjmP4qnVkek6Fi9cgMh/XMPW5Kt+MZu7BUc36twsDFYNyLC3OEoeDJZ98jMhcHcHHB2wxDMozf1FdeLj1CAzGRxjPnveO6xIghnAS1u8bHYoQvrywKFrtunt2TGqKiEuaEKw+1JVhvc/FwSlWhUped0HQ/G6GF53yBuNrKGl59fwWgO9CH1d+2vZn1g== 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 CO1PR11MB4929.namprd11.prod.outlook.com (2603:10b6:303:6d::19) by SA2PR11MB4795.namprd11.prod.outlook.com (2603:10b6:806:118::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5612.20; Fri, 9 Sep 2022 16:49:01 +0000 Received: from CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::7890:343e:99cb:21c8]) by CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::7890:343e:99cb:21c8%7]) with mapi id 15.20.5612.020; Fri, 9 Sep 2022 16:49:01 +0000 From: "Michael D Kinney" To: "devel@edk2.groups.io" , "lixianglai@loongson.cn" , "Kinney, Michael D" CC: "maobibo@loongson.cn" Subject: Re: [edk2-devel] [edk2-platforms][PATCH V1 06/16] Platform/Loongson: Add StableTimerLib. Thread-Topic: [edk2-devel] [edk2-platforms][PATCH V1 06/16] Platform/Loongson: Add StableTimerLib. Thread-Index: AQHYw/oaHMdh0yqkyE60ypKzmFlIr63XT/gg Date: Fri, 9 Sep 2022 16:49:00 +0000 Message-ID: References: <9a53979093043d4da800cab803be9791e9af463c.1662691771.git.lixianglai@loongson.cn> In-Reply-To: <9a53979093043d4da800cab803be9791e9af463c.1662691771.git.lixianglai@loongson.cn> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.6.500.17 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CO1PR11MB4929:EE_|SA2PR11MB4795:EE_ x-ms-office365-filtering-correlation-id: b28b0179-7660-4fc8-558d-08da92833263 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: FXZMgrs6yVH5ujcKRugcra+VwhXlbjC1Ov+DH2wMGrvCnVdRfQAa8rTb9hXNf3U5qb83YnqB73vBH3svumSBth3+ydom+QJX8kxSpYZJp/++Md8u4RBrB3GBgcWjqDCurwfMcisMQc2Vmc5xUVsPHLc0LuqjqxBHRKX+ILBtQUyWFAaEUDkhoCBSX8Iry0ScyYUDOnHeorAMO6GPirYkIDbnqb/hFZmdvpRK4RXo5PWHP1h9cBR3gTzqAjdra3JnRJGlmGtangZqOA21pb1rf2jFjlyhhvdxr9locrKrwfb+yQ1xFHZVrNLk2k23ZrVtVekZ2Pk+N1zIidO5eknQ/0TMjDaSkoByY1Wu01nOSd9p2EMm6DqxMi71tarsbp4vFSOK1DoGB+hJKvkNwdkppd3NVW9OMtzjRDxykyuCDDVRemQEjuUevLxjrduooeGNo9EsJf5VZll/MxkmKFznNIYrAfbc3xKZJ6Szpv2eCg4FF1uPqv69g7XELG9iF7upRtoMY+UDU4WLSO6vT7hBlx6PYS6rsWpOgpRC7kqN1uPoH6xbRt8yE5hg6JL4oFUlnpTKskzdJ8WZF1pZv9nKomF31+1JxMsH0C+Gujn0oQJluTooibnAw/Kpm7A7SmDw2zptacB8tGhtULUwV58lxTCRoFrydwNnvW8Mp/YlW0ac0Q/0Ol2EJxjiuSVwBDVkSbLMl4uPUqFnyRhOoE6OI86sk8fkS5bQwLYP8wPwnrYxnFy/WryvCxqkd88OAz8UTI7+djH0jUX9eDUjyXPeBZ7tNjQowKSX82jtY8qUW7SIrZwxgcBVyL31hJJLVXl1Y7M3spKSlPm7Y3B8CnwK5w== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CO1PR11MB4929.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(366004)(376002)(136003)(346002)(396003)(39860400002)(478600001)(7696005)(186003)(26005)(9686003)(53546011)(6506007)(86362001)(2906002)(30864003)(33656002)(71200400001)(8936002)(5660300002)(38070700005)(82960400001)(52536014)(110136005)(316002)(8676002)(19627235002)(966005)(64756008)(66556008)(66946007)(66446008)(41300700001)(66476007)(83380400001)(4326008)(122000001)(55016003)(38100700002)(76116006);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?bFhORHBuVDZXS05TWFBBbmJoSFBveGlicnJsZW03SVMxckk0YzVBR0Y5TlVi?= =?utf-8?B?c2YyeUZyR1N6cXc2VmRSSnNXamx6M3VSdXNkL1c0WUwrVG9lZVlnWktTSmN0?= =?utf-8?B?cUtGMSsvbjlpT21MdXlpYThFS25MN2hLbS9PNURhcXkvcjhpSy84Z050KzUx?= =?utf-8?B?dng1OEw0V0Q3Q1EwNlYrZTZQNDRmV1JGcDdseDFwblB4KzVNaDJxNzlwRXFn?= =?utf-8?B?ZS8ycGhRamxNM1p0c1hzdTJpeE9yUi9Rd2M4NC9rK3pBZG9mVTlnQ0xGVDJ5?= =?utf-8?B?V1ZmU3pWY3dFMjNITC80YmRWUWxjZmhwMFhJVGdHbHE2WkZScWFjUHFpWUh5?= =?utf-8?B?WUlxcGFxZ2liL28yUXJBKzBHNUs1bDM0MVQ0ckZWenMyMlErM0FlbXEwb2tk?= =?utf-8?B?NjNsNHplMjIrSW1yVjdUY2lYSUp6Z1NkM1M1N0lZWTlpbVd1MXhJWlZTZmVN?= =?utf-8?B?czRiRHYvZ1drWU1nNjViN0ErUS9YR09YMi9MLytVaTlKK2poMTA4TlUyWTJC?= =?utf-8?B?Mk1YQ0lnY2swV0dnMkZBc2QzaWtSMGZza29lZWVHRGMwNGFCMVg2eGhUd3FZ?= =?utf-8?B?cC9zeTlyaWlzZklqUWVUZ200N1pFb3lQVlBic3NvQjZXZU94aGZNTmhxMktv?= =?utf-8?B?M1RsOUs2MjdBRzgrQ1BteHlCbUpYdGt0eGtFVkYrMVNkZ2J0NmJIK3lWbElW?= =?utf-8?B?N0dkMW1sYXpLb2t6MUZRaVdVZ2g3T0ZqTHFyc2lFZGh0SnQ3bWM2akJOR0Vl?= =?utf-8?B?cVdGR1FqV2NBQzlYOEVLb3dSaEQ2WXhUWSszQjBlYnlwTkdZUnZDc0tjY09M?= =?utf-8?B?alZnY3FrVFkvNlJVbmZGK2ZOYjhNTGdnQlFQV2JNMTd2QU4xcHVlQkZ1Zm1q?= =?utf-8?B?Mm1HU1VNd09MZG5pdG9nNjJvODhtTHo4czRKWHpHM0luQlZIQm9SMVRIQklQ?= =?utf-8?B?SHpyZjBmY0FhZDRzdms5bElEbmJyU1hNTzZIa0RZN3NzUzVXc0loOGRtVzVC?= =?utf-8?B?TlVrSHFFMWYzaW5hSDlicVJnSS80cHNaNXFkS3VMUlA0WTZZRXhWbjlYUXAv?= =?utf-8?B?NlhTTmppZ2tvQmFGNlI0TWptSU0xR3ZaQTgwR1VUWGhSYWdrYXVHZDhrOXFE?= =?utf-8?B?U3FpQ2k0enc5ZTUyalF2Ym1HSlB5S3JUWTVvZHJUMDFyU1B3NVJxY2dmbWUx?= =?utf-8?B?OXczV0t1VERNQnBjd29GMGpFZFZHUVBDbS84b2R1eDN0YVNydFZBa0d4V0Ra?= =?utf-8?B?KzA4QXFSdGNWUWVxYWlLTXpLSmtFMStwcEVoZGZHblJsV3dwUFZ6OFNlY09V?= =?utf-8?B?R1ZGV2VYdXhEU2FmNkwvTysyZkdhM0Nqa0diMldzRXRJNWdPanFtZ3ZEWTZm?= =?utf-8?B?akR2KzFaRzVjS0tRMCtNaGphclIyQXQ1bWZNdDkvOWMxV1dTeDFmRVlsTmRZ?= =?utf-8?B?bkpEdUFFckgwOE0raXlIMk80OTZUMUFuOTFPV2VCeHBBWnRRMS8zSnBibklU?= =?utf-8?B?SFFkVnFuTHFFd0Myd05tWXdBNS9YVGlLbEo5bW9PWDlpeWJzSGpEMWFmS0Vz?= =?utf-8?B?K05XQXZkOVJqOU9Ya25nUmx5M1l0NTlreGYzLzJGc3pXZFdVWEpwNGhQeHFn?= =?utf-8?B?cUc1VEtLbC9QbjFwWGR1dDJ0U2FjZDQ1OXk3Uk5vUUxhMHA2R0krbHk1bjNC?= =?utf-8?B?YlhrREJVUVcvQmVTYVZZcWdWNGwyaVdiaTZuK2JsNi9TVDFkOTQ3VytaeUU4?= =?utf-8?B?ZlZJZGppWUtOTC9Sa1poSys0cmJZbE1UUThMaFZuN1dJVHk5aU1IMElvRDBX?= =?utf-8?B?a1RUWDhKcS8rWWhObld4ekxoVzN3Vi9zTEpBSTBTR1JpUUQwZmRTWWFYTHBJ?= =?utf-8?B?VndmWmhzSzlOb3RpNmM1dFF4YUtjdEhtY2dTSW55Q2I5aGxxNDFPb0VmODZF?= =?utf-8?B?MkV1V3hrdlFDQzIyMHZZMEl2cXpHVEdVYVc0Q0tST25nTUdWTVdLNE5ubnNJ?= =?utf-8?B?RHp0WU9wcGF5Z1VmY2x4b3N5VFJ0N1FaakZtYXFuTUY1QTlTbi9TNW1IalZG?= =?utf-8?B?V3hDSDJLWHMyV3FUTC9NNDdERy9jZjUwY0UveFdBWlRrWHZHTHJpNTZDMmdn?= =?utf-8?B?ckFrTHRQSXJoQkJCSkJDbTNFbU9yMDA3dFBhckpuRkhESW52K2tNZEJreDRN?= =?utf-8?B?Z0E9PQ==?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CO1PR11MB4929.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: b28b0179-7660-4fc8-558d-08da92833263 X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Sep 2022 16:49:00.9775 (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: dUC76ZEzShQ4iUjnXwl0nG9wU5a1EvOv1hf4pkncO1lvffdN2svma1h1jma0f9dAdHkNC8gNI0GkBOR2HMhjzlYW5UEMazdqEnwc1sUtUKQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA2PR11MB4795 Return-Path: michael.d.kinney@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SSBzZWUgYSBtaXggb2YgaW5saW5lIGFzc2VtYmx5IGFuZCAuUyBmaWxlcy4gIFJlY29tbWVuZCBh dm9pZGluZyBpbmxpbmUgYXNzZW1ibHkuDQoNCkFsc28gYXBwZWFycyB0byBiZSBzb21lIFRBQiBj aGFyYWN0ZXJzIGluIHRoaXMgcGF0Y2guICBDb252ZXJ0IHRhYnMgdG8gc3BhY2VzLg0KDQpNaWtl DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogZGV2ZWxAZWRrMi5ncm91 cHMuaW8gPGRldmVsQGVkazIuZ3JvdXBzLmlvPiBPbiBCZWhhbGYgT2YgeGlhbmdsYWkNCj4gU2Vu dDogVGh1cnNkYXksIFNlcHRlbWJlciA4LCAyMDIyIDg6MTIgUE0NCj4gVG86IGRldmVsQGVkazIu Z3JvdXBzLmlvDQo+IENjOiBtYW9iaWJvQGxvb25nc29uLmNuDQo+IFN1YmplY3Q6IFtlZGsyLWRl dmVsXSBbZWRrMi1wbGF0Zm9ybXNdW1BBVENIIFYxIDA2LzE2XSBQbGF0Zm9ybS9Mb29uZ3Nvbjog QWRkIFN0YWJsZVRpbWVyTGliLg0KPiANCj4gVGhpcyBsaWJyYXJ5IHByb3ZpZGVzIGEgZGVsYXkg aW50ZXJmYWNlIGFuZCBhIHRpbWluZyBpbnRlcmZhY2UuDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiB4 aWFuZ2xhaSBsaSA8bGl4aWFuZ2xhaUBsb29uZ3Nvbi5jbj4NCj4gLS0tDQo+ICAuLi4vSW5jbHVk ZS9MaWJyYXJ5L1N0YWJsZVRpbWVyLmggICAgICAgICAgICAgfCAgNDIgKysrDQo+ICAuLi4vTGli cmFyeS9TdGFibGVUaW1lckxpYi9Db3VudC5TICAgICAgICAgICAgfCAgMjYgKysNCj4gIC4uLi9M aWJyYXJ5L1N0YWJsZVRpbWVyTGliL1RpbWVyTGliLmMgICAgICAgICB8IDI2MiArKysrKysrKysr KysrKysrKysNCj4gIC4uLi9MaWJyYXJ5L1N0YWJsZVRpbWVyTGliL1RpbWVyTGliLmluZiAgICAg ICB8ICAyOCArKw0KPiAgNCBmaWxlcyBjaGFuZ2VkLCAzNTggaW5zZXJ0aW9ucygrKQ0KPiAgY3Jl YXRlIG1vZGUgMTAwNjQ0IFBsYXRmb3JtL0xvb25nc29uL0xvb25nQXJjaFFlbXVQa2cvSW5jbHVk ZS9MaWJyYXJ5L1N0YWJsZVRpbWVyLmgNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBQbGF0Zm9ybS9M b29uZ3Nvbi9Mb29uZ0FyY2hRZW11UGtnL0xpYnJhcnkvU3RhYmxlVGltZXJMaWIvQ291bnQuUw0K PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IFBsYXRmb3JtL0xvb25nc29uL0xvb25nQXJjaFFlbXVQa2cv TGlicmFyeS9TdGFibGVUaW1lckxpYi9UaW1lckxpYi5jDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQg UGxhdGZvcm0vTG9vbmdzb24vTG9vbmdBcmNoUWVtdVBrZy9MaWJyYXJ5L1N0YWJsZVRpbWVyTGli L1RpbWVyTGliLmluZg0KPiANCj4gZGlmZiAtLWdpdCBhL1BsYXRmb3JtL0xvb25nc29uL0xvb25n QXJjaFFlbXVQa2cvSW5jbHVkZS9MaWJyYXJ5L1N0YWJsZVRpbWVyLmgNCj4gYi9QbGF0Zm9ybS9M b29uZ3Nvbi9Mb29uZ0FyY2hRZW11UGtnL0luY2x1ZGUvTGlicmFyeS9TdGFibGVUaW1lci5oDQo+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAuLmJkNmExZWI5MGYNCj4g LS0tIC9kZXYvbnVsbA0KPiArKysgYi9QbGF0Zm9ybS9Mb29uZ3Nvbi9Mb29uZ0FyY2hRZW11UGtn L0luY2x1ZGUvTGlicmFyeS9TdGFibGVUaW1lci5oDQo+IEBAIC0wLDAgKzEsNDIgQEANCj4gKy8q KiBAZmlsZQ0KPiANCj4gKw0KPiANCj4gKyAgQ29weXJpZ2h0IChjKSAyMDIxIExvb25nc29uIFRl Y2hub2xvZ3kgQ29ycG9yYXRpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ IA0KPiArDQo+IA0KPiArICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBh dGVudA0KPiANCj4gKw0KPiANCj4gKyAgQHBhciBHbG9zc2FyeToNCj4gDQo+ICsgICAgLSBDc3Ig ICAgLSBDcHUgU3RhdHVzIFJlZ2lzdGVyDQo+IA0KPiArICAgIC0gQ2FsYyAgIC0gQ2FsY3VsYXRp b24NCj4gDQo+ICsgICAgLSBGcmVxICAgLSBmcmVxdWVuY3kNCj4gDQo+ICsqKi8NCj4gDQo+ICsN Cj4gDQo+ICsjaWZuZGVmIFNUQUJMRV9USU1FUl9IXw0KPiANCj4gKyNkZWZpbmUgU1RBQkxFX1RJ TUVSX0hfDQo+IA0KPiArI2luY2x1ZGUgIkxpYnJhcnkvQ3B1LmgiDQo+IA0KPiArDQo+IA0KPiAr LyoqDQo+IA0KPiArICBHZXRzIHRoZSB0aW1lciBjb3VudCB2YWx1ZS4NCj4gDQo+ICsNCj4gDQo+ ICsgIEBwYXJhbVtdIFZPSUQNCj4gDQo+ICsNCj4gDQo+ICsgIEByZXR2YWwgIHRpbWVyIGNvdW50 IHZhbHVlLg0KPiANCj4gKyoqLw0KPiANCj4gK1VJTlRODQo+IA0KPiArRUZJQVBJDQo+IA0KPiAr Q3NyUmVhZFRpbWUgKA0KPiANCj4gKyAgVk9JRA0KPiANCj4gKyAgKTsNCj4gDQo+ICsNCj4gDQo+ ICsvKioNCj4gDQo+ICsgIENhbGN1bGF0ZSB0aGUgdGltZXIgZnJlcXVlbmN5Lg0KPiANCj4gKw0K PiANCj4gKyAgQHBhcmFtW10gVk9JRA0KPiANCj4gKw0KPiANCj4gKyAgQHJldHZhbCAgVGltZXIg ZnJlcXVlbmN5Lg0KPiANCj4gKyoqLw0KPiANCj4gK1VJTlQzMg0KPiANCj4gK0VGSUFQSQ0KPiAN Cj4gK0NhbGNDb25zdEZyZXEgKA0KPiANCj4gKyAgVk9JRA0KPiANCj4gKyAgKTsNCj4gDQo+ICsj ZW5kaWYNCj4gDQo+IGRpZmYgLS1naXQgYS9QbGF0Zm9ybS9Mb29uZ3Nvbi9Mb29uZ0FyY2hRZW11 UGtnL0xpYnJhcnkvU3RhYmxlVGltZXJMaWIvQ291bnQuUw0KPiBiL1BsYXRmb3JtL0xvb25nc29u L0xvb25nQXJjaFFlbXVQa2cvTGlicmFyeS9TdGFibGVUaW1lckxpYi9Db3VudC5TDQo+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAuLjQyZjg3OGNhZjgNCj4gLS0tIC9k ZXYvbnVsbA0KPiArKysgYi9QbGF0Zm9ybS9Mb29uZ3Nvbi9Mb29uZ0FyY2hRZW11UGtnL0xpYnJh cnkvU3RhYmxlVGltZXJMaWIvQ291bnQuUw0KPiBAQCAtMCwwICsxLDI2IEBADQo+ICsjLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tDQo+IA0KPiArIw0KPiANCj4gKyMgQ291bnQgZm9yIExvb25nQXJjaA0K PiANCj4gKyMNCj4gDQo+ICsjIENvcHlyaWdodCAoYykgMjAyMSBMb29uZ3NvbiBUZWNobm9sb2d5 IENvcnBvcmF0aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiANCj4gKyMN Cj4gDQo+ICsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ IA0KPiArIw0KPiANCj4gKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gDQo+ICsNCj4gDQo+ICsj aWZuZGVmIF9fQVNTRU1CTFlfXw0KPiANCj4gKyNkZWZpbmUgIF9fQVNTRU1CTFlfXw0KPiANCj4g KyNlbmRpZg0KPiANCj4gKw0KPiANCj4gKyNpbmNsdWRlICJMaWJyYXJ5L0NwdS5oIg0KPiANCj4g KyNpbmNsdWRlICJMb29uZ0FyY2hBc21NYWNyby5oIg0KPiANCj4gKyMNCj4gDQo+ICsjIFNldCBj cHUgaW50ZXJydXB0cw0KPiANCj4gKyMgQHBhcmFtIEEwIFRoZSBpbnRlcnJ1cHQgbnVtYmVyDQo+ IA0KPiArIw0KPiANCj4gK0FTTV9GVU5DKENwdVNldElQKQ0KPiANCj4gKyAgICBjc3JyZCAgIFQw LCBMT09OR0FSQ0hfQ1NSX0VDRkcNCj4gDQo+ICsgICAgb3IgICAgICBUMCwgVDAsIEEwDQo+IA0K PiArICAgIGNzcndyICAgVDAsIExPT05HQVJDSF9DU1JfRUNGRw0KPiANCj4gKyAgICBqaXJsICAg IFpFUk8sIFJBLDANCj4gDQo+ICsNCj4gDQo+IGRpZmYgLS1naXQgYS9QbGF0Zm9ybS9Mb29uZ3Nv bi9Mb29uZ0FyY2hRZW11UGtnL0xpYnJhcnkvU3RhYmxlVGltZXJMaWIvVGltZXJMaWIuYw0KPiBi L1BsYXRmb3JtL0xvb25nc29uL0xvb25nQXJjaFFlbXVQa2cvTGlicmFyeS9TdGFibGVUaW1lckxp Yi9UaW1lckxpYi5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAu LjIxZTM3NDllZTYNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9QbGF0Zm9ybS9Mb29uZ3Nvbi9M b29uZ0FyY2hRZW11UGtnL0xpYnJhcnkvU3RhYmxlVGltZXJMaWIvVGltZXJMaWIuYw0KPiBAQCAt MCwwICsxLDI2MiBAQA0KPiArLyoqIEBmaWxlDQo+IA0KPiArICBHZW5lcmljIExvb25nQXJjaCBp bXBsZW1lbnRhdGlvbiBvZiBUaW1lckxpYi5oDQo+IA0KPiArDQo+IA0KPiArICBDb3B5cmlnaHQg KGMpIDIwMjEgTG9vbmdzb24gVGVjaG5vbG9neSBDb3Jwb3JhdGlvbiBMaW1pdGVkLiBBbGwgcmln aHRzIHJlc2VydmVkLjxCUj4NCj4gDQo+ICsNCj4gDQo+ICsgIFNQRFgtTGljZW5zZS1JZGVudGlm aWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+IA0KPiArDQo+IA0KPiArICBAcGFyIEdsb3NzYXJ5 Og0KPiANCj4gKyAgICAtIEZyZXEgLSBGcmVxdWVuY3kNCj4gDQo+ICsgICAgLSBDc3IgIC0gQ3B1 IFN0YXR1cyBSZWdpc3Rlcg0KPiANCj4gKyAgICAtIGNhbGMgLSBjYWxjdWxhdGUNCj4gDQo+ICsq Ki8NCj4gDQo+ICsNCj4gDQo+ICsjaW5jbHVkZSA8QmFzZS5oPg0KPiANCj4gKyNpbmNsdWRlIDxM aWJyYXJ5L1RpbWVyTGliLmg+DQo+IA0KPiArI2luY2x1ZGUgPExpYnJhcnkvQmFzZUxpYi5oPg0K PiANCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0RlYnVnTGliLmg+DQo+IA0KPiArI2luY2x1ZGUgIkxp YnJhcnkvU3RhYmxlVGltZXIuaCINCj4gDQo+ICsjaW5jbHVkZSAiTGlicmFyeS9DcHUuaCINCj4g DQo+ICsNCj4gDQo+ICtVSU5UMzIgU3RhYmxlVGltZXJGcmVxID0gMDsNCj4gDQo+ICsNCj4gDQo+ ICsvKioNCj4gDQo+ICsgIEdldHMgdGhlIHRpbWVyIGNvdW50IHZhbHVlLg0KPiANCj4gKw0KPiAN Cj4gKyAgQHBhcmFtW10gVk9JRA0KPiANCj4gKw0KPiANCj4gKyAgQHJldHZhbCAgdGltZXIgY291 bnQgdmFsdWUuDQo+IA0KPiArKiovDQo+IA0KPiArVUlOVE4NCj4gDQo+ICtFRklBUEkNCj4gDQo+ ICtDc3JSZWFkVGltZSAoDQo+IA0KPiArICBWT0lEDQo+IA0KPiArICApDQo+IA0KPiArew0KPiAN Cj4gKyAgVUlOVE4gVmFsdWUgPSAwOw0KPiANCj4gKyAgX19hc21fXyBfX3ZvbGF0aWxlX18oDQo+ IA0KPiArICAgICAgIiByZHRpbWUuZCAgICUwLCAkcjBcbiINCj4gDQo+ICsgICAgICA6ICI9ciIg KFZhbHVlKSk7DQo+IA0KPiArICByZXR1cm4gVmFsdWU7DQo+IA0KPiArfQ0KPiANCj4gKw0KPiAN Cj4gKy8qKg0KPiANCj4gKyAgQ2FsY3VsYXRlIHRoZSB0aW1lciBmcmVxdWVuY3kuDQo+IA0KPiAr DQo+IA0KPiArICBAcGFyYW1bXSBWT0lEDQo+IA0KPiArDQo+IA0KPiArICBAcmV0dmFsICBUaW1l ciBmcmVxdWVuY3kuDQo+IA0KPiArKiovDQo+IA0KPiArVUlOVDMyDQo+IA0KPiArRUZJQVBJDQo+ IA0KPiArQ2FsY0NvbnN0RnJlcSAoDQo+IA0KPiArICBWT0lEDQo+IA0KPiArICApDQo+IA0KPiAr ew0KPiANCj4gKyAgVUlOVDMyIFJlc3VsdDsNCj4gDQo+ICsgIFVJTlQzMiBCYXNlRnJlcTsNCj4g DQo+ICsgIFVJTlQzMiBDbG9ja011bHRpcGxpZXI7DQo+IA0KPiArICBVSU5UMzIgQ2xvY2tEaXZp ZGU7DQo+IA0KPiArDQo+IA0KPiArICBMT09OR0FSQ0hfR0VUX0NQVUNGRyAoQmFzZUZyZXEsIExP T05HQVJDSF9DUFVDRkc0KTsNCj4gDQo+ICsgIExPT05HQVJDSF9HRVRfQ1BVQ0ZHIChSZXN1bHQs IExPT05HQVJDSF9DUFVDRkc1KTsNCj4gDQo+ICsgIENsb2NrTXVsdGlwbGllciA9IFJlc3VsdCAm IDB4ZmZmZjsNCj4gDQo+ICsgIENsb2NrRGl2aWRlID0gKFJlc3VsdCA+PiAxNikgJiAweGZmZmY7 DQo+IA0KPiArDQo+IA0KPiArICBpZiAoKCFCYXNlRnJlcSkNCj4gDQo+ICsgICAgfHwgKCFDbG9j a011bHRpcGxpZXIpDQo+IA0KPiArICAgIHx8ICghQ2xvY2tEaXZpZGUpKQ0KPiANCj4gKyAgew0K PiANCj4gKyAgICByZXR1cm4gMDsNCj4gDQo+ICsgIH0NCj4gDQo+ICsgIGVsc2Ugew0KPiANCj4g KyAgICByZXR1cm4gKEJhc2VGcmVxICogQ2xvY2tNdWx0aXBsaWVyIC8gQ2xvY2tEaXZpZGUpOw0K PiANCj4gKyAgfQ0KPiANCj4gK30NCj4gDQo+ICsvKioNCj4gDQo+ICsgIEdldCB0aGUgdGltZXIg ZnJlcXVlbmN5Lg0KPiANCj4gKw0KPiANCj4gKyAgQHBhcmFtW10gVk9JRA0KPiANCj4gKw0KPiAN Cj4gKyAgQHJldHZhbCAgVGltZXIgZnJlcXVlbmN5Lg0KPiANCj4gKyoqLw0KPiANCj4gK1VJTlQz Mg0KPiANCj4gK0VGSUFQSQ0KPiANCj4gK0dldEZyZXEgKA0KPiANCj4gKyAgVk9JRA0KPiANCj4g KyAgKQ0KPiANCj4gK3sNCj4gDQo+ICsgIGlmIChTdGFibGVUaW1lckZyZXEpIHsNCj4gDQo+ICsg IH0gZWxzZSB7DQo+IA0KPiArICAgIFN0YWJsZVRpbWVyRnJlcSA9IENhbGNDb25zdEZyZXEgKCk7 DQo+IA0KPiArICB9DQo+IA0KPiArDQo+IA0KPiArICByZXR1cm4gU3RhYmxlVGltZXJGcmVxOw0K PiANCj4gK30NCj4gDQo+ICsNCj4gDQo+ICsvKioNCj4gDQo+ICsgIFN0YWxscyB0aGUgQ1BVIGZv ciBhdCBsZWFzdCB0aGUgZ2l2ZW4gbnVtYmVyIG9mIG1pY3Jvc2Vjb25kcy4NCj4gDQo+ICsNCj4g DQo+ICsgIFN0YWxscyB0aGUgQ1BVIGZvciB0aGUgbnVtYmVyIG9mIG1pY3Jvc2Vjb25kcyBzcGVj aWZpZWQgYnkgTWljcm9TZWNvbmRzLg0KPiANCj4gKw0KPiANCj4gKyAgQHBhcmFtICBNaWNyb1Nl Y29uZHMgIFRoZSBtaW5pbXVtIG51bWJlciBvZiBtaWNyb3NlY29uZHMgdG8gZGVsYXkuDQo+IA0K PiArDQo+IA0KPiArICBAcmV0dXJuIE1pY3JvU2Vjb25kcw0KPiANCj4gKw0KPiANCj4gKyoqLw0K PiANCj4gK1VJTlRODQo+IA0KPiArRUZJQVBJDQo+IA0KPiArTWljcm9TZWNvbmREZWxheSAoDQo+ IA0KPiArICBJTiAgVUlOVE4gTWljcm9TZWNvbmRzDQo+IA0KPiArICApDQo+IA0KPiArew0KPiAN Cj4gKw0KPiANCj4gKyAgVUlOVE4gQ291bnQ7DQo+IA0KPiArICBVSU5UTiBUaWNrczsNCj4gDQo+ ICsgIFVJTlROIFN0YXJ0Ow0KPiANCj4gKyAgVUlOVE4gRW5kOw0KPiANCj4gKw0KPiANCj4gKyAg Q291bnQgPSBHZXRGcmVxICgpOw0KPiANCj4gKyAgQ291bnQgPSAoQ291bnQgKiBNaWNyb1NlY29u ZHMpIC8gMTAwMDAwMDsNCj4gDQo+ICsgIFN0YXJ0ID0gQ3NyUmVhZFRpbWUgKCk7DQo+IA0KPiAr ICBFbmQgPSBTdGFydCArIENvdW50Ow0KPiANCj4gKw0KPiANCj4gKyAgZG8gew0KPiANCj4gKyAg ICBUaWNrcyA9IENzclJlYWRUaW1lICgpOw0KPiANCj4gKyAgfSB3aGlsZSAoVGlja3MgPCBFbmQp Ow0KPiANCj4gKw0KPiANCj4gKyAgcmV0dXJuIE1pY3JvU2Vjb25kczsNCj4gDQo+ICt9DQo+IA0K PiArDQo+IA0KPiArLyoqDQo+IA0KPiArICBTdGFsbHMgdGhlIENQVSBmb3IgYXQgbGVhc3QgdGhl IGdpdmVuIG51bWJlciBvZiBuYW5vc2Vjb25kcy4NCj4gDQo+ICsNCj4gDQo+ICsgIFN0YWxscyB0 aGUgQ1BVIGZvciB0aGUgbnVtYmVyIG9mIG5hbm9zZWNvbmRzIHNwZWNpZmllZCBieSBOYW5vU2Vj b25kcy4NCj4gDQo+ICsNCj4gDQo+ICsgIEBwYXJhbSAgTmFub1NlY29uZHMgVGhlIG1pbmltdW0g bnVtYmVyIG9mIG5hbm9zZWNvbmRzIHRvIGRlbGF5Lg0KPiANCj4gKw0KPiANCj4gKyAgQHJldHVy biBOYW5vU2Vjb25kcw0KPiANCj4gKw0KPiANCj4gKyoqLw0KPiANCj4gK1VJTlRODQo+IA0KPiAr RUZJQVBJDQo+IA0KPiArTmFub1NlY29uZERlbGF5ICgNCj4gDQo+ICsgIElOICAgICAgVUlOVE4g ICAgICAgICAgICAgICAgICAgICBOYW5vU2Vjb25kcw0KPiANCj4gKyAgKQ0KPiANCj4gK3sNCj4g DQo+ICsgIFVJTlQzMiAgTWljcm9TZWNvbmRzOw0KPiANCj4gKw0KPiANCj4gKyAgaWYgKE5hbm9T ZWNvbmRzICUgMTAwMCA9PSAwKSB7DQo+IA0KPiArICAgIE1pY3JvU2Vjb25kcyA9IE5hbm9TZWNv bmRzLzEwMDA7DQo+IA0KPiArICB9ZWxzZSB7DQo+IA0KPiArICAgIE1pY3JvU2Vjb25kcyA9IE5h bm9TZWNvbmRzLzEwMDAgKyAxOw0KPiANCj4gKyAgfQ0KPiANCj4gKyAgTWljcm9TZWNvbmREZWxh eSAoTWljcm9TZWNvbmRzKTsNCj4gDQo+ICsNCj4gDQo+ICsgIHJldHVybiBOYW5vU2Vjb25kczsN Cj4gDQo+ICt9DQo+IA0KPiArDQo+IA0KPiArLyoqDQo+IA0KPiArICBSZXRyaWV2ZXMgdGhlIGN1 cnJlbnQgdmFsdWUgb2YgYSA2NC1iaXQgZnJlZSBydW5uaW5nIHBlcmZvcm1hbmNlIGNvdW50ZXIu DQo+IA0KPiArDQo+IA0KPiArICBSZXRyaWV2ZXMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgYSA2NC1i aXQgZnJlZSBydW5uaW5nIHBlcmZvcm1hbmNlIGNvdW50ZXIuIFRoZQ0KPiANCj4gKyAgY291bnRl ciBjYW4gZWl0aGVyIGNvdW50IHVwIGJ5IDEgb3IgY291bnQgZG93biBieSAxLiBJZiB0aGUgcGh5 c2ljYWwNCj4gDQo+ICsgIHBlcmZvcm1hbmNlIGNvdW50ZXIgY291bnRzIGJ5IGEgbGFyZ2VyIGlu Y3JlbWVudCwgdGhlbiB0aGUgY291bnRlciB2YWx1ZXMNCj4gDQo+ICsgIG11c3QgYmUgdHJhbnNs YXRlZC4gVGhlIHByb3BlcnRpZXMgb2YgdGhlIGNvdW50ZXIgY2FuIGJlIHJldHJpZXZlZCBmcm9t DQo+IA0KPiArICBHZXRQZXJmb3JtYW5jZUNvdW50ZXJQcm9wZXJ0aWVzICgpLg0KPiANCj4gKw0K PiANCj4gKyAgQHJldHVybiBUaGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZnJlZSBydW5uaW5nIHBl cmZvcm1hbmNlIGNvdW50ZXIuDQo+IA0KPiArDQo+IA0KPiArKiovDQo+IA0KPiArVUlOVDY0DQo+ IA0KPiArRUZJQVBJDQo+IA0KPiArR2V0UGVyZm9ybWFuY2VDb3VudGVyICgNCj4gDQo+ICsgIFZP SUQNCj4gDQo+ICsgICkNCj4gDQo+ICt7DQo+IA0KPiArICByZXR1cm4gQ3NyUmVhZFRpbWUgKCk7 DQo+IA0KPiArfQ0KPiANCj4gKy8qKg0KPiANCj4gKyAgUmV0cmlldmVzIHRoZSA2NC1iaXQgZnJl cXVlbmN5IGluIEh6IGFuZCB0aGUgcmFuZ2Ugb2YgcGVyZm9ybWFuY2UgY291bnRlcg0KPiANCj4g KyAgdmFsdWVzLg0KPiANCj4gKw0KPiANCj4gKyAgSWYgU3RhcnRWYWx1ZSBpcyBub3QgTlVMTCwg dGhlbiB0aGUgdmFsdWUgdGhhdCB0aGUgcGVyZm9ybWFuY2UgY291bnRlciBzdGFydHMNCj4gDQo+ ICsgIHdpdGggaW1tZWRpYXRlbHkgYWZ0ZXIgaXMgaXQgcm9sbHMgb3ZlciBpcyByZXR1cm5lZCBp biBTdGFydFZhbHVlLiBJZg0KPiANCj4gKyAgRW5kVmFsdWUgaXMgbm90IE5VTEwsIHRoZW4gdGhl IHZhbHVlIHRoYXQgdGhlIHBlcmZvcm1hbmNlIGNvdW50ZXIgZW5kIHdpdGgNCj4gDQo+ICsgIGlt bWVkaWF0ZWx5IGJlZm9yZSBpdCByb2xscyBvdmVyIGlzIHJldHVybmVkIGluIEVuZFZhbHVlLiBU aGUgNjQtYml0DQo+IA0KPiArICBmcmVxdWVuY3kgb2YgdGhlIHBlcmZvcm1hbmNlIGNvdW50ZXIg aW4gSHogaXMgYWx3YXlzIHJldHVybmVkLiBJZiBTdGFydFZhbHVlDQo+IA0KPiArICBpcyBsZXNz IHRoYW4gRW5kVmFsdWUsIHRoZW4gdGhlIHBlcmZvcm1hbmNlIGNvdW50ZXIgY291bnRzIHVwLiBJ ZiBTdGFydFZhbHVlDQo+IA0KPiArICBpcyBncmVhdGVyIHRoYW4gRW5kVmFsdWUsIHRoZW4gdGhl IHBlcmZvcm1hbmNlIGNvdW50ZXIgY291bnRzIGRvd24uIEZvcg0KPiANCj4gKyAgZXhhbXBsZSwg YSA2NC1iaXQgZnJlZSBydW5uaW5nIGNvdW50ZXIgdGhhdCBjb3VudHMgdXAgd291bGQgaGF2ZSBh IFN0YXJ0VmFsdWUNCj4gDQo+ICsgIG9mIDAgYW5kIGFuIEVuZFZhbHVlIG9mIDB4RkZGRkZGRkZG RkZGRkZGRi4gQSAyNC1iaXQgZnJlZSBydW5uaW5nIGNvdW50ZXINCj4gDQo+ICsgIHRoYXQgY291 bnRzIGRvd24gd291bGQgaGF2ZSBhIFN0YXJ0VmFsdWUgb2YgMHhGRkZGRkYgYW5kIGFuIEVuZFZh bHVlIG9mIDAuDQo+IA0KPiArDQo+IA0KPiArICBAcGFyYW0gIFN0YXJ0VmFsdWUgIFRoZSB2YWx1 ZSB0aGUgcGVyZm9ybWFuY2UgY291bnRlciBzdGFydHMgd2l0aCB3aGVuIGl0DQo+IA0KPiArICAg ICAgICAgICAgICAgICAgICAgIHJvbGxzIG92ZXIuDQo+IA0KPiArICBAcGFyYW0gIEVuZFZhbHVl ICAgIFRoZSB2YWx1ZSB0aGF0IHRoZSBwZXJmb3JtYW5jZSBjb3VudGVyIGVuZHMgd2l0aCBiZWZv cmUNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgaXQgcm9sbHMgb3Zlci4NCj4gDQo+ICsN Cj4gDQo+ICsgIEByZXR1cm4gVGhlIGZyZXF1ZW5jeSBpbiBIei4NCj4gDQo+ICsNCj4gDQo+ICsq Ki8NCj4gDQo+ICtVSU5UNjQNCj4gDQo+ICtFRklBUEkNCj4gDQo+ICtHZXRQZXJmb3JtYW5jZUNv dW50ZXJQcm9wZXJ0aWVzICgNCj4gDQo+ICsgIE9VVCAgICAgIFVJTlQ2NCAgICAgICAgICAgICAg ICAgICAgKlN0YXJ0VmFsdWUsICBPUFRJT05BTA0KPiANCj4gKyAgT1VUICAgICAgVUlOVDY0ICAg ICAgICAgICAgICAgICAgICAqRW5kVmFsdWUgICAgIE9QVElPTkFMDQo+IA0KPiArICApDQo+IA0K PiArew0KPiANCj4gKyAgaWYgKFN0YXJ0VmFsdWUgIT0gTlVMTCkgew0KPiANCj4gKyAgICAqU3Rh cnRWYWx1ZSA9IEJJVDI7DQo+IA0KPiArICB9DQo+IA0KPiArDQo+IA0KPiArICBpZiAoRW5kVmFs dWUgIT0gTlVMTCkgew0KPiANCj4gKyAgICAqRW5kVmFsdWUgPSBCSVQ0OCAtIDE7DQo+IA0KPiAr ICB9DQo+IA0KPiArDQo+IA0KPiArICByZXR1cm4gR2V0RnJlcSAoKTsNCj4gDQo+ICt9DQo+IA0K PiArDQo+IA0KPiArLyoqDQo+IA0KPiArICBDb252ZXJ0cyBlbGFwc2VkIHRpY2tzIG9mIHBlcmZv cm1hbmNlIGNvdW50ZXIgdG8gdGltZSBpbiBuYW5vc2Vjb25kcy4NCj4gDQo+ICsNCj4gDQo+ICsg IFRoaXMgZnVuY3Rpb24gY29udmVydHMgdGhlIGVsYXBzZWQgdGlja3Mgb2YgcnVubmluZyBwZXJm b3JtYW5jZSBjb3VudGVyIHRvDQo+IA0KPiArICB0aW1lIHZhbHVlIGluIHVuaXQgb2YgbmFub3Nl Y29uZHMuDQo+IA0KPiArDQo+IA0KPiArICBAcGFyYW0gIFRpY2tzICAgICBUaGUgbnVtYmVyIG9m IGVsYXBzZWQgdGlja3Mgb2YgcnVubmluZyBwZXJmb3JtYW5jZSBjb3VudGVyLg0KPiANCj4gKw0K PiANCj4gKyAgQHJldHVybiBUaGUgZWxhcHNlZCB0aW1lIGluIG5hbm9zZWNvbmRzLg0KPiANCj4g Kw0KPiANCj4gKyoqLw0KPiANCj4gK1VJTlQ2NA0KPiANCj4gK0VGSUFQSQ0KPiANCj4gK0dldFRp bWVJbk5hbm9TZWNvbmQgKA0KPiANCj4gKyAgSU4gICAgICBVSU5UNjQgICAgICAgICAgICAgICAg ICAgICBUaWNrcw0KPiANCj4gKyAgKQ0KPiANCj4gK3sNCj4gDQo+ICsgIFVJTlQ2NCAgRnJlcXVl bmN5Ow0KPiANCj4gKyAgVUlOVDY0ICBOYW5vU2Vjb25kczsNCj4gDQo+ICsgIFVJTlQ2NCAgUmVt YWluZGVyOw0KPiANCj4gKyAgSU5UTiAgICBTaGlmdDsNCj4gDQo+ICsNCj4gDQo+ICsgIEZyZXF1 ZW5jeSA9IEdldFBlcmZvcm1hbmNlQ291bnRlclByb3BlcnRpZXMgKE5VTEwsIE5VTEwpOw0KPiAN Cj4gKw0KPiANCj4gKyAgLy8NCj4gDQo+ICsgIC8vICAgICAgICAgIFRpY2tzDQo+IA0KPiArICAv LyBUaW1lID0gLS0tLS0tLS0tIHggMSwwMDAsMDAwLDAwMA0KPiANCj4gKyAgLy8gICAgICAgIEZy ZXF1ZW5jeQ0KPiANCj4gKyAgLy8NCj4gDQo+ICsgIE5hbm9TZWNvbmRzID0gTXVsdFU2NHgzMiAo RGl2VTY0eDY0UmVtYWluZGVyIChUaWNrcywgRnJlcXVlbmN5LCAmUmVtYWluZGVyKSwgMTAwMDAw MDAwMHUpOw0KPiANCj4gKw0KPiANCj4gKyAgLy8NCj4gDQo+ICsgIC8vIEVuc3VyZSAoUmVtYWlu ZGVyICogMSwwMDAsMDAwLDAwMCkgd2lsbCBub3Qgb3ZlcmZsb3cgNjQtYml0Lg0KPiANCj4gKyAg Ly8gU2luY2UgMl4yOSA8IDEsMDAwLDAwMCwwMDAgPSAweDNCOUFDQTAwIDwgMl4zMCwgUmVtYWlu ZGVyIHNob3VsZCA8IDJeKDY0LTMwKSA9IDJeMzQsDQo+IA0KPiArICAvLyBpLmUuIGhpZ2hlc3Qg Yml0IHNldCBpbiBSZW1haW5kZXIgc2hvdWxkIDw9IDMzLg0KPiANCj4gKyAgLy8NCj4gDQo+ICsg IFNoaWZ0ID0gTUFYICgwLCBIaWdoQml0U2V0NjQgKFJlbWFpbmRlcikgLSAzMyk7DQo+IA0KPiAr ICBSZW1haW5kZXIgPSBSU2hpZnRVNjQgKFJlbWFpbmRlciwgKFVJTlROKSBTaGlmdCk7DQo+IA0K PiArICBGcmVxdWVuY3kgPSBSU2hpZnRVNjQgKEZyZXF1ZW5jeSwgKFVJTlROKSBTaGlmdCk7DQo+ IA0KPiArICBOYW5vU2Vjb25kcyArPSBEaXZVNjR4NjRSZW1haW5kZXIgKE11bHRVNjR4MzIgKFJl bWFpbmRlciwgMTAwMDAwMDAwMHUpLCBGcmVxdWVuY3ksIE5VTEwpOw0KPiANCj4gKw0KPiANCj4g KyAgcmV0dXJuIE5hbm9TZWNvbmRzOw0KPiANCj4gK30NCj4gDQo+IGRpZmYgLS1naXQgYS9QbGF0 Zm9ybS9Mb29uZ3Nvbi9Mb29uZ0FyY2hRZW11UGtnL0xpYnJhcnkvU3RhYmxlVGltZXJMaWIvVGlt ZXJMaWIuaW5mDQo+IGIvUGxhdGZvcm0vTG9vbmdzb24vTG9vbmdBcmNoUWVtdVBrZy9MaWJyYXJ5 L1N0YWJsZVRpbWVyTGliL1RpbWVyTGliLmluZg0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBp bmRleCAwMDAwMDAwMDAwLi5mZWYwZmFjMDhjDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvUGxh dGZvcm0vTG9vbmdzb24vTG9vbmdBcmNoUWVtdVBrZy9MaWJyYXJ5L1N0YWJsZVRpbWVyTGliL1Rp bWVyTGliLmluZg0KPiBAQCAtMCwwICsxLDI4IEBADQo+ICsjIyBAZmlsZQ0KPiANCj4gKyMgIEdl bmVyaWMgTG9vbmdBcmNoIGltcGxlbWVudGF0aW9uIG9mIFRpbWVyTGliLmgNCj4gDQo+ICsjDQo+ IA0KPiArIyAgQ29weXJpZ2h0IChjKSAyMDIxIExvb25nc29uIFRlY2hub2xvZ3kgQ29ycG9yYXRp b24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+IA0KPiArIw0KPiANCj4gKyMg IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+IA0KPiArIw0K PiANCj4gKyMjDQo+IA0KPiArDQo+IA0KPiArW0RlZmluZXNdDQo+IA0KPiArICBJTkZfVkVSU0lP TiAgICAgICAgICAgICAgICAgICAgICAgPSAweDAwMDEwMDA1DQo+IA0KPiArICBCQVNFX05BTUUg ICAgICAgICAgICAgICAgICAgICAgICAgPSBUaW1lckxpYg0KPiANCj4gKyAgRklMRV9HVUlEICAg ICAgICAgICAgICAgICAgICAgICAgID0gNzQwMzg5QzctQ0M0NC00QTJGLTg4REMtODlEOTdEMzEy RTdDDQo+IA0KPiArICBNT0RVTEVfVFlQRSAgICAgICAgICAgICAgICAgICAgICAgPSBCQVNFDQo+ IA0KPiArICBWRVJTSU9OX1NUUklORyAgICAgICAgICAgICAgICAgICAgPSAxLjANCj4gDQo+ICsg IExJQlJBUllfQ0xBU1MgICAgICAgICAgICAgICAgICAgICA9IFRpbWVyTGliDQo+IA0KPiArDQo+ IA0KPiArW1NvdXJjZXMuY29tbW9uXQ0KPiANCj4gKyAgVGltZXJMaWIuYw0KPiANCj4gKyAgQ291 bnQuUw0KPiANCj4gKw0KPiANCj4gK1tQYWNrYWdlc10NCj4gDQo+ICsgIFBsYXRmb3JtL0xvb25n c29uL0xvb25nQXJjaFFlbXVQa2cvTG9vbmdzb24uZGVjDQo+IA0KPiArICBNZGVQa2cvTWRlUGtn LmRlYw0KPiANCj4gKw0KPiANCj4gK1tMaWJyYXJ5Q2xhc3Nlc10NCj4gDQo+ICsgIERlYnVnTGli DQo+IA0KPiArICBJb0xpYg0KPiANCj4gLS0NCj4gMi4zMS4xDQo+IA0KPiANCj4gDQo+IC09LT0t PS09LT0tPQ0KPiBHcm91cHMuaW8gTGlua3M6IFlvdSByZWNlaXZlIGFsbCBtZXNzYWdlcyBzZW50 IHRvIHRoaXMgZ3JvdXAuDQo+IFZpZXcvUmVwbHkgT25saW5lICgjOTM1NjApOiBodHRwczovL2Vk azIuZ3JvdXBzLmlvL2cvZGV2ZWwvbWVzc2FnZS85MzU2MA0KPiBNdXRlIFRoaXMgVG9waWM6IGh0 dHBzOi8vZ3JvdXBzLmlvL210LzkzNTY1NTgyLzE2NDM0OTYNCj4gR3JvdXAgT3duZXI6IGRldmVs K293bmVyQGVkazIuZ3JvdXBzLmlvDQo+IFVuc3Vic2NyaWJlOiBodHRwczovL2VkazIuZ3JvdXBz LmlvL2cvZGV2ZWwvdW5zdWIgW21pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tXQ0KPiAtPS09LT0t PS09LT0NCj4gDQoNCg==