From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR03-AM5-obe.outbound.protection.outlook.com (mail-eopbgr30063.outbound.protection.outlook.com [40.107.3.63]) by dpdk.org (Postfix) with ESMTP id DF1BF1B12A; Fri, 5 Oct 2018 22:34:19 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector1-arm-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/kJ7HW8P2py02AvD4z2e0o8WwKNNKXvWn7TivETbvfE=; b=baDxN915xifRg8qhMjw6YabbFfE+IpqvDMJC6HD/ndNYXk/1Rd9Klh+z43mcYQcijg4QLXuZZo4s8czmdRAE06HnX3XR1j09QaAKwo5d+WIE2CQbgX2HP5dqP3cw7SUlCspjjgCBRsPLTVMTL2kO2Zwf9r/mHyzOZ3+rJm5/AOY= Received: from HE1PR0801MB2076.eurprd08.prod.outlook.com (10.168.95.140) by HE1PR0801MB1913.eurprd08.prod.outlook.com (10.168.94.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1207.26; Fri, 5 Oct 2018 20:34:16 +0000 Received: from HE1PR0801MB2076.eurprd08.prod.outlook.com ([fe80::c84:eee7:43bf:9f20]) by HE1PR0801MB2076.eurprd08.prod.outlook.com ([fe80::c84:eee7:43bf:9f20%11]) with mapi id 15.20.1207.024; Fri, 5 Oct 2018 20:34:16 +0000 From: Ola Liljedahl To: Honnappa Nagarahalli , Jerin Jacob CC: "Ananyev, Konstantin" , "Gavin Hu (Arm Technology China)" , "dev@dpdk.org" , Steve Capper , nd , "stable@dpdk.org" Thread-Topic: [PATCH v3 1/3] ring: read tail using atomic load Thread-Index: AQHUTl7o9KT3/H6K10G5NrmKOHANTqUHJ0+AgAjF7gCAAH79gIAAUg2AgAAF3wCAAAI9gIAAGFMAgAAgVICAADHKgIAAAE+AgAAkl4D//+HIgIAAIteA Date: Fri, 5 Oct 2018 20:34:15 +0000 Message-ID: <60055965-A7C8-4E9F-8668-0AE1DCE57515@arm.com> References: <20180807031943.5331-1-gavin.hu@arm.com> <1537172244-64874-1-git-send-email-gavin.hu@arm.com> <20180929104857.GA30457@jerin> <2601191342CEEE43887BDE71AB9772580102FE261A@IRSMSX106.ger.corp.intel.com> <621E373E-048D-4808-8CE8-84373EA98D2F@arm.com> <2601191342CEEE43887BDE71AB9772580102FE2951@IRSMSX106.ger.corp.intel.com> <20181005170725.GA18671@jerin> <1555626C-F2B8-44EB-98A3-79B1F7002587@arm.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Microsoft-MacOutlook/10.10.0.180812 authentication-results: spf=none (sender IP is ) smtp.mailfrom=Ola.Liljedahl@arm.com; x-originating-ip: [158.174.8.16] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; HE1PR0801MB1913; 6:EdMBC5NIanfLXpdPGxRao/4bc4IQkKxqBa2L6J3SPW8635PrjO6adKfoTdj3qvYOb5C93/6/Fl0ayqLlPoTA/YhGINKWWSMsyddUSBwOWANXVkOqN/YAx77HEPZSyPSOTKU9wRA+pGvQSMlDMgAczlHE3BkfAZj+fgTXdO23BK42lPU44Tzz9Zd1ux40VRzOIhLjG/wn7TpRy23xasKES88LDm1U2WBFceQMpjZoLlfeImPXCSz8IGgrmkuHnJzcRVxdEtbnJpwEntWtYP9PM39cBCmszpAUucc/CZwghZy6R1WG2J7dWiz4CcUOpx9uS8z3VKhxztMytgwFqsDWBf0YZTHyAopGHrhLmfA6xt3nnZ47ZNuG9pdpcw8hPAUirgR51dkNmGTmiCjACtDhMjHDPqVyNDdqr8EWsTUrqUR8P7/m7Cj8J0v2gLHjwShooE2cUc87+aeap2QLGCN+UA==; 5:gA37FvrQRGyaeYgGsFZxDvOzS6XoY5p1HSfJq1sCPLk/nHs9LP3iuN4XYE2Jt7s1pIv/IOny2TZup8THHTyY85s8aHCKnHQ0wI5KFMUhgWZ7AXBiwaoxdMFoBHu7HSyS513pYE+OkvUn8QwWUMuTE1QjskZIxucqBgjlDkMkv9I=; 7:MX7EgF2Z3qV+9Ta6Nq3MizNXNio7EL3UA5fvzWFWbIhqy2mxB1NZSdBLBlObdtnzwJsKtdjdKVLcf9+IfXiQf7qUeLTZ1qWedyqPA00Ng307YztOHp5XyQSoDInUPRGEIyvamqaxPIcl0ilD3pqLAftqwLRn25KDvpKBr+5uXGe+TCZXaTYy6W1GwVP1s8uIlK4nsGj2KgFf3yHy7qC9MY8G5EVuMxXiZ0NvBBPP+BjTvK3FmKJyfgGxDG/gydOM x-ms-exchange-antispam-srfa-diagnostics: SOS;SOR; x-ms-office365-filtering-correlation-id: 74b85f68-c8b9-4161-3fe2-08d62b01eb32 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:HE1PR0801MB1913; x-ms-traffictypediagnostic: HE1PR0801MB1913: nodisclaimer: True x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(180628864354917)(100405760836317)(228905959029699); x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(3002001)(10201501046)(3231355)(944501410)(52105095)(93006095)(93001095)(6055026)(149066)(150057)(6041310)(20161123562045)(20161123564045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(201708071742011)(7699051); SRVR:HE1PR0801MB1913; BCL:0; PCL:0; RULEID:; SRVR:HE1PR0801MB1913; x-forefront-prvs: 0816F1D86E x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(346002)(39860400002)(136003)(366004)(376002)(396003)(13464003)(189003)(199004)(26005)(102836004)(5250100002)(97736004)(14454004)(6306002)(186003)(110136005)(53936002)(53546011)(6506007)(256004)(72206003)(966005)(33656002)(58126008)(54906003)(6512007)(53946003)(478600001)(99286004)(66066001)(476003)(82746002)(76176011)(11346002)(14444005)(446003)(2900100001)(6486002)(6436002)(229853002)(486006)(2616005)(8936002)(81166006)(81156014)(6246003)(4744004)(2906002)(71190400001)(8676002)(6116002)(3846002)(71200400001)(305945005)(93886005)(68736007)(316002)(83716004)(25786009)(86362001)(575784001)(4326008)(5660300001)(345774005)(105586002)(7736002)(106356001)(36756003)(10126625002); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR0801MB1913; H:HE1PR0801MB2076.eurprd08.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: 92/TF4m2huzn1vsP+u1Icskfpn+YKc3aW0bY3YM9I5Nm1qQ3Nds0qTfa+BqPXg4BW4GOJfGGo8IuVci8NgJjONOVCReCuMx8uBh9ZU2hW+QXDKKjLCj3oDTLzMuRgVVLnwS3dHzZS9nt8JMc77OCGcA7YGrOXTwCWgdzqhg9AL67DS8byvtxhD/wGGEXL6Jrfvp+2rAsUpXH8bywjgSbalq2Wxk+gk8kmXZJF3a3q6LtnxKUb2OYLBvyxQyXvsWEEf+O7E+YM5+3rb94oMWhMOT8j855Jc3L52iENzRs8mpPEGxU0M0I804XJ9BR30eOweNXeVocivBnoI1SG6hb8ZEGaRTJ0vTjVzPuM1NIiUQ= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-ID: <13D08A2025BE184880869E901C6D18B3@eurprd08.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-Network-Message-Id: 74b85f68-c8b9-4161-3fe2-08d62b01eb32 X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Oct 2018 20:34:15.8092 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0801MB1913 Subject: Re: [dpdk-dev] [PATCH v3 1/3] ring: read tail using atomic load X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 05 Oct 2018 20:34:20 -0000 DQoNCu+7v09uIDA1LzEwLzIwMTgsIDIyOjI5LCAiSG9ubmFwcGEgTmFnYXJhaGFsbGkiIDxIb25u YXBwYS5OYWdhcmFoYWxsaUBhcm0uY29tPiB3cm90ZToNCg0KICAgID4gDQogICAgPiBJIGRvdWJ0 IGl0IGlzIHBvc3NpYmxlIHRvIGJlbmNobWFyayB3aXRoIHN1Y2ggYSBwcmVjaXNpb24gc28gdG8g c2VlIHRoZQ0KICAgID4gcG90ZW50aWFsIGRpZmZlcmVuY2Ugb2Ygb25lIEFERCBpbnN0cnVjdGlv bi4NCiAgICA+IEp1c3QgY2hhbmdlcyBpbiBmdW5jdGlvbiBhbGlnbm1lbnQgY2FuIGFmZmVjdCBw ZXJmb3JtYW5jZSBieSBwZXJjZW50cy4gQW5kDQogICAgPiB0aGUgbmF0dXJhbCB2YXJpYXRpb24g d2hlbiBub3QgdXNpbmcgYSAxMDAlIGRldGVybWluaXN0aWMgc3lzdGVtIGlzIGdvaW5nIHRvDQog ICAgPiBiZSBhIGxvdCBsYXJnZXIgdGhhbiBvbmUgY3ljbGUgcGVyIHJpbmcgYnVmZmVyIG9wZXJh dGlvbi4NCiAgICA+IA0KICAgID4gU29tZSBvZiB0aGUgb3RoZXIgcGF0Y2hlcyBhcmUgYWxzbyBm b3IgY29ycmVjdG5lc3MgKGUuZy4gbG9hZC1hY3F1aXJlIG9mIHRhaWwpDQogICAgVGhlIGRpc2N1 c3Npb24gaXMgYWJvdXQgdGhpcyBwYXRjaCBhbG9uZS4gT3RoZXIgcGF0Y2hlcyBhcmUgYWxyZWFk eSBBY2tlZC4NClNvIHRoZSBiZW5jaG1hcmtpbmcgdGhlbiBtYWtlcyB6ZXJvIHNlbnNlLg0KDQog ICAgDQogICAgPiBzbyB3aGlsZSBwZXJmb3JtYW5jZSBtZWFzdXJlbWVudHMgbWF5IGJlIGludGVy ZXN0aW5nLCB3ZSBjYW4ndCBza2lwIGEgYnVnDQogICAgPiBmaXgganVzdCBiZWNhdXNlIGl0IHBy b3ZlcyB0byBkZWNyZWFzZSBwZXJmb3JtYW5jZS4NCiAgICBJTU8sIHRoaXMgcGF0Y2ggaXMgbm90 IGEgYnVnIGZpeCAtIGluIHRlcm1zIG9mIGl0IGZpeGluZyBhbnkgZmFpbHVyZXMgd2l0aCB0aGUg Y3VycmVudCBjb2RlLg0KSXQncyBhIGZpeCBmb3IgY29ycmVjdG5lc3MuIFBlciB0aGUgQysrMTEg KGFuZCBwcm9iYWJseSBDMTEgYXMgd2VsbCBkdWUgdG8gdGhlIHNoYXJlZCBtZW1vcnkgbW9kZWwp LCB3ZSBoYXZlIHVuZGVmaW5lZCBiZWhhdmlvdXIgaGVyZS4gSWYgdGhlIGNvbXBpbGVyIGRldGVj dHMgVUIsIGl0IGlzIGFsbG93ZWQgdG8gZG8gYW55dGhpbmcuIEN1cnJlbnQgY29tcGlsZXJzIG1p Z2h0IG5vdCBleHBsb2l0IHRoaXMgYnV0IGZ1dHVyZSBjb21waWxlcnMgY291bGQuDQoNCg0KICAg IA0KICAgID4gDQogICAgPiAtLSBPbGENCiAgICA+IA0KICAgID4gT24gMDUvMTAvMjAxOCwgMjI6 MDYsICJIb25uYXBwYSBOYWdhcmFoYWxsaSINCiAgICA+IDxIb25uYXBwYS5OYWdhcmFoYWxsaUBh cm0uY29tPiB3cm90ZToNCiAgICA+IA0KICAgID4gICAgIEhpIEplcmluLA0KICAgID4gICAgIAlU aGFuayB5b3UgZm9yIGdlbmVyYXRpbmcgdGhlIGRpc2Fzc2VtYmx5LCB0aGF0IGlzIHJlYWxseSBo ZWxwZnVsLiBJDQogICAgPiBhZ3JlZSB3aXRoIHlvdSB0aGF0IHdlIGhhdmUgdGhlIG9wdGlvbiBv ZiBtb3ZpbmcgcGFydHMgMiBhbmQgMyBmb3J3YXJkLiBJDQogICAgPiB3aWxsIGxldCBHYXZpbiB0 YWtlIGEgZGVjaXNpb24uDQogICAgPiANCiAgICA+ICAgICBJIHN1Z2dlc3QgdGhhdCB3ZSBydW4g YmVuY2htYXJrcyBvbiB0aGlzIHBhdGNoIGFsb25lIGFuZCBpbiBjb21iaW5hdGlvbg0KICAgID4g d2l0aCBvdGhlciBwYXRjaGVzIGluIHRoZSBzZXJpZXMuIFdlIGhhdmUgZmV3IEFybSBtYWNoaW5l cyBhbmQgd2Ugd2lsbCBydW4NCiAgICA+IG9uIGFsbCBvZiB0aGVtIGFsb25nIHdpdGggeDg2LiBX ZSB0YWtlIGEgZGVjaXNpb24gYmFzZWQgb24gdGhhdC4NCiAgICA+IA0KICAgID4gICAgIFdvdWxk IHRoYXQgYmUgYSB3YXkgdG8gbW92ZSBmb3J3YXJkPyBJIHRoaW5rIHRoaXMgc2hvdWxkIGFkZHJl c3MgYm90aA0KICAgID4geW91ciBhbmQgT2xhJ3MgY29uY2VybnMuDQogICAgPiANCiAgICA+ICAg ICBJIGFtIG9wZW4gZm9yIG90aGVyIHN1Z2dlc3Rpb25zIGFzIHdlbGwuDQogICAgPiANCiAgICA+ ICAgICBUaGFuayB5b3UsDQogICAgPiAgICAgSG9ubmFwcGENCiAgICA+IA0KICAgID4gICAgID4N CiAgICA+ICAgICA+IFNvIHlvdSBkb24ndCB3YW50IHRvIHdyaXRlIHRoZSBwcm9wZXIgQzExIGNv ZGUgYmVjYXVzZSB0aGUgY29tcGlsZXINCiAgICA+ICAgICA+IGdlbmVyYXRlcyBvbmUgZXh0cmEg aW5zdHJ1Y3Rpb24gdGhhdCB3YXk/DQogICAgPiAgICAgPiBZb3UgZG9uJ3QgZXZlbiBrbm93IGlm IHRoYXQgb25lIGV4dHJhIGluc3RydWN0aW9uIGhhcyBhbnkgbWVhc3VyYWJsZQ0KICAgID4gICAg ID4gaW1wYWN0IG9uIHBlcmZvcm1hbmNlLiBFLmcuIGl0IGNvdWxkIGJlIGlzc3VlZCB0aGUgY3lj bGUgYmVmb3JlIHRvZ2V0aGVyDQogICAgPiAgICAgPiB3aXRoIG90aGVyIGluc3RydWN0aW9ucy4N CiAgICA+ICAgICA+DQogICAgPiAgICAgPiBXZSBjYW4gY29tcGxhaW4gdG8gdGhlIGNvbXBpbGVy IHdyaXRlcnMgdGhhdCB0aGUgY29kZSBnZW5lcmF0aW9uIGZvcg0KICAgID4gICAgID4gX19hdG9t aWNfbG9hZF9uKCwgX19BVE9NSUNfUkVMQVhFRCkgaXMgbm90IG9wdGltYWwgKGF0IGxlYXN0IG9u DQogICAgPiAgICAgPiBBUk0vQTY0KS4gSSB0aGluayB0aGUgcHJvYmxlbSBpcyB0aGF0IHRoZSBf X2F0b21pYyBidWlsdGlucyBvbmx5IGFjY2VwdA0KICAgID4gYQ0KICAgID4gICAgID4gYmFzZSBh ZGRyZXNzIHdpdGhvdXQgYW55IG9mZnNldCBhbmQgdGhpcyBpcyBwb3NzaWJseSBiZWNhdXNlIGUu Zy4NCiAgICA+IGxvYWQvc3RvcmUNCiAgICA+ICAgICA+IGV4Y2x1c2l2ZSAoTERYL1NUWCkgYW5k IGxvYWQtYWNxdWlyZSAoTERBUikgYW5kIHN0b3JlLXJlbGVhc2UgKFNUTFIpDQogICAgPiBvbmx5 DQogICAgPiAgICAgPiBhY2NlcHQgYSBiYXNlIHJlZ2lzdGVyIHdpdGggbm8gb2Zmc2V0LiBTbyBh bnkgb2Zmc2V0IGhhcyB0byBiZSBhZGRlZA0KICAgID4gYmVmb3JlDQogICAgPiAgICAgPiB0aGUg YWN0dWFsICJhdG9taWMiIGluc3RydWN0aW9uLCBMRFIgaW4gdGhpcyBjYXNlLg0KICAgID4gICAg ID4NCiAgICA+ICAgICA+DQogICAgPiAgICAgPiAtLSBPbGENCiAgICA+ICAgICA+DQogICAgPiAg ICAgPg0KICAgID4gICAgID4gT24gMDUvMTAvMjAxOCwgMTk6MDcsICJKZXJpbiBKYWNvYiIgPGpl cmluLmphY29iQGNhdml1bW5ldHdvcmtzLmNvbT4NCiAgICA+ICAgICA+IHdyb3RlOg0KICAgID4g ICAgID4NCiAgICA+ICAgICA+ICAgICAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KICAgID4g ICAgID4gICAgID4gRGF0ZTogRnJpLCA1IE9jdCAyMDE4IDE1OjExOjQ0ICswMDAwDQogICAgPiAg ICAgPiAgICAgPiBGcm9tOiBIb25uYXBwYSBOYWdhcmFoYWxsaSA8SG9ubmFwcGEuTmFnYXJhaGFs bGlAYXJtLmNvbT4NCiAgICA+ICAgICA+ICAgICA+IFRvOiAiQW5hbnlldiwgS29uc3RhbnRpbiIg PGtvbnN0YW50aW4uYW5hbnlldkBpbnRlbC5jb20+LCBPbGENCiAgICA+ICAgICA+IExpbGplZGFo bA0KICAgID4gICAgID4gICAgID4gIDxPbGEuTGlsamVkYWhsQGFybS5jb20+LCAiR2F2aW4gSHUg KEFybSBUZWNobm9sb2d5IENoaW5hKSINCiAgICA+ICAgICA+ICAgICA+ICA8R2F2aW4uSHVAYXJt LmNvbT4sIEplcmluIEphY29iDQogICAgPiA8amVyaW4uamFjb2JAY2F2aXVtbmV0d29ya3MuY29t Pg0KICAgID4gICAgID4gICAgID4gQ0M6ICJkZXZAZHBkay5vcmciIDxkZXZAZHBkay5vcmc+LCBT dGV2ZSBDYXBwZXINCiAgICA+ICAgICA+IDxTdGV2ZS5DYXBwZXJAYXJtLmNvbT4sIG5kDQogICAg PiAgICAgPiAgICAgPiAgPG5kQGFybS5jb20+LCAic3RhYmxlQGRwZGsub3JnIiA8c3RhYmxlQGRw ZGsub3JnPg0KICAgID4gICAgID4gICAgID4gU3ViamVjdDogUkU6IFtQQVRDSCB2MyAxLzNdIHJp bmc6IHJlYWQgdGFpbCB1c2luZyBhdG9taWMgbG9hZA0KICAgID4gICAgID4gICAgID4NCiAgICA+ ICAgICA+ICAgICA+ID4gPiAgICAgICAgID4gSGkgSmVyaW4sDQogICAgPiAgICAgPiAgICAgPiA+ ID4gICAgICAgICA+DQogICAgPiAgICAgPiAgICAgPiA+ID4gICAgICAgICA+IFRoYW5rcyBmb3Ig eW91ciByZXZpZXcsIGlubGluZSBjb21tZW50cyBmcm9tIG91cg0KICAgID4gaW50ZXJuYWwNCiAg ICA+ICAgICA+ICAgICA+ID4gZGlzY3Vzc2lvbnMuDQogICAgPiAgICAgPiAgICAgPiA+ID4gICAg ICAgICA+DQogICAgPiAgICAgPiAgICAgPiA+ID4gICAgICAgICA+IEJSLiBHYXZpbg0KICAgID4g ICAgID4gICAgID4gPiA+ICAgICAgICAgPg0KICAgID4gICAgID4gICAgID4gPiA+ICAgICAgICAg PiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQogICAgPiAgICAgPiAgICAgPiA+ID4gICAg ICAgICA+ID4gRnJvbTogSmVyaW4gSmFjb2IgPGplcmluLmphY29iQGNhdml1bW5ldHdvcmtzLmNv bT4NCiAgICA+ICAgICA+ICAgICA+ID4gPiAgICAgICAgID4gPiBTZW50OiBTYXR1cmRheSwgU2Vw dGVtYmVyIDI5LCAyMDE4IDY6NDkgUE0NCiAgICA+ICAgICA+ICAgICA+ID4gPiAgICAgICAgID4g PiBUbzogR2F2aW4gSHUgKEFybSBUZWNobm9sb2d5IENoaW5hKQ0KICAgID4gPEdhdmluLkh1QGFy bS5jb20+DQogICAgPiAgICAgPiAgICAgPiA+ID4gICAgICAgICA+ID4gQ2M6IGRldkBkcGRrLm9y ZzsgSG9ubmFwcGEgTmFnYXJhaGFsbGkNCiAgICA+ICAgICA+ICAgICA+ID4gPiAgICAgICAgID4g PiA8SG9ubmFwcGEuTmFnYXJhaGFsbGlAYXJtLmNvbT47IFN0ZXZlIENhcHBlcg0KICAgID4gICAg ID4gICAgID4gPiA+ICAgICAgICAgPiA+IDxTdGV2ZS5DYXBwZXJAYXJtLmNvbT47IE9sYSBMaWxq ZWRhaGwNCiAgICA+ICAgICA+IDxPbGEuTGlsamVkYWhsQGFybS5jb20+Ow0KICAgID4gICAgID4g ICAgID4gPiBuZA0KICAgID4gICAgID4gICAgID4gPiA+ICAgICAgICAgPiA+IDxuZEBhcm0uY29t Pjsgc3RhYmxlQGRwZGsub3JnDQogICAgPiAgICAgPiAgICAgPiA+ID4gICAgICAgICA+ID4gU3Vi amVjdDogUmU6IFtQQVRDSCB2MyAxLzNdIHJpbmc6IHJlYWQgdGFpbCB1c2luZyBhdG9taWMNCiAg ICA+IGxvYWQNCiAgICA+ICAgICA+ICAgICA+ID4gPiAgICAgICAgID4gPg0KICAgID4gICAgID4g ICAgID4gPiA+ICAgICAgICAgPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQogICAgPiAg ICAgPiAgICAgPiA+ID4gICAgICAgICA+ID4gPiBEYXRlOiBNb24sIDE3IFNlcCAyMDE4IDE2OjE3 OjIyICswODAwDQogICAgPiAgICAgPiAgICAgPiA+ID4gICAgICAgICA+ID4gPiBGcm9tOiBHYXZp biBIdSA8Z2F2aW4uaHVAYXJtLmNvbT4NCiAgICA+ICAgICA+ICAgICA+ID4gPiAgICAgICAgID4g PiA+IFRvOiBkZXZAZHBkay5vcmcNCiAgICA+ICAgICA+ICAgICA+ID4gPiAgICAgICAgID4gPiA+ IENDOiBnYXZpbi5odUBhcm0uY29tLA0KICAgID4gSG9ubmFwcGEuTmFnYXJhaGFsbGlAYXJtLmNv bSwNCiAgICA+ICAgICA+ICAgICA+ID4gPiAgICAgICAgID4gPiA+IHN0ZXZlLmNhcHBlckBhcm0u Y29tLCAgT2xhLkxpbGplZGFobEBhcm0uY29tLA0KICAgID4gICAgID4gICAgID4gPiA+ICAgICAg ICAgPiA+ID4gamVyaW4uamFjb2JAY2F2aXVtbmV0d29ya3MuY29tLCBuZEBhcm0uY29tLA0KICAg ID4gICAgID4gICAgID4gPiBzdGFibGVAZHBkay5vcmcNCiAgICA+ICAgICA+ICAgICA+ID4gPiAg ICAgICAgID4gPiA+IFN1YmplY3Q6IFtQQVRDSCB2MyAxLzNdIHJpbmc6IHJlYWQgdGFpbCB1c2lu ZyBhdG9taWMNCiAgICA+IGxvYWQNCiAgICA+ICAgICA+ICAgICA+ID4gPiAgICAgICAgID4gPiA+ IFgtTWFpbGVyOiBnaXQtc2VuZC1lbWFpbCAyLjcuNA0KICAgID4gICAgID4gICAgID4gPiA+ICAg ICAgICAgPiA+ID4NCiAgICA+ICAgICA+ICAgICA+ID4gPiAgICAgICAgID4gPiA+IEV4dGVybmFs IEVtYWlsDQogICAgPiAgICAgPiAgICAgPiA+ID4gICAgICAgICA+ID4gPg0KICAgID4gICAgID4g ICAgID4gPiA+ICAgICAgICAgPiA+ID4gSW4gdXBkYXRlX3RhaWwsIHJlYWQgaHQtPnRhaWwgdXNp bmcNCiAgICA+ICAgICA+IF9fYXRvbWljX2xvYWQuQWx0aG91Z2ggdGhlDQogICAgPiAgICAgPiAg ICAgPiA+ID4gICAgICAgICA+ID4gPiBjb21waWxlciBjdXJyZW50bHkgc2VlbXMgdG8gYmUgZG9p bmcgdGhlIHJpZ2h0IHRoaW5nDQogICAgPiBldmVuDQogICAgPiAgICAgPiB3aXRob3V0DQogICAg PiAgICAgPiAgICAgPiA+ID4gICAgICAgICA+ID4gPiBfYXRvbWljX2xvYWQsIHdlIGRvbid0IHdh bnQgdG8gZ2l2ZSB0aGUgY29tcGlsZXINCiAgICA+ICAgICA+IGZyZWVkb20gdG8NCiAgICA+ICAg ICA+ICAgICA+ID4gb3B0aW1pc2UNCiAgICA+ICAgICA+ICAgICA+ID4gPiAgICAgICAgID4gPiA+ IHdoYXQgc2hvdWxkIGJlIGFuIGF0b21pYyBsb2FkLCBpdCBzaG91bGQgbm90IGJlDQogICAgPiBh cmJpdGFyaWx5DQogICAgPiAgICAgPiBtb3ZlZA0KICAgID4gICAgID4gICAgID4gPiA+ICAgICAg ICAgPiA+ID4gYXJvdW5kLg0KICAgID4gICAgID4gICAgID4gPiA+ICAgICAgICAgPiA+ID4NCiAg ICA+ICAgICA+ICAgICA+ID4gPiAgICAgICAgID4gPiA+IEZpeGVzOiAzOTM2OGViZmM2ICgicmlu ZzogaW50cm9kdWNlIEMxMSBtZW1vcnkgbW9kZWwNCiAgICA+ICAgICA+IGJhcnJpZXINCiAgICA+ ICAgICA+ICAgICA+ID4gb3B0aW9uIikNCiAgICA+ICAgICA+ICAgICA+ID4gPiAgICAgICAgID4g PiA+IENjOiBzdGFibGVAZHBkay5vcmcNCiAgICA+ICAgICA+ICAgICA+ID4gPiAgICAgICAgID4g PiA+DQogICAgPiAgICAgPiAgICAgPiA+ID4gICAgICAgICA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBH YXZpbiBIdSA8Z2F2aW4uaHVAYXJtLmNvbT4NCiAgICA+ICAgICA+ICAgICA+ID4gPiAgICAgICAg ID4gPiA+IFJldmlld2VkLWJ5OiBIb25uYXBwYSBOYWdhcmFoYWxsaQ0KICAgID4gICAgID4gICAg ID4gPiA8SG9ubmFwcGEuTmFnYXJhaGFsbGlAYXJtLmNvbT4NCiAgICA+ICAgICA+ICAgICA+ID4g PiAgICAgICAgID4gPiA+IFJldmlld2VkLWJ5OiBTdGV2ZSBDYXBwZXIgPHN0ZXZlLmNhcHBlckBh cm0uY29tPg0KICAgID4gICAgID4gICAgID4gPiA+ICAgICAgICAgPiA+ID4gUmV2aWV3ZWQtYnk6 IE9sYSBMaWxqZWRhaGwgPE9sYS5MaWxqZWRhaGxAYXJtLmNvbT4NCiAgICA+ICAgICA+ICAgICA+ ID4gPiAgICAgICAgID4gPiA+IC0tLQ0KICAgID4gICAgID4gICAgID4gPiA+ICAgICAgICAgPiA+ ID4gIGxpYi9saWJydGVfcmluZy9ydGVfcmluZ19jMTFfbWVtLmggfCAzICsrLQ0KICAgID4gICAg ID4gICAgID4gPiA+ICAgICAgICAgPiA+ID4gIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMo KyksIDEgZGVsZXRpb24oLSkNCiAgICA+ICAgICA+ICAgICA+ID4gPiAgICAgICAgID4gPiA+DQog ICAgPiAgICAgPiAgICAgPiA+ID4gICAgICAgICA+IFRoZSByZWFkIG9mIGh0LT50YWlsIG5lZWRz IHRvIGJlIGF0b21pYywgYSBub24tYXRvbWljDQogICAgPiByZWFkDQogICAgPiAgICAgPiB3b3Vs ZCBub3QNCiAgICA+ICAgICA+ICAgICA+ID4gYmUgY29ycmVjdC4NCiAgICA+ICAgICA+ICAgICA+ ID4gPg0KICAgID4gICAgID4gICAgID4gPiA+ICAgICAgICAgVGhhdCdzIGEgMzJiaXQgdmFsdWUg bG9hZC4NCiAgICA+ICAgICA+ICAgICA+ID4gPiAgICAgICAgIEFGQUlLIG9uIGFsbCBDUFVzIHRo YXQgd2Ugc3VwcG9ydCBpdCBpcyBhbiBhdG9taWMgb3BlcmF0aW9uLg0KICAgID4gICAgID4gICAg ID4gPiA+ICAgICBbT2xhXSBCdXQgdGhhdCB0aGUgb3JkaW5hcnkgQyBsb2FkIGlzIHRyYW5zbGF0 ZWQgdG8gYW4gYXRvbWljDQogICAgPiBsb2FkDQogICAgPiAgICAgPiBmb3IgdGhlDQogICAgPiAg ICAgPiAgICAgPiA+IHRhcmdldCBhcmNoaXRlY3R1cmUgaXMgaW5jaWRlbnRhbC4NCiAgICA+ICAg ICA+ICAgICA+ID4gPg0KICAgID4gICAgID4gICAgID4gPiA+ICAgICBJZiB0aGUgZGVzaWduIHJl cXVpcmVzIGFuIGF0b21pYyBsb2FkICh3aGljaCBpcyB0aGUgY2FzZSBoZXJlKSwNCiAgICA+IHdl DQogICAgPiAgICAgPiAgICAgPiA+ID4gc2hvdWxkIHVzZSBhbiBhdG9taWMgbG9hZCBvbiB0aGUg bGFuZ3VhZ2UgbGV2ZWwuIFRoZW4gd2UgY2FuDQogICAgPiBiZQ0KICAgID4gICAgID4gc3VyZSBp dCB3aWxsDQogICAgPiAgICAgPiAgICAgPiA+IGFsd2F5cyBiZSB0cmFuc2xhdGVkIHRvIGFuIGF0 b21pYyBsb2FkIGZvciB0aGUgdGFyZ2V0IGluIHF1ZXN0aW9uDQogICAgPiBvcg0KICAgID4gICAg ID4gICAgID4gPiBjb21waWxhdGlvbiB3aWxsIGZhaWwuIFdlIGRvbid0IGhhdmUgdG8gZGVwZW5k IG9uIGFzc3VtcHRpb25zLg0KICAgID4gICAgID4gICAgID4gPg0KICAgID4gICAgID4gICAgID4g PiBXZSBhbGwga25vdyB0aGF0IDMyYml0IGxvYWQvc3RvcmUgb24gY3B1IHdlIHN1cHBvcnQgLSBh cmUgYXRvbWljLg0KICAgID4gICAgID4gICAgID4gPiBJZiBpdCB3b3VsZG4ndCBiZSB0aGUgY2Fz ZSAtIERQREsgd291bGQgYmUgYnJva2VuIGluIGRvemVuIHBsYWNlcy4NCiAgICA+ICAgICA+ICAg ICA+ID4gU28gd2hhdCB0aGUgcG9pbnQgdG8gcHJldGVuZCB0aGF0ICJpdCBtaWdodCBiZSBub3Qg YXRvbWljIiBpZiB3ZQ0KICAgID4gZG8NCiAgICA+ICAgICA+IGtub3cgZm9yDQogICAgPiAgICAg PiAgICAgPiA+IHN1cmUgdGhhdCBpdCBpcz8NCiAgICA+ICAgICA+ICAgICA+ID4gSSBkbyB1bmRl cnN0YW5kIHRoYXQgeW91IHdhbnQgdG8gdXNlIGF0b21pY19sb2FkKHJlbGF4ZWQpIGhlcmUNCiAg ICA+IGZvcg0KICAgID4gICAgID4gICAgID4gPiBjb25zaXN0ZW5jeSwgYW5kIHRvIGNvbmZvcm0g d2l0aCBDMTEgbWVtLW1vZGVsIGFuZCBJIGRvbid0IHNlZQ0KICAgID4gYW55DQogICAgPiAgICAg PiBoYXJtIGluDQogICAgPiAgICAgPiAgICAgPiA+IHRoYXQuDQogICAgPiAgICAgPiAgICAgPiBX ZSBjYW4gY29udGludWUgdG8gZGlzY3VzcyB0aGUgdG9waWMsIGl0IGlzIGEgZ29vZCBkaXNjdXNz aW9uLiBCdXQsIGFzDQogICAgPiBmYXINCiAgICA+ICAgICA+IHRoaXMgcGF0Y2ggaXMgY29uY2Vy bmVkLCBjYW4gSSBjb25zaWRlciB0aGlzIGFzIHVzIGhhdmluZyBhIGNvbnNlbnN1cz8NCiAgICA+ IFRoZQ0KICAgID4gICAgID4gZmlsZSBydGVfcmluZ19jMTFfbWVtLmggaXMgc3BlY2lmaWNhbGx5 IGZvciBDMTEgbWVtb3J5IG1vZGVsIGFuZCBJIGFsc28NCiAgICA+IGRvDQogICAgPiAgICAgPiBu b3Qgc2VlIGFueSBoYXJtIGluIGhhdmluZyBjb2RlIHRoYXQgY29tcGxldGVseSBjb25mb3JtcyB0 byBDMTENCiAgICA+IG1lbW9yeQ0KICAgID4gICAgID4gbW9kZWwuDQogICAgPiAgICAgPg0KICAg ID4gICAgID4gICAgIEhhdmUgeW91IGd1eXMgY2hlY2tlZCB0aGUgb3V0cHV0IGFzc2VtYmx5IHdp dGggYW5kIHdpdGhvdXQgYXRvbWljDQogICAgPiAgICAgPiBsb2FkPw0KICAgID4gICAgID4gICAg IFRoZXJlIGlzIGFuIGV4dHJhICJhZGQiIGluc3RydWN0aW9uIHdpdGggYXQgbGVhc3QgdGhlIGNv ZGUgSSBoYXZlDQogICAgPiBjaGVja2VkLg0KICAgID4gICAgID4gICAgIEkgdGhpbmssIGNvbXBp bGVyIGlzIG5vdCBzbWFydCBlbm91Z2ggdG8gdW5kZXJzdGFuZCBpdCBpcyBhIGRlYWQgY29kZQ0K ICAgID4gZm9yDQogICAgPiAgICAgPiAgICAgYXJtNjQuDQogICAgPiAgICAgPg0KICAgID4gICAg ID4gICAgIOKenCBbfl0gJCBhYXJjaDY0LWxpbnV4LWdudS1nY2MgLXYNCiAgICA+ICAgICA+ICAg ICBVc2luZyBidWlsdC1pbiBzcGVjcy4NCiAgICA+ICAgICA+ICAgICBDT0xMRUNUX0dDQz1hYXJj aDY0LWxpbnV4LWdudS1nY2MNCiAgICA+ICAgICA+ICAgICBDT0xMRUNUX0xUT19XUkFQUEVSPS91 c3IvbGliL2djYy9hYXJjaDY0LWxpbnV4LWdudS84LjIuMC9sdG8tDQogICAgPiAgICAgPiB3cmFw cGVyDQogICAgPiAgICAgPiAgICAgVGFyZ2V0OiBhYXJjaDY0LWxpbnV4LWdudQ0KICAgID4gICAg ID4gICAgIENvbmZpZ3VyZWQgd2l0aDogL2J1aWxkL2FhcmNoNjQtbGludXgtZ251LWdjYy9zcmMv Z2NjLTguMi4wL2NvbmZpZ3VyZQ0KICAgID4gICAgID4gICAgIC0tcHJlZml4PS91c3IgLS1wcm9n cmFtLXByZWZpeD1hYXJjaDY0LWxpbnV4LWdudS0NCiAgICA+ICAgICA+ICAgICAtLXdpdGgtbG9j YWwtcHJlZml4PS91c3IvYWFyY2g2NC1saW51eC1nbnUNCiAgICA+ICAgICA+ICAgICAtLXdpdGgt c3lzcm9vdD0vdXNyL2FhcmNoNjQtbGludXgtZ251DQogICAgPiAgICAgPiAgICAgLS13aXRoLWJ1 aWxkLXN5c3Jvb3Q9L3Vzci9hYXJjaDY0LWxpbnV4LWdudSAtLWxpYmRpcj0vdXNyL2xpYg0KICAg ID4gICAgID4gICAgIC0tbGliZXhlY2Rpcj0vdXNyL2xpYiAtLXRhcmdldD1hYXJjaDY0LWxpbnV4 LWdudQ0KICAgID4gICAgID4gICAgIC0taG9zdD14ODZfNjQtcGMtbGludXgtZ251IC0tYnVpbGQ9 eDg2XzY0LXBjLWxpbnV4LWdudSAtLWRpc2FibGUtbmxzDQogICAgPiAgICAgPiAgICAgLS1lbmFi bGUtbGFuZ3VhZ2VzPWMsYysrIC0tZW5hYmxlLXNoYXJlZCAtLWVuYWJsZS10aHJlYWRzPXBvc2l4 DQogICAgPiAgICAgPiAgICAgLS13aXRoLXN5c3RlbS16bGliIC0td2l0aC1pc2wgLS1lbmFibGUt X19jeGFfYXRleGl0DQogICAgPiAgICAgPiAgICAgLS1kaXNhYmxlLWxpYnVud2luZC1leGNlcHRp b25zIC0tZW5hYmxlLWNsb2NhbGU9Z251DQogICAgPiAgICAgPiAgICAgLS1kaXNhYmxlLWxpYnN0 ZGN4eC1wY2ggLS1kaXNhYmxlLWxpYnNzcCAtLWVuYWJsZS1nbnUtdW5pcXVlLW9iamVjdA0KICAg ID4gICAgID4gICAgIC0tZW5hYmxlLWxpbmtlci1idWlsZC1pZCAtLWVuYWJsZS1sdG8gLS1lbmFi bGUtcGx1Z2luDQogICAgPiAgICAgPiAgICAgLS1lbmFibGUtaW5zdGFsbC1saWJpYmVydHkgLS13 aXRoLWxpbmtlci1oYXNoLXN0eWxlPWdudQ0KICAgID4gICAgID4gICAgIC0tZW5hYmxlLWdudS1p bmRpcmVjdC1mdW5jdGlvbiAtLWRpc2FibGUtbXVsdGlsaWIgLS1kaXNhYmxlLXdlcnJvcg0KICAg ID4gICAgID4gICAgIC0tZW5hYmxlLWNoZWNraW5nPXJlbGVhc2UNCiAgICA+ICAgICA+ICAgICBU aHJlYWQgbW9kZWw6IHBvc2l4DQogICAgPiAgICAgPiAgICAgZ2NjIHZlcnNpb24gOC4yLjAgKEdD QykNCiAgICA+ICAgICA+DQogICAgPiAgICAgPg0KICAgID4gICAgID4gICAgICMgYnVpbGQgc2V0 dXANCiAgICA+ICAgICA+ICAgICBtYWtlIC1qIDggY29uZmlnIFQ9YXJtNjQtYXJtdjhhLWxpbnV4 YXBwLWdjYyAgQ1JPU1M9YWFyY2g2NC1saW51eC0NCiAgICA+IGdudS0NCiAgICA+ICAgICA+ICAg ICBtYWtlIC1qIDggdGVzdC1idWlsZCBDUk9TUz1hYXJjaDY0LWxpbnV4LWdudS0NCiAgICA+ICAg ICA+DQogICAgPiAgICAgPiAgICAgIyBnZW5lcmF0ZSBhc20NCiAgICA+ICAgICA+ICAgICBhYXJj aDY0LWxpbnV4LWdudS1nZGIgLWJhdGNoIC1leCAnZmlsZSBidWlsZC9hcHAvdGVzdCAnIC1leA0K ICAgID4gJ2Rpc2Fzc2VtYmxlIC9ycw0KICAgID4gICAgID4gYnVja2V0X2VucXVldWVfc2luZ2xl Jw0KICAgID4gICAgID4NCiAgICA+ICAgICA+ICAgICBJIGhhdmUgdXBsb2FkZWQgZ2VuZXJhdGVk IGZpbGUgZm9yIHlvdXIgY29udmVuaWVuY2UNCiAgICA+ICAgICA+ICAgICB3aXRoX2F0b21pY19s b2FkLnR4dChpbmNsdWRlcyBwYXRjaCAxLDIsMykNCiAgICA+ICAgICA+ICAgICAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQ0KICAgID4gICAgID4gICAgIGh0dHBzOi8vcGFzdGViaW4uY29tL1NRNncx eVJ1DQogICAgPiAgICAgPg0KICAgID4gICAgID4gICAgIHdpdGhvdXRfYXRvbWljX2xvYWQudHh0 KGluY2x1ZGVzIHBhdGNoIDIsMykNCiAgICA+ICAgICA+ICAgICAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQ0KICAgID4gICAgID4gICAgIGh0dHBzOi8vcGFzdGViaW4uY29tL0Jwdm5EMENBDQogICAg PiAgICAgPg0KICAgID4gICAgID4NCiAgICA+ICAgICA+ICAgICB3aXRob3V0X2F0b21pYw0KICAg ID4gICAgID4gICAgIC0tLS0tLS0tLS0tLS0NCiAgICA+ICAgICA+ICAgICAyMyAgICAgICAgICAg ICAgaWYgKCFzaW5nbGUpDQogICAgPiAgICAgPiAgICAgICAgMHgwMDAwMDAwMDAwNjhkMjkwIDwr MjQwPjogICA4NSAwMCAwMCAzNSAgICAgY2JueiAgICB3NSwgMHg2OGQyYTANCiAgICA+ICAgICA+ IDxidWNrZXRfZW5xdWV1ZV9zaW5nbGUrMjU2Pg0KICAgID4gICAgID4gICAgICAgIDB4MDAwMDAw MDAwMDY4ZDI5NCA8KzI0ND46ICAgODIgMDQgNDAgYjkgICAgIGxkciAgICAgdzIsIFt4NCwgIzRd DQogICAgPiAgICAgPiAgICAgICAgMHgwMDAwMDAwMDAwNjhkMjk4IDwrMjQ4PjogICA1ZiAwMCAw MSA2YiAgICAgY21wICAgICB3MiwgdzENCiAgICA+ICAgICA+ICAgICAgICAweDAwMDAwMDAwMDA2 OGQyOWMgPCsyNTI+OiAgIDIxIDAxIDAwIDU0ICAgICBiLm5lICAgIDB4NjhkMmMwDQogICAgPiAg ICAgPiA8YnVja2V0X2VucXVldWVfc2luZ2xlKzI4OD4gIC8vIGIuYW55DQogICAgPiAgICAgPg0K ICAgID4gICAgID4gICAgIDI0ICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICh1bmxpa2VseSho dC0+dGFpbCAhPSBvbGRfdmFsKSkNCiAgICA+ICAgICA+ICAgICAyNSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJ0ZV9wYXVzZSgpOw0KICAgID4gICAgID4NCiAgICA+ICAgICA+DQogICAg PiAgICAgPiAgICAgd2l0aF9hdG9taWMNCiAgICA+ICAgICA+ICAgICAtLS0tLS0tLS0tLQ0KICAg ID4gICAgID4gICAgIDIzICAgICAgICAgICAgICBpZiAoIXNpbmdsZSkNCiAgICA+ICAgICA+ICAg ICAgICAweDAwMDAwMDAwMDA2OGNlYjAgPCsyNDA+OiAgIDAwIDEwIDA0IDkxICAgICBhZGQgICAg IHgwLCB4MCwgIzB4MTA0DQogICAgPiAgICAgPiAgICAgICAgMHgwMDAwMDAwMDAwNjhjZWI0IDwr MjQ0PjogICA4NCAwMCAwMCAzNSAgICAgY2JueiAgICB3NCwgMHg2OGNlYzQNCiAgICA+ICAgICA+ IDxidWNrZXRfZW5xdWV1ZV9zaW5nbGUrMjYwPg0KICAgID4gICAgID4gICAgICAgIDB4MDAwMDAw MDAwMDY4Y2ViOCA8KzI0OD46ICAgMDIgMDAgNDAgYjkgICAgIGxkciAgICAgdzIsIFt4MF0NCiAg ICA+ICAgICA+ICAgICAgICAweDAwMDAwMDAwMDA2OGNlYmMgPCsyNTI+OiAgIDNmIDAwIDAyIDZi ICAgICBjbXAgICAgIHcxLCB3Mg0KICAgID4gICAgID4gICAgICAgIDB4MDAwMDAwMDAwMDY4Y2Vj MCA8KzI1Nj46ICAgMDEgMDkgMDAgNTQgICAgIGIubmUgICAgMHg2OGNmZTANCiAgICA+ICAgICA+ IDxidWNrZXRfZW5xdWV1ZV9zaW5nbGUrNTQ0PiAgLy8gYi5hbnkNCiAgICA+ICAgICA+DQogICAg PiAgICAgPiAgICAgMjQgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHVubGlrZWx5KG9sZF92 YWwgIT0gX19hdG9taWNfbG9hZF9uKCZodC0+dGFpbCwNCiAgICA+ICAgICA+IF9fQVRPTUlDX1JF TEFYRUQpKSkNCiAgICA+ICAgICA+DQogICAgPiAgICAgPg0KICAgID4gICAgID4gICAgIEkgZG9u J3Qgd2FudCB0byBibG9jayB0aGlzIHNlcmllcyBvZiBwYXRjaGVzIGR1ZSB0aGlzIHBhdGNoLiBD YW4gd2UNCiAgICA+IG1ha2UNCiAgICA+ICAgICA+ICAgICByZSBzcGluIG9uZSBzZXJpZXMgd2l0 aCAyIGFuZCAzIHBhdGNoZXMuIEFuZCBXYWl0IGZvciBwYXRjaCAxIHRvDQogICAgPiBjb25jbHVk ZT8NCiAgICA+ICAgICA+DQogICAgPiAgICAgPiAgICAgVGhvdWdodHM/DQogICAgPiAgICAgPg0K ICAgID4gICAgID4NCiAgICA+ICAgICA+DQogICAgPiAgICAgPg0KICAgID4gICAgID4gICAgID4N CiAgICA+ICAgICA+ICAgICA+ID4gQnV0IGFyZ3VtZW50IHRoYXQgd2Ugc2hvdWxkbid0IGFzc3Vt ZSAzMmJpdCBsb2FkL3N0b3JlIG9wcyBhcw0KICAgID4gICAgID4gYXRvbWljDQogICAgPiAgICAg PiAgICAgPiA+IHNvdW5kcyBhIGJpdCBmbGFreSB0byBtZS4NCiAgICA+ICAgICA+ICAgICA+ID4g S29uc3RhbnRpbg0KICAgID4gICAgID4gICAgID4gPg0KICAgID4gICAgID4gICAgID4gPg0KICAg ID4gICAgID4gICAgID4gPiA+DQogICAgPiAgICAgPiAgICAgPiA+ID4NCiAgICA+ICAgICA+ICAg ICA+ID4gPg0KICAgID4gICAgID4gICAgID4gPiA+ICAgICAgICAgPiBCdXQgdGhlcmUgYXJlIG5v IG1lbW9yeSBvcmRlcmluZyByZXF1aXJlbWVudHMgKHdpdGgNCiAgICA+ICAgICA+ICAgICA+ID4g PiAgICAgICAgID4gcmVnYXJkcyB0byBvdGhlciBsb2FkcyBhbmQvb3Igc3RvcmVzIGJ5IHRoaXMg dGhyZWFkKSBzbw0KICAgID4gICAgID4gcmVsYXhlZA0KICAgID4gICAgID4gICAgID4gPiBtZW1v cnkgb3JkZXIgaXMgc3VmZmljaWVudC4NCiAgICA+ICAgICA+ICAgICA+ID4gPiAgICAgICAgID4g QW5vdGhlciBhc3BlY3Qgb2YgdXNpbmcgX19hdG9taWNfbG9hZF9uKCkgaXMgdGhhdCB0aGUNCiAg ICA+ICAgICA+ICAgICA+ID4gPiBjb21waWxlciBjYW5ub3QgIm9wdGltaXNlIiB0aGlzIGxvYWQg KGUuZy4gY29tYmluZSwgaG9pc3QgZXRjKSwgaXQNCiAgICA+IGhhcw0KICAgID4gICAgID4gdG8g YmUNCiAgICA+ICAgICA+ICAgICA+ID4gZG9uZSBhcw0KICAgID4gICAgID4gICAgID4gPiA+ICAg ICAgICAgPiBzcGVjaWZpZWQgaW4gdGhlIHNvdXJjZSBjb2RlIHdoaWNoIGlzIGFsc28gd2hhdCB3 ZSBuZWVkDQogICAgPiBoZXJlLg0KICAgID4gICAgID4gICAgID4gPiA+DQogICAgPiAgICAgPiAg ICAgPiA+ID4gICAgICAgICBJIHRoaW5rIEplcmluIHBvaW50cyB0aGF0IHJ0ZV9wYXVzZSgpIGFj dHMgaGVyZSBhcyBjb21waWxlcg0KICAgID4gICAgID4gYmFycmllciB0b28sDQogICAgPiAgICAg PiAgICAgPiA+ID4gICAgICAgICBzbyBubyBuZWVkIHRvIHdvcnJ5IHRoYXQgY29tcGlsZXIgd291 bGQgb3B0aW1pemUgb3V0IHRoZQ0KICAgID4gbG9vcC4NCiAgICA+ICAgICA+ICAgICA+ID4gPiAg ICAgW09sYV0gU29ycnkgbWlzc2VkIHRoYXQuIEJ1dCB0aGUgYmFycmllciBiZWhhdmlvdXIgb2YN CiAgICA+IHJ0ZV9wYXVzZSgpDQogICAgPiAgICAgPiAgICAgPiA+ID4gaXMgbm90IHBhcnQgb2Yg QzExLCBpcyBpdCBlc3NlbnRpYWxseSBhIGhhbmQtbWFkZSBmZWF0dXJlIHRvDQogICAgPiBzdXBw b3J0DQogICAgPiAgICAgPiAgICAgPiA+ID4gdGhlIGxlZ2FjeSBtdWx0aXRocmVhZGVkIG1lbW9y eSBtb2RlbCAod2hpY2ggdXNlcyBleHBsaWNpdA0KICAgID4gSFcNCiAgICA+ICAgICA+IGFuZA0K ICAgID4gICAgID4gICAgID4gPiBjb21waWxlciBiYXJyaWVycykuIEknZCBwcmVmZXIgY29kZSB1 c2luZyB0aGUgQzExIG1lbW9yeSBtb2RlbA0KICAgID4gbm90IHRvDQogICAgPiAgICAgPiAgICAg PiA+IGRlcGVuZCBvbiBzdWNoIGxlZ2FjeSBmZWF0dXJlcy4NCiAgICA+ICAgICA+ICAgICA+ID4g Pg0KICAgID4gICAgID4gICAgID4gPiA+DQogICAgPiAgICAgPiAgICAgPiA+ID4NCiAgICA+ICAg ICA+ICAgICA+ID4gPiAgICAgICAgIEtvbnN0YW50aW4NCiAgICA+ICAgICA+ICAgICA+ID4gPg0K ICAgID4gICAgID4gICAgID4gPiA+ICAgICAgICAgPg0KICAgID4gICAgID4gICAgID4gPiA+ICAg ICAgICAgPiBPbmUgcG9pbnQgd29ydGggbWVudGlvbmluZyB0aG91Z2ggaXMgdGhhdCB0aGlzIGNo YW5nZSBpcw0KICAgID4gZm9yDQogICAgPiAgICAgPiAgICAgPiA+ID4gdGhlIHJ0ZV9yaW5nX2Mx MV9tZW0uaCBmaWxlLCBub3QgdGhlIGxlZ2FjeSByaW5nLiBJdCBtYXkgYmUNCiAgICA+IHdvcnRo DQogICAgPiAgICAgPiBwZXJzaXN0aW5nDQogICAgPiAgICAgPiAgICAgPiA+ID4gICAgICAgICA+ IHdpdGggZ2V0dGluZyB0aGUgQzExIGNvZGUgcmlnaHQgd2hlbiBwZW9wbGUgYXJlIGxlc3MNCiAg ICA+IGV4Y2l0ZWQNCiAgICA+ICAgICA+IGFib3V0DQogICAgPiAgICAgPiAgICAgPiA+IHNlbmRp bmcgYSByZWxlYXNlIG91dD8NCiAgICA+ICAgICA+ICAgICA+ID4gPiAgICAgICAgID4NCiAgICA+ ICAgICA+ICAgICA+ID4gPiAgICAgICAgID4gV2UgY2FuIGV4cGxhaW4gdGhhdCBmb3IgQzExIHdl IHdvdWxkIHByZWZlciB0byBkbyBsb2Fkcw0KICAgID4gYW5kDQogICAgPiAgICAgPiBzdG9yZXMN CiAgICA+ICAgICA+ICAgICA+ID4gYXMgcGVyIHRoZSBDMTEgbWVtb3J5IG1vZGVsLiBJbiB0aGUg Y2FzZSBvZiBydGVfcmluZywgdGhlIGNvZGUgaXMNCiAgICA+ICAgICA+ICAgICA+ID4gPiAgICAg ICAgID4gc2VwYXJhdGVkIGNsZWFubHkgaW50byBDMTEgc3BlY2lmaWMgZmlsZXMgYW55d2F5Lg0K ICAgID4gICAgID4gICAgID4gPiA+ICAgICAgICAgPg0KICAgID4gICAgID4gICAgID4gPiA+ICAg ICAgICAgPiBJIHRoaW5rIHJlYWRpbmcgaHQtPnRhaWwgdXNpbmcgX19hdG9taWNfbG9hZF9uKCkg aXMgdGhlDQogICAgPiBtb3N0DQogICAgPiAgICAgPiAgICAgPiA+IGFwcHJvcHJpYXRlIHdheS4g V2Ugc2hvdyB0aGF0IGh0LT50YWlsIGlzIHVzZWQgZm9yDQogICAgPiBzeW5jaHJvbml6YXRpb24s DQogICAgPiAgICAgPiB3ZQ0KICAgID4gICAgID4gICAgID4gPiA+ICAgICAgICAgPiBhY2tub3ds ZWRnZSB0aGF0IGh0LT50YWlsIG1heSBiZSB3cml0dGVuIGJ5IG90aGVyDQogICAgPiB0aHJlYWRz DQogICAgPiAgICAgPiAgICAgPiA+ID4gd2l0aG91dCBhbnkgb3RoZXIga2luZCBvZiBzeW5jaHJv bml6YXRpb24gKGUuZy4gbm8gbG9jayBpbnZvbHZlZCkNCiAgICA+ICAgICA+IGFuZCB3ZQ0KICAg ID4gICAgID4gICAgID4gPiByZXF1aXJlDQogICAgPiAgICAgPiAgICAgPiA+ID4gICAgICAgICA+ IGFuIGF0b21pYyBsb2FkIChhbnkgd3JpdGUgdG8gaHQtPnRhaWwgbXVzdCBhbHNvIGJlIGF0b21p YykuDQogICAgPiAgICAgPiAgICAgPiA+ID4gICAgICAgICA+DQogICAgPiAgICAgPiAgICAgPiA+ ID4gICAgICAgICA+IFVzaW5nIHZvbGF0aWxlIGFuZCBleHBsaWNpdCBjb21waWxlciAob3IgcHJv Y2Vzc29yKQ0KICAgID4gbWVtb3J5DQogICAgPiAgICAgPiBiYXJyaWVycw0KICAgID4gICAgID4g ICAgID4gPiAoZmVuY2VzKSBpcyB0aGUgbGVnYWN5IHByZS1DMTEgd2F5IG9mIGFjY29tcGxpc2hp bmcgdGhlc2UgdGhpbmdzLg0KICAgID4gICAgID4gICAgID4gPiA+IFRoZXJlJ3MNCiAgICA+ICAg ICA+ICAgICA+ID4gPiAgICAgICAgID4gYSByZWFzb24gd2h5IEMxMS9DKysxMSBtb3ZlZCBhd2F5 IGZyb20gdGhlIG9sZCB3YXlzLg0KICAgID4gICAgID4gICAgID4gPiA+ICAgICAgICAgPiA+ID4N CiAgICA+ICAgICA+ICAgICA+ID4gPiAgICAgICAgID4gPiA+ICAgICAgICAgX19hdG9taWNfc3Rv cmVfbigmaHQtPnRhaWwsIG5ld192YWwsDQogICAgPiAgICAgPiBfX0FUT01JQ19SRUxFQVNFKTsN CiAgICA+ICAgICA+ICAgICA+ID4gPiAgICAgICAgID4gPiA+IC0tDQogICAgPiAgICAgPiAgICAg PiA+ID4gICAgICAgICA+ID4gPiAyLjcuNA0KICAgID4gICAgID4gICAgID4gPiA+ICAgICAgICAg PiA+ID4NCiAgICA+ICAgICA+ICAgICA+ID4gPg0KICAgID4gICAgID4gICAgID4gPiA+DQogICAg PiAgICAgPiAgICAgPiA+ID4NCiAgICA+ICAgICA+ICAgICA+DQogICAgPiAgICAgPg0KICAgID4g DQogICAgPiANCiAgICANCiAgICANCg0K