From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by mx.groups.io with SMTP id smtpd.web10.6922.1633997356423873888 for ; Mon, 11 Oct 2021 17:09:18 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=h5SQud6l; spf=pass (domain: intel.com, ip: 192.55.52.88, mailfrom: ianx.kuo@intel.com) X-IronPort-AV: E=McAfee;i="6200,9189,10134"; a="250391684" X-IronPort-AV: E=Sophos;i="5.85,366,1624345200"; d="scan'208";a="250391684" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Oct 2021 17:09:12 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.85,366,1624345200"; d="scan'208";a="716585888" Received: from fmsmsx606.amr.corp.intel.com ([10.18.126.86]) by fmsmga005.fm.intel.com with ESMTP; 11 Oct 2021 17:09:10 -0700 Received: from fmsmsx601.amr.corp.intel.com (10.18.126.81) by fmsmsx606.amr.corp.intel.com (10.18.126.86) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Mon, 11 Oct 2021 17:09:09 -0700 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) 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.2242.12 via Frontend Transport; Mon, 11 Oct 2021 17:09:09 -0700 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (104.47.55.103) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.12; Mon, 11 Oct 2021 17:09:09 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=at0+e3+SkYcbFfB5QRf0k3AfzLiM80W0NteyWo/6TRA+v63fN+OFtDEuiB/fg/6sn146t3F5OOUBWG7tcmoaKTxNxoWtA3AOcWA1qpr4Tx9HEe9olNoI/TRCgdR7OWUCh1Hym6uOISY1DnZI0SrFU6iRNAmEUrRMaNz2wDhMbLveXb/Kj/gYGoFhuGMpjMYVcqKI8elumnz2p9j/XePzKZC4EOMbRM90v51s9ezlkqpl3Byk/jVKLMw56QBJcWtP1BUQE6EACqsmjJ27slbVcf9S3n+IIl1ZsTJIx/8fYOjv++bYmr6FCje0j73k9hIyoklbJ5mzED7L+yJKrNTEEA== 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=4IlV+bm57MSNecpOVpU8k5QqKOVVq3Z2KQZUlsgj/9A=; b=WjD10DFkNC10oMY3bRAlZ+vNDM/vF0EhMyfx+86btW3cdTCCk2U3Z4YhjaEuiMFhEcROB/J+iT3O/PGnjCLg50/fgIgamjLY/04LMOPkFywyyYG1cfFUvB89Zt381pzTYHidDunB5/DYdDy2bd3181FbE6GZShYXkFUiPXyJJwwTqz2P25lPeIcqKrcYPPVmnz+bVSjvDoD3fNeW89DJFLS3mWmahS4US2LdK28FVjk5zPSwbR8VApc6qqK4SJzn98NDgtn7/G7PRiCykL+q0TYEUszJ6Kg/TITxQuiCgRJBTAmjxrfdFehCtmbpk34TzF133a5SMN5u3o5SPnTlIQ== 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=4IlV+bm57MSNecpOVpU8k5QqKOVVq3Z2KQZUlsgj/9A=; b=h5SQud6lfimySSdx7OfzEULCLYZL8wirUozUV+UJ3idhQ6Aydn+myA6DksbAAe/p63o+UOP7bO08LN2zyIIedZZAkzfpzzSseATgnL0KGnawlnSO6b1agtTvfCNE/WhphxJbg97xliTmYK3kDayP80OyW4Fit9MgQ2DUXxvRaHo= Received: from PH0PR11MB5174.namprd11.prod.outlook.com (2603:10b6:510:3b::12) by PH0PR11MB5125.namprd11.prod.outlook.com (2603:10b6:510:3e::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4587.19; Tue, 12 Oct 2021 00:09:08 +0000 Received: from PH0PR11MB5174.namprd11.prod.outlook.com ([fe80::4435:90ac:24fe:b6a6]) by PH0PR11MB5174.namprd11.prod.outlook.com ([fe80::4435:90ac:24fe:b6a6%7]) with mapi id 15.20.4587.026; Tue, 12 Oct 2021 00:09:08 +0000 From: "IanX Kuo" To: "devel@edk2.groups.io" , "gaoliming@byosoft.com.cn" , =?utf-8?B?J01hcnZpbiBIw6R1c2VyJw==?= , "Kinney, Michael D" CC: "Chan, Amy" , "Ni, Ray" , "Liu, Zhiguang" Subject: Re: [edk2-devel] [PATCH v7 1/1] MdePkg/BaseLib: Add QuickSort function on BaseLib Thread-Topic: [edk2-devel] [PATCH v7 1/1] MdePkg/BaseLib: Add QuickSort function on BaseLib Thread-Index: AQHXu9tSqN6kYGEt60K/wC65ofNw1qvIXRwAgADikYCAAAZJAIADvtMAgAF9cYA= Date: Tue, 12 Oct 2021 00:09:08 +0000 Message-ID: References: <20211008002710.763-1-ianx.kuo@intel.com> <20211008002710.763-2-ianx.kuo@intel.com> <006601d7bbea$69db2570$3d917050$@byosoft.com.cn> <6895b571-c067-c9ac-c0ed-42f6a793b43c@posteo.de> <006501d7be3e$40420fc0$c0c62f40$@byosoft.com.cn> In-Reply-To: <006501d7be3e$40420fc0$c0c62f40$@byosoft.com.cn> Accept-Language: en-AS, zh-TW, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: 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-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 8ad5f481-78ce-49ce-7872-08d98d14830f x-ms-traffictypediagnostic: PH0PR11MB5125: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:4502; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 5E3VdDI5iS8PW2sw25vWRszP8LYUV+pOt+T+XYvVbJ2GcqTlCXIMaZT5rGQvW0Rg6xFuQOm/jzNuXRbBw2entttzdoXa+n+KGlvmWixj1vmAaoIIJ40kgYbOWD8zsBVsD966jQpLlBPpVKs7FGxjf/nBdL68mRGtruhDs4AY5dkiem2LRgvtpB+RMqXIWw3R0vhCRu8Ruk3+NY1w1L3XNYUIvLxDCCr/JHUlyPrTzbGTrS+/0ytTpUwF8coTo/eQLNYT4+dNbBvp6/am6dV2IdxZk7X3d4619DLJKkiDtncPcMM3iut92ta+j63IWkORWoo8AxCPdpjILC/G/78F+H12R2ZEpZbwoDTY3gYXVelXochya5fkaZCBUZKn0u6ABb+vM8PNIXEUgLLUtMDMIUDY6HY0QcGvFyl4EtnK6GxfOfvz0Lq6mtZp/x8uTJQIt/ZZzAWPGROjnjjgJ94TnFQZgVijr9mu4+juO0i2sPKlM7S4OWRm0twxS2P5Kd+vl5UCAJLyU7vHXbYTKpfDDsjsNJwml4/oQ0LY94DSMdwMsopmsg6jmNyQHBr4X7d+/+cIEOpoHC26VZJQ4DwYwsQ8fnW2v0KSLlVaAl/h7H9MLac10tbI69WJ2nlmfcws7Ph5eQwhYpicd7ARb5zNzx0Mz0IZEveUOk43gixykcn90jwYTZ7fh9Y9IUk/iS90UnEd3OirG0WWO421F7RNcdGYRaf2bznNzCq4ERlYxxFtze4EHdet98fq4bbL16IBykWyU8YfcVjw9FYujNS7GxPjfInlhL7XhBaZr2D/tO5OiJK7fekmgdtIAACFI/Yx7MRl7XjC6K+DVq9cLC8l8A== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH0PR11MB5174.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(122000001)(508600001)(55016002)(5660300002)(966005)(8676002)(52536014)(86362001)(38100700002)(6636002)(33656002)(8936002)(83380400001)(30864003)(110136005)(186003)(2906002)(26005)(53546011)(54906003)(66446008)(64756008)(66556008)(316002)(71200400001)(4326008)(7696005)(76116006)(107886003)(6506007)(66476007)(38070700005)(9686003)(66574015)(66946007);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?WHVDRlRQcnU1cXk0MlhOZENVRUhaZUZxOXJxaStZL0R0M1BmQW5ENE1TbU9E?= =?utf-8?B?TEgvcERuWWNjUkRsdGVLMDF6TEtGRlRaQTZVOXh0b3l5OE1DbUdaa3FueHlD?= =?utf-8?B?SFZYWVNqNkVJRmhOTGF2K2N1blhjUmdwSWlpcng5UStCa203d2t4dnhUU0Za?= =?utf-8?B?V0pDQm83eFBBNG1PYUdzazJIWWlLc0hBek4vRnVhUVVxbFZZYWxBK29DWm4r?= =?utf-8?B?c2ozdmZNenZLSjdaYktxb0pJeHh0dnBwcXdVem1zQXhpRVZpMXZwM1M2Ylk1?= =?utf-8?B?Rlp6dDhWOVNIL2o1cjF4VE56bWZ6d2dLQ29oWWdNdlBGUDBIVnE5V29sY0VN?= =?utf-8?B?c3VadDROeEFKSi9IU0J3UWRwcmxwaTdFMERDYlFub0hQUTFzdDI2b3IrY2s0?= =?utf-8?B?UnROdnlldXJFd0VpY3UwKzhjeDNUQURTMndQcmVHN1Q3UFhTbmlUekFaVERQ?= =?utf-8?B?cjhXdEMrNGtkRXFuaWQ3YWkxd3hRN2UyNjYzWFNNZ1cyRWw0UjlrWWM1Vy9Q?= =?utf-8?B?NFVoUkRMQWcvNitLTFM2MS9FbE15TDJyZER6N0tTSnlDUmFpWWs2a1FYMjR4?= =?utf-8?B?SVRZWnRvdFRKSjU2UGhHeS9PYWcvZFNzWGxCWVJYR3RrTlFqK1VxTko1Yzla?= =?utf-8?B?M0VmeEQ0T2RQSkRzN3ZVNGpXTWRFTjBsU2VwemttTVZZZ25ZVlZkcm8rcG1n?= =?utf-8?B?bFFBUThsOVo0WXgrdWFHV3QvazluSkk0L1RUNGJER0lmSHZBYjgxUlBrZTA1?= =?utf-8?B?MFVocUxkTmxWZTh2S2JwdWV4RjJnVUlLOHROdnQ3ZlRJaERhdVJkSHFkOVFC?= =?utf-8?B?WlhRSURBTlJUeWtNb2tqRDRoWklSVDFIeFl2NmlxQ1puei9iamFmTmdkZGFj?= =?utf-8?B?bjRUaG5sQ1BKeFFuWHUwSGlURkZUbzRvdWhYblNPL2Vtc0pCZzVXMDJVb09o?= =?utf-8?B?NitTcXN3bVhhbURmRXkvQ2ZhMW4vUzVybWhtc3ZWdWVBZytUMjBjR0xwN0dD?= =?utf-8?B?TDdDUTRVQ045SmhNdEQrY0hPUEI2dHl5QnErcUNwZW1DWXhxTGUzUHNNUitn?= =?utf-8?B?SnJJYk1VMlBCS2REUVoxS0ZOZktvck1wT1VsVkx0REl6VG1DbW9RWUYweHBj?= =?utf-8?B?QlZxSVVtT3EwTktXMmhoNzh1cWxjNDF6cCtWRnpkZklVcjg3SlBaV2EzaXlz?= =?utf-8?B?S1N1NzN5MmtSSFVOTGkyMk9DSkhJRjF0R0MwL0w1dkg2c0V3UC9HUktSVnBu?= =?utf-8?B?bzVuWE5rdFduYWNLcnQ2YWlQbTNGMjY1MC9paHhvcnY5bk42SEFRUmhKNEJs?= =?utf-8?B?bHlVbWdKUjB1OHdXVXpvQ0ZZeU1DbzlBZGM1RnR0OW9kS0pGRlZKL3R5UC8w?= =?utf-8?B?RUN0bGNVVkFPRStMR2JZRG1MU2lHeGZZenl5cXkwZ1FJa2JBOVE0ZVFOTlZS?= =?utf-8?B?bFNycU1PQkJGWG84SUx3TldWR24ySkNlbC80VkFXbWc0T0pMcVRXUkZrVk0r?= =?utf-8?B?QXA4akhnUWFrN1o3WHJHamo2eUpZbXlJZVVrZzZTbHA2MUcyMjlXNWZUU3Nu?= =?utf-8?B?QWxCWFRXaVM1OUM5V21xUklOVXZDNVlOMit0aHZQaURaOExzWG9KOS9GMUl6?= =?utf-8?B?RDFtdTgxVmx2RWl5YVlFbEZCT0wxZlJyWkJSRzRmQ05PdGc3UE9HY3NZYWc1?= =?utf-8?B?eFVla3ozaHFNWk1pS2NhUTlVQmM2L0JlK2p4empJdURaKy8rdkEvTWhRVGw1?= =?utf-8?Q?elFaBxWIKPl8fQeXkjquIc1X54Rkg0PhSeGbAZC?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH0PR11MB5174.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8ad5f481-78ce-49ce-7872-08d98d14830f X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Oct 2021 00:09:08.2458 (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: FHIcTcSjvV5rwGGu0WSgkGOaT/SymLzKvof49jvlHHa6rUEsPaoMRtSTllOdhXquxhhwtpE+ldHIlGOSMdlcSw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR11MB5125 Return-Path: ianx.kuo@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SSBzZW5kIFBhdGNoIHY5LCBoYXZlIGFueW9uZSBmcmVlIGNhbiBoZWxwIG1lIGZvciB0aGUgcmV2 aWV3ZWQgYnkuDQpQYXRjaCB2OCBpcyAibW92ZSBTT1JUX0NPTVBBUkUgZGVmaW5pdGlvbiBmcm9t IE1kZU1vZHVsZVBrZ1xJbmNsdWRlXExpYnJhcnlcU29ydExpYi5oIHRvIE1kZVBrZ1xJbmNsdWRl XExpYnJhcnlcQmFzZUxpYi5oLCBhbmQgdGhlbiBsZXQgU29ydExpYi5oIGluY2x1ZGUgQmFzZUxp Yi5oLiINCg0KUGF0Y2ggdjkgaXMgcm9sbGJhY2sgdG8gUGF0Y2ggdjcuDQoNClRoYW5rcywNCklh biBLdW8NCi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQpGcm9tOiBkZXZlbEBlZGsyLmdyb3Vw cy5pbyA8ZGV2ZWxAZWRrMi5ncm91cHMuaW8+IE9uIEJlaGFsZiBPZiBnYW9saW1pbmcNClNlbnQ6 IE1vbmRheSwgT2N0b2JlciAxMSwgMjAyMSA5OjIxIEFNDQpUbzogJ01hcnZpbiBIw6R1c2VyJyA8 bWhhZXVzZXJAcG9zdGVvLmRlPjsgZGV2ZWxAZWRrMi5ncm91cHMuaW87IEtpbm5leSwgTWljaGFl bCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT47IEt1bywgSWFuWCA8aWFueC5rdW9AaW50 ZWwuY29tPg0KQ2M6IENoYW4sIEFteSA8YW15LmNoYW5AaW50ZWwuY29tPjsgTmksIFJheSA8cmF5 Lm5pQGludGVsLmNvbT47IExpdSwgWmhpZ3VhbmcgPHpoaWd1YW5nLmxpdUBpbnRlbC5jb20+DQpT dWJqZWN0OiDlm57lpI06IFtlZGsyLWRldmVsXSBbUEFUQ0ggdjcgMS8xXSBNZGVQa2cvQmFzZUxp YjogQWRkIFF1aWNrU29ydCBmdW5jdGlvbiBvbiBCYXNlTGliDQoNCk1pY2hhZWwgYW5kIE1hcnZp bjoNCiAgSSB1bmRlcnN0YW5kIHlvdXIgY29uY2Vybi4gSSB3YW50IHRvIHJlZHVjZSB0aGUgZHVw bGljYXRlZCBkZWZpbml0aW9uIGZvciB0aGUgc2FtZSBmdW5jdGlvbi4gSSB3aWxsIG5vdCBrZWVw IG15IGlkZWEgaWYgeW91IGFyZSBib3RoIE9LIHRvIGRlZmluZSBCQVNFX1NPUlRfQ09NUEFSRSBh bmQgU09SVF9DT01QQVJFLiANCg0KVGhhbmtzDQpMaW1pbmcNCj4gLS0tLS3pgq7ku7bljp/ku7Yt LS0tLQ0KPiDlj5Hku7bkuro6IE1hcnZpbiBIw6R1c2VyIDxtaGFldXNlckBwb3N0ZW8uZGU+DQo+ IOWPkemAgeaXtumXtDogMjAyMeW5tDEw5pyIOeaXpSAwOjA5DQo+IOaUtuS7tuS6ujogZGV2ZWxA ZWRrMi5ncm91cHMuaW87IG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tOyANCj4gZ2FvbGltaW5n QGJ5b3NvZnQuY29tLmNuOyBLdW8sIElhblggPGlhbngua3VvQGludGVsLmNvbT4NCj4g5oqE6YCB OiBDaGFuLCBBbXkgPGFteS5jaGFuQGludGVsLmNvbT47IE5pLCBSYXkgPHJheS5uaUBpbnRlbC5j b20+OyBMaXUsIA0KPiBaaGlndWFuZyA8emhpZ3VhbmcubGl1QGludGVsLmNvbT4NCj4g5Li76aKY OiBSZTogW2VkazItZGV2ZWxdIFtQQVRDSCB2NyAxLzFdIE1kZVBrZy9CYXNlTGliOiBBZGQgUXVp Y2tTb3J0IA0KPiBmdW5jdGlvbiBvbiBCYXNlTGliDQo+IA0KPiBIZXkgYWxsLA0KPiANCj4gSSBh bHNvIGRvbid0IHRoaW5rIGl0IG1ha2VzIG11Y2ggbG9naWNhbCBzZW5zZS4gVGhleSBhcmUgZGlz dGluY3QgQVBJcyANCj4gaW4gc2VwYXJhdGUgbGlicmFyaWVzIHRoYXQgaGFwcGVuIHRvIHRha2Ug YSBmdW5jdGlvbiB3aXRoIHRoZSBzYW1lIA0KPiBwcm90b3R5cGUuDQo+IA0KPiBJIHRoaW5rIHRo ZSBwYXRjaGVzIGxvb2sgZ29vZCBub3csIHRoYW5rcyENCj4gDQo+IEJlc3QgcmVnYXJkcywNCj4g TWFydmluDQo+IA0KPiBPbiAwOC8xMC8yMDIxIDE3OjQ2LCBNaWNoYWVsIEQgS2lubmV5IHdyb3Rl Og0KPiA+IEhpIExpbWluZywNCj4gPg0KPiA+IEluIGdlbmVyYWwgaXQgaXMgbm90IGEgZ29vZCBp ZGVhIHRvIGluY2x1ZGUgYSBsaWJyYXJ5IGluY2x1ZGUgZmlsZSANCj4gPiBmcm9tIGFub3RoZXIN Cj4gbGlicmFyeSBpbmNsdWRlIGZpbGUuDQo+ID4NCj4gPiBUaGlzIGJlY29tZXMgYSBoaWRkZW4g ZGVwZW5kZW5jeS4NCj4gPg0KPiA+IE1pa2UNCj4gPg0KPiA+PiAtLS0tLU9yaWdpbmFsIE1lc3Nh Z2UtLS0tLQ0KPiA+PiBGcm9tOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbyA8ZGV2ZWxAZWRrMi5ncm91 cHMuaW8+IE9uIEJlaGFsZiBPZg0KPiBnYW9saW1pbmcNCj4gPj4gU2VudDogVGh1cnNkYXksIE9j dG9iZXIgNywgMjAyMSA3OjE2IFBNDQo+ID4+IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsgS3Vv LCBJYW5YIDxpYW54Lmt1b0BpbnRlbC5jb20+DQo+ID4+IENjOiBDaGFuLCBBbXkgPGFteS5jaGFu QGludGVsLmNvbT47IE5pLCBSYXkgPHJheS5uaUBpbnRlbC5jb20+OyANCj4gPj4gS2lubmV5LA0K PiBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPjsgTGl1LA0KPiA+PiBaaGln dWFuZyA8emhpZ3VhbmcubGl1QGludGVsLmNvbT4NCj4gPj4gU3ViamVjdDog5Zue5aSNOiBbZWRr Mi1kZXZlbF0gW1BBVENIIHY3IDEvMV0gTWRlUGtnL0Jhc2VMaWI6IEFkZA0KPiBRdWlja1NvcnQg ZnVuY3Rpb24gb24gQmFzZUxpYg0KPiA+Pg0KPiA+PiBLdW86DQo+ID4+ICAgIEkgc3VnZ2VzdCB0 byBtb3ZlIFNPUlRfQ09NUEFSRSBkZWZpbml0aW9uIGZyb20gDQo+ID4+IE1kZU1vZHVsZVBrZ1xJ bmNsdWRlXExpYnJhcnlcU29ydExpYi5oIHRvDQo+IE1kZVBrZ1xJbmNsdWRlXExpYnJhcnlcQmFz ZUxpYi5oLA0KPiA+PiBhbmQgdGhlbiBsZXQgU29ydExpYi5oIGluY2x1ZGUgQmFzZUxpYi5oLg0K PiA+Pg0KPiA+PiBUaGFua3MNCj4gPj4gTGltaW5nDQo+ID4+PiAtLS0tLemCruS7tuWOn+S7ti0t LS0tDQo+ID4+PiDlj5Hku7bkuro6IGRldmVsQGVkazIuZ3JvdXBzLmlvIDxkZXZlbEBlZGsyLmdy b3Vwcy5pbz4g5Luj6KGoIElhblggS3VvDQo+ID4+PiDlj5HpgIHml7bpl7Q6IDIwMjHlubQxMOac iDjml6UgODoyNw0KPiA+Pj4g5pS25Lu25Lq6OiBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiA+Pj4g 5oqE6YCBOiBhbXkuY2hhbkBpbnRlbC5jb207IHJheS5uaUBpbnRlbC5jb207IElhblggS3VvIA0K PiA+Pj4gPGlhbngua3VvQGludGVsLmNvbT47IE1pY2hhZWwgRCBLaW5uZXkgDQo+ID4+PiA8bWlj aGFlbC5kLmtpbm5leUBpbnRlbC5jb20+OyBMaW1pbmcgR2FvIA0KPiA+Pj4gPGdhb2xpbWluZ0Bi eW9zb2Z0LmNvbS5jbj47IFpoaWd1YW5nIExpdSA8emhpZ3VhbmcubGl1QGludGVsLmNvbT4NCj4g Pj4+IOS4u+mimDogW2VkazItZGV2ZWxdIFtQQVRDSCB2NyAxLzFdIE1kZVBrZy9CYXNlTGliOiBB ZGQgUXVpY2tTb3J0DQo+IGZ1bmN0aW9uDQo+ID4+PiBvbiBCYXNlTGliDQo+ID4+Pg0KPiA+Pj4g RnJvbTogSWFuWCBLdW8gPGlhbngua3VvQGludGVsLmNvbT4NCj4gPj4+DQo+ID4+PiBSRUY6IGh0 dHBzOi8vYnVnemlsbGEudGlhbm9jb3JlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY3NQ0KPiA+Pj4N Cj4gPj4+IEFkZCBRdWlja1NvcnQgZnVuY3Rpb24gaW50byBCYXNlTGliDQo+ID4+Pg0KPiA+Pj4g Q2M6IFJheSBOaSA8cmF5Lm5pQGludGVsLmNvbT4NCj4gPj4+IENjOiBNaWNoYWVsIEQgS2lubmV5 IDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4gPj4+IENjOiBMaW1pbmcgR2FvIDxnYW9s aW1pbmdAYnlvc29mdC5jb20uY24+DQo+ID4+PiBDYzogWmhpZ3VhbmcgTGl1IDx6aGlndWFuZy5s aXVAaW50ZWwuY29tPg0KPiA+Pj4gU2lnbmVkLW9mZi1ieTogSWFuWCBLdW8gPGlhbngua3VvQGlu dGVsLmNvbT4NCj4gPj4+IC0tLQ0KPiA+Pj4gICBNZGVQa2cvSW5jbHVkZS9MaWJyYXJ5L0Jhc2VM aWIuaCAgICAgICAgICAgICAgfCAgNDkgKysrKysrKysNCj4gPj4+ICAgTWRlUGtnL0xpYnJhcnkv QmFzZUxpYi9CYXNlTGliLmluZiAgICAgICAgICAgIHwgICAxICsNCj4gPj4+ICAgTWRlUGtnL0xp YnJhcnkvQmFzZUxpYi9RdWlja1NvcnQuYyAgICAgICAgICAgIHwgMTE2DQo+ID4+PiArKysrKysr KysrKysrKysrKysNCj4gPj4+ICAgLi4uL0xpYnJhcnkvQmFzZUxpYi9Vbml0VGVzdEhvc3RCYXNl TGliLmluZiAgIHwgICAzICstDQo+ID4+PiAgIDQgZmlsZXMgY2hhbmdlZCwgMTY4IGluc2VydGlv bnMoKyksIDEgZGVsZXRpb24oLSkNCj4gPj4+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IE1kZVBrZy9M aWJyYXJ5L0Jhc2VMaWIvUXVpY2tTb3J0LmMNCj4gPj4+DQo+ID4+PiBkaWZmIC0tZ2l0IGEvTWRl UGtnL0luY2x1ZGUvTGlicmFyeS9CYXNlTGliLmgNCj4gPj4+IGIvTWRlUGtnL0luY2x1ZGUvTGli cmFyeS9CYXNlTGliLmgNCj4gPj4+IGluZGV4IDI0NTJjMWQ5MmUuLjBhZTBmNGU2YWYgMTAwNjQ0 DQo+ID4+PiAtLS0gYS9NZGVQa2cvSW5jbHVkZS9MaWJyYXJ5L0Jhc2VMaWIuaA0KPiA+Pj4gKysr IGIvTWRlUGtnL0luY2x1ZGUvTGlicmFyeS9CYXNlTGliLmgNCj4gPj4+IEBAIC0yODU2LDYgKzI4 NTYsNTUgQEAgUmVtb3ZlRW50cnlMaXN0ICgNCj4gPj4+ICAgLy8NCj4gPj4+DQo+ID4+PiAgIC8v IE1hdGggU2VydmljZXMNCj4gPj4+DQo+ID4+PiAgIC8vDQo+ID4+Pg0KPiA+Pj4gKy8qKg0KPiA+ Pj4NCj4gPj4+ICsgIFByb3RvdHlwZSBmb3IgY29tcGFyaXNvbiBmdW5jdGlvbiBmb3IgYW55IHR3 byBlbGVtZW50IHR5cGVzLg0KPiA+Pj4NCj4gPj4+ICsNCj4gPj4+DQo+ID4+PiArICBAcGFyYW1b aW5dIEJ1ZmZlcjEgICAgICAgICAgICAgICAgICBUaGUgcG9pbnRlciB0byBmaXJzdCBidWZmZXIu DQo+ID4+Pg0KPiA+Pj4gKyAgQHBhcmFtW2luXSBCdWZmZXIyICAgICAgICAgICAgICAgICAgVGhl IHBvaW50ZXIgdG8gc2Vjb25kDQo+IGJ1ZmZlci4NCj4gPj4+DQo+ID4+PiArDQo+ID4+Pg0KPiA+ Pj4gKyAgQHJldHZhbCAwICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyMSBlcXVhbCB0 byBCdWZmZXIyLg0KPiA+Pj4NCj4gPj4+ICsgIEByZXR1cm4gPDAgICAgICAgICAgICAgICAgICAg ICAgICAgIEJ1ZmZlcjEgaXMgbGVzcyB0aGFuDQo+IEJ1ZmZlcjIuDQo+ID4+Pg0KPiA+Pj4gKyAg QHJldHVybiA+MCAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyMSBpcyBncmVhdGVyIHRo YW4NCj4gPj4+IEJ1ZmZlcjIuDQo+ID4+Pg0KPiA+Pj4gKyoqLw0KPiA+Pj4NCj4gPj4+ICt0eXBl ZGVmDQo+ID4+Pg0KPiA+Pj4gK0lOVE4NCj4gPj4+DQo+ID4+PiArKEVGSUFQSSAqQkFTRV9TT1JU X0NPTVBBUkUpKA0KPiA+Pj4NCj4gPj4+ICsgIElOIENPTlNUIFZPSUQgICAgICAgICAgICAgICAg ICpCdWZmZXIxLA0KPiA+Pj4NCj4gPj4+ICsgIElOIENPTlNUIFZPSUQgICAgICAgICAgICAgICAg ICpCdWZmZXIyDQo+ID4+Pg0KPiA+Pj4gKyAgKTsNCj4gPj4+DQo+ID4+PiArDQo+ID4+Pg0KPiA+ Pj4gKy8qKg0KPiA+Pj4NCj4gPj4+ICsgIFRoaXMgZnVuY3Rpb24gaXMgaWRlbnRpY2FsIHRvIHBl cmZvcm0gUXVpY2tTb3J0LA0KPiA+Pj4NCj4gPj4+ICsgIGV4Y2VwdCB0aGF0IGlzIHVzZXMgdGhl IHByZS1hbGxvY2F0ZWQgYnVmZmVyIHNvIHRoZSBpbiBwbGFjZSANCj4gPj4+ICsgc29ydGluZw0K PiA+PiBkb2VzIG5vdA0KPiA+Pj4gbmVlZCB0bw0KPiA+Pj4NCj4gPj4+ICsgIGFsbG9jYXRlIGFu ZCBmcmVlIGJ1ZmZlcnMgY29uc3RhbnRseS4NCj4gPj4+DQo+ID4+PiArDQo+ID4+Pg0KPiA+Pj4g KyAgRWFjaCBlbGVtZW50IG11c3QgYmUgZXF1YWwgc2l6ZWQuDQo+ID4+Pg0KPiA+Pj4gKw0KPiA+ Pj4NCj4gPj4+ICsgIGlmIEJ1ZmZlclRvU29ydCBpcyBOVUxMLCB0aGVuIEFTU0VSVC4NCj4gPj4+ DQo+ID4+PiArICBpZiBDb21wYXJlRnVuY3Rpb24gaXMgTlVMTCwgdGhlbiBBU1NFUlQuDQo+ID4+ Pg0KPiA+Pj4gKyAgaWYgQnVmZmVyT25lRWxlbWVudCBpcyBOVUxMLCB0aGVuIEFTU0VSVC4NCj4g Pj4+DQo+ID4+PiArICBpZiBFbGVtZW50U2l6ZSBpcyA8IDEsIHRoZW4gQVNTRVJULg0KPiA+Pj4N Cj4gPj4+ICsNCj4gPj4+DQo+ID4+PiArICBpZiBDb3VudCBpcyA8IDIgdGhlbiBwZXJmb3JtIG5v IGFjdGlvbi4NCj4gPj4+DQo+ID4+PiArDQo+ID4+Pg0KPiA+Pj4gKyAgQHBhcmFtW2luLCBvdXRd IEJ1ZmZlclRvU29ydCAgIG9uIGNhbGwgYSBCdWZmZXIgb2YgKHBvc3NpYmx5IHNvcnRlZCkNCj4g Pj4+IGVsZW1lbnRzDQo+ID4+Pg0KPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG9uIHJldHVybiBhIGJ1ZmZlciBvZiBzb3J0ZWQNCj4gPj4+IGVsZW1lbnRzDQo+ID4+Pg0K PiA+Pj4gKyAgQHBhcmFtW2luXSBDb3VudCAgICAgICAgICAgICAgIHRoZSBudW1iZXIgb2YgZWxl bWVudHMgaW4gdGhlDQo+ID4+PiBidWZmZXIgdG8gc29ydA0KPiA+Pj4NCj4gPj4+ICsgIEBwYXJh bVtpbl0gRWxlbWVudFNpemUgICAgICAgICBTaXplIG9mIGFuIGVsZW1lbnQgaW4gYnl0ZXMNCj4g Pj4+DQo+ID4+PiArICBAcGFyYW1baW5dIENvbXBhcmVGdW5jdGlvbiAgICAgVGhlIGZ1bmN0aW9u IHRvIGNhbGwgdG8gcGVyZm9ybQ0KPiB0aGUNCj4gPj4+IGNvbXBhcmlzb24NCj4gPj4+DQo+ID4+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgYW55IDIgZWxlbWVudHMNCj4g Pj4+DQo+ID4+PiArICBAcGFyYW1bb3V0XSBCdWZmZXJPbmVFbGVtZW50ICAgQ2FsbGVyIHByb3Zp ZGVkIGJ1ZmZlciB3aG9zZSBzaXplDQo+ID4+PiBlcXVhbHMgdG8gRWxlbWVudFNpemUuDQo+ID4+ Pg0KPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0J3MgdXNlZCBieSBR dWlja1NvcnQoKSBmb3INCj4gPj4+IHN3YXBwaW5nIGluIHNvcnRpbmcuDQo+ID4+Pg0KPiA+Pj4g KyoqLw0KPiA+Pj4NCj4gPj4+ICtWT0lEDQo+ID4+Pg0KPiA+Pj4gK0VGSUFQSQ0KPiA+Pj4NCj4g Pj4+ICtRdWlja1NvcnQgKA0KPiA+Pj4NCj4gPj4+ICsgIElOIE9VVCBWT0lEICAgICAgICAgICAg ICAgICAgICAgICAgICAgKkJ1ZmZlclRvU29ydCwNCj4gPj4+DQo+ID4+PiArICBJTiBDT05TVCBV SU5UTiAgICAgICAgICAgICAgICAgICAgICAgIENvdW50LA0KPiA+Pj4NCj4gPj4+ICsgIElOIENP TlNUIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgRWxlbWVudFNpemUsDQo+ID4+Pg0KPiA+ Pj4gKyAgSU4gICAgICAgQkFTRV9TT1JUX0NPTVBBUkUgICAgICAgICAgICBDb21wYXJlRnVuY3Rp b24sDQo+ID4+Pg0KPiA+Pj4gKyAgT1VUIFZPSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAqQnVmZmVyT25lRWxlbWVudA0KPiA+Pj4NCj4gPj4+ICsgICk7DQo+ID4+Pg0KPiA+Pj4NCj4g Pj4+DQo+ID4+PiAgIC8qKg0KPiA+Pj4NCj4gPj4+ICAgICBTaGlmdHMgYSA2NC1iaXQgaW50ZWdl ciBsZWZ0IGJldHdlZW4gMCBhbmQgNjMgYml0cy4gVGhlIGxvdyANCj4gPj4+IGJpdHMgYXJlDQo+ ID4+IGZpbGxlZA0KPiA+Pj4gZGlmZiAtLWdpdCBhL01kZVBrZy9MaWJyYXJ5L0Jhc2VMaWIvQmFz ZUxpYi5pbmYNCj4gPj4+IGIvTWRlUGtnL0xpYnJhcnkvQmFzZUxpYi9CYXNlTGliLmluZg0KPiA+ Pj4gaW5kZXggNmVmYTUzMTViNi4uY2ViZGEzYjIxMCAxMDA2NDQNCj4gPj4+IC0tLSBhL01kZVBr Zy9MaWJyYXJ5L0Jhc2VMaWIvQmFzZUxpYi5pbmYNCj4gPj4+ICsrKyBiL01kZVBrZy9MaWJyYXJ5 L0Jhc2VMaWIvQmFzZUxpYi5pbmYNCj4gPj4+IEBAIC0zMiw2ICszMiw3IEBADQo+ID4+PiAgICAg U3dhcEJ5dGVzMTYuYw0KPiA+Pj4NCj4gPj4+ICAgICBMb25nSnVtcC5jDQo+ID4+Pg0KPiA+Pj4g ICAgIFNldEp1bXAuYw0KPiA+Pj4NCj4gPj4+ICsgIFF1aWNrU29ydC5jDQo+ID4+Pg0KPiA+Pj4g ICAgIFJTaGlmdFU2NC5jDQo+ID4+Pg0KPiA+Pj4gICAgIFJSb3RVNjQuYw0KPiA+Pj4NCj4gPj4+ ICAgICBSUm90VTMyLmMNCj4gPj4+DQo+ID4+PiBkaWZmIC0tZ2l0IGEvTWRlUGtnL0xpYnJhcnkv QmFzZUxpYi9RdWlja1NvcnQuYw0KPiA+Pj4gYi9NZGVQa2cvTGlicmFyeS9CYXNlTGliL1F1aWNr U29ydC5jDQo+ID4+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+Pj4gaW5kZXggMDAwMDAwMDAw MC4uYTgyNWMwNzJiMA0KPiA+Pj4gLS0tIC9kZXYvbnVsbA0KPiA+Pj4gKysrIGIvTWRlUGtnL0xp YnJhcnkvQmFzZUxpYi9RdWlja1NvcnQuYw0KPiA+Pj4gQEAgLTAsMCArMSwxMTYgQEANCj4gPj4+ ICsvKiogQGZpbGUNCj4gPj4+DQo+ID4+PiArICBNYXRoIHdvcmtlciBmdW5jdGlvbnMuDQo+ID4+ Pg0KPiA+Pj4gKw0KPiA+Pj4NCj4gPj4+ICsgIENvcHlyaWdodCAoYykgMjAyMSwgSW50ZWwgQ29y cG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+Pj4NCj4gPj4+ICsgIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4+Pg0KPiA+Pj4gKw0K PiA+Pj4NCj4gPj4+ICsqKi8NCj4gPj4+DQo+ID4+PiArDQo+ID4+Pg0KPiA+Pj4gKyNpbmNsdWRl ICJCYXNlTGliSW50ZXJuYWxzLmgiDQo+ID4+Pg0KPiA+Pj4gKw0KPiA+Pj4NCj4gPj4+ICsvKioN Cj4gPj4+DQo+ID4+PiArICBUaGlzIGZ1bmN0aW9uIGlzIGlkZW50aWNhbCB0byBwZXJmb3JtIFF1 aWNrU29ydCwNCj4gPj4+DQo+ID4+PiArICBleGNlcHQgdGhhdCBpcyB1c2VzIHRoZSBwcmUtYWxs b2NhdGVkIGJ1ZmZlciBzbyB0aGUgaW4gcGxhY2UgDQo+ID4+PiArIHNvcnRpbmcNCj4gPj4gZG9l cyBub3QNCj4gPj4+IG5lZWQgdG8NCj4gPj4+DQo+ID4+PiArICBhbGxvY2F0ZSBhbmQgZnJlZSBi dWZmZXJzIGNvbnN0YW50bHkuDQo+ID4+Pg0KPiA+Pj4gKw0KPiA+Pj4NCj4gPj4+ICsgIEVhY2gg ZWxlbWVudCBtdXN0IGJlIGVxdWFsIHNpemVkLg0KPiA+Pj4NCj4gPj4+ICsNCj4gPj4+DQo+ID4+ PiArICBpZiBCdWZmZXJUb1NvcnQgaXMgTlVMTCwgdGhlbiBBU1NFUlQuDQo+ID4+Pg0KPiA+Pj4g KyAgaWYgQ29tcGFyZUZ1bmN0aW9uIGlzIE5VTEwsIHRoZW4gQVNTRVJULg0KPiA+Pj4NCj4gPj4+ ICsgIGlmIEJ1ZmZlck9uZUVsZW1lbnQgaXMgTlVMTCwgdGhlbiBBU1NFUlQuDQo+ID4+Pg0KPiA+ Pj4gKyAgaWYgRWxlbWVudFNpemUgaXMgPCAxLCB0aGVuIEFTU0VSVC4NCj4gPj4+DQo+ID4+PiAr DQo+ID4+Pg0KPiA+Pj4gKyAgaWYgQ291bnQgaXMgPCAyIHRoZW4gcGVyZm9ybSBubyBhY3Rpb24u DQo+ID4+Pg0KPiA+Pj4gKw0KPiA+Pj4NCj4gPj4+ICsgIEBwYXJhbVtpbiwgb3V0XSBCdWZmZXJU b1NvcnQgICBvbiBjYWxsIGEgQnVmZmVyIG9mIChwb3NzaWJseSBzb3J0ZWQpDQo+ID4+PiBlbGVt ZW50cw0KPiA+Pj4NCj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbiBy ZXR1cm4gYSBidWZmZXIgb2Ygc29ydGVkDQo+ID4+PiBlbGVtZW50cw0KPiA+Pj4NCj4gPj4+ICsg IEBwYXJhbVtpbl0gQ291bnQgICAgICAgICAgICAgICB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGlu IHRoZQ0KPiA+Pj4gYnVmZmVyIHRvIHNvcnQNCj4gPj4+DQo+ID4+PiArICBAcGFyYW1baW5dIEVs ZW1lbnRTaXplICAgICAgICAgU2l6ZSBvZiBhbiBlbGVtZW50IGluIGJ5dGVzDQo+ID4+Pg0KPiA+ Pj4gKyAgQHBhcmFtW2luXSBDb21wYXJlRnVuY3Rpb24gICAgIFRoZSBmdW5jdGlvbiB0byBjYWxs IHRvIHBlcmZvcm0NCj4gdGhlDQo+ID4+PiBjb21wYXJpc29uDQo+ID4+Pg0KPiA+Pj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIGFueSAyIGVsZW1lbnRzDQo+ID4+Pg0KPiA+ Pj4gKyAgQHBhcmFtW291dF0gQnVmZmVyT25lRWxlbWVudCAgIENhbGxlciBwcm92aWRlZCBidWZm ZXIgd2hvc2Ugc2l6ZQ0KPiA+Pj4gZXF1YWxzIHRvIEVsZW1lbnRTaXplLg0KPiA+Pj4NCj4gPj4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdCdzIHVzZWQgYnkgUXVpY2tTb3J0 KCkgZm9yDQo+ID4+PiBzd2FwcGluZyBpbiBzb3J0aW5nLg0KPiA+Pj4NCj4gPj4+ICsqKi8NCj4g Pj4+DQo+ID4+PiArVk9JRA0KPiA+Pj4NCj4gPj4+ICtFRklBUEkNCj4gPj4+DQo+ID4+PiArUXVp Y2tTb3J0ICgNCj4gPj4+DQo+ID4+PiArICBJTiBPVVQgVk9JRCAgICAgICAgICAgICAgICAgICAg ICAgICAgICpCdWZmZXJUb1NvcnQsDQo+ID4+Pg0KPiA+Pj4gKyAgSU4gQ09OU1QgVUlOVE4gICAg ICAgICAgICAgICAgICAgICAgICBDb3VudCwNCj4gPj4+DQo+ID4+PiArICBJTiBDT05TVCBVSU5U TiAgICAgICAgICAgICAgICAgICAgICAgIEVsZW1lbnRTaXplLA0KPiA+Pj4NCj4gPj4+ICsgIElO ICAgICAgIEJBU0VfU09SVF9DT01QQVJFICAgICAgICAgICAgQ29tcGFyZUZ1bmN0aW9uLA0KPiA+ Pj4NCj4gPj4+ICsgIE9VVCBWT0lEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKkJ1ZmZl ck9uZUVsZW1lbnQNCj4gPj4+DQo+ID4+PiArICApDQo+ID4+Pg0KPiA+Pj4gK3sNCj4gPj4+DQo+ ID4+PiArICBWT0lEICAgICAgICAqUGl2b3Q7DQo+ID4+Pg0KPiA+Pj4gKyAgVUlOVE4gICAgICAg TG9vcENvdW50Ow0KPiA+Pj4NCj4gPj4+ICsgIFVJTlROICAgICAgIE5leHRTd2FwTG9jYXRpb247 DQo+ID4+Pg0KPiA+Pj4gKw0KPiA+Pj4NCj4gPj4+ICsgIEFTU0VSVCAoQnVmZmVyVG9Tb3J0ICAg ICAhPSBOVUxMKTsNCj4gPj4+DQo+ID4+PiArICBBU1NFUlQgKENvbXBhcmVGdW5jdGlvbiAgIT0g TlVMTCk7DQo+ID4+Pg0KPiA+Pj4gKyAgQVNTRVJUIChCdWZmZXJPbmVFbGVtZW50ICE9IE5VTEwp Ow0KPiA+Pj4NCj4gPj4+ICsgIEFTU0VSVCAoRWxlbWVudFNpemUgICAgICA+PSAxKTsNCj4gPj4+ DQo+ID4+PiArDQo+ID4+Pg0KPiA+Pj4gKyAgaWYgKENvdW50IDwgMikgew0KPiA+Pj4NCj4gPj4+ ICsgICAgcmV0dXJuOw0KPiA+Pj4NCj4gPj4+ICsgIH0NCj4gPj4+DQo+ID4+PiArDQo+ID4+Pg0K PiA+Pj4gKyAgTmV4dFN3YXBMb2NhdGlvbiA9IDA7DQo+ID4+Pg0KPiA+Pj4gKw0KPiA+Pj4NCj4g Pj4+ICsgIC8vDQo+ID4+Pg0KPiA+Pj4gKyAgLy8gcGljayBhIHBpdm90ICh3ZSBjaG9vc2UgbGFz dCBlbGVtZW50KQ0KPiA+Pj4NCj4gPj4+ICsgIC8vDQo+ID4+Pg0KPiA+Pj4gKyAgUGl2b3QgPSAo KFVJTlQ4KikgQnVmZmVyVG9Tb3J0ICsgKChDb3VudCAtIDEpICogRWxlbWVudFNpemUpKTsNCj4g Pj4+DQo+ID4+PiArDQo+ID4+Pg0KPiA+Pj4gKyAgLy8NCj4gPj4+DQo+ID4+PiArICAvLyBOb3cg Z2V0IHRoZSBwaXZvdCBzdWNoIHRoYXQgYWxsIG9uICJsZWZ0IiBhcmUgYmVsb3cgaXQNCj4gPj4+ DQo+ID4+PiArICAvLyBhbmQgZXZlcnl0aGluZyAicmlnaHQiIGFyZSBhYm92ZSBpdA0KPiA+Pj4N Cj4gPj4+ICsgIC8vDQo+ID4+Pg0KPiA+Pj4gKyAgZm9yIChMb29wQ291bnQgPSAwOyBMb29wQ291 bnQgPCBDb3VudCAtMTsgTG9vcENvdW50KyspIHsNCj4gPj4+DQo+ID4+PiArICAgIC8vDQo+ID4+ Pg0KPiA+Pj4gKyAgICAvLyBpZiB0aGUgZWxlbWVudCBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8g dGhlIHBpdm90DQo+ID4+Pg0KPiA+Pj4gKyAgICAvLw0KPiA+Pj4NCj4gPj4+ICsgICAgaWYgKENv bXBhcmVGdW5jdGlvbiAoKFZPSUQqKSAoKFVJTlQ4KikgQnVmZmVyVG9Tb3J0ICsgDQo+ID4+PiAr ICgoTG9vcENvdW50KQ0KPiAqDQo+ID4+PiBFbGVtZW50U2l6ZSkpLCBQaXZvdCkgPD0gMCl7DQo+ ID4+Pg0KPiA+Pj4gKyAgICAgIC8vDQo+ID4+Pg0KPiA+Pj4gKyAgICAgIC8vIHN3YXANCj4gPj4+ DQo+ID4+PiArICAgICAgLy8NCj4gPj4+DQo+ID4+PiArICAgICAgQ29weU1lbSAoQnVmZmVyT25l RWxlbWVudCwgKFVJTlQ4KikgQnVmZmVyVG9Tb3J0ICsNCj4gPj4+IChOZXh0U3dhcExvY2F0aW9u ICogRWxlbWVudFNpemUpLCBFbGVtZW50U2l6ZSk7DQo+ID4+Pg0KPiA+Pj4gKyAgICAgIENvcHlN ZW0gKChVSU5UOCopIEJ1ZmZlclRvU29ydCArIChOZXh0U3dhcExvY2F0aW9uICoNCj4gPj4+IEVs ZW1lbnRTaXplKSwgKFVJTlQ4KikgQnVmZmVyVG9Tb3J0ICsgKChMb29wQ291bnQpICogRWxlbWVu dFNpemUpLCANCj4gPj4+IEVsZW1lbnRTaXplKTsNCj4gPj4+DQo+ID4+PiArICAgICAgQ29weU1l bSAoKFVJTlQ4KikgQnVmZmVyVG9Tb3J0ICsgKChMb29wQ291bnQpKkVsZW1lbnRTaXplKSwNCj4g Pj4+IEJ1ZmZlck9uZUVsZW1lbnQsIEVsZW1lbnRTaXplKTsNCj4gPj4+DQo+ID4+PiArDQo+ID4+ Pg0KPiA+Pj4gKyAgICAgIC8vDQo+ID4+Pg0KPiA+Pj4gKyAgICAgIC8vIGluY3JlbWVudCBOZXh0 U3dhcExvY2F0aW9uDQo+ID4+Pg0KPiA+Pj4gKyAgICAgIC8vDQo+ID4+Pg0KPiA+Pj4gKyAgICAg IE5leHRTd2FwTG9jYXRpb24rKzsNCj4gPj4+DQo+ID4+PiArICAgIH0NCj4gPj4+DQo+ID4+PiAr ICB9DQo+ID4+Pg0KPiA+Pj4gKyAgLy8NCj4gPj4+DQo+ID4+PiArICAvLyBzd2FwIHBpdm90IHRv IGl0J3MgZmluYWwgcG9zaXRpb24gKE5leHRTd2FwTG9jYXRpb24pDQo+ID4+Pg0KPiA+Pj4gKyAg Ly8NCj4gPj4+DQo+ID4+PiArICBDb3B5TWVtIChCdWZmZXJPbmVFbGVtZW50LCBQaXZvdCwgRWxl bWVudFNpemUpOw0KPiA+Pj4NCj4gPj4+ICsgIENvcHlNZW0gKFBpdm90LCAoVUlOVDgqKSBCdWZm ZXJUb1NvcnQgKyAoTmV4dFN3YXBMb2NhdGlvbiAqDQo+ID4+PiBFbGVtZW50U2l6ZSksIEVsZW1l bnRTaXplKTsNCj4gPj4+DQo+ID4+PiArICBDb3B5TWVtICgoVUlOVDgqKSBCdWZmZXJUb1NvcnQg KyAoTmV4dFN3YXBMb2NhdGlvbiAqDQo+IEVsZW1lbnRTaXplKSwNCj4gPj4+IEJ1ZmZlck9uZUVs ZW1lbnQsIEVsZW1lbnRTaXplKTsNCj4gPj4+DQo+ID4+PiArDQo+ID4+Pg0KPiA+Pj4gKyAgLy8N Cj4gPj4+DQo+ID4+PiArICAvLyBOb3cgcmVjdXJzZSBvbiAyIHBhcnRpYWwgbGlzdHMuICBuZWl0 aGVyIG9mIHRoZXNlIHdpbGwgaGF2ZSANCj4gPj4+ICsgdGhlDQo+ID4+ICdwaXZvdCcNCj4gPj4+ IGVsZW1lbnQNCj4gPj4+DQo+ID4+PiArICAvLyBJRSBsaXN0IGlzIHNvcnRlZCBsZWZ0IGhhbGYs IHBpdm90IGVsZW1lbnQsIHNvcnRlZCByaWdodCBoYWxmLi4uDQo+ID4+Pg0KPiA+Pj4gKyAgLy8N Cj4gPj4+DQo+ID4+PiArICBpZiAoTmV4dFN3YXBMb2NhdGlvbiA+PSAyKSB7DQo+ID4+Pg0KPiA+ Pj4gKyAgICBRdWlja1NvcnQgKA0KPiA+Pj4NCj4gPj4+ICsgICAgICBCdWZmZXJUb1NvcnQsDQo+ ID4+Pg0KPiA+Pj4gKyAgICAgIE5leHRTd2FwTG9jYXRpb24sDQo+ID4+Pg0KPiA+Pj4gKyAgICAg IEVsZW1lbnRTaXplLA0KPiA+Pj4NCj4gPj4+ICsgICAgICBDb21wYXJlRnVuY3Rpb24sDQo+ID4+ Pg0KPiA+Pj4gKyAgICAgIEJ1ZmZlck9uZUVsZW1lbnQNCj4gPj4+DQo+ID4+PiArICAgICAgKTsN Cj4gPj4+DQo+ID4+PiArICB9DQo+ID4+Pg0KPiA+Pj4gKw0KPiA+Pj4NCj4gPj4+ICsgIGlmICgo Q291bnQgLSBOZXh0U3dhcExvY2F0aW9uIC0gMSkgPj0gMikgew0KPiA+Pj4NCj4gPj4+ICsgICAg UXVpY2tTb3J0ICgNCj4gPj4+DQo+ID4+PiArICAgICAgKFVJTlQ4ICopQnVmZmVyVG9Tb3J0ICsg KE5leHRTd2FwTG9jYXRpb24gKyAxKSAqIA0KPiA+Pj4gKyBFbGVtZW50U2l6ZSwNCj4gPj4+DQo+ ID4+PiArICAgICAgQ291bnQgLSBOZXh0U3dhcExvY2F0aW9uIC0gMSwNCj4gPj4+DQo+ID4+PiAr ICAgICAgRWxlbWVudFNpemUsDQo+ID4+Pg0KPiA+Pj4gKyAgICAgIENvbXBhcmVGdW5jdGlvbiwN Cj4gPj4+DQo+ID4+PiArICAgICAgQnVmZmVyT25lRWxlbWVudA0KPiA+Pj4NCj4gPj4+ICsgICAg ICApOw0KPiA+Pj4NCj4gPj4+ICsgIH0NCj4gPj4+DQo+ID4+PiArfQ0KPiA+Pj4NCj4gPj4+IGRp ZmYgLS1naXQgYS9NZGVQa2cvTGlicmFyeS9CYXNlTGliL1VuaXRUZXN0SG9zdEJhc2VMaWIuaW5m DQo+ID4+PiBiL01kZVBrZy9MaWJyYXJ5L0Jhc2VMaWIvVW5pdFRlc3RIb3N0QmFzZUxpYi5pbmYN Cj4gPj4+IGluZGV4IGVhZTFhNzE1OGQuLmQwOWJkMTJiZWYgMTAwNjQ0DQo+ID4+PiAtLS0gYS9N ZGVQa2cvTGlicmFyeS9CYXNlTGliL1VuaXRUZXN0SG9zdEJhc2VMaWIuaW5mDQo+ID4+PiArKysg Yi9NZGVQa2cvTGlicmFyeS9CYXNlTGliL1VuaXRUZXN0SG9zdEJhc2VMaWIuaW5mDQo+ID4+PiBA QCAtMSw3ICsxLDcgQEANCj4gPj4+ICAgIyMgQGZpbGUNCj4gPj4+DQo+ID4+PiAgICMgIEJhc2Ug TGlicmFyeSBpbXBsZW1lbnRhdGlvbiBmb3IgdXNlIHdpdGggaG9zdCBiYXNlZCB1bml0IHRlc3Rz Lg0KPiA+Pj4NCj4gPj4+ICAgIw0KPiA+Pj4NCj4gPj4+IC0jICBDb3B5cmlnaHQgKGMpIDIwMDcg LSAyMDIwLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyANCj4gPj4+IHJlc2VydmVkLjxC Uj4NCj4gPj4+DQo+ID4+PiArIyAgQ29weXJpZ2h0IChjKSAyMDA3IC0gMjAyMSwgSW50ZWwgQ29y cG9yYXRpb24uIEFsbCByaWdodHMgDQo+ID4+PiArcmVzZXJ2ZWQuPEJSPg0KPiA+Pj4NCj4gPj4+ ICAgIyAgUG9ydGlvbnMgY29weXJpZ2h0IChjKSAyMDA4IC0gMjAwOSwgQXBwbGUgSW5jLiBBbGwg cmlnaHRzDQo+ID4+IHJlc2VydmVkLjxCUj4NCj4gPj4+ICAgIyAgUG9ydGlvbnMgY29weXJpZ2h0 IChjKSAyMDExIC0gMjAxMywgQVJNIEx0ZC4gQWxsIHJpZ2h0cw0KPiByZXNlcnZlZC48QlI+DQo+ ID4+Pg0KPiA+Pj4gICAjICBDb3B5cmlnaHQgKGMpIDIwMjAsIEhld2xldHQgUGFja2FyZCBFbnRl cnByaXNlIERldmVsb3BtZW50IExQLg0KPiBBbGwNCj4gPj4+IHJpZ2h0cyByZXNlcnZlZC48QlI+ DQo+ID4+Pg0KPiA+Pj4gQEAgLTMzLDYgKzMzLDcgQEANCj4gPj4+ICAgICBTd2FwQnl0ZXMxNi5j DQo+ID4+Pg0KPiA+Pj4gICAgIExvbmdKdW1wLmMNCj4gPj4+DQo+ID4+PiAgICAgU2V0SnVtcC5j DQo+ID4+Pg0KPiA+Pj4gKyAgUXVpY2tTb3J0LmMNCj4gPj4+DQo+ID4+PiAgICAgUlNoaWZ0VTY0 LmMNCj4gPj4+DQo+ID4+PiAgICAgUlJvdFU2NC5jDQo+ID4+Pg0KPiA+Pj4gICAgIFJSb3RVMzIu Yw0KPiA+Pj4NCj4gPj4+IC0tDQo+ID4+PiAyLjMwLjAud2luZG93cy4xDQo+ID4+Pg0KPiA+Pj4N Cj4gPj4+DQo+ID4+PiAtPS09LT0tPS09LT0NCj4gPj4+IEdyb3Vwcy5pbyBMaW5rczogWW91IHJl Y2VpdmUgYWxsIG1lc3NhZ2VzIHNlbnQgdG8gdGhpcyBncm91cC4NCj4gPj4+IFZpZXcvUmVwbHkg T25saW5lICgjODE2MTUpOg0KPiBodHRwczovL2VkazIuZ3JvdXBzLmlvL2cvZGV2ZWwvbWVzc2Fn ZS84MTYxNQ0KPiA+Pj4gTXV0ZSBUaGlzIFRvcGljOiBodHRwczovL2dyb3Vwcy5pby9tdC84NjE1 OTcyOC80OTA1OTUzDQo+ID4+PiBHcm91cCBPd25lcjogZGV2ZWwrb3duZXJAZWRrMi5ncm91cHMu aW8NCj4gPj4+IFVuc3Vic2NyaWJlOiBodHRwczovL2VkazIuZ3JvdXBzLmlvL2cvZGV2ZWwvdW5z dWINCj4gPj4+IFtnYW9saW1pbmdAYnlvc29mdC5jb20uY25dDQo+ID4+PiAtPS09LT0tPS09LT0N Cj4gPj4+DQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4NCj4gPg0KPiA+ IA0KPiA+DQo+ID4NCg0KDQoNCg0KDQoNCg0KDQo=