From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by mx.groups.io with SMTP id smtpd.web12.5657.1589942956068518254 for ; Tue, 19 May 2020 19:49:16 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=qMMkqdOG; spf=pass (domain: intel.com, ip: 134.134.136.100, mailfrom: michael.d.kinney@intel.com) IronPort-SDR: gVdiZVyixZQexwaOLDZaW4hSpCVjmthnREO7YKcAAAAAzeiu3AxMHQ26ua2cOd5/QTZy8ASRiJ 1QdBQ75WaXew== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 19 May 2020 19:49:15 -0700 IronPort-SDR: QjRvh2CG+OPVeRL2oUKFIzIPSZuzCtC+k11R65B1swUGx1cA5+C81IUrI4OaBdNjuthEbBq8ff AO+7lJps3F2w== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.73,412,1583222400"; d="scan'208";a="466363816" Received: from fmsmsx105.amr.corp.intel.com ([10.18.124.203]) by fmsmga006.fm.intel.com with ESMTP; 19 May 2020 19:49:15 -0700 Received: from fmsmsx120.amr.corp.intel.com (10.18.124.208) by FMSMSX105.amr.corp.intel.com (10.18.124.203) with Microsoft SMTP Server (TLS) id 14.3.439.0; Tue, 19 May 2020 19:49:14 -0700 Received: from FMSEDG001.ED.cps.intel.com (10.1.192.133) by fmsmsx120.amr.corp.intel.com (10.18.124.208) with Microsoft SMTP Server (TLS) id 14.3.439.0; Tue, 19 May 2020 19:48:59 -0700 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (104.47.58.172) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (TLS) id 14.3.439.0; Tue, 19 May 2020 19:48:59 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=La5WqZbh9KZndkn2JrhY05sgwrVBey10OMnnneVfZJiM8TmssFWjpzAkcw6bcpVy2qYKVq3ZD9OKX5lMuCenDVWvsGFLwYZZN1rDVXPXLUp526A5WUEMluPK5vgA/KGinongriM973nii4meeFDRkK05TZT9FHfF/ir98NrVtIUj7ah6BQNBOEnTssrr4H/abA6D84xjeX36jMEqSBHvjTg0LX0F62m4+q4Vj3UNJjU0VRBbjBZuxGFkJZ5fQkmLEbLsvf2P1YhBqBZMP4XcI43Y4AxPMncMylNaI/zf9WzM1lkn1SwN9nvUPXAq3X99ThY2LZyPF0Q336yAvVy7kA== 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=Zt2e6IDTlnyOKY/26pXzTu30yhf8k6FNNMfB8fgaeeU=; b=lcgEYSPW3iSdJFbFAFOz9dh2X3IUeYEBukCmDG1YM7r/QL8feFbdr5wBr5YSZbgQkoTmLihGmWpuXZqZed67x9FFRvi8A7ckMNRsWmSafOvuFawlp1vy4RGmRIZPLSldKFlT2Du+aVwLZ6Qvs5b61u9qW8/Y6Esq4gIhkiCQKnBRT+phmfYGqu1p+iSySFKa0J+spNxegOYbOiTYVwX5CmqJM2wNX4iKUcp75pzfXBtd0Lr77o1OYwNbEsgblDfhsh+5GhllytW8HDjm4x0C6WuuNEe2HHz7JBIcAMQhQIng+G6Ibu0qqH2upcJ2ZmI1X5rW8UxUoYdGoI9CfkeqHA== 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=Zt2e6IDTlnyOKY/26pXzTu30yhf8k6FNNMfB8fgaeeU=; b=qMMkqdOGEPomUR1OXzzoPTvp4eYQttBX3zE4pNOqV6m22lFCGemfrfVfsiRG8TzQme1+0XOdioyrR2wxkL9ABermHipW0amO3aUJYMkM5MHHI77NKEeXUank/HXQxKn3PGCcl7HntNLEOUbs3WDk8Uo+g5YSAgRzy2wR14q2HVk= Received: from MN2PR11MB4461.namprd11.prod.outlook.com (2603:10b6:208:192::29) by MN2PR11MB4520.namprd11.prod.outlook.com (2603:10b6:208:265::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3000.25; Wed, 20 May 2020 02:48:57 +0000 Received: from MN2PR11MB4461.namprd11.prod.outlook.com ([fe80::10bc:1a4e:4745:ffc1]) by MN2PR11MB4461.namprd11.prod.outlook.com ([fe80::10bc:1a4e:4745:ffc1%3]) with mapi id 15.20.3000.034; Wed, 20 May 2020 02:48:57 +0000 From: "Michael D Kinney" To: Vitaly Cheptsov , "Kinney, Michael D" CC: "devel@edk2.groups.io" , Andrew Fish , Ard Biesheuvel , Bret Barkelew , "Brian J . Johnson" , "Chiu, Chasel" , "Justen, Jordan L" , Laszlo Ersek , Leif Lindholm , "Gao, Liming" , =?utf-8?B?TWFydmluIEjDpHVzZXI=?= , "Zimmer, Vincent" , "Gao, Zhichao" Subject: Re: [edk2-devel] [PATCH V7 1/1] MdePkg: Fix SafeString performing assertions on runtime checks Thread-Topic: [edk2-devel] [PATCH V7 1/1] MdePkg: Fix SafeString performing assertions on runtime checks Thread-Index: AQHWKhWqAnC6asE4sUKZDVJPNaijmKiuFzgggAATF4CAAJF34A== Date: Wed, 20 May 2020 02:48:56 +0000 Message-ID: References: <20200514173131.38072-1-cheptsov@ispras.ru> <20200514173131.38072-2-cheptsov@ispras.ru> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.2.0.6 authentication-results: ispras.ru; dkim=none (message not signed) header.d=none;ispras.ru; dmarc=none action=none header.from=intel.com; x-originating-ip: [134.134.136.193] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: ff2e4c7f-e8eb-408f-cb67-08d7fc68579b x-ms-traffictypediagnostic: MN2PR11MB4520: x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:6108; x-forefront-prvs: 04097B7F7F x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: WlwpWWvTpVq+Etwo6b2cDTgo6yWw99DQ6y7dBIR1BvTpImmkclsBxJI4MhGa+CJg3u+9gjzhjRmUBO2R7nUBIXhZjsaRw9AU3BNRdF6jOBwAPIMmib7s0LUx80RJV6rsRANezSFn6Y6brb36rF5XvWGAOb4aEV76R8WlIuXi0+L72PxtVWsjiCwRSIz5x2GZxiTrjEN9XybXyKN2mmc+f96Ad4QCZr/QVdX8SMYxCvkQGN9YiDmGaWYDdFI95N3jrVb71IdKtRiWUWKaP90RdrvTTFY0lbA60N33oQ8V7Nrp+a4xo3QVn1hfrGbQZBgX5yuxbepAIqceg0ac2IQvbMIxpUcG+p382SReBe8LMkzKVfTmYIXPQNFVhTMHeFWlBL4T7KrQ3VgLeHCBaiThM8oBVX/BzojFhGRsBVvn2DMsw0R62wmPybv8KWjqQH3sn6E/T0LEIwwzbAFGBC2bU5xt/e8npF9FvNEneBy0JsuL6BEiBFkRtOByZlQXUi9DI5MOkwBtJw/O+KOwJwNyQw== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MN2PR11MB4461.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:(376002)(346002)(396003)(39860400002)(366004)(136003)(52536014)(110136005)(76116006)(107886003)(7696005)(6506007)(54906003)(8676002)(316002)(8936002)(478600001)(26005)(186003)(966005)(86362001)(71200400001)(66574014)(53546011)(2906002)(4326008)(5660300002)(9686003)(66556008)(55016002)(19627235002)(66946007)(66476007)(66446008)(30864003)(33656002)(64756008)(579004)(559001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: SxUry8dVmUBqg0aCD4FNw+TzQBdUyzzQgUAiHYje6n56E81vHcBAnnPhIxxsrZR4ZWP4tHgfZebWNXDsfcx0QEOgF/pclJNAh1PyjkQFIZhomgypJKcSgptzDbNQ50T0FOkoq8qS/RhdyyI38hgGi+i6lYsyONETaKhuWV49cgO2zMBQCmhTURJJcMNR0hIJZZQ4olrzH9q8NbosZSallVZ5KoDnP7mRCR6F0n1AAAuhzxuh25Oz6ijzNmpQJiEKxtEi+Dx/zWNdcKS1GvUlj5pqlgxHpKmNlHOEZjXz4VZmHCRUje9jH3T3CYEXnoyN+kCWGQDBEiUImxMhQ31gsUdrLq40xAI7eLnK+2p+vb8jGrjK7NdQlAyOY1dFPbKIr5TFxSp0fNXgvWY/L+D5B+NJfHxTyrGDJEO7ashclNhqVUlDIykR9LsByUX24P2srelI84QjscCecCHq9JkqY8cIPRucNlc9YO+Xe3X9b9xvJYtum2ZhL/4uXqQlQ9bd MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: ff2e4c7f-e8eb-408f-cb67-08d7fc68579b X-MS-Exchange-CrossTenant-originalarrivaltime: 20 May 2020 02:48:56.7223 (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: H9nc7RcO83QnL7x2LeXdm2aJMFxQpY7iMilDd6YPSvLy0EkmkvAI7Th7NA/LVHg0OOUe1B+7AudhzLbm7iJnsSmBmC9dhp1D2gdsKYsCjiM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR11MB4520 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 SGkgVml0YWx5LA0KDQpJIHRoaW5rIHRoaXMgc2hvdWxkIHdvcmsuICBBU1NFUlQoKSByZW1vdmVk LiAgREVCVUdfVkVSQk9TRSBtZXNzYWdlIGFkZGVkLg0KDQojZGVmaW5lIFNBRkVfU1RSSU5HX0NP TlNUUkFJTlRfQ0hFQ0soRXhwcmVzc2lvbiwgU3RhdHVzKSAgXA0KICBkbyB7IFwNCiAgICBpZiAo IShFeHByZXNzaW9uKSkgeyBcDQogICAgICBERUJVRyAoKERFQlVHX1ZFUkJPU0UsICJTQUZFX1NU UklOR19DT05TVFJBSU5UX0NIRUNLKCVhKSBmYWlsZWQuICBSZXR1cm4gJXJcbiIsICNFeHByZXNz aW9uLCBTdGF0dXMpKTsgXA0KICAgICAgcmV0dXJuIFN0YXR1czsgXA0KICAgIH0gXA0KICB9IHdo aWxlIChGQUxTRSkNCg0KSSBoYXZlIG1hZGUgdGhpcyBjaGFuZ2UgaW4gdGhlIGZvbGxvd2luZyBQ UiB0byBydW4gdGhlIGFsbCB0aGUgQ0kgY2hlY2tzDQphbmQgYWxzbyBhZGRlZCBhIHVuaXQgdGVz dCB0byB2ZXJpZnkgdGhlIEFTU0VSVCgpIGhhcyBiZWVuIHJlcGxhY2VkIHdpdGgNCmEgREVCVUdf VkVSQk9TRSBtZXNzYWdlLiAgSSBtYWRlIHNvbWUgbWlub3IgdXBkYXRlcyB0byB0aGUgY29tbWl0 IA0KbWVzc2FnZXMgdG8gcGFzcyBQYXRjaENoZWNrLnB5Lg0KDQpodHRwczovL2dpdGh1Yi5jb20v dGlhbm9jb3JlL2VkazIvcHVsbC82MzINCg0KDQpUaGlzIGlzIGEgcG9ydGlvbiBvZiB0aGUgQ0kg YnVpbGQgbG9nIHRoYXQgc2hvd3MgdGhlIGhvc3QgYmFzZWQgdW5pdCANCnRlc3QgcnVubmluZyBh bmQgZ2VuZXJhdGVzIHRoZSBERUJVR19WRVJCT1NFIG1lc3NhZ2VzIGZvciB0aGUgbmVnYXRpdmUN CnRlc3QgY2FzZXMgc2VudCB0byBTdHJDcHlTKCkuDQoNCklORk8gLSAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCklORk8gLSBSVU5OSU5H IFRFU1QgU1VJVEU6IFNhZmUgU3RyaW5nDQpJTkZPIC0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpJTkZPIC0gZDpcYVwxXHNcTWRlUGtn XExpYnJhcnlcQmFzZUxpYlxTYWZlU3RyaW5nLmMoMjM2KSBTdHJDcHlTOiBTQUZFX1NUUklOR19D T05TVFJBSU5UX0NIRUNLKChEZXN0aW5hdGlvbiAhPSBOVUxMKSkgZmFpbGVkLiAgUmV0dXJuIElu dmFsaWQgUGFyYW1ldGVyDQpJTkZPIC0gZDpcYVwxXHNcTWRlUGtnXExpYnJhcnlcQmFzZUxpYlxT YWZlU3RyaW5nLmMoMjM3KSBTdHJDcHlTOiBTQUZFX1NUUklOR19DT05TVFJBSU5UX0NIRUNLKChT b3VyY2UgIT0gTlVMTCkpIGZhaWxlZC4gIFJldHVybiBJbnZhbGlkIFBhcmFtZXRlcg0KSU5GTyAt IGQ6XGFcMVxzXE1kZVBrZ1xMaWJyYXJ5XEJhc2VMaWJcU2FmZVN0cmluZy5jKDI0MykgU3RyQ3B5 UzogU0FGRV9TVFJJTkdfQ09OU1RSQUlOVF9DSEVDSygoRGVzdE1heCA8PSBSU0laRV9NQVgpKSBm YWlsZWQuICBSZXR1cm4gSW52YWxpZCBQYXJhbWV0ZXINCklORk8gLSBkOlxhXDFcc1xNZGVQa2dc TGlicmFyeVxCYXNlTGliXFNhZmVTdHJpbmcuYygyNDkpIFN0ckNweVM6IFNBRkVfU1RSSU5HX0NP TlNUUkFJTlRfQ0hFQ0soKERlc3RNYXggIT0gMCkpIGZhaWxlZC4gIFJldHVybiBJbnZhbGlkIFBh cmFtZXRlcg0KSU5GTyAtIGQ6XGFcMVxzXE1kZVBrZ1xMaWJyYXJ5XEJhc2VMaWJcU2FmZVN0cmlu Zy5jKDI1NSkgU3RyQ3B5UzogU0FGRV9TVFJJTkdfQ09OU1RSQUlOVF9DSEVDSygoRGVzdE1heCA+ IFNvdXJjZUxlbikpIGZhaWxlZC4gIFJldHVybiBCdWZmZXIgVG9vIFNtYWxsDQpJTkZPIC0gZDpc YVwxXHNcTWRlUGtnXExpYnJhcnlcQmFzZUxpYlxTYWZlU3RyaW5nLmMoMjU1KSBTdHJDcHlTOiBT QUZFX1NUUklOR19DT05TVFJBSU5UX0NIRUNLKChEZXN0TWF4ID4gU291cmNlTGVuKSkgZmFpbGVk LiAgUmV0dXJuIEJ1ZmZlciBUb28gU21hbGwNCklORk8gLSBkOlxhXDFcc1xNZGVQa2dcTGlicmFy eVxCYXNlTGliXFNhZmVTdHJpbmcuYygyNjApIFN0ckNweVM6IFNBRkVfU1RSSU5HX0NPTlNUUkFJ TlRfQ0hFQ0soSW50ZXJuYWxTYWZlU3RyaW5nTm9TdHJPdmVybGFwIChEZXN0aW5hdGlvbiwgRGVz dE1heCwgKENIQVIxNiAqKVNvdXJjZSwgU291cmNlTGVuICsgMSkpIGZhaWxlZC4gIFJldHVybiBB Y2Nlc3MgRGVuaWVkDQpJTkZPIC0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tDQpJTkZPIC0gLS0tLS0tLS0tLS0tLS1DbWQgT3V0cHV0IEZpbmlzaGVkLS0t LS0tLS0tLS0tLS0tDQoNCkkgd2lsbCBzZW5kIHRoZSB1cGRhdGVkIFY4IHNlcmllcyBlbWFpbCBw YXRjaGVzIGZvciByZXZpZXcgc2hvcnRseS4NCg0KQmVzdCByZWdhcmRzLA0KDQpNaWtlDQoNCj4g LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogVml0YWx5IENoZXB0c292IDxjaGVw dHNvdkBpc3ByYXMucnU+DQo+IFNlbnQ6IE1vbmRheSwgTWF5IDE4LCAyMDIwIDExOjA4IEFNDQo+ IFRvOiBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQo+IENj OiBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsgQW5kcmV3IEZpc2gNCj4gPGFmaXNoQGFwcGxlLmNvbT47 IEFyZCBCaWVzaGV1dmVsDQo+IDxhcmQuYmllc2hldXZlbEBsaW5hcm8ub3JnPjsgQnJldCBCYXJr ZWxldw0KPiA8YnJldC5iYXJrZWxld0BtaWNyb3NvZnQuY29tPjsgQnJpYW4gSiAuIEpvaG5zb24N Cj4gPGJyaWFuLmpvaG5zb25AaHBlLmNvbT47IENoaXUsIENoYXNlbA0KPiA8Y2hhc2VsLmNoaXVA aW50ZWwuY29tPjsgSnVzdGVuLCBKb3JkYW4gTA0KPiA8am9yZGFuLmwuanVzdGVuQGludGVsLmNv bT47IExhc3psbyBFcnNlaw0KPiA8bGVyc2VrQHJlZGhhdC5jb20+OyBMZWlmIExpbmRob2xtIDxs ZWlmQG51dmlhaW5jLmNvbT47DQo+IEdhbywgTGltaW5nIDxsaW1pbmcuZ2FvQGludGVsLmNvbT47 IE1hcnZpbiBIw6R1c2VyDQo+IDxtaGFldXNlckBvdXRsb29rLmRlPjsgWmltbWVyLCBWaW5jZW50 DQo+IDx2aW5jZW50LnppbW1lckBpbnRlbC5jb20+OyBHYW8sIFpoaWNoYW8NCj4gPHpoaWNoYW8u Z2FvQGludGVsLmNvbT4NCj4gU3ViamVjdDogUmU6IFtlZGsyLWRldmVsXSBbUEFUQ0ggVjcgMS8x XSBNZGVQa2c6IEZpeA0KPiBTYWZlU3RyaW5nIHBlcmZvcm1pbmcgYXNzZXJ0aW9ucyBvbiBydW50 aW1lIGNoZWNrcw0KPiANCj4gTWlrZSwNCj4gDQo+IFlvdXIgc3VnZ2VzdGlvbiBzb3VuZHMgb2sg dG8gbWUuIEFzIGxvbmcgYXMgaXQgaXMNCj4gdmVyYm9zZSBJIHdpbGwgbm90IG1pbmQgaXRzIGFk ZGl0aW9uLiBIb3dldmVyLCBJIGRvIG5vdA0KPiBoYXZlIGEgZ29vZCBpZGVhIG9mIGhvdyBjYW4g aXQgbG9vayBsaWtlLiBJZiB5b3UgcG9zdA0KPiBzb21ldGhpbmcgSSBjYW4gaW5jbHVkZSBpdC4N Cj4gDQo+IFRoYW5rcywNCj4gVml0YWx5DQo+IA0KPiA+IDE4INC80LDRjyAyMDIwINCzLiwg0LIg MjA6MDQsIEtpbm5leSwgTWljaGFlbCBEDQo+IDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4g 0L3QsNC/0LjRgdCw0Lso0LApOg0KPiA+DQo+ID4gVml0YWx5LA0KPiA+DQo+ID4gUmV2aWV3ZWQt Ynk6IE1pY2hhZWwgRCBLaW5uZXkNCj4gPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KPiA+ DQo+ID4gSSBhZ3JlZSB0aGF0IGNhbiBnbyBpbiBub3cgZm9yIHRoZSBzdGFibGUgdGFnLg0KPiA+ DQo+ID4gVGhlIG9ubHkgYWRkaXRpb25hbCBjb21tZW50IEkgaGF2ZSByZWNlaXZlZCBpcyBpZiBh DQo+IERFQlVHKCkgbWVzc2FnZQ0KPiA+IGNhbiBiZSBhZGRlZCB3aGVyZSB0aGUgQVNTRVJUKCkg d2FzIHJlbW92ZWQuICBQZXJoYXBzDQo+IG9ubHkgYXQgdGhlDQo+ID4gREVCVUdfVkVSQk9TRSBs ZXZlbCB0aGF0IGlzIG5vdCB1c3VhbGx5IGVuYWJsZWQgYnkNCj4gZGVmYXVsdC4gIEENCj4gPiBk ZXZlbG9wZXIgdGhhdCB3YW50cyB0byBzZWUNCj4gU0FGRV9TVFJJTkdfQ09OU1RSQUlOVF9DSEVD SygpIGNvbmRpdGlvbnMNCj4gPiB0aGF0IGZhaWwgd291bGQgbmVlZCB0byBlbmFibGUgREVCVUdf VkVSQk9TRQ0KPiBtZXNzYWdlcy4NCj4gPg0KPiA+IFRoYW5rcywNCj4gPg0KPiA+IE1pa2UNCj4g Pg0KPiA+DQo+ID4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+IEZyb206IGRldmVs QGVkazIuZ3JvdXBzLmlvIDxkZXZlbEBlZGsyLmdyb3Vwcy5pbz4gT24NCj4gPj4gQmVoYWxmIE9m IFZpdGFseSBDaGVwdHNvdg0KPiA+PiBTZW50OiBUaHVyc2RheSwgTWF5IDE0LCAyMDIwIDEwOjMy IEFNDQo+ID4+IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiA+PiBDYzogQW5kcmV3IEZpc2gg PGFmaXNoQGFwcGxlLmNvbT47IEFyZCBCaWVzaGV1dmVsDQo+ID4+IDxhcmQuYmllc2hldXZlbEBs aW5hcm8ub3JnPjsgQnJldCBCYXJrZWxldw0KPiA+PiA8YnJldC5iYXJrZWxld0BtaWNyb3NvZnQu Y29tPjsgQnJpYW4gSiAuIEpvaG5zb24NCj4gPj4gPGJyaWFuLmpvaG5zb25AaHBlLmNvbT47IENo aXUsIENoYXNlbA0KPiA+PiA8Y2hhc2VsLmNoaXVAaW50ZWwuY29tPjsgSnVzdGVuLCBKb3JkYW4g TA0KPiA+PiA8am9yZGFuLmwuanVzdGVuQGludGVsLmNvbT47IExhc3psbyBFcnNlaw0KPiA+PiA8 bGVyc2VrQHJlZGhhdC5jb20+OyBMZWlmIExpbmRob2xtDQo+IDxsZWlmQG51dmlhaW5jLmNvbT47 DQo+ID4+IEdhbywgTGltaW5nIDxsaW1pbmcuZ2FvQGludGVsLmNvbT47IE1hcnZpbiBIw6R1c2Vy DQo+ID4+IDxtaGFldXNlckBvdXRsb29rLmRlPjsgS2lubmV5LCBNaWNoYWVsIEQNCj4gPj4gPG1p Y2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPjsgWmltbWVyLCBWaW5jZW50DQo+ID4+IDx2aW5jZW50 LnppbW1lckBpbnRlbC5jb20+OyBHYW8sIFpoaWNoYW8NCj4gPj4gPHpoaWNoYW8uZ2FvQGludGVs LmNvbT4NCj4gPj4gU3ViamVjdDogW2VkazItZGV2ZWxdIFtQQVRDSCBWNyAxLzFdIE1kZVBrZzog Rml4DQo+ID4+IFNhZmVTdHJpbmcgcGVyZm9ybWluZyBhc3NlcnRpb25zIG9uIHJ1bnRpbWUgY2hl Y2tzDQo+ID4+DQo+ID4+IFJFRjoNCj4gPj4gaHR0cHM6Ly9idWd6aWxsYS50aWFub2NvcmUub3Jn L3Nob3dfYnVnLmNnaT9pZD0yMDU0DQo+ID4+DQo+ID4+IFJ1bnRpbWUgY2hlY2tzIHJldHVybmVk IHZpYSBzdGF0dXMgcmV0dXJuIGNvZGUNCj4gc2hvdWxkDQo+ID4+IG5vdCB3b3JrIGFzDQo+ID4+ IGFzc2VydGlvbnMgdG8gcGVybWl0IHBhcnNpbmcgbm90IHRydXN0ZWQgZGF0YSB3aXRoDQo+ID4+ IFNhZmVTdHJpbmcNCj4gPj4gaW50ZXJmYWNlcy4NCj4gPj4NCj4gPj4gQ0M6IEFuZHJldyBGaXNo IDxhZmlzaEBhcHBsZS5jb20+DQo+ID4+IENDOiBBcmQgQmllc2hldXZlbCA8YXJkLmJpZXNoZXV2 ZWxAbGluYXJvLm9yZz4NCj4gPj4gQ0M6IEJyZXQgQmFya2VsZXcgPGJyZXQuYmFya2VsZXdAbWlj cm9zb2Z0LmNvbT4NCj4gPj4gQ0M6IEJyaWFuIEouIEpvaG5zb24gPGJyaWFuLmpvaG5zb25AaHBl LmNvbT4NCj4gPj4gQ0M6IENoYXNlbCBDaGl1IDxjaGFzZWwuY2hpdUBpbnRlbC5jb20+DQo+ID4+ IENDOiBKb3JkYW4gSnVzdGVuIDxqb3JkYW4ubC5qdXN0ZW5AaW50ZWwuY29tPg0KPiA+PiBDQzog TGFzemxvIEVyc2VrIDxsZXJzZWtAcmVkaGF0LmNvbT4NCj4gPj4gQ0M6IExlaWYgTGluZGhvbG0g PGxlaWZAbnV2aWFpbmMuY29tPg0KPiA+PiBDQzogTGltaW5nIEdhbyA8bGltaW5nLmdhb0BpbnRl bC5jb20+DQo+ID4+IENDOiBNYXJ2aW4gSMOkdXNlciA8bWhhZXVzZXJAb3V0bG9vay5kZT4NCj4g Pj4gQ0M6IE1pa2UgS2lubmV5IDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4gPj4gQ0M6 IFZpbmNlbnQgWmltbWVyIDx2aW5jZW50LnppbW1lckBpbnRlbC5jb20+DQo+ID4+IENDOiBaaGlj aGFvIEdhbyA8emhpY2hhby5nYW9AaW50ZWwuY29tPg0KPiA+PiBTaWduZWQtb2ZmLWJ5OiBWaXRh bHkgQ2hlcHRzb3YNCj4gPHZpdDk2OTZAcHJvdG9ubWFpbC5jb20+DQo+ID4+IC0tLQ0KPiA+PiBN ZGVQa2cvSW5jbHVkZS9MaWJyYXJ5L0Jhc2VMaWIuaCAgICB8IDExMSAtLS0tLS0tLS0tDQo+IC0t DQo+ID4+IC0tLS0tLS0NCj4gPj4gTWRlUGtnL0xpYnJhcnkvQmFzZUxpYi9TYWZlU3RyaW5nLmMg fCAxMTIgLS0tLS0tLS0tLQ0KPiAtLQ0KPiA+PiAtLS0tLS0tLQ0KPiA+PiAyIGZpbGVzIGNoYW5n ZWQsIDIyMyBkZWxldGlvbnMoLSkNCj4gPj4NCj4gPj4gZGlmZiAtLWdpdCBhL01kZVBrZy9JbmNs dWRlL0xpYnJhcnkvQmFzZUxpYi5oDQo+ID4+IGIvTWRlUGtnL0luY2x1ZGUvTGlicmFyeS9CYXNl TGliLmgNCj4gPj4gaW5kZXggZWNhZGZmOGIyMy4uMmMxOTRhZDk0MyAxMDA2NDQNCj4gPj4gLS0t IGEvTWRlUGtnL0luY2x1ZGUvTGlicmFyeS9CYXNlTGliLmgNCj4gPj4gKysrIGIvTWRlUGtnL0lu Y2x1ZGUvTGlicmFyeS9CYXNlTGliLmgNCj4gPj4gQEAgLTE4OSw3ICsxODksNiBAQCBTdHJuU2l6 ZVMgKA0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+PiAgIElmIERlc3RpbmF0aW9uIGlzIG5vdCBhbGln bmVkIG9uIGEgMTYtYml0DQo+IGJvdW5kYXJ5LA0KPiA+PiB0aGVuIEFTU0VSVCgpLg0KPiA+Pg0K PiA+Pg0KPiA+PiAgIElmIFNvdXJjZSBpcyBub3QgYWxpZ25lZCBvbiBhIDE2LWJpdCBib3VuZGFy eSwNCj4gdGhlbg0KPiA+PiBBU1NFUlQoKS4NCj4gPj4NCj4gPj4NCj4gPj4gLSAgSWYgYW4gZXJy b3Igd291bGQgYmUgcmV0dXJuZWQsIHRoZW4gdGhlIGZ1bmN0aW9uDQo+ID4+IHdpbGwgYWxzbyBB U1NFUlQoKS4NCj4gPj4NCj4gPj4NCj4gPj4NCj4gPj4NCj4gPj4NCj4gPj4gICBJZiBhbiBlcnJv ciBpcyByZXR1cm5lZCwgdGhlbiB0aGUgRGVzdGluYXRpb24gaXMNCj4gPj4gdW5tb2RpZmllZC4N Cj4gPj4NCj4gPj4NCj4gPj4NCj4gPj4NCj4gPj4NCj4gPj4gQEAgLTIyNSw3ICsyMjQsNiBAQCBT dHJDcHlTICgNCj4gPj4NCj4gPj4NCj4gPj4NCj4gPj4gICBJZiBMZW5ndGggPiAwIGFuZCBEZXN0 aW5hdGlvbiBpcyBub3QgYWxpZ25lZCBvbiBhDQo+ID4+IDE2LWJpdCBib3VuZGFyeSwgdGhlbiBB U1NFUlQoKS4NCj4gPj4NCj4gPj4NCj4gPj4gICBJZiBMZW5ndGggPiAwIGFuZCBTb3VyY2UgaXMg bm90IGFsaWduZWQgb24gYSAxNi0NCj4gYml0DQo+ID4+IGJvdW5kYXJ5LCB0aGVuIEFTU0VSVCgp Lg0KPiA+Pg0KPiA+Pg0KPiA+PiAtICBJZiBhbiBlcnJvciB3b3VsZCBiZSByZXR1cm5lZCwgdGhl biB0aGUgZnVuY3Rpb24NCj4gPj4gd2lsbCBhbHNvIEFTU0VSVCgpLg0KPiA+Pg0KPiA+Pg0KPiA+ Pg0KPiA+Pg0KPiA+Pg0KPiA+PiAgIElmIGFuIGVycm9yIGlzIHJldHVybmVkLCB0aGVuIHRoZSBE ZXN0aW5hdGlvbiBpcw0KPiA+PiB1bm1vZGlmaWVkLg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+Pg0K PiA+Pg0KPiA+PiBAQCAtMjYzLDcgKzI2MSw2IEBAIFN0cm5DcHlTICgNCj4gPj4NCj4gPj4NCj4g Pj4NCj4gPj4gICBJZiBEZXN0aW5hdGlvbiBpcyBub3QgYWxpZ25lZCBvbiBhIDE2LWJpdA0KPiBi b3VuZGFyeSwNCj4gPj4gdGhlbiBBU1NFUlQoKS4NCj4gPj4NCj4gPj4NCj4gPj4gICBJZiBTb3Vy Y2UgaXMgbm90IGFsaWduZWQgb24gYSAxNi1iaXQgYm91bmRhcnksDQo+IHRoZW4NCj4gPj4gQVNT RVJUKCkuDQo+ID4+DQo+ID4+DQo+ID4+IC0gIElmIGFuIGVycm9yIHdvdWxkIGJlIHJldHVybmVk LCB0aGVuIHRoZSBmdW5jdGlvbg0KPiA+PiB3aWxsIGFsc28gQVNTRVJUKCkuDQo+ID4+DQo+ID4+ DQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+ICAgSWYgYW4gZXJyb3IgaXMgcmV0dXJuZWQsIHRoZW4g dGhlIERlc3RpbmF0aW9uIGlzDQo+ID4+IHVubW9kaWZpZWQuDQo+ID4+DQo+ID4+DQo+ID4+DQo+ ID4+DQo+ID4+DQo+ID4+IEBAIC0zMDMsNyArMzAwLDYgQEAgU3RyQ2F0UyAoDQo+ID4+DQo+ID4+ DQo+ID4+DQo+ID4+ICAgSWYgRGVzdGluYXRpb24gaXMgbm90IGFsaWduZWQgb24gYSAxNi1iaXQN Cj4gYm91bmRhcnksDQo+ID4+IHRoZW4gQVNTRVJUKCkuDQo+ID4+DQo+ID4+DQo+ID4+ICAgSWYg U291cmNlIGlzIG5vdCBhbGlnbmVkIG9uIGEgMTYtYml0IGJvdW5kYXJ5LA0KPiB0aGVuDQo+ID4+ IEFTU0VSVCgpLg0KPiA+Pg0KPiA+Pg0KPiA+PiAtICBJZiBhbiBlcnJvciB3b3VsZCBiZSByZXR1 cm5lZCwgdGhlbiB0aGUgZnVuY3Rpb24NCj4gPj4gd2lsbCBhbHNvIEFTU0VSVCgpLg0KPiA+Pg0K PiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+PiAgIElmIGFuIGVycm9yIGlzIHJldHVybmVkLCB0 aGVuIHRoZSBEZXN0aW5hdGlvbiBpcw0KPiA+PiB1bm1vZGlmaWVkLg0KPiA+Pg0KPiA+Pg0KPiA+ Pg0KPiA+Pg0KPiA+Pg0KPiA+PiBAQCAtMzUwLDEyICszNDYsNyBAQCBTdHJuQ2F0UyAoDQo+ID4+ ICAgYmUgaWdub3JlZC4gVGhlbiwgdGhlIGZ1bmN0aW9uIHN0b3BzIGF0IHRoZSBmaXJzdA0KPiA+ PiBjaGFyYWN0ZXIgdGhhdCBpcyBhIG5vdCBhDQo+ID4+DQo+ID4+DQo+ID4+ICAgdmFsaWQgZGVj aW1hbCBjaGFyYWN0ZXIgb3IgYSBOdWxsLXRlcm1pbmF0b3IsDQo+ID4+IHdoaWNoZXZlciBvbmUg Y29tZXMgZmlyc3QuDQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+IC0gIElmIFN0 cmluZyBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KPiA+Pg0KPiA+Pg0KPiA+PiAtICBJZiBEYXRh IGlzIE5VTEwsIHRoZW4gQVNTRVJUKCkuDQo+ID4+DQo+ID4+DQo+ID4+ICAgSWYgU3RyaW5nIGlz IG5vdCBhbGlnbmVkIGluIGEgMTYtYml0IGJvdW5kYXJ5LA0KPiB0aGVuDQo+ID4+IEFTU0VSVCgp Lg0KPiA+Pg0KPiA+Pg0KPiA+PiAtICBJZiBQY2RNYXhpbXVtVW5pY29kZVN0cmluZ0xlbmd0aCBp cyBub3QgemVybywgYW5kDQo+ID4+IFN0cmluZyBjb250YWlucyBtb3JlIHRoYW4NCj4gPj4NCj4g Pj4NCj4gPj4gLSAgUGNkTWF4aW11bVVuaWNvZGVTdHJpbmdMZW5ndGggVW5pY29kZSBjaGFyYWN0 ZXJzLA0KPiA+PiBub3QgaW5jbHVkaW5nIHRoZQ0KPiA+Pg0KPiA+Pg0KPiA+PiAtICBOdWxsLXRl cm1pbmF0b3IsIHRoZW4gQVNTRVJUKCkuDQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+DQo+ ID4+ICAgSWYgU3RyaW5nIGhhcyBubyB2YWxpZCBkZWNpbWFsIGRpZ2l0cyBpbiB0aGUgYWJvdmUN Cj4gPj4gZm9ybWF0LCB0aGVuIDAgaXMgc3RvcmVkDQo+ID4+DQo+ID4+DQo+ID4+ICAgYXQgdGhl IGxvY2F0aW9uIHBvaW50ZWQgdG8gYnkgRGF0YS4NCj4gPj4NCj4gPj4NCj4gPj4gQEAgLTQwNiwx MiArMzk3LDcgQEAgU3RyRGVjaW1hbFRvVWludG5TICgNCj4gPj4gICBiZSBpZ25vcmVkLiBUaGVu LCB0aGUgZnVuY3Rpb24gc3RvcHMgYXQgdGhlIGZpcnN0DQo+ID4+IGNoYXJhY3RlciB0aGF0IGlz IGEgbm90IGENCj4gPj4NCj4gPj4NCj4gPj4gICB2YWxpZCBkZWNpbWFsIGNoYXJhY3RlciBvciBh IE51bGwtdGVybWluYXRvciwNCj4gPj4gd2hpY2hldmVyIG9uZSBjb21lcyBmaXJzdC4NCj4gPj4N Cj4gPj4NCj4gPj4NCj4gPj4NCj4gPj4NCj4gPj4gLSAgSWYgU3RyaW5nIGlzIE5VTEwsIHRoZW4g QVNTRVJUKCkuDQo+ID4+DQo+ID4+DQo+ID4+IC0gIElmIERhdGEgaXMgTlVMTCwgdGhlbiBBU1NF UlQoKS4NCj4gPj4NCj4gPj4NCj4gPj4gICBJZiBTdHJpbmcgaXMgbm90IGFsaWduZWQgaW4gYSAx Ni1iaXQgYm91bmRhcnksDQo+IHRoZW4NCj4gPj4gQVNTRVJUKCkuDQo+ID4+DQo+ID4+DQo+ID4+ IC0gIElmIFBjZE1heGltdW1Vbmljb2RlU3RyaW5nTGVuZ3RoIGlzIG5vdCB6ZXJvLCBhbmQNCj4g Pj4gU3RyaW5nIGNvbnRhaW5zIG1vcmUgdGhhbg0KPiA+Pg0KPiA+Pg0KPiA+PiAtICBQY2RNYXhp bXVtVW5pY29kZVN0cmluZ0xlbmd0aCBVbmljb2RlIGNoYXJhY3RlcnMsDQo+ID4+IG5vdCBpbmNs dWRpbmcgdGhlDQo+ID4+DQo+ID4+DQo+ID4+IC0gIE51bGwtdGVybWluYXRvciwgdGhlbiBBU1NF UlQoKS4NCj4gPj4NCj4gPj4NCj4gPj4NCj4gPj4NCj4gPj4NCj4gPj4gICBJZiBTdHJpbmcgaGFz IG5vIHZhbGlkIGRlY2ltYWwgZGlnaXRzIGluIHRoZSBhYm92ZQ0KPiA+PiBmb3JtYXQsIHRoZW4g MCBpcyBzdG9yZWQNCj4gPj4NCj4gPj4NCj4gPj4gICBhdCB0aGUgbG9jYXRpb24gcG9pbnRlZCB0 byBieSBEYXRhLg0KPiA+Pg0KPiA+Pg0KPiA+PiBAQCAtNDY3LDEyICs0NTMsNyBAQCBTdHJEZWNp bWFsVG9VaW50NjRTICgNCj4gPj4gICB0aGUgZmlyc3QgY2hhcmFjdGVyIHRoYXQgaXMgYSBub3Qg YSB2YWxpZA0KPiA+PiBoZXhhZGVjaW1hbCBjaGFyYWN0ZXIgb3IgTlVMTCwNCj4gPj4NCj4gPj4N Cj4gPj4gICB3aGljaGV2ZXIgb25lIGNvbWVzIGZpcnN0Lg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+ Pg0KPiA+Pg0KPiA+PiAtICBJZiBTdHJpbmcgaXMgTlVMTCwgdGhlbiBBU1NFUlQoKS4NCj4gPj4N Cj4gPj4NCj4gPj4gLSAgSWYgRGF0YSBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KPiA+Pg0KPiA+ Pg0KPiA+PiAgIElmIFN0cmluZyBpcyBub3QgYWxpZ25lZCBpbiBhIDE2LWJpdCBib3VuZGFyeSwN Cj4gdGhlbg0KPiA+PiBBU1NFUlQoKS4NCj4gPj4NCj4gPj4NCj4gPj4gLSAgSWYgUGNkTWF4aW11 bVVuaWNvZGVTdHJpbmdMZW5ndGggaXMgbm90IHplcm8sIGFuZA0KPiA+PiBTdHJpbmcgY29udGFp bnMgbW9yZSB0aGFuDQo+ID4+DQo+ID4+DQo+ID4+IC0gIFBjZE1heGltdW1Vbmljb2RlU3RyaW5n TGVuZ3RoIFVuaWNvZGUgY2hhcmFjdGVycywNCj4gPj4gbm90IGluY2x1ZGluZyB0aGUNCj4gPj4N Cj4gPj4NCj4gPj4gLSAgTnVsbC10ZXJtaW5hdG9yLCB0aGVuIEFTU0VSVCgpLg0KPiA+Pg0KPiA+ Pg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+PiAgIElmIFN0cmluZyBoYXMgbm8gdmFsaWQgaGV4YWRl Y2ltYWwgZGlnaXRzIGluIHRoZQ0KPiA+PiBhYm92ZSBmb3JtYXQsIHRoZW4gMCBpcw0KPiA+Pg0K PiA+Pg0KPiA+PiAgIHN0b3JlZCBhdCB0aGUgbG9jYXRpb24gcG9pbnRlZCB0byBieSBEYXRhLg0K PiA+Pg0KPiA+Pg0KPiA+PiBAQCAtNTI4LDEyICs1MDksNyBAQCBTdHJIZXhUb1VpbnRuUyAoDQo+ ID4+ICAgdGhlIGZpcnN0IGNoYXJhY3RlciB0aGF0IGlzIGEgbm90IGEgdmFsaWQNCj4gPj4gaGV4 YWRlY2ltYWwgY2hhcmFjdGVyIG9yIE5VTEwsDQo+ID4+DQo+ID4+DQo+ID4+ICAgd2hpY2hldmVy IG9uZSBjb21lcyBmaXJzdC4NCj4gPj4NCj4gPj4NCj4gPj4NCj4gPj4NCj4gPj4NCj4gPj4gLSAg SWYgU3RyaW5nIGlzIE5VTEwsIHRoZW4gQVNTRVJUKCkuDQo+ID4+DQo+ID4+DQo+ID4+IC0gIElm IERhdGEgaXMgTlVMTCwgdGhlbiBBU1NFUlQoKS4NCj4gPj4NCj4gPj4NCj4gPj4gICBJZiBTdHJp bmcgaXMgbm90IGFsaWduZWQgaW4gYSAxNi1iaXQgYm91bmRhcnksDQo+IHRoZW4NCj4gPj4gQVNT RVJUKCkuDQo+ID4+DQo+ID4+DQo+ID4+IC0gIElmIFBjZE1heGltdW1Vbmljb2RlU3RyaW5nTGVu Z3RoIGlzIG5vdCB6ZXJvLCBhbmQNCj4gPj4gU3RyaW5nIGNvbnRhaW5zIG1vcmUgdGhhbg0KPiA+ Pg0KPiA+Pg0KPiA+PiAtICBQY2RNYXhpbXVtVW5pY29kZVN0cmluZ0xlbmd0aCBVbmljb2RlIGNo YXJhY3RlcnMsDQo+ID4+IG5vdCBpbmNsdWRpbmcgdGhlDQo+ID4+DQo+ID4+DQo+ID4+IC0gIE51 bGwtdGVybWluYXRvciwgdGhlbiBBU1NFUlQoKS4NCj4gPj4NCj4gPj4NCj4gPj4NCj4gPj4NCj4g Pj4NCj4gPj4gICBJZiBTdHJpbmcgaGFzIG5vIHZhbGlkIGhleGFkZWNpbWFsIGRpZ2l0cyBpbiB0 aGUNCj4gPj4gYWJvdmUgZm9ybWF0LCB0aGVuIDAgaXMNCj4gPj4NCj4gPj4NCj4gPj4gICBzdG9y ZWQgYXQgdGhlIGxvY2F0aW9uIHBvaW50ZWQgdG8gYnkgRGF0YS4NCj4gPj4NCj4gPj4NCj4gPj4g QEAgLTYyMiw4ICs1OTgsNiBAQCBBc2NpaVN0cm5TaXplUyAoDQo+ID4+DQo+ID4+DQo+ID4+DQo+ ID4+ICAgVGhpcyBmdW5jdGlvbiBpcyBzaW1pbGFyIGFzIHN0cmNweV9zIGRlZmluZWQgaW4NCj4g QzExLg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+PiAtICBJZiBhbiBlcnJvciB3 b3VsZCBiZSByZXR1cm5lZCwgdGhlbiB0aGUgZnVuY3Rpb24NCj4gPj4gd2lsbCBhbHNvIEFTU0VS VCgpLg0KPiA+Pg0KPiA+Pg0KPiA+PiAtDQo+ID4+DQo+ID4+DQo+ID4+ICAgSWYgYW4gZXJyb3Ig aXMgcmV0dXJuZWQsIHRoZW4gdGhlIERlc3RpbmF0aW9uIGlzDQo+ID4+IHVubW9kaWZpZWQuDQo+ ID4+DQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+ICAgQHBhcmFtICBEZXN0aW5hdGlvbiAg ICAgICAgICAgICAgQSBwb2ludGVyIHRvIGENCj4gPj4gTnVsbC10ZXJtaW5hdGVkIEFzY2lpIHN0 cmluZy4NCj4gPj4NCj4gPj4NCj4gPj4gQEAgLTY1Niw4ICs2MzAsNiBAQCBBc2NpaVN0ckNweVMg KA0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+PiAgIFRoaXMgZnVuY3Rpb24gaXMgc2ltaWxhciBhcyBz dHJuY3B5X3MgZGVmaW5lZCBpbg0KPiA+PiBDMTEuDQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+DQo+ ID4+DQo+ID4+IC0gIElmIGFuIGVycm9yIHdvdWxkIGJlIHJldHVybmVkLCB0aGVuIHRoZSBmdW5j dGlvbg0KPiA+PiB3aWxsIGFsc28gQVNTRVJUKCkuDQo+ID4+DQo+ID4+DQo+ID4+IC0NCj4gPj4N Cj4gPj4NCj4gPj4gICBJZiBhbiBlcnJvciBpcyByZXR1cm5lZCwgdGhlbiB0aGUgRGVzdGluYXRp b24gaXMNCj4gPj4gdW5tb2RpZmllZC4NCj4gPj4NCj4gPj4NCj4gPj4NCj4gPj4NCj4gPj4NCj4g Pj4gICBAcGFyYW0gIERlc3RpbmF0aW9uICAgICAgICAgICAgICBBIHBvaW50ZXIgdG8gYQ0KPiA+ PiBOdWxsLXRlcm1pbmF0ZWQgQXNjaWkgc3RyaW5nLg0KPiA+Pg0KPiA+Pg0KPiA+PiBAQCAtNjky LDggKzY2NCw2IEBAIEFzY2lpU3RybkNweVMgKA0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+PiAgIFRo aXMgZnVuY3Rpb24gaXMgc2ltaWxhciBhcyBzdHJjYXRfcyBkZWZpbmVkIGluDQo+IEMxMS4NCj4g Pj4NCj4gPj4NCj4gPj4NCj4gPj4NCj4gPj4NCj4gPj4gLSAgSWYgYW4gZXJyb3Igd291bGQgYmUg cmV0dXJuZWQsIHRoZW4gdGhlIGZ1bmN0aW9uDQo+ID4+IHdpbGwgYWxzbyBBU1NFUlQoKS4NCj4g Pj4NCj4gPj4NCj4gPj4gLQ0KPiA+Pg0KPiA+Pg0KPiA+PiAgIElmIGFuIGVycm9yIGlzIHJldHVy bmVkLCB0aGVuIHRoZSBEZXN0aW5hdGlvbiBpcw0KPiA+PiB1bm1vZGlmaWVkLg0KPiA+Pg0KPiA+ Pg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+PiAgIEBwYXJhbSAgRGVzdGluYXRpb24gICAgICAgICAg ICAgIEEgcG9pbnRlciB0byBhDQo+ID4+IE51bGwtdGVybWluYXRlZCBBc2NpaSBzdHJpbmcuDQo+ ID4+DQo+ID4+DQo+ID4+IEBAIC03MzAsOCArNzAwLDYgQEAgQXNjaWlTdHJDYXRTICgNCj4gPj4N Cj4gPj4NCj4gPj4NCj4gPj4gICBUaGlzIGZ1bmN0aW9uIGlzIHNpbWlsYXIgYXMgc3RybmNhdF9z IGRlZmluZWQgaW4NCj4gPj4gQzExLg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+ PiAtICBJZiBhbiBlcnJvciB3b3VsZCBiZSByZXR1cm5lZCwgdGhlbiB0aGUgZnVuY3Rpb24NCj4g Pj4gd2lsbCBhbHNvIEFTU0VSVCgpLg0KPiA+Pg0KPiA+Pg0KPiA+PiAtDQo+ID4+DQo+ID4+DQo+ ID4+ICAgSWYgYW4gZXJyb3IgaXMgcmV0dXJuZWQsIHRoZW4gdGhlIERlc3RpbmF0aW9uIGlzDQo+ ID4+IHVubW9kaWZpZWQuDQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+ICAgQHBh cmFtICBEZXN0aW5hdGlvbiAgICAgICAgICAgICAgQSBwb2ludGVyIHRvIGENCj4gPj4gTnVsbC10 ZXJtaW5hdGVkIEFzY2lpIHN0cmluZy4NCj4gPj4NCj4gPj4NCj4gPj4gQEAgLTc3NywxMiArNzQ1 LDYgQEAgQXNjaWlTdHJuQ2F0UyAoDQo+ID4+ICAgYmUgaWdub3JlZC4gVGhlbiwgdGhlIGZ1bmN0 aW9uIHN0b3BzIGF0IHRoZSBmaXJzdA0KPiA+PiBjaGFyYWN0ZXIgdGhhdCBpcyBhIG5vdCBhDQo+ ID4+DQo+ID4+DQo+ID4+ICAgdmFsaWQgZGVjaW1hbCBjaGFyYWN0ZXIgb3IgYSBOdWxsLXRlcm1p bmF0b3IsDQo+ID4+IHdoaWNoZXZlciBvbmUgY29tZXMgZmlyc3QuDQo+ID4+DQo+ID4+DQo+ID4+ DQo+ID4+DQo+ID4+DQo+ID4+IC0gIElmIFN0cmluZyBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0K PiA+Pg0KPiA+Pg0KPiA+PiAtICBJZiBEYXRhIGlzIE5VTEwsIHRoZW4gQVNTRVJUKCkuDQo+ID4+ DQo+ID4+DQo+ID4+IC0gIElmIFBjZE1heGltdW1Bc2NpaVN0cmluZ0xlbmd0aCBpcyBub3QgemVy bywgYW5kDQo+ID4+IFN0cmluZyBjb250YWlucyBtb3JlIHRoYW4NCj4gPj4NCj4gPj4NCj4gPj4g LSAgUGNkTWF4aW11bUFzY2lpU3RyaW5nTGVuZ3RoIEFzY2lpIGNoYXJhY3RlcnMsIG5vdA0KPiA+ PiBpbmNsdWRpbmcgdGhlDQo+ID4+DQo+ID4+DQo+ID4+IC0gIE51bGwtdGVybWluYXRvciwgdGhl biBBU1NFUlQoKS4NCj4gPj4NCj4gPj4NCj4gPj4gLQ0KPiA+Pg0KPiA+Pg0KPiA+PiAgIElmIFN0 cmluZyBoYXMgbm8gdmFsaWQgZGVjaW1hbCBkaWdpdHMgaW4gdGhlIGFib3ZlDQo+ID4+IGZvcm1h dCwgdGhlbiAwIGlzIHN0b3JlZA0KPiA+Pg0KPiA+Pg0KPiA+PiAgIGF0IHRoZSBsb2NhdGlvbiBw b2ludGVkIHRvIGJ5IERhdGEuDQo+ID4+DQo+ID4+DQo+ID4+ICAgSWYgdGhlIG51bWJlciByZXBy ZXNlbnRlZCBieSBTdHJpbmcgZXhjZWVkcyB0aGUNCj4gPj4gcmFuZ2UgZGVmaW5lZCBieSBVSU5U TiwgdGhlbg0KPiA+Pg0KPiA+Pg0KPiA+PiBAQCAtODMyLDEyICs3OTQsNiBAQCBBc2NpaVN0ckRl Y2ltYWxUb1VpbnRuUyAoDQo+ID4+ICAgYmUgaWdub3JlZC4gVGhlbiwgdGhlIGZ1bmN0aW9uIHN0 b3BzIGF0IHRoZSBmaXJzdA0KPiA+PiBjaGFyYWN0ZXIgdGhhdCBpcyBhIG5vdCBhDQo+ID4+DQo+ ID4+DQo+ID4+ICAgdmFsaWQgZGVjaW1hbCBjaGFyYWN0ZXIgb3IgYSBOdWxsLXRlcm1pbmF0b3Is DQo+ID4+IHdoaWNoZXZlciBvbmUgY29tZXMgZmlyc3QuDQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+ DQo+ID4+DQo+ID4+IC0gIElmIFN0cmluZyBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KPiA+Pg0K PiA+Pg0KPiA+PiAtICBJZiBEYXRhIGlzIE5VTEwsIHRoZW4gQVNTRVJUKCkuDQo+ID4+DQo+ID4+ DQo+ID4+IC0gIElmIFBjZE1heGltdW1Bc2NpaVN0cmluZ0xlbmd0aCBpcyBub3QgemVybywgYW5k DQo+ID4+IFN0cmluZyBjb250YWlucyBtb3JlIHRoYW4NCj4gPj4NCj4gPj4NCj4gPj4gLSAgUGNk TWF4aW11bUFzY2lpU3RyaW5nTGVuZ3RoIEFzY2lpIGNoYXJhY3RlcnMsIG5vdA0KPiA+PiBpbmNs dWRpbmcgdGhlDQo+ID4+DQo+ID4+DQo+ID4+IC0gIE51bGwtdGVybWluYXRvciwgdGhlbiBBU1NF UlQoKS4NCj4gPj4NCj4gPj4NCj4gPj4gLQ0KPiA+Pg0KPiA+Pg0KPiA+PiAgIElmIFN0cmluZyBo YXMgbm8gdmFsaWQgZGVjaW1hbCBkaWdpdHMgaW4gdGhlIGFib3ZlDQo+ID4+IGZvcm1hdCwgdGhl biAwIGlzIHN0b3JlZA0KPiA+Pg0KPiA+Pg0KPiA+PiAgIGF0IHRoZSBsb2NhdGlvbiBwb2ludGVk IHRvIGJ5IERhdGEuDQo+ID4+DQo+ID4+DQo+ID4+ICAgSWYgdGhlIG51bWJlciByZXByZXNlbnRl ZCBieSBTdHJpbmcgZXhjZWVkcyB0aGUNCj4gPj4gcmFuZ2UgZGVmaW5lZCBieSBVSU5UNjQsIHRo ZW4NCj4gPj4NCj4gPj4NCj4gPj4gQEAgLTg5MSwxMiArODQ3LDYgQEAgQXNjaWlTdHJEZWNpbWFs VG9VaW50NjRTICgNCj4gPj4gICBjaGFyYWN0ZXIgdGhhdCBpcyBhIG5vdCBhIHZhbGlkIGhleGFk ZWNpbWFsDQo+ID4+IGNoYXJhY3RlciBvciBOdWxsLXRlcm1pbmF0b3IsDQo+ID4+DQo+ID4+DQo+ ID4+ICAgd2hpY2hldmVyIG9uIGNvbWVzIGZpcnN0Lg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+Pg0K PiA+Pg0KPiA+PiAtICBJZiBTdHJpbmcgaXMgTlVMTCwgdGhlbiBBU1NFUlQoKS4NCj4gPj4NCj4g Pj4NCj4gPj4gLSAgSWYgRGF0YSBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KPiA+Pg0KPiA+Pg0K PiA+PiAtICBJZiBQY2RNYXhpbXVtQXNjaWlTdHJpbmdMZW5ndGggaXMgbm90IHplcm8sIGFuZA0K PiA+PiBTdHJpbmcgY29udGFpbnMgbW9yZSB0aGFuDQo+ID4+DQo+ID4+DQo+ID4+IC0gIFBjZE1h eGltdW1Bc2NpaVN0cmluZ0xlbmd0aCBBc2NpaSBjaGFyYWN0ZXJzLCBub3QNCj4gPj4gaW5jbHVk aW5nIHRoZQ0KPiA+Pg0KPiA+Pg0KPiA+PiAtICBOdWxsLXRlcm1pbmF0b3IsIHRoZW4gQVNTRVJU KCkuDQo+ID4+DQo+ID4+DQo+ID4+IC0NCj4gPj4NCj4gPj4NCj4gPj4gICBJZiBTdHJpbmcgaGFz IG5vIHZhbGlkIGhleGFkZWNpbWFsIGRpZ2l0cyBpbiB0aGUNCj4gPj4gYWJvdmUgZm9ybWF0LCB0 aGVuIDAgaXMNCj4gPj4NCj4gPj4NCj4gPj4gICBzdG9yZWQgYXQgdGhlIGxvY2F0aW9uIHBvaW50 ZWQgdG8gYnkgRGF0YS4NCj4gPj4NCj4gPj4NCj4gPj4gICBJZiB0aGUgbnVtYmVyIHJlcHJlc2Vu dGVkIGJ5IFN0cmluZyBleGNlZWRzIHRoZQ0KPiA+PiByYW5nZSBkZWZpbmVkIGJ5IFVJTlROLCB0 aGVuDQo+ID4+DQo+ID4+DQo+ID4+IEBAIC05NTAsMTIgKzkwMCw2IEBAIEFzY2lpU3RySGV4VG9V aW50blMgKA0KPiA+PiAgIGNoYXJhY3RlciB0aGF0IGlzIGEgbm90IGEgdmFsaWQgaGV4YWRlY2lt YWwNCj4gPj4gY2hhcmFjdGVyIG9yIE51bGwtdGVybWluYXRvciwNCj4gPj4NCj4gPj4NCj4gPj4g ICB3aGljaGV2ZXIgb24gY29tZXMgZmlyc3QuDQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+ DQo+ID4+IC0gIElmIFN0cmluZyBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KPiA+Pg0KPiA+Pg0K PiA+PiAtICBJZiBEYXRhIGlzIE5VTEwsIHRoZW4gQVNTRVJUKCkuDQo+ID4+DQo+ID4+DQo+ID4+ IC0gIElmIFBjZE1heGltdW1Bc2NpaVN0cmluZ0xlbmd0aCBpcyBub3QgemVybywgYW5kDQo+ID4+ IFN0cmluZyBjb250YWlucyBtb3JlIHRoYW4NCj4gPj4NCj4gPj4NCj4gPj4gLSAgUGNkTWF4aW11 bUFzY2lpU3RyaW5nTGVuZ3RoIEFzY2lpIGNoYXJhY3RlcnMsIG5vdA0KPiA+PiBpbmNsdWRpbmcg dGhlDQo+ID4+DQo+ID4+DQo+ID4+IC0gIE51bGwtdGVybWluYXRvciwgdGhlbiBBU1NFUlQoKS4N Cj4gPj4NCj4gPj4NCj4gPj4gLQ0KPiA+Pg0KPiA+Pg0KPiA+PiAgIElmIFN0cmluZyBoYXMgbm8g dmFsaWQgaGV4YWRlY2ltYWwgZGlnaXRzIGluIHRoZQ0KPiA+PiBhYm92ZSBmb3JtYXQsIHRoZW4g MCBpcw0KPiA+Pg0KPiA+Pg0KPiA+PiAgIHN0b3JlZCBhdCB0aGUgbG9jYXRpb24gcG9pbnRlZCB0 byBieSBEYXRhLg0KPiA+Pg0KPiA+Pg0KPiA+PiAgIElmIHRoZSBudW1iZXIgcmVwcmVzZW50ZWQg YnkgU3RyaW5nIGV4Y2VlZHMgdGhlDQo+ID4+IHJhbmdlIGRlZmluZWQgYnkgVUlOVDY0LCB0aGVu DQo+ID4+DQo+ID4+DQo+ID4+IEBAIC0xNTA2LDE2ICsxNDUwLDggQEAgU3RySGV4VG9VaW50NjQg KA0KPiA+PiAgICI6OiIgY2FuIGJlIHVzZWQgdG8gY29tcHJlc3Mgb25lIG9yIG1vcmUgZ3JvdXBz IG9mDQo+IFgNCj4gPj4gd2hlbiBYIGNvbnRhaW5zIG9ubHkgMC4NCj4gPj4NCj4gPj4NCj4gPj4g ICBUaGUgIjo6IiBjYW4gb25seSBhcHBlYXIgb25jZSBpbiB0aGUgU3RyaW5nLg0KPiA+Pg0KPiA+ Pg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+PiAtICBJZiBTdHJpbmcgaXMgTlVMTCwgdGhlbiBBU1NF UlQoKS4NCj4gPj4NCj4gPj4NCj4gPj4gLQ0KPiA+Pg0KPiA+Pg0KPiA+PiAtICBJZiBBZGRyZXNz IGlzIE5VTEwsIHRoZW4gQVNTRVJUKCkuDQo+ID4+DQo+ID4+DQo+ID4+IC0NCj4gPj4NCj4gPj4N Cj4gPj4gICBJZiBTdHJpbmcgaXMgbm90IGFsaWduZWQgaW4gYSAxNi1iaXQgYm91bmRhcnksDQo+ IHRoZW4NCj4gPj4gQVNTRVJUKCkuDQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+ IC0gIElmIFBjZE1heGltdW1Vbmljb2RlU3RyaW5nTGVuZ3RoIGlzIG5vdCB6ZXJvLCBhbmQNCj4g Pj4gU3RyaW5nIGNvbnRhaW5zIG1vcmUgdGhhbg0KPiA+Pg0KPiA+Pg0KPiA+PiAtICBQY2RNYXhp bXVtVW5pY29kZVN0cmluZ0xlbmd0aCBVbmljb2RlIGNoYXJhY3RlcnMsDQo+ID4+IG5vdCBpbmNs dWRpbmcgdGhlDQo+ID4+DQo+ID4+DQo+ID4+IC0gIE51bGwtdGVybWluYXRvciwgdGhlbiBBU1NF UlQoKS4NCj4gPj4NCj4gPj4NCj4gPj4gLQ0KPiA+Pg0KPiA+Pg0KPiA+PiAgIElmIEVuZFBvaW50 ZXIgaXMgbm90IE5VTEwgYW5kIEFkZHJlc3MgaXMNCj4gdHJhbnNsYXRlZA0KPiA+PiBmcm9tIFN0 cmluZywgYSBwb2ludGVyDQo+ID4+DQo+ID4+DQo+ID4+ICAgdG8gdGhlIGNoYXJhY3RlciB0aGF0 IHN0b3BwZWQgdGhlIHNjYW4gaXMgc3RvcmVkDQo+IGF0DQo+ID4+IHRoZSBsb2NhdGlvbiBwb2lu dGVkIHRvDQo+ID4+DQo+ID4+DQo+ID4+ICAgYnkgRW5kUG9pbnRlci4NCj4gPj4NCj4gPj4NCj4g Pj4gQEAgLTE1NjcsMTYgKzE1MDMsOCBAQCBTdHJUb0lwdjZBZGRyZXNzICgNCj4gPj4gICBXaGVu IC9QIGlzIGluIHRoZSBTdHJpbmcsIHRoZSBmdW5jdGlvbiBzdG9wcyBhdA0KPiB0aGUNCj4gPj4g Zmlyc3QgY2hhcmFjdGVyIHRoYXQgaXMgbm90DQo+ID4+DQo+ID4+DQo+ID4+ICAgYSB2YWxpZCBk ZWNpbWFsIGRpZ2l0IGNoYXJhY3RlciBhZnRlciBQIGlzDQo+ID4+IGNvbnZlcnRlZC4NCj4gPj4N Cj4gPj4NCj4gPj4NCj4gPj4NCj4gPj4NCj4gPj4gLSAgSWYgU3RyaW5nIGlzIE5VTEwsIHRoZW4g QVNTRVJUKCkuDQo+ID4+DQo+ID4+DQo+ID4+IC0NCj4gPj4NCj4gPj4NCj4gPj4gLSAgSWYgQWRk cmVzcyBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KPiA+Pg0KPiA+Pg0KPiA+PiAtDQo+ID4+DQo+ ID4+DQo+ID4+ICAgSWYgU3RyaW5nIGlzIG5vdCBhbGlnbmVkIGluIGEgMTYtYml0IGJvdW5kYXJ5 LA0KPiB0aGVuDQo+ID4+IEFTU0VSVCgpLg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+Pg0K PiA+PiAtICBJZiBQY2RNYXhpbXVtVW5pY29kZVN0cmluZ0xlbmd0aCBpcyBub3QgemVybywgYW5k DQo+ID4+IFN0cmluZyBjb250YWlucyBtb3JlIHRoYW4NCj4gPj4NCj4gPj4NCj4gPj4gLSAgUGNk TWF4aW11bVVuaWNvZGVTdHJpbmdMZW5ndGggVW5pY29kZSBjaGFyYWN0ZXJzLA0KPiA+PiBub3Qg aW5jbHVkaW5nIHRoZQ0KPiA+Pg0KPiA+Pg0KPiA+PiAtICBOdWxsLXRlcm1pbmF0b3IsIHRoZW4g QVNTRVJUKCkuDQo+ID4+DQo+ID4+DQo+ID4+IC0NCj4gPj4NCj4gPj4NCj4gPj4gICBJZiBFbmRQ b2ludGVyIGlzIG5vdCBOVUxMIGFuZCBBZGRyZXNzIGlzDQo+IHRyYW5zbGF0ZWQNCj4gPj4gZnJv bSBTdHJpbmcsIGEgcG9pbnRlcg0KPiA+Pg0KPiA+Pg0KPiA+PiAgIHRvIHRoZSBjaGFyYWN0ZXIg dGhhdCBzdG9wcGVkIHRoZSBzY2FuIGlzIHN0b3JlZA0KPiBhdA0KPiA+PiB0aGUgbG9jYXRpb24g cG9pbnRlZCB0bw0KPiA+Pg0KPiA+Pg0KPiA+PiAgIGJ5IEVuZFBvaW50ZXIuDQo+ID4+DQo+ID4+ DQo+ID4+IEBAIC0xNjQwLDggKzE1NjgsNiBAQCBTdHJUb0lwdjRBZGRyZXNzICgNCj4gPj4gICAg ICAgICAgICAgICAgICAgb28gICAgICAgICAgRGF0YTRbNDg6NTVdDQo+ID4+DQo+ID4+DQo+ID4+ ICAgICAgICAgICAgICAgICAgIHBwICAgICAgICAgIERhdGE0WzU2OjYzXQ0KPiA+Pg0KPiA+Pg0K PiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+PiAtICBJZiBTdHJpbmcgaXMgTlVMTCwgdGhlbiBBU1NFUlQo KS4NCj4gPj4NCj4gPj4NCj4gPj4gLSAgSWYgR3VpZCBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0K PiA+Pg0KPiA+Pg0KPiA+PiAgIElmIFN0cmluZyBpcyBub3QgYWxpZ25lZCBpbiBhIDE2LWJpdCBi b3VuZGFyeSwNCj4gdGhlbg0KPiA+PiBBU1NFUlQoKS4NCj4gPj4NCj4gPj4NCj4gPj4NCj4gPj4N Cj4gPj4NCj4gPj4gICBAcGFyYW0gIFN0cmluZyAgICAgICAgICAgICAgICAgICBQb2ludGVyIHRv IGENCj4gTnVsbC0NCj4gPj4gdGVybWluYXRlZCBVbmljb2RlIHN0cmluZy4NCj4gPj4NCj4gPj4N Cj4gPj4gQEAgLTE2NzYsMTcgKzE2MDIsNiBAQCBTdHJUb0d1aWQgKA0KPiA+Pg0KPiA+Pg0KPiA+ Pg0KPiA+PiAgIElmIFN0cmluZyBpcyBub3QgYWxpZ25lZCBpbiBhIDE2LWJpdCBib3VuZGFyeSwN Cj4gdGhlbg0KPiA+PiBBU1NFUlQoKS4NCj4gPj4NCj4gPj4NCj4gPj4NCj4gPj4NCj4gPj4NCj4g Pj4gLSAgSWYgU3RyaW5nIGlzIE5VTEwsIHRoZW4gQVNTRVJUKCkuDQo+ID4+DQo+ID4+DQo+ID4+ IC0NCj4gPj4NCj4gPj4NCj4gPj4gLSAgSWYgQnVmZmVyIGlzIE5VTEwsIHRoZW4gQVNTRVJUKCku DQo+ID4+DQo+ID4+DQo+ID4+IC0NCj4gPj4NCj4gPj4NCj4gPj4gLSAgSWYgTGVuZ3RoIGlzIG5v dCBtdWx0aXBsZSBvZiAyLCB0aGVuIEFTU0VSVCgpLg0KPiA+Pg0KPiA+Pg0KPiA+PiAtDQo+ID4+ DQo+ID4+DQo+ID4+IC0gIElmIFBjZE1heGltdW1Vbmljb2RlU3RyaW5nTGVuZ3RoIGlzIG5vdCB6 ZXJvIGFuZA0KPiA+PiBMZW5ndGggaXMgZ3JlYXRlciB0aGFuDQo+ID4+DQo+ID4+DQo+ID4+IC0g IFBjZE1heGltdW1Vbmljb2RlU3RyaW5nTGVuZ3RoLCB0aGVuIEFTU0VSVCgpLg0KPiA+Pg0KPiA+ Pg0KPiA+PiAtDQo+ID4+DQo+ID4+DQo+ID4+IC0gIElmIE1heEJ1ZmZlclNpemUgaXMgbGVzcyB0 aGFuIChMZW5ndGggLyAyKSwgdGhlbg0KPiA+PiBBU1NFUlQoKS4NCj4gPj4NCj4gPj4NCj4gPj4g LQ0KPiA+Pg0KPiA+Pg0KPiA+PiAgIEBwYXJhbSAgU3RyaW5nICAgICAgICAgICAgICAgICAgIFBv aW50ZXIgdG8gYQ0KPiBOdWxsLQ0KPiA+PiB0ZXJtaW5hdGVkIFVuaWNvZGUgc3RyaW5nLg0KPiA+ Pg0KPiA+Pg0KPiA+PiAgIEBwYXJhbSAgTGVuZ3RoICAgICAgICAgICAgICAgICAgIFRoZSBudW1i ZXIgb2YNCj4gPj4gVW5pY29kZSBjaGFyYWN0ZXJzIHRvIGRlY29kZS4NCj4gPj4NCj4gPj4NCj4g Pj4gICBAcGFyYW0gIEJ1ZmZlciAgICAgICAgICAgICAgICAgICBQb2ludGVyIHRvIHRoZQ0KPiA+ PiBjb252ZXJ0ZWQgYnl0ZXMgYXJyYXkuDQo+ID4+DQo+ID4+DQo+ID4+IEBAIC0xNzc3LDcgKzE2 OTIsNiBAQCBVbmljb2RlU3RyVG9Bc2NpaVN0ciAoDQo+ID4+ICAgdGhlIHVwcGVyIDggYml0cywg dGhlbiBBU1NFUlQoKS4NCj4gPj4NCj4gPj4NCj4gPj4NCj4gPj4NCj4gPj4NCj4gPj4gICBJZiBT b3VyY2UgaXMgbm90IGFsaWduZWQgb24gYSAxNi1iaXQgYm91bmRhcnksDQo+IHRoZW4NCj4gPj4g QVNTRVJUKCkuDQo+ID4+DQo+ID4+DQo+ID4+IC0gIElmIGFuIGVycm9yIHdvdWxkIGJlIHJldHVy bmVkLCB0aGVuIHRoZSBmdW5jdGlvbg0KPiA+PiB3aWxsIGFsc28gQVNTRVJUKCkuDQo+ID4+DQo+ ID4+DQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+ICAgSWYgYW4gZXJyb3IgaXMgcmV0dXJuZWQsIHRo ZW4gdGhlIERlc3RpbmF0aW9uIGlzDQo+ID4+IHVubW9kaWZpZWQuDQo+ID4+DQo+ID4+DQo+ID4+ DQo+ID4+DQo+ID4+DQo+ID4+IEBAIC0xODI0LDcgKzE3MzgsNiBAQCBVbmljb2RlU3RyVG9Bc2Np aVN0clMgKA0KPiA+PiAgIElmIGFueSBVbmljb2RlIGNoYXJhY3RlcnMgaW4gU291cmNlIGNvbnRh aW4gbm9uLQ0KPiB6ZXJvDQo+ID4+IHZhbHVlIGluIHRoZSB1cHBlciA4DQo+ID4+DQo+ID4+DQo+ ID4+ICAgYml0cywgdGhlbiBBU1NFUlQoKS4NCj4gPj4NCj4gPj4NCj4gPj4gICBJZiBTb3VyY2Ug aXMgbm90IGFsaWduZWQgb24gYSAxNi1iaXQgYm91bmRhcnksDQo+IHRoZW4NCj4gPj4gQVNTRVJU KCkuDQo+ID4+DQo+ID4+DQo+ID4+IC0gIElmIGFuIGVycm9yIHdvdWxkIGJlIHJldHVybmVkLCB0 aGVuIHRoZSBmdW5jdGlvbg0KPiA+PiB3aWxsIGFsc28gQVNTRVJUKCkuDQo+ID4+DQo+ID4+DQo+ ID4+DQo+ID4+DQo+ID4+DQo+ID4+ICAgSWYgYW4gZXJyb3IgaXMgcmV0dXJuZWQsIHRoZW4gdGhl IERlc3RpbmF0aW9uIGlzDQo+ID4+IHVubW9kaWZpZWQuDQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+ DQo+ID4+DQo+ID4+IEBAIC0yMzg4LDEwICsyMzAxLDYgQEAgQXNjaWlTdHJIZXhUb1VpbnQ2NCAo DQo+ID4+ICAgIjo6IiBjYW4gYmUgdXNlZCB0byBjb21wcmVzcyBvbmUgb3IgbW9yZSBncm91cHMg b2YNCj4gWA0KPiA+PiB3aGVuIFggY29udGFpbnMgb25seSAwLg0KPiA+Pg0KPiA+Pg0KPiA+PiAg IFRoZSAiOjoiIGNhbiBvbmx5IGFwcGVhciBvbmNlIGluIHRoZSBTdHJpbmcuDQo+ID4+DQo+ID4+ DQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+IC0gIElmIFN0cmluZyBpcyBOVUxMLCB0aGVuIEFTU0VS VCgpLg0KPiA+Pg0KPiA+Pg0KPiA+PiAtDQo+ID4+DQo+ID4+DQo+ID4+IC0gIElmIEFkZHJlc3Mg aXMgTlVMTCwgdGhlbiBBU1NFUlQoKS4NCj4gPj4NCj4gPj4NCj4gPj4gLQ0KPiA+Pg0KPiA+Pg0K PiA+PiAgIElmIEVuZFBvaW50ZXIgaXMgbm90IE5VTEwgYW5kIEFkZHJlc3MgaXMNCj4gdHJhbnNs YXRlZA0KPiA+PiBmcm9tIFN0cmluZywgYSBwb2ludGVyDQo+ID4+DQo+ID4+DQo+ID4+ICAgdG8g dGhlIGNoYXJhY3RlciB0aGF0IHN0b3BwZWQgdGhlIHNjYW4gaXMgc3RvcmVkDQo+IGF0DQo+ID4+ IHRoZSBsb2NhdGlvbiBwb2ludGVkIHRvDQo+ID4+DQo+ID4+DQo+ID4+ICAgYnkgRW5kUG9pbnRl ci4NCj4gPj4NCj4gPj4NCj4gPj4gQEAgLTI0NDMsMTAgKzIzNTIsNiBAQCBBc2NpaVN0clRvSXB2 NkFkZHJlc3MgKA0KPiA+PiAgIFdoZW4gL1AgaXMgaW4gdGhlIFN0cmluZywgdGhlIGZ1bmN0aW9u IHN0b3BzIGF0DQo+IHRoZQ0KPiA+PiBmaXJzdCBjaGFyYWN0ZXIgdGhhdCBpcyBub3QNCj4gPj4N Cj4gPj4NCj4gPj4gICBhIHZhbGlkIGRlY2ltYWwgZGlnaXQgY2hhcmFjdGVyIGFmdGVyIFAgaXMN Cj4gPj4gY29udmVydGVkLg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+PiAtICBJ ZiBTdHJpbmcgaXMgTlVMTCwgdGhlbiBBU1NFUlQoKS4NCj4gPj4NCj4gPj4NCj4gPj4gLQ0KPiA+ Pg0KPiA+Pg0KPiA+PiAtICBJZiBBZGRyZXNzIGlzIE5VTEwsIHRoZW4gQVNTRVJUKCkuDQo+ID4+ DQo+ID4+DQo+ID4+IC0NCj4gPj4NCj4gPj4NCj4gPj4gICBJZiBFbmRQb2ludGVyIGlzIG5vdCBO VUxMIGFuZCBBZGRyZXNzIGlzDQo+IHRyYW5zbGF0ZWQNCj4gPj4gZnJvbSBTdHJpbmcsIGEgcG9p bnRlcg0KPiA+Pg0KPiA+Pg0KPiA+PiAgIHRvIHRoZSBjaGFyYWN0ZXIgdGhhdCBzdG9wcGVkIHRo ZSBzY2FuIGlzIHN0b3JlZA0KPiBhdA0KPiA+PiB0aGUgbG9jYXRpb24gcG9pbnRlZCB0bw0KPiA+ Pg0KPiA+Pg0KPiA+PiAgIGJ5IEVuZFBvaW50ZXIuDQo+ID4+DQo+ID4+DQo+ID4+IEBAIC0yNTA4 LDkgKzI0MTMsNiBAQCBBc2NpaVN0clRvSXB2NEFkZHJlc3MgKA0KPiA+PiAgICAgICAgICAgICAg ICAgICBvbyAgICAgICAgICBEYXRhNFs0ODo1NV0NCj4gPj4NCj4gPj4NCj4gPj4gICAgICAgICAg ICAgICAgICAgcHAgICAgICAgICAgRGF0YTRbNTY6NjNdDQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+ DQo+ID4+DQo+ID4+IC0gIElmIFN0cmluZyBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KPiA+Pg0K PiA+Pg0KPiA+PiAtICBJZiBHdWlkIGlzIE5VTEwsIHRoZW4gQVNTRVJUKCkuDQo+ID4+DQo+ID4+ DQo+ID4+IC0NCj4gPj4NCj4gPj4NCj4gPj4gICBAcGFyYW0gIFN0cmluZyAgICAgICAgICAgICAg ICAgICBQb2ludGVyIHRvIGENCj4gTnVsbC0NCj4gPj4gdGVybWluYXRlZCBBU0NJSSBzdHJpbmcu DQo+ID4+DQo+ID4+DQo+ID4+ICAgQHBhcmFtICBHdWlkICAgICAgICAgICAgICAgICAgICAgUG9p bnRlciB0byB0aGUNCj4gPj4gY29udmVydGVkIEdVSUQuDQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+ DQo+ID4+DQo+ID4+IEBAIC0yNTQxLDE3ICsyNDQzLDYgQEAgQXNjaWlTdHJUb0d1aWQgKA0KPiA+ PiAgIGRlY29kaW5nIHN0b3BzIGFmdGVyIExlbmd0aCBvZiBjaGFyYWN0ZXJzIGFuZA0KPiA+PiBv dXRwdXRzIEJ1ZmZlciBjb250YWluaW5nDQo+ID4+DQo+ID4+DQo+ID4+ICAgKExlbmd0aCAvIDIp IGJ5dGVzLg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+PiAtICBJZiBTdHJpbmcg aXMgTlVMTCwgdGhlbiBBU1NFUlQoKS4NCj4gPj4NCj4gPj4NCj4gPj4gLQ0KPiA+Pg0KPiA+Pg0K PiA+PiAtICBJZiBCdWZmZXIgaXMgTlVMTCwgdGhlbiBBU1NFUlQoKS4NCj4gPj4NCj4gPj4NCj4g Pj4gLQ0KPiA+Pg0KPiA+Pg0KPiA+PiAtICBJZiBMZW5ndGggaXMgbm90IG11bHRpcGxlIG9mIDIs IHRoZW4gQVNTRVJUKCkuDQo+ID4+DQo+ID4+DQo+ID4+IC0NCj4gPj4NCj4gPj4NCj4gPj4gLSAg SWYgUGNkTWF4aW11bUFzY2lpU3RyaW5nTGVuZ3RoIGlzIG5vdCB6ZXJvIGFuZA0KPiA+PiBMZW5n dGggaXMgZ3JlYXRlciB0aGFuDQo+ID4+DQo+ID4+DQo+ID4+IC0gIFBjZE1heGltdW1Bc2NpaVN0 cmluZ0xlbmd0aCwgdGhlbiBBU1NFUlQoKS4NCj4gPj4NCj4gPj4NCj4gPj4gLQ0KPiA+Pg0KPiA+ Pg0KPiA+PiAtICBJZiBNYXhCdWZmZXJTaXplIGlzIGxlc3MgdGhhbiAoTGVuZ3RoIC8gMiksIHRo ZW4NCj4gPj4gQVNTRVJUKCkuDQo+ID4+DQo+ID4+DQo+ID4+IC0NCj4gPj4NCj4gPj4NCj4gPj4g ICBAcGFyYW0gIFN0cmluZyAgICAgICAgICAgICAgICAgICBQb2ludGVyIHRvIGENCj4gTnVsbC0N Cj4gPj4gdGVybWluYXRlZCBBU0NJSSBzdHJpbmcuDQo+ID4+DQo+ID4+DQo+ID4+ICAgQHBhcmFt ICBMZW5ndGggICAgICAgICAgICAgICAgICAgVGhlIG51bWJlciBvZg0KPiBBU0NJSQ0KPiA+PiBj aGFyYWN0ZXJzIHRvIGRlY29kZS4NCj4gPj4NCj4gPj4NCj4gPj4gICBAcGFyYW0gIEJ1ZmZlciAg ICAgICAgICAgICAgICAgICBQb2ludGVyIHRvIHRoZQ0KPiA+PiBjb252ZXJ0ZWQgYnl0ZXMgYXJy YXkuDQo+ID4+DQo+ID4+DQo+ID4+IEBAIC0yNjMyLDcgKzI1MjMsNiBAQCBBc2NpaVN0clRvVW5p Y29kZVN0ciAoDQo+ID4+ICAgZXF1YWwgb3IgZ3JlYXRlciB0aGFuICgoQXNjaWlTdHJMZW4gKFNv dXJjZSkgKyAxKQ0KPiAqDQo+ID4+IHNpemVvZiAoQ0hBUjE2KSkgaW4gYnl0ZXMuDQo+ID4+DQo+ ID4+DQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+ICAgSWYgRGVzdGluYXRpb24gaXMgbm90IGFsaWdu ZWQgb24gYSAxNi1iaXQNCj4gYm91bmRhcnksDQo+ID4+IHRoZW4gQVNTRVJUKCkuDQo+ID4+DQo+ ID4+DQo+ID4+IC0gIElmIGFuIGVycm9yIHdvdWxkIGJlIHJldHVybmVkLCB0aGVuIHRoZSBmdW5j dGlvbg0KPiA+PiB3aWxsIGFsc28gQVNTRVJUKCkuDQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+DQo+ ID4+DQo+ID4+ICAgSWYgYW4gZXJyb3IgaXMgcmV0dXJuZWQsIHRoZW4gdGhlIERlc3RpbmF0aW9u IGlzDQo+ID4+IHVubW9kaWZpZWQuDQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+ IEBAIC0yNjc4LDcgKzI1NjgsNiBAQCBBc2NpaVN0clRvVW5pY29kZVN0clMgKA0KPiA+PiAgICgo TUlOKEFzY2lpU3RyTGVuKFNvdXJjZSksIExlbmd0aCkgKyAxKSAqIHNpemVvZg0KPiA+PiAoQ0hB UjgpKSBpbiBieXRlcy4NCj4gPj4NCj4gPj4NCj4gPj4NCj4gPj4NCj4gPj4NCj4gPj4gICBJZiBE ZXN0aW5hdGlvbiBpcyBub3QgYWxpZ25lZCBvbiBhIDE2LWJpdA0KPiBib3VuZGFyeSwNCj4gPj4g dGhlbiBBU1NFUlQoKS4NCj4gPj4NCj4gPj4NCj4gPj4gLSAgSWYgYW4gZXJyb3Igd291bGQgYmUg cmV0dXJuZWQsIHRoZW4gdGhlIGZ1bmN0aW9uDQo+ID4+IHdpbGwgYWxzbyBBU1NFUlQoKS4NCj4g Pj4NCj4gPj4NCj4gPj4NCj4gPj4NCj4gPj4NCj4gPj4gICBJZiBhbiBlcnJvciBpcyByZXR1cm5l ZCwgdGhlbiBEZXN0aW5hdGlvbiBhbmQNCj4gPj4gRGVzdGluYXRpb25MZW5ndGggYXJlDQo+ID4+ DQo+ID4+DQo+ID4+ICAgdW5tb2RpZmllZC4NCj4gPj4NCj4gPj4NCj4gPj4gZGlmZiAtLWdpdCBh L01kZVBrZy9MaWJyYXJ5L0Jhc2VMaWIvU2FmZVN0cmluZy5jDQo+ID4+IGIvTWRlUGtnL0xpYnJh cnkvQmFzZUxpYi9TYWZlU3RyaW5nLmMNCj4gPj4gaW5kZXggN2RjMDNkMmNhYS4uNDFkOTEzN2I4 MyAxMDA2NDQNCj4gPj4gLS0tIGEvTWRlUGtnL0xpYnJhcnkvQmFzZUxpYi9TYWZlU3RyaW5nLmMN Cj4gPj4gKysrIGIvTWRlUGtnL0xpYnJhcnkvQmFzZUxpYi9TYWZlU3RyaW5nLmMNCj4gPj4gQEAg LTE0LDcgKzE0LDYgQEANCj4gPj4NCj4gPj4NCj4gPj4NCj4gPj4gI2RlZmluZSBTQUZFX1NUUklO R19DT05TVFJBSU5UX0NIRUNLKEV4cHJlc3Npb24sDQo+ID4+IFN0YXR1cykgIFwNCj4gPj4NCj4g Pj4NCj4gPj4gICBkbyB7IFwNCj4gPj4NCj4gPj4NCj4gPj4gLSAgICBBU1NFUlQgKEV4cHJlc3Np b24pOyBcDQo+ID4+DQo+ID4+DQo+ID4+ICAgICBpZiAoIShFeHByZXNzaW9uKSkgeyBcDQo+ID4+ DQo+ID4+DQo+ID4+ICAgICAgIHJldHVybiBTdGF0dXM7IFwNCj4gPj4NCj4gPj4NCj4gPj4gICAg IH0gXA0KPiA+Pg0KPiA+Pg0KPiA+PiBAQCAtMTk3LDcgKzE5Niw2IEBAIFN0cm5TaXplUyAoDQo+ ID4+DQo+ID4+DQo+ID4+DQo+ID4+ICAgSWYgRGVzdGluYXRpb24gaXMgbm90IGFsaWduZWQgb24g YSAxNi1iaXQNCj4gYm91bmRhcnksDQo+ID4+IHRoZW4gQVNTRVJUKCkuDQo+ID4+DQo+ID4+DQo+ ID4+ICAgSWYgU291cmNlIGlzIG5vdCBhbGlnbmVkIG9uIGEgMTYtYml0IGJvdW5kYXJ5LA0KPiB0 aGVuDQo+ID4+IEFTU0VSVCgpLg0KPiA+Pg0KPiA+Pg0KPiA+PiAtICBJZiBhbiBlcnJvciB3b3Vs ZCBiZSByZXR1cm5lZCwgdGhlbiB0aGUgZnVuY3Rpb24NCj4gPj4gd2lsbCBhbHNvIEFTU0VSVCgp Lg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+PiAgIElmIGFuIGVycm9yIGlzIHJl dHVybmVkLCB0aGVuIHRoZSBEZXN0aW5hdGlvbiBpcw0KPiA+PiB1bm1vZGlmaWVkLg0KPiA+Pg0K PiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+PiBAQCAtMjc5LDcgKzI3Nyw2IEBAIFN0ckNweVMg KA0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+PiAgIElmIExlbmd0aCA+IDAgYW5kIERlc3RpbmF0aW9u IGlzIG5vdCBhbGlnbmVkIG9uIGENCj4gPj4gMTYtYml0IGJvdW5kYXJ5LCB0aGVuIEFTU0VSVCgp Lg0KPiA+Pg0KPiA+Pg0KPiA+PiAgIElmIExlbmd0aCA+IDAgYW5kIFNvdXJjZSBpcyBub3QgYWxp Z25lZCBvbiBhIDE2LQ0KPiBiaXQNCj4gPj4gYm91bmRhcnksIHRoZW4gQVNTRVJUKCkuDQo+ID4+ DQo+ID4+DQo+ID4+IC0gIElmIGFuIGVycm9yIHdvdWxkIGJlIHJldHVybmVkLCB0aGVuIHRoZSBm dW5jdGlvbg0KPiA+PiB3aWxsIGFsc28gQVNTRVJUKCkuDQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+ DQo+ID4+DQo+ID4+ICAgSWYgYW4gZXJyb3IgaXMgcmV0dXJuZWQsIHRoZW4gdGhlIERlc3RpbmF0 aW9uIGlzDQo+ID4+IHVubW9kaWZpZWQuDQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+DQo+ ID4+IEBAIC0zNzIsNyArMzY5LDYgQEAgU3RybkNweVMgKA0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+ PiAgIElmIERlc3RpbmF0aW9uIGlzIG5vdCBhbGlnbmVkIG9uIGEgMTYtYml0DQo+IGJvdW5kYXJ5 LA0KPiA+PiB0aGVuIEFTU0VSVCgpLg0KPiA+Pg0KPiA+Pg0KPiA+PiAgIElmIFNvdXJjZSBpcyBu b3QgYWxpZ25lZCBvbiBhIDE2LWJpdCBib3VuZGFyeSwNCj4gdGhlbg0KPiA+PiBBU1NFUlQoKS4N Cj4gPj4NCj4gPj4NCj4gPj4gLSAgSWYgYW4gZXJyb3Igd291bGQgYmUgcmV0dXJuZWQsIHRoZW4g dGhlIGZ1bmN0aW9uDQo+ID4+IHdpbGwgYWxzbyBBU1NFUlQoKS4NCj4gPj4NCj4gPj4NCj4gPj4N Cj4gPj4NCj4gPj4NCj4gPj4gICBJZiBhbiBlcnJvciBpcyByZXR1cm5lZCwgdGhlbiB0aGUgRGVz dGluYXRpb24gaXMNCj4gPj4gdW5tb2RpZmllZC4NCj4gPj4NCj4gPj4NCj4gPj4NCj4gPj4NCj4g Pj4NCj4gPj4gQEAgLTQ3Myw3ICs0NjksNiBAQCBTdHJDYXRTICgNCj4gPj4NCj4gPj4NCj4gPj4N Cj4gPj4gICBJZiBEZXN0aW5hdGlvbiBpcyBub3QgYWxpZ25lZCBvbiBhIDE2LWJpdA0KPiBib3Vu ZGFyeSwNCj4gPj4gdGhlbiBBU1NFUlQoKS4NCj4gPj4NCj4gPj4NCj4gPj4gICBJZiBTb3VyY2Ug aXMgbm90IGFsaWduZWQgb24gYSAxNi1iaXQgYm91bmRhcnksDQo+IHRoZW4NCj4gPj4gQVNTRVJU KCkuDQo+ID4+DQo+ID4+DQo+ID4+IC0gIElmIGFuIGVycm9yIHdvdWxkIGJlIHJldHVybmVkLCB0 aGVuIHRoZSBmdW5jdGlvbg0KPiA+PiB3aWxsIGFsc28gQVNTRVJUKCkuDQo+ID4+DQo+ID4+DQo+ ID4+DQo+ID4+DQo+ID4+DQo+ID4+ICAgSWYgYW4gZXJyb3IgaXMgcmV0dXJuZWQsIHRoZW4gdGhl IERlc3RpbmF0aW9uIGlzDQo+ID4+IHVubW9kaWZpZWQuDQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+ DQo+ID4+DQo+ID4+IEBAIC01OTAsMTIgKzU4NSw3IEBAIFN0cm5DYXRTICgNCj4gPj4gICBiZSBp Z25vcmVkLiBUaGVuLCB0aGUgZnVuY3Rpb24gc3RvcHMgYXQgdGhlIGZpcnN0DQo+ID4+IGNoYXJh Y3RlciB0aGF0IGlzIGEgbm90IGENCj4gPj4NCj4gPj4NCj4gPj4gICB2YWxpZCBkZWNpbWFsIGNo YXJhY3RlciBvciBhIE51bGwtdGVybWluYXRvciwNCj4gPj4gd2hpY2hldmVyIG9uZSBjb21lcyBm aXJzdC4NCj4gPj4NCj4gPj4NCj4gPj4NCj4gPj4NCj4gPj4NCj4gPj4gLSAgSWYgU3RyaW5nIGlz IE5VTEwsIHRoZW4gQVNTRVJUKCkuDQo+ID4+DQo+ID4+DQo+ID4+IC0gIElmIERhdGEgaXMgTlVM TCwgdGhlbiBBU1NFUlQoKS4NCj4gPj4NCj4gPj4NCj4gPj4gICBJZiBTdHJpbmcgaXMgbm90IGFs aWduZWQgaW4gYSAxNi1iaXQgYm91bmRhcnksDQo+IHRoZW4NCj4gPj4gQVNTRVJUKCkuDQo+ID4+ DQo+ID4+DQo+ID4+IC0gIElmIFBjZE1heGltdW1Vbmljb2RlU3RyaW5nTGVuZ3RoIGlzIG5vdCB6 ZXJvLCBhbmQNCj4gPj4gU3RyaW5nIGNvbnRhaW5zIG1vcmUgdGhhbg0KPiA+Pg0KPiA+Pg0KPiA+ PiAtICBQY2RNYXhpbXVtVW5pY29kZVN0cmluZ0xlbmd0aCBVbmljb2RlIGNoYXJhY3RlcnMsDQo+ ID4+IG5vdCBpbmNsdWRpbmcgdGhlDQo+ID4+DQo+ID4+DQo+ID4+IC0gIE51bGwtdGVybWluYXRv ciwgdGhlbiBBU1NFUlQoKS4NCj4gPj4NCj4gPj4NCj4gPj4NCj4gPj4NCj4gPj4NCj4gPj4gICBJ ZiBTdHJpbmcgaGFzIG5vIHZhbGlkIGRlY2ltYWwgZGlnaXRzIGluIHRoZSBhYm92ZQ0KPiA+PiBm b3JtYXQsIHRoZW4gMCBpcyBzdG9yZWQNCj4gPj4NCj4gPj4NCj4gPj4gICBhdCB0aGUgbG9jYXRp b24gcG9pbnRlZCB0byBieSBEYXRhLg0KPiA+Pg0KPiA+Pg0KPiA+PiBAQCAtNzA1LDEyICs2OTUs NyBAQCBTdHJEZWNpbWFsVG9VaW50blMgKA0KPiA+PiAgIGJlIGlnbm9yZWQuIFRoZW4sIHRoZSBm dW5jdGlvbiBzdG9wcyBhdCB0aGUgZmlyc3QNCj4gPj4gY2hhcmFjdGVyIHRoYXQgaXMgYSBub3Qg YQ0KPiA+Pg0KPiA+Pg0KPiA+PiAgIHZhbGlkIGRlY2ltYWwgY2hhcmFjdGVyIG9yIGEgTnVsbC10 ZXJtaW5hdG9yLA0KPiA+PiB3aGljaGV2ZXIgb25lIGNvbWVzIGZpcnN0Lg0KPiA+Pg0KPiA+Pg0K PiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+PiAtICBJZiBTdHJpbmcgaXMgTlVMTCwgdGhlbiBBU1NFUlQo KS4NCj4gPj4NCj4gPj4NCj4gPj4gLSAgSWYgRGF0YSBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0K PiA+Pg0KPiA+Pg0KPiA+PiAgIElmIFN0cmluZyBpcyBub3QgYWxpZ25lZCBpbiBhIDE2LWJpdCBi b3VuZGFyeSwNCj4gdGhlbg0KPiA+PiBBU1NFUlQoKS4NCj4gPj4NCj4gPj4NCj4gPj4gLSAgSWYg UGNkTWF4aW11bVVuaWNvZGVTdHJpbmdMZW5ndGggaXMgbm90IHplcm8sIGFuZA0KPiA+PiBTdHJp bmcgY29udGFpbnMgbW9yZSB0aGFuDQo+ID4+DQo+ID4+DQo+ID4+IC0gIFBjZE1heGltdW1Vbmlj b2RlU3RyaW5nTGVuZ3RoIFVuaWNvZGUgY2hhcmFjdGVycywNCj4gPj4gbm90IGluY2x1ZGluZyB0 aGUNCj4gPj4NCj4gPj4NCj4gPj4gLSAgTnVsbC10ZXJtaW5hdG9yLCB0aGVuIEFTU0VSVCgpLg0K PiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+PiAgIElmIFN0cmluZyBoYXMgbm8gdmFs aWQgZGVjaW1hbCBkaWdpdHMgaW4gdGhlIGFib3ZlDQo+ID4+IGZvcm1hdCwgdGhlbiAwIGlzIHN0 b3JlZA0KPiA+Pg0KPiA+Pg0KPiA+PiAgIGF0IHRoZSBsb2NhdGlvbiBwb2ludGVkIHRvIGJ5IERh dGEuDQo+ID4+DQo+ID4+DQo+ID4+IEBAIC04MjUsMTIgKzgxMCw3IEBAIFN0ckRlY2ltYWxUb1Vp bnQ2NFMgKA0KPiA+PiAgIHRoZSBmaXJzdCBjaGFyYWN0ZXIgdGhhdCBpcyBhIG5vdCBhIHZhbGlk DQo+ID4+IGhleGFkZWNpbWFsIGNoYXJhY3RlciBvciBOVUxMLA0KPiA+Pg0KPiA+Pg0KPiA+PiAg IHdoaWNoZXZlciBvbmUgY29tZXMgZmlyc3QuDQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+ DQo+ID4+IC0gIElmIFN0cmluZyBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KPiA+Pg0KPiA+Pg0K PiA+PiAtICBJZiBEYXRhIGlzIE5VTEwsIHRoZW4gQVNTRVJUKCkuDQo+ID4+DQo+ID4+DQo+ID4+ ICAgSWYgU3RyaW5nIGlzIG5vdCBhbGlnbmVkIGluIGEgMTYtYml0IGJvdW5kYXJ5LA0KPiB0aGVu DQo+ID4+IEFTU0VSVCgpLg0KPiA+Pg0KPiA+Pg0KPiA+PiAtICBJZiBQY2RNYXhpbXVtVW5pY29k ZVN0cmluZ0xlbmd0aCBpcyBub3QgemVybywgYW5kDQo+ID4+IFN0cmluZyBjb250YWlucyBtb3Jl IHRoYW4NCj4gPj4NCj4gPj4NCj4gPj4gLSAgUGNkTWF4aW11bVVuaWNvZGVTdHJpbmdMZW5ndGgg VW5pY29kZSBjaGFyYWN0ZXJzLA0KPiA+PiBub3QgaW5jbHVkaW5nIHRoZQ0KPiA+Pg0KPiA+Pg0K PiA+PiAtICBOdWxsLXRlcm1pbmF0b3IsIHRoZW4gQVNTRVJUKCkuDQo+ID4+DQo+ID4+DQo+ID4+ DQo+ID4+DQo+ID4+DQo+ID4+ICAgSWYgU3RyaW5nIGhhcyBubyB2YWxpZCBoZXhhZGVjaW1hbCBk aWdpdHMgaW4gdGhlDQo+ID4+IGFib3ZlIGZvcm1hdCwgdGhlbiAwIGlzDQo+ID4+DQo+ID4+DQo+ ID4+ICAgc3RvcmVkIGF0IHRoZSBsb2NhdGlvbiBwb2ludGVkIHRvIGJ5IERhdGEuDQo+ID4+DQo+ ID4+DQo+ID4+IEBAIC05NTYsMTIgKzkzNiw3IEBAIFN0ckhleFRvVWludG5TICgNCj4gPj4gICB0 aGUgZmlyc3QgY2hhcmFjdGVyIHRoYXQgaXMgYSBub3QgYSB2YWxpZA0KPiA+PiBoZXhhZGVjaW1h bCBjaGFyYWN0ZXIgb3IgTlVMTCwNCj4gPj4NCj4gPj4NCj4gPj4gICB3aGljaGV2ZXIgb25lIGNv bWVzIGZpcnN0Lg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+PiAtICBJZiBTdHJp bmcgaXMgTlVMTCwgdGhlbiBBU1NFUlQoKS4NCj4gPj4NCj4gPj4NCj4gPj4gLSAgSWYgRGF0YSBp cyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KPiA+Pg0KPiA+Pg0KPiA+PiAgIElmIFN0cmluZyBpcyBu b3QgYWxpZ25lZCBpbiBhIDE2LWJpdCBib3VuZGFyeSwNCj4gdGhlbg0KPiA+PiBBU1NFUlQoKS4N Cj4gPj4NCj4gPj4NCj4gPj4gLSAgSWYgUGNkTWF4aW11bVVuaWNvZGVTdHJpbmdMZW5ndGggaXMg bm90IHplcm8sIGFuZA0KPiA+PiBTdHJpbmcgY29udGFpbnMgbW9yZSB0aGFuDQo+ID4+DQo+ID4+ DQo+ID4+IC0gIFBjZE1heGltdW1Vbmljb2RlU3RyaW5nTGVuZ3RoIFVuaWNvZGUgY2hhcmFjdGVy cywNCj4gPj4gbm90IGluY2x1ZGluZyB0aGUNCj4gPj4NCj4gPj4NCj4gPj4gLSAgTnVsbC10ZXJt aW5hdG9yLCB0aGVuIEFTU0VSVCgpLg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+ PiAgIElmIFN0cmluZyBoYXMgbm8gdmFsaWQgaGV4YWRlY2ltYWwgZGlnaXRzIGluIHRoZQ0KPiA+ PiBhYm92ZSBmb3JtYXQsIHRoZW4gMCBpcw0KPiA+Pg0KPiA+Pg0KPiA+PiAgIHN0b3JlZCBhdCB0 aGUgbG9jYXRpb24gcG9pbnRlZCB0byBieSBEYXRhLg0KPiA+Pg0KPiA+Pg0KPiA+PiBAQCAtMTA5 MSwxNiArMTA2Niw4IEBAIFN0ckhleFRvVWludDY0UyAoDQo+ID4+ICAgIjo6IiBjYW4gYmUgdXNl ZCB0byBjb21wcmVzcyBvbmUgb3IgbW9yZSBncm91cHMgb2YNCj4gWA0KPiA+PiB3aGVuIFggY29u dGFpbnMgb25seSAwLg0KPiA+Pg0KPiA+Pg0KPiA+PiAgIFRoZSAiOjoiIGNhbiBvbmx5IGFwcGVh ciBvbmNlIGluIHRoZSBTdHJpbmcuDQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+ IC0gIElmIFN0cmluZyBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KPiA+Pg0KPiA+Pg0KPiA+PiAt DQo+ID4+DQo+ID4+DQo+ID4+IC0gIElmIEFkZHJlc3MgaXMgTlVMTCwgdGhlbiBBU1NFUlQoKS4N Cj4gPj4NCj4gPj4NCj4gPj4gLQ0KPiA+Pg0KPiA+Pg0KPiA+PiAgIElmIFN0cmluZyBpcyBub3Qg YWxpZ25lZCBpbiBhIDE2LWJpdCBib3VuZGFyeSwNCj4gdGhlbg0KPiA+PiBBU1NFUlQoKS4NCj4g Pj4NCj4gPj4NCj4gPj4NCj4gPj4NCj4gPj4NCj4gPj4gLSAgSWYgUGNkTWF4aW11bVVuaWNvZGVT dHJpbmdMZW5ndGggaXMgbm90IHplcm8sIGFuZA0KPiA+PiBTdHJpbmcgY29udGFpbnMgbW9yZSB0 aGFuDQo+ID4+DQo+ID4+DQo+ID4+IC0gIFBjZE1heGltdW1Vbmljb2RlU3RyaW5nTGVuZ3RoIFVu aWNvZGUgY2hhcmFjdGVycywNCj4gPj4gbm90IGluY2x1ZGluZyB0aGUNCj4gPj4NCj4gPj4NCj4g Pj4gLSAgTnVsbC10ZXJtaW5hdG9yLCB0aGVuIEFTU0VSVCgpLg0KPiA+Pg0KPiA+Pg0KPiA+PiAt DQo+ID4+DQo+ID4+DQo+ID4+ICAgSWYgRW5kUG9pbnRlciBpcyBub3QgTlVMTCBhbmQgQWRkcmVz cyBpcw0KPiB0cmFuc2xhdGVkDQo+ID4+IGZyb20gU3RyaW5nLCBhIHBvaW50ZXINCj4gPj4NCj4g Pj4NCj4gPj4gICB0byB0aGUgY2hhcmFjdGVyIHRoYXQgc3RvcHBlZCB0aGUgc2NhbiBpcyBzdG9y ZWQNCj4gYXQNCj4gPj4gdGhlIGxvY2F0aW9uIHBvaW50ZWQgdG8NCj4gPj4NCj4gPj4NCj4gPj4g ICBieSBFbmRQb2ludGVyLg0KPiA+Pg0KPiA+Pg0KPiA+PiBAQCAtMTMxNywxNiArMTI4NCw4IEBA IFN0clRvSXB2NkFkZHJlc3MgKA0KPiA+PiAgIFdoZW4gL1AgaXMgaW4gdGhlIFN0cmluZywgdGhl IGZ1bmN0aW9uIHN0b3BzIGF0DQo+IHRoZQ0KPiA+PiBmaXJzdCBjaGFyYWN0ZXIgdGhhdCBpcyBu b3QNCj4gPj4NCj4gPj4NCj4gPj4gICBhIHZhbGlkIGRlY2ltYWwgZGlnaXQgY2hhcmFjdGVyIGFm dGVyIFAgaXMNCj4gPj4gY29udmVydGVkLg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+Pg0K PiA+PiAtICBJZiBTdHJpbmcgaXMgTlVMTCwgdGhlbiBBU1NFUlQoKS4NCj4gPj4NCj4gPj4NCj4g Pj4gLQ0KPiA+Pg0KPiA+Pg0KPiA+PiAtICBJZiBBZGRyZXNzIGlzIE5VTEwsIHRoZW4gQVNTRVJU KCkuDQo+ID4+DQo+ID4+DQo+ID4+IC0NCj4gPj4NCj4gPj4NCj4gPj4gICBJZiBTdHJpbmcgaXMg bm90IGFsaWduZWQgaW4gYSAxNi1iaXQgYm91bmRhcnksDQo+IHRoZW4NCj4gPj4gQVNTRVJUKCku DQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+IC0gIElmIFBjZE1heGltdW1Vbmlj b2RlU3RyaW5nTGVuZ3RoIGlzIG5vdCB6ZXJvLCBhbmQNCj4gPj4gU3RyaW5nIGNvbnRhaW5zIG1v cmUgdGhhbg0KPiA+Pg0KPiA+Pg0KPiA+PiAtICBQY2RNYXhpbXVtVW5pY29kZVN0cmluZ0xlbmd0 aCBVbmljb2RlIGNoYXJhY3RlcnMsDQo+ID4+IG5vdCBpbmNsdWRpbmcgdGhlDQo+ID4+DQo+ID4+ DQo+ID4+IC0gIE51bGwtdGVybWluYXRvciwgdGhlbiBBU1NFUlQoKS4NCj4gPj4NCj4gPj4NCj4g Pj4gLQ0KPiA+Pg0KPiA+Pg0KPiA+PiAgIElmIEVuZFBvaW50ZXIgaXMgbm90IE5VTEwgYW5kIEFk ZHJlc3MgaXMNCj4gdHJhbnNsYXRlZA0KPiA+PiBmcm9tIFN0cmluZywgYSBwb2ludGVyDQo+ID4+ DQo+ID4+DQo+ID4+ICAgdG8gdGhlIGNoYXJhY3RlciB0aGF0IHN0b3BwZWQgdGhlIHNjYW4gaXMg c3RvcmVkDQo+IGF0DQo+ID4+IHRoZSBsb2NhdGlvbiBwb2ludGVkIHRvDQo+ID4+DQo+ID4+DQo+ ID4+ICAgYnkgRW5kUG9pbnRlci4NCj4gPj4NCj4gPj4NCj4gPj4gQEAgLTE0ODIsOCArMTQ0MSw2 IEBAIFN0clRvSXB2NEFkZHJlc3MgKA0KPiA+PiAgICAgICAgICAgICAgICAgICBvbyAgICAgICAg ICBEYXRhNFs0ODo1NV0NCj4gPj4NCj4gPj4NCj4gPj4gICAgICAgICAgICAgICAgICAgcHAgICAg ICAgICAgRGF0YTRbNTY6NjNdDQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+IC0g IElmIFN0cmluZyBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KPiA+Pg0KPiA+Pg0KPiA+PiAtICBJ ZiBHdWlkIGlzIE5VTEwsIHRoZW4gQVNTRVJUKCkuDQo+ID4+DQo+ID4+DQo+ID4+ICAgSWYgU3Ry aW5nIGlzIG5vdCBhbGlnbmVkIGluIGEgMTYtYml0IGJvdW5kYXJ5LA0KPiB0aGVuDQo+ID4+IEFT U0VSVCgpLg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+PiAgIEBwYXJhbSAgU3Ry aW5nICAgICAgICAgICAgICAgICAgIFBvaW50ZXIgdG8gYQ0KPiBOdWxsLQ0KPiA+PiB0ZXJtaW5h dGVkIFVuaWNvZGUgc3RyaW5nLg0KPiA+Pg0KPiA+Pg0KPiA+PiBAQCAtMTU4OSwxNyArMTU0Niw2 IEBAIFN0clRvR3VpZCAoDQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+ICAgSWYgU3RyaW5nIGlzIG5v dCBhbGlnbmVkIGluIGEgMTYtYml0IGJvdW5kYXJ5LA0KPiB0aGVuDQo+ID4+IEFTU0VSVCgpLg0K PiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+PiAtICBJZiBTdHJpbmcgaXMgTlVMTCwg dGhlbiBBU1NFUlQoKS4NCj4gPj4NCj4gPj4NCj4gPj4gLQ0KPiA+Pg0KPiA+Pg0KPiA+PiAtICBJ ZiBCdWZmZXIgaXMgTlVMTCwgdGhlbiBBU1NFUlQoKS4NCj4gPj4NCj4gPj4NCj4gPj4gLQ0KPiA+ Pg0KPiA+Pg0KPiA+PiAtICBJZiBMZW5ndGggaXMgbm90IG11bHRpcGxlIG9mIDIsIHRoZW4gQVNT RVJUKCkuDQo+ID4+DQo+ID4+DQo+ID4+IC0NCj4gPj4NCj4gPj4NCj4gPj4gLSAgSWYgUGNkTWF4 aW11bVVuaWNvZGVTdHJpbmdMZW5ndGggaXMgbm90IHplcm8gYW5kDQo+ID4+IExlbmd0aCBpcyBn cmVhdGVyIHRoYW4NCj4gPj4NCj4gPj4NCj4gPj4gLSAgUGNkTWF4aW11bVVuaWNvZGVTdHJpbmdM ZW5ndGgsIHRoZW4gQVNTRVJUKCkuDQo+ID4+DQo+ID4+DQo+ID4+IC0NCj4gPj4NCj4gPj4NCj4g Pj4gLSAgSWYgTWF4QnVmZmVyU2l6ZSBpcyBsZXNzIHRoYW4gKExlbmd0aCAvIDIpLCB0aGVuDQo+ ID4+IEFTU0VSVCgpLg0KPiA+Pg0KPiA+Pg0KPiA+PiAtDQo+ID4+DQo+ID4+DQo+ID4+ICAgQHBh cmFtICBTdHJpbmcgICAgICAgICAgICAgICAgICAgUG9pbnRlciB0byBhDQo+IE51bGwtDQo+ID4+ IHRlcm1pbmF0ZWQgVW5pY29kZSBzdHJpbmcuDQo+ID4+DQo+ID4+DQo+ID4+ICAgQHBhcmFtICBM ZW5ndGggICAgICAgICAgICAgICAgICAgVGhlIG51bWJlciBvZg0KPiA+PiBVbmljb2RlIGNoYXJh Y3RlcnMgdG8gZGVjb2RlLg0KPiA+Pg0KPiA+Pg0KPiA+PiAgIEBwYXJhbSAgQnVmZmVyICAgICAg ICAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlDQo+ID4+IGNvbnZlcnRlZCBieXRlcyBhcnJheS4N Cj4gPj4NCj4gPj4NCj4gPj4gQEAgLTE3NzksOCArMTcyNSw2IEBAIEFzY2lpU3RyblNpemVTICgN Cj4gPj4NCj4gPj4NCj4gPj4NCj4gPj4gICBUaGlzIGZ1bmN0aW9uIGlzIHNpbWlsYXIgYXMgc3Ry Y3B5X3MgZGVmaW5lZCBpbg0KPiBDMTEuDQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+DQo+ ID4+IC0gIElmIGFuIGVycm9yIHdvdWxkIGJlIHJldHVybmVkLCB0aGVuIHRoZSBmdW5jdGlvbg0K PiA+PiB3aWxsIGFsc28gQVNTRVJUKCkuDQo+ID4+DQo+ID4+DQo+ID4+IC0NCj4gPj4NCj4gPj4N Cj4gPj4gICBJZiBhbiBlcnJvciBpcyByZXR1cm5lZCwgdGhlbiB0aGUgRGVzdGluYXRpb24gaXMN Cj4gPj4gdW5tb2RpZmllZC4NCj4gPj4NCj4gPj4NCj4gPj4NCj4gPj4NCj4gPj4NCj4gPj4gICBA cGFyYW0gIERlc3RpbmF0aW9uICAgICAgICAgICAgICBBIHBvaW50ZXIgdG8gYQ0KPiA+PiBOdWxs LXRlcm1pbmF0ZWQgQXNjaWkgc3RyaW5nLg0KPiA+Pg0KPiA+Pg0KPiA+PiBAQCAtMTg1Niw4ICsx ODAwLDYgQEAgQXNjaWlTdHJDcHlTICgNCj4gPj4NCj4gPj4NCj4gPj4NCj4gPj4gICBUaGlzIGZ1 bmN0aW9uIGlzIHNpbWlsYXIgYXMgc3RybmNweV9zIGRlZmluZWQgaW4NCj4gPj4gQzExLg0KPiA+ Pg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+PiAtICBJZiBhbiBlcnJvciB3b3VsZCBiZSBy ZXR1cm5lZCwgdGhlbiB0aGUgZnVuY3Rpb24NCj4gPj4gd2lsbCBhbHNvIEFTU0VSVCgpLg0KPiA+ Pg0KPiA+Pg0KPiA+PiAtDQo+ID4+DQo+ID4+DQo+ID4+ICAgSWYgYW4gZXJyb3IgaXMgcmV0dXJu ZWQsIHRoZW4gdGhlIERlc3RpbmF0aW9uIGlzDQo+ID4+IHVubW9kaWZpZWQuDQo+ID4+DQo+ID4+ DQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+ICAgQHBhcmFtICBEZXN0aW5hdGlvbiAgICAgICAgICAg ICAgQSBwb2ludGVyIHRvIGENCj4gPj4gTnVsbC10ZXJtaW5hdGVkIEFzY2lpIHN0cmluZy4NCj4g Pj4NCj4gPj4NCj4gPj4gQEAgLTE5NDQsOCArMTg4Niw2IEBAIEFzY2lpU3RybkNweVMgKA0KPiA+ Pg0KPiA+Pg0KPiA+Pg0KPiA+PiAgIFRoaXMgZnVuY3Rpb24gaXMgc2ltaWxhciBhcyBzdHJjYXRf cyBkZWZpbmVkIGluDQo+IEMxMS4NCj4gPj4NCj4gPj4NCj4gPj4NCj4gPj4NCj4gPj4NCj4gPj4g LSAgSWYgYW4gZXJyb3Igd291bGQgYmUgcmV0dXJuZWQsIHRoZW4gdGhlIGZ1bmN0aW9uDQo+ID4+ IHdpbGwgYWxzbyBBU1NFUlQoKS4NCj4gPj4NCj4gPj4NCj4gPj4gLQ0KPiA+Pg0KPiA+Pg0KPiA+ PiAgIElmIGFuIGVycm9yIGlzIHJldHVybmVkLCB0aGVuIHRoZSBEZXN0aW5hdGlvbiBpcw0KPiA+ PiB1bm1vZGlmaWVkLg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+PiAgIEBwYXJh bSAgRGVzdGluYXRpb24gICAgICAgICAgICAgIEEgcG9pbnRlciB0byBhDQo+ID4+IE51bGwtdGVy bWluYXRlZCBBc2NpaSBzdHJpbmcuDQo+ID4+DQo+ID4+DQo+ID4+IEBAIC0yMDQwLDggKzE5ODAs NiBAQCBBc2NpaVN0ckNhdFMgKA0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+PiAgIFRoaXMgZnVuY3Rp b24gaXMgc2ltaWxhciBhcyBzdHJuY2F0X3MgZGVmaW5lZCBpbg0KPiA+PiBDMTEuDQo+ID4+DQo+ ID4+DQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+IC0gIElmIGFuIGVycm9yIHdvdWxkIGJlIHJldHVy bmVkLCB0aGVuIHRoZSBmdW5jdGlvbg0KPiA+PiB3aWxsIGFsc28gQVNTRVJUKCkuDQo+ID4+DQo+ ID4+DQo+ID4+IC0NCj4gPj4NCj4gPj4NCj4gPj4gICBJZiBhbiBlcnJvciBpcyByZXR1cm5lZCwg dGhlbiB0aGUgRGVzdGluYXRpb24gaXMNCj4gPj4gdW5tb2RpZmllZC4NCj4gPj4NCj4gPj4NCj4g Pj4NCj4gPj4NCj4gPj4NCj4gPj4gICBAcGFyYW0gIERlc3RpbmF0aW9uICAgICAgICAgICAgICBB IHBvaW50ZXIgdG8gYQ0KPiA+PiBOdWxsLXRlcm1pbmF0ZWQgQXNjaWkgc3RyaW5nLg0KPiA+Pg0K PiA+Pg0KPiA+PiBAQCAtMjE1NCwxMiArMjA5Miw2IEBAIEFzY2lpU3RybkNhdFMgKA0KPiA+PiAg IGJlIGlnbm9yZWQuIFRoZW4sIHRoZSBmdW5jdGlvbiBzdG9wcyBhdCB0aGUgZmlyc3QNCj4gPj4g Y2hhcmFjdGVyIHRoYXQgaXMgYSBub3QgYQ0KPiA+Pg0KPiA+Pg0KPiA+PiAgIHZhbGlkIGRlY2lt YWwgY2hhcmFjdGVyIG9yIGEgTnVsbC10ZXJtaW5hdG9yLA0KPiA+PiB3aGljaGV2ZXIgb25lIGNv bWVzIGZpcnN0Lg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+PiAtICBJZiBTdHJp bmcgaXMgTlVMTCwgdGhlbiBBU1NFUlQoKS4NCj4gPj4NCj4gPj4NCj4gPj4gLSAgSWYgRGF0YSBp cyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KPiA+Pg0KPiA+Pg0KPiA+PiAtICBJZiBQY2RNYXhpbXVt QXNjaWlTdHJpbmdMZW5ndGggaXMgbm90IHplcm8sIGFuZA0KPiA+PiBTdHJpbmcgY29udGFpbnMg bW9yZSB0aGFuDQo+ID4+DQo+ID4+DQo+ID4+IC0gIFBjZE1heGltdW1Bc2NpaVN0cmluZ0xlbmd0 aCBBc2NpaSBjaGFyYWN0ZXJzLCBub3QNCj4gPj4gaW5jbHVkaW5nIHRoZQ0KPiA+Pg0KPiA+Pg0K PiA+PiAtICBOdWxsLXRlcm1pbmF0b3IsIHRoZW4gQVNTRVJUKCkuDQo+ID4+DQo+ID4+DQo+ID4+ IC0NCj4gPj4NCj4gPj4NCj4gPj4gICBJZiBTdHJpbmcgaGFzIG5vIHZhbGlkIGRlY2ltYWwgZGln aXRzIGluIHRoZSBhYm92ZQ0KPiA+PiBmb3JtYXQsIHRoZW4gMCBpcyBzdG9yZWQNCj4gPj4NCj4g Pj4NCj4gPj4gICBhdCB0aGUgbG9jYXRpb24gcG9pbnRlZCB0byBieSBEYXRhLg0KPiA+Pg0KPiA+ Pg0KPiA+PiAgIElmIHRoZSBudW1iZXIgcmVwcmVzZW50ZWQgYnkgU3RyaW5nIGV4Y2VlZHMgdGhl DQo+ID4+IHJhbmdlIGRlZmluZWQgYnkgVUlOVE4sIHRoZW4NCj4gPj4NCj4gPj4NCj4gPj4gQEAg LTIyNjYsMTIgKzIxOTgsNiBAQCBBc2NpaVN0ckRlY2ltYWxUb1VpbnRuUyAoDQo+ID4+ICAgYmUg aWdub3JlZC4gVGhlbiwgdGhlIGZ1bmN0aW9uIHN0b3BzIGF0IHRoZSBmaXJzdA0KPiA+PiBjaGFy YWN0ZXIgdGhhdCBpcyBhIG5vdCBhDQo+ID4+DQo+ID4+DQo+ID4+ICAgdmFsaWQgZGVjaW1hbCBj aGFyYWN0ZXIgb3IgYSBOdWxsLXRlcm1pbmF0b3IsDQo+ID4+IHdoaWNoZXZlciBvbmUgY29tZXMg Zmlyc3QuDQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+IC0gIElmIFN0cmluZyBp cyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KPiA+Pg0KPiA+Pg0KPiA+PiAtICBJZiBEYXRhIGlzIE5V TEwsIHRoZW4gQVNTRVJUKCkuDQo+ID4+DQo+ID4+DQo+ID4+IC0gIElmIFBjZE1heGltdW1Bc2Np aVN0cmluZ0xlbmd0aCBpcyBub3QgemVybywgYW5kDQo+ID4+IFN0cmluZyBjb250YWlucyBtb3Jl IHRoYW4NCj4gPj4NCj4gPj4NCj4gPj4gLSAgUGNkTWF4aW11bUFzY2lpU3RyaW5nTGVuZ3RoIEFz Y2lpIGNoYXJhY3RlcnMsIG5vdA0KPiA+PiBpbmNsdWRpbmcgdGhlDQo+ID4+DQo+ID4+DQo+ID4+ IC0gIE51bGwtdGVybWluYXRvciwgdGhlbiBBU1NFUlQoKS4NCj4gPj4NCj4gPj4NCj4gPj4gLQ0K PiA+Pg0KPiA+Pg0KPiA+PiAgIElmIFN0cmluZyBoYXMgbm8gdmFsaWQgZGVjaW1hbCBkaWdpdHMg aW4gdGhlIGFib3ZlDQo+ID4+IGZvcm1hdCwgdGhlbiAwIGlzIHN0b3JlZA0KPiA+Pg0KPiA+Pg0K PiA+PiAgIGF0IHRoZSBsb2NhdGlvbiBwb2ludGVkIHRvIGJ5IERhdGEuDQo+ID4+DQo+ID4+DQo+ ID4+ICAgSWYgdGhlIG51bWJlciByZXByZXNlbnRlZCBieSBTdHJpbmcgZXhjZWVkcyB0aGUNCj4g Pj4gcmFuZ2UgZGVmaW5lZCBieSBVSU5UNjQsIHRoZW4NCj4gPj4NCj4gPj4NCj4gPj4gQEAgLTIz ODIsMTIgKzIzMDgsNiBAQCBBc2NpaVN0ckRlY2ltYWxUb1VpbnQ2NFMgKA0KPiA+PiAgIGNoYXJh Y3RlciB0aGF0IGlzIGEgbm90IGEgdmFsaWQgaGV4YWRlY2ltYWwNCj4gPj4gY2hhcmFjdGVyIG9y IE51bGwtdGVybWluYXRvciwNCj4gPj4NCj4gPj4NCj4gPj4gICB3aGljaGV2ZXIgb24gY29tZXMg Zmlyc3QuDQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+IC0gIElmIFN0cmluZyBp cyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KPiA+Pg0KPiA+Pg0KPiA+PiAtICBJZiBEYXRhIGlzIE5V TEwsIHRoZW4gQVNTRVJUKCkuDQo+ID4+DQo+ID4+DQo+ID4+IC0gIElmIFBjZE1heGltdW1Bc2Np aVN0cmluZ0xlbmd0aCBpcyBub3QgemVybywgYW5kDQo+ID4+IFN0cmluZyBjb250YWlucyBtb3Jl IHRoYW4NCj4gPj4NCj4gPj4NCj4gPj4gLSAgUGNkTWF4aW11bUFzY2lpU3RyaW5nTGVuZ3RoIEFz Y2lpIGNoYXJhY3RlcnMsIG5vdA0KPiA+PiBpbmNsdWRpbmcgdGhlDQo+ID4+DQo+ID4+DQo+ID4+ IC0gIE51bGwtdGVybWluYXRvciwgdGhlbiBBU1NFUlQoKS4NCj4gPj4NCj4gPj4NCj4gPj4gLQ0K PiA+Pg0KPiA+Pg0KPiA+PiAgIElmIFN0cmluZyBoYXMgbm8gdmFsaWQgaGV4YWRlY2ltYWwgZGln aXRzIGluIHRoZQ0KPiA+PiBhYm92ZSBmb3JtYXQsIHRoZW4gMCBpcw0KPiA+Pg0KPiA+Pg0KPiA+ PiAgIHN0b3JlZCBhdCB0aGUgbG9jYXRpb24gcG9pbnRlZCB0byBieSBEYXRhLg0KPiA+Pg0KPiA+ Pg0KPiA+PiAgIElmIHRoZSBudW1iZXIgcmVwcmVzZW50ZWQgYnkgU3RyaW5nIGV4Y2VlZHMgdGhl DQo+ID4+IHJhbmdlIGRlZmluZWQgYnkgVUlOVE4sIHRoZW4NCj4gPj4NCj4gPj4NCj4gPj4gQEAg LTI1MDksMTIgKzI0MjksNiBAQCBBc2NpaVN0ckhleFRvVWludG5TICgNCj4gPj4gICBjaGFyYWN0 ZXIgdGhhdCBpcyBhIG5vdCBhIHZhbGlkIGhleGFkZWNpbWFsDQo+ID4+IGNoYXJhY3RlciBvciBO dWxsLXRlcm1pbmF0b3IsDQo+ID4+DQo+ID4+DQo+ID4+ICAgd2hpY2hldmVyIG9uIGNvbWVzIGZp cnN0Lg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+PiAtICBJZiBTdHJpbmcgaXMg TlVMTCwgdGhlbiBBU1NFUlQoKS4NCj4gPj4NCj4gPj4NCj4gPj4gLSAgSWYgRGF0YSBpcyBOVUxM LCB0aGVuIEFTU0VSVCgpLg0KPiA+Pg0KPiA+Pg0KPiA+PiAtICBJZiBQY2RNYXhpbXVtQXNjaWlT dHJpbmdMZW5ndGggaXMgbm90IHplcm8sIGFuZA0KPiA+PiBTdHJpbmcgY29udGFpbnMgbW9yZSB0 aGFuDQo+ID4+DQo+ID4+DQo+ID4+IC0gIFBjZE1heGltdW1Bc2NpaVN0cmluZ0xlbmd0aCBBc2Np aSBjaGFyYWN0ZXJzLCBub3QNCj4gPj4gaW5jbHVkaW5nIHRoZQ0KPiA+Pg0KPiA+Pg0KPiA+PiAt ICBOdWxsLXRlcm1pbmF0b3IsIHRoZW4gQVNTRVJUKCkuDQo+ID4+DQo+ID4+DQo+ID4+IC0NCj4g Pj4NCj4gPj4NCj4gPj4gICBJZiBTdHJpbmcgaGFzIG5vIHZhbGlkIGhleGFkZWNpbWFsIGRpZ2l0 cyBpbiB0aGUNCj4gPj4gYWJvdmUgZm9ybWF0LCB0aGVuIDAgaXMNCj4gPj4NCj4gPj4NCj4gPj4g ICBzdG9yZWQgYXQgdGhlIGxvY2F0aW9uIHBvaW50ZWQgdG8gYnkgRGF0YS4NCj4gPj4NCj4gPj4N Cj4gPj4gICBJZiB0aGUgbnVtYmVyIHJlcHJlc2VudGVkIGJ5IFN0cmluZyBleGNlZWRzIHRoZQ0K PiA+PiByYW5nZSBkZWZpbmVkIGJ5IFVJTlQ2NCwgdGhlbg0KPiA+Pg0KPiA+Pg0KPiA+PiBAQCAt MjYzNSw3ICsyNTQ5LDYgQEAgQXNjaWlTdHJIZXhUb1VpbnQ2NFMgKA0KPiA+PiAgIHRoZSB1cHBl ciA4IGJpdHMsIHRoZW4gQVNTRVJUKCkuDQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+DQo+ ID4+ICAgSWYgU291cmNlIGlzIG5vdCBhbGlnbmVkIG9uIGEgMTYtYml0IGJvdW5kYXJ5LA0KPiB0 aGVuDQo+ID4+IEFTU0VSVCgpLg0KPiA+Pg0KPiA+Pg0KPiA+PiAtICBJZiBhbiBlcnJvciB3b3Vs ZCBiZSByZXR1cm5lZCwgdGhlbiB0aGUgZnVuY3Rpb24NCj4gPj4gd2lsbCBhbHNvIEFTU0VSVCgp Lg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+PiAgIElmIGFuIGVycm9yIGlzIHJl dHVybmVkLCB0aGVuIHRoZSBEZXN0aW5hdGlvbiBpcw0KPiA+PiB1bm1vZGlmaWVkLg0KPiA+Pg0K PiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+PiBAQCAtMjczNSw3ICsyNjQ4LDYgQEAgVW5pY29k ZVN0clRvQXNjaWlTdHJTICgNCj4gPj4gICBJZiBhbnkgVW5pY29kZSBjaGFyYWN0ZXJzIGluIFNv dXJjZSBjb250YWluIG5vbi0NCj4gemVybw0KPiA+PiB2YWx1ZSBpbiB0aGUgdXBwZXIgOA0KPiA+ Pg0KPiA+Pg0KPiA+PiAgIGJpdHMsIHRoZW4gQVNTRVJUKCkuDQo+ID4+DQo+ID4+DQo+ID4+ICAg SWYgU291cmNlIGlzIG5vdCBhbGlnbmVkIG9uIGEgMTYtYml0IGJvdW5kYXJ5LA0KPiB0aGVuDQo+ ID4+IEFTU0VSVCgpLg0KPiA+Pg0KPiA+Pg0KPiA+PiAtICBJZiBhbiBlcnJvciB3b3VsZCBiZSBy ZXR1cm5lZCwgdGhlbiB0aGUgZnVuY3Rpb24NCj4gPj4gd2lsbCBhbHNvIEFTU0VSVCgpLg0KPiA+ Pg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+PiAgIElmIGFuIGVycm9yIGlzIHJldHVybmVk LCB0aGVuIERlc3RpbmF0aW9uIGFuZA0KPiA+PiBEZXN0aW5hdGlvbkxlbmd0aCBhcmUNCj4gPj4N Cj4gPj4NCj4gPj4gICB1bm1vZGlmaWVkLg0KPiA+Pg0KPiA+Pg0KPiA+PiBAQCAtMjg1NSw3ICsy NzY3LDYgQEAgVW5pY29kZVN0cm5Ub0FzY2lpU3RyUyAoDQo+ID4+ICAgZXF1YWwgb3IgZ3JlYXRl ciB0aGFuICgoQXNjaWlTdHJMZW4gKFNvdXJjZSkgKyAxKQ0KPiAqDQo+ID4+IHNpemVvZiAoQ0hB UjE2KSkgaW4gYnl0ZXMuDQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+ICAgSWYg RGVzdGluYXRpb24gaXMgbm90IGFsaWduZWQgb24gYSAxNi1iaXQNCj4gYm91bmRhcnksDQo+ID4+ IHRoZW4gQVNTRVJUKCkuDQo+ID4+DQo+ID4+DQo+ID4+IC0gIElmIGFuIGVycm9yIHdvdWxkIGJl IHJldHVybmVkLCB0aGVuIHRoZSBmdW5jdGlvbg0KPiA+PiB3aWxsIGFsc28gQVNTRVJUKCkuDQo+ ID4+DQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+ICAgSWYgYW4gZXJyb3IgaXMgcmV0dXJu ZWQsIHRoZW4gdGhlIERlc3RpbmF0aW9uIGlzDQo+ID4+IHVubW9kaWZpZWQuDQo+ID4+DQo+ID4+ DQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+IEBAIC0yOTQ4LDcgKzI4NTksNiBAQCBBc2NpaVN0clRv VW5pY29kZVN0clMgKA0KPiA+PiAgICgoTUlOKEFzY2lpU3RyTGVuKFNvdXJjZSksIExlbmd0aCkg KyAxKSAqIHNpemVvZg0KPiA+PiAoQ0hBUjgpKSBpbiBieXRlcy4NCj4gPj4NCj4gPj4NCj4gPj4N Cj4gPj4NCj4gPj4NCj4gPj4gICBJZiBEZXN0aW5hdGlvbiBpcyBub3QgYWxpZ25lZCBvbiBhIDE2 LWJpdA0KPiBib3VuZGFyeSwNCj4gPj4gdGhlbiBBU1NFUlQoKS4NCj4gPj4NCj4gPj4NCj4gPj4g LSAgSWYgYW4gZXJyb3Igd291bGQgYmUgcmV0dXJuZWQsIHRoZW4gdGhlIGZ1bmN0aW9uDQo+ID4+ IHdpbGwgYWxzbyBBU1NFUlQoKS4NCj4gPj4NCj4gPj4NCj4gPj4NCj4gPj4NCj4gPj4NCj4gPj4g ICBJZiBhbiBlcnJvciBpcyByZXR1cm5lZCwgdGhlbiBEZXN0aW5hdGlvbiBhbmQNCj4gPj4gRGVz dGluYXRpb25MZW5ndGggYXJlDQo+ID4+DQo+ID4+DQo+ID4+ICAgdW5tb2RpZmllZC4NCj4gPj4N Cj4gPj4NCj4gPj4gQEAgLTMwNzIsMTAgKzI5ODIsNiBAQCBBc2NpaVN0cm5Ub1VuaWNvZGVTdHJT ICgNCj4gPj4gICAiOjoiIGNhbiBiZSB1c2VkIHRvIGNvbXByZXNzIG9uZSBvciBtb3JlIGdyb3Vw cyBvZg0KPiBYDQo+ID4+IHdoZW4gWCBjb250YWlucyBvbmx5IDAuDQo+ID4+DQo+ID4+DQo+ID4+ ICAgVGhlICI6OiIgY2FuIG9ubHkgYXBwZWFyIG9uY2UgaW4gdGhlIFN0cmluZy4NCj4gPj4NCj4g Pj4NCj4gPj4NCj4gPj4NCj4gPj4NCj4gPj4gLSAgSWYgU3RyaW5nIGlzIE5VTEwsIHRoZW4gQVNT RVJUKCkuDQo+ID4+DQo+ID4+DQo+ID4+IC0NCj4gPj4NCj4gPj4NCj4gPj4gLSAgSWYgQWRkcmVz cyBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KPiA+Pg0KPiA+Pg0KPiA+PiAtDQo+ID4+DQo+ID4+ DQo+ID4+ICAgSWYgRW5kUG9pbnRlciBpcyBub3QgTlVMTCBhbmQgQWRkcmVzcyBpcw0KPiB0cmFu c2xhdGVkDQo+ID4+IGZyb20gU3RyaW5nLCBhIHBvaW50ZXINCj4gPj4NCj4gPj4NCj4gPj4gICB0 byB0aGUgY2hhcmFjdGVyIHRoYXQgc3RvcHBlZCB0aGUgc2NhbiBpcyBzdG9yZWQNCj4gYXQNCj4g Pj4gdGhlIGxvY2F0aW9uIHBvaW50ZWQgdG8NCj4gPj4NCj4gPj4NCj4gPj4gICBieSBFbmRQb2lu dGVyLg0KPiA+Pg0KPiA+Pg0KPiA+PiBAQCAtMzI5MSwxMCArMzE5Nyw2IEBAIEFzY2lpU3RyVG9J cHY2QWRkcmVzcyAoDQo+ID4+ICAgV2hlbiAvUCBpcyBpbiB0aGUgU3RyaW5nLCB0aGUgZnVuY3Rp b24gc3RvcHMgYXQNCj4gdGhlDQo+ID4+IGZpcnN0IGNoYXJhY3RlciB0aGF0IGlzIG5vdA0KPiA+ Pg0KPiA+Pg0KPiA+PiAgIGEgdmFsaWQgZGVjaW1hbCBkaWdpdCBjaGFyYWN0ZXIgYWZ0ZXIgUCBp cw0KPiA+PiBjb252ZXJ0ZWQuDQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+IC0g IElmIFN0cmluZyBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KPiA+Pg0KPiA+Pg0KPiA+PiAtDQo+ ID4+DQo+ID4+DQo+ID4+IC0gIElmIEFkZHJlc3MgaXMgTlVMTCwgdGhlbiBBU1NFUlQoKS4NCj4g Pj4NCj4gPj4NCj4gPj4gLQ0KPiA+Pg0KPiA+Pg0KPiA+PiAgIElmIEVuZFBvaW50ZXIgaXMgbm90 IE5VTEwgYW5kIEFkZHJlc3MgaXMNCj4gdHJhbnNsYXRlZA0KPiA+PiBmcm9tIFN0cmluZywgYSBw b2ludGVyDQo+ID4+DQo+ID4+DQo+ID4+ICAgdG8gdGhlIGNoYXJhY3RlciB0aGF0IHN0b3BwZWQg dGhlIHNjYW4gaXMgc3RvcmVkDQo+IGF0DQo+ID4+IHRoZSBsb2NhdGlvbiBwb2ludGVkIHRvDQo+ ID4+DQo+ID4+DQo+ID4+ICAgYnkgRW5kUG9pbnRlci4NCj4gPj4NCj4gPj4NCj4gPj4gQEAgLTM0 NDgsOSArMzM1MCw2IEBAIEFzY2lpU3RyVG9JcHY0QWRkcmVzcyAoDQo+ID4+ICAgICAgICAgICAg ICAgICAgIG9vICAgICAgICAgIERhdGE0WzQ4OjU1XQ0KPiA+Pg0KPiA+Pg0KPiA+PiAgICAgICAg ICAgICAgICAgICBwcCAgICAgICAgICBEYXRhNFs1Njo2M10NCj4gPj4NCj4gPj4NCj4gPj4NCj4g Pj4NCj4gPj4NCj4gPj4gLSAgSWYgU3RyaW5nIGlzIE5VTEwsIHRoZW4gQVNTRVJUKCkuDQo+ID4+ DQo+ID4+DQo+ID4+IC0gIElmIEd1aWQgaXMgTlVMTCwgdGhlbiBBU1NFUlQoKS4NCj4gPj4NCj4g Pj4NCj4gPj4gLQ0KPiA+Pg0KPiA+Pg0KPiA+PiAgIEBwYXJhbSAgU3RyaW5nICAgICAgICAgICAg ICAgICAgIFBvaW50ZXIgdG8gYQ0KPiBOdWxsLQ0KPiA+PiB0ZXJtaW5hdGVkIEFTQ0lJIHN0cmlu Zy4NCj4gPj4NCj4gPj4NCj4gPj4gICBAcGFyYW0gIEd1aWQgICAgICAgICAgICAgICAgICAgICBQ b2ludGVyIHRvIHRoZQ0KPiA+PiBjb252ZXJ0ZWQgR1VJRC4NCj4gPj4NCj4gPj4NCj4gPj4NCj4g Pj4NCj4gPj4NCj4gPj4gQEAgLTM1NTAsMTcgKzM0NDksNiBAQCBBc2NpaVN0clRvR3VpZCAoDQo+ ID4+ICAgZGVjb2Rpbmcgc3RvcHMgYWZ0ZXIgTGVuZ3RoIG9mIGNoYXJhY3RlcnMgYW5kDQo+ID4+ IG91dHB1dHMgQnVmZmVyIGNvbnRhaW5pbmcNCj4gPj4NCj4gPj4NCj4gPj4gICAoTGVuZ3RoIC8g MikgYnl0ZXMuDQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+IC0gIElmIFN0cmlu ZyBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KPiA+Pg0KPiA+Pg0KPiA+PiAtDQo+ID4+DQo+ID4+ DQo+ID4+IC0gIElmIEJ1ZmZlciBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KPiA+Pg0KPiA+Pg0K PiA+PiAtDQo+ID4+DQo+ID4+DQo+ID4+IC0gIElmIExlbmd0aCBpcyBub3QgbXVsdGlwbGUgb2Yg MiwgdGhlbiBBU1NFUlQoKS4NCj4gPj4NCj4gPj4NCj4gPj4gLQ0KPiA+Pg0KPiA+Pg0KPiA+PiAt ICBJZiBQY2RNYXhpbXVtQXNjaWlTdHJpbmdMZW5ndGggaXMgbm90IHplcm8gYW5kDQo+ID4+IExl bmd0aCBpcyBncmVhdGVyIHRoYW4NCj4gPj4NCj4gPj4NCj4gPj4gLSAgUGNkTWF4aW11bUFzY2lp U3RyaW5nTGVuZ3RoLCB0aGVuIEFTU0VSVCgpLg0KPiA+Pg0KPiA+Pg0KPiA+PiAtDQo+ID4+DQo+ ID4+DQo+ID4+IC0gIElmIE1heEJ1ZmZlclNpemUgaXMgbGVzcyB0aGFuIChMZW5ndGggLyAyKSwg dGhlbg0KPiA+PiBBU1NFUlQoKS4NCj4gPj4NCj4gPj4NCj4gPj4gLQ0KPiA+Pg0KPiA+Pg0KPiA+ PiAgIEBwYXJhbSAgU3RyaW5nICAgICAgICAgICAgICAgICAgIFBvaW50ZXIgdG8gYQ0KPiBOdWxs LQ0KPiA+PiB0ZXJtaW5hdGVkIEFTQ0lJIHN0cmluZy4NCj4gPj4NCj4gPj4NCj4gPj4gICBAcGFy YW0gIExlbmd0aCAgICAgICAgICAgICAgICAgICBUaGUgbnVtYmVyIG9mDQo+IEFTQ0lJDQo+ID4+ IGNoYXJhY3RlcnMgdG8gZGVjb2RlLg0KPiA+Pg0KPiA+Pg0KPiA+PiAgIEBwYXJhbSAgQnVmZmVy ICAgICAgICAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlDQo+ID4+IGNvbnZlcnRlZCBieXRlcyBh cnJheS4NCj4gPj4NCj4gPj4NCj4gPj4gLS0NCj4gPj4gMi4yNC4yIChBcHBsZSBHaXQtMTI3KQ0K PiA+Pg0KPiA+Pg0KPiA+PiANCj4gPg0KDQo=