From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Sagalovitch, Serguei" Subject: Re: [RFC] Mechanism for high priority scheduling in amdgpu Date: Fri, 23 Dec 2016 17:10:26 +0000 Message-ID: References: <544E607D03B20249AA404517E498FC4699EBD3@exchange01.valvesoftware.com> <544E607D03B20249AA404517E498FC4699EC41@exchange01.valvesoftware.com> <544E607D03B20249AA404517E498FC4699EC70@exchange01.valvesoftware.com> <58575362.2030100@amd.com> <361f177c-bf55-1525-4f35-86708e4f8d9f@valvesoftware.com> <58576C15.1070909@amd.com> <2bf5afce-d5b8-4eaf-0fcd-a7ebfe85f92e@gmail.com> <5857751C.5060409@amd.com> <5068f779-50ad-5e17-6d7e-8493e8fdd78a@vodafone.de> <76892a0d-677b-f0cb-d4e7-74d29b4a0aa7@amd.com> <8ab5bb4d-f331-d991-f208-ec7c0a25662a@gmail.com> <2e8051cb-09b1-c5cb-cb5a-b7ca30f65e89@valvesoftware.com> <1c3ea5aa-36ee-5031-5f32-d860e9e0bf7c@amd.com> , , Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: Content-Language: en-CA List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: "Bridgman, John" , Andres Rodriguez Cc: "Zhou, David(ChunMing)" , "Mao, David" , Andres Rodriguez , "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" , "Pierre-Loup A. Griffais" , "Koenig, Christian" , "Huan, Alvin" , "Zhang, Hawking" Sm9obiwNCg0KDQpPbmUgY29tbWVudDogwqBXaGVuIEFuZHJlcyBpcyB0YWxraW5nIGFib3V0IGNv bXB1dGUgaGUgaXMgdGFsa2luZyBhYm91dCBWdWxrYW4gY29tcHV0ZSBub3QgT3BlbkNMIG9uZSBh bmQgaXQgbWVhbnMgdGhhdCBpdCBpcyBub3QgSFNBIHBhdGguDQoNCg0KU2luY2VyZWx5IHlvdXJz LA0KU2VyZ3VlaSBTYWdhbG92aXRjaA0KDQoNCg0KRnJvbTogQnJpZGdtYW4sIEpvaG4NClNlbnQ6 IERlY2VtYmVyIDIzLCAyMDE2IDExOjQ5IEFNDQpUbzogQW5kcmVzIFJvZHJpZ3Vleg0KQ2M6IEtv ZW5pZywgQ2hyaXN0aWFuOyBaaG91LCBEYXZpZChDaHVuTWluZyk7IEh1YW4sIEFsdmluOyBNYW8s IERhdmlkOyBTYWdhbG92aXRjaCwgU2VyZ3VlaTsgYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmc7IEFuZHJlcyBSb2RyaWd1ZXo7IFBpZXJyZS1Mb3VwIEEuIEdyaWZmYWlzOyBaaGFuZywgSGF3 a2luZw0KU3ViamVjdDogUmU6IFtSRkNdIE1lY2hhbmlzbSBmb3IgaGlnaCBwcmlvcml0eSBzY2hl ZHVsaW5nIGluIGFtZGdwdQ0KwqAgDQoNCkV4Y2VsbGVudCwgdGhhbmtzLiBBZ3JlZSB0aGF0IGl0 IGlzIG5vdCBhIGNvbXBsZXRlIHNvbHV0aW9uLCBqdXN0IGEgZ29vZCBzdGFydC7CoA0KDQoNCkkg ZG8gdGhpbmsgd2Ugd2lsbCBuZWVkIHRvIGdldCB0byBzZXR0aW5nIHByaW9yaXRpZXMgYXQgSFcg bGV2ZWwgZmFpcmx5IHF1aWNrbHkgKHdlIHdhbnQgaXQgZm9yIFJPQ00gYXMgd2VsbCBhcyBmb3Ig VlIpIGJ1dCB3ZSdsbCBuZWVkIHRvIGVsaW1pbmF0ZSB0aGUgY3VycmVudCByZXF1aXJlbWVudCBm b3IgcmFuZG9taXphdGlvbiBhdCBTUSBhcyBwYXJ0IG9mIGEgSFcgYXBwcm9hY2ggYW5kIEkgZG9u J3QgdGhpbmsgd2Uga25vdyBob3cgbG9uZyAgdGhhdCB3aWxsIHRha2UgYXQgdGhlIG1vbWVudC7C oA0KDQoNCklJUkMgcmFuZG9taXphdGlvbiB3YXMgcmVxdWlyZWQgdG8gYXZvaWQgZGVhZGxvY2sg cHJvYmxlbXMgd2l0aCBjZXJ0YWluIE9wZW5DTCBwcm9ncmFtcyAtIHdoYXQgSSBkb24ndCBrbm93 IGlzIHdoZXRoZXIgdGhlIHByb2JsZW0gaXMgaW5oZXJlbnQgdG8gdGhlIE9wZW5DTCBBUEkgc3Bl YyBvciBqdXN0IGEgZnVuY3Rpb24gb2YgaG93IHNwZWNpZmljIE9wZW5DTCBwcm9ncmFtcyB3ZXJl IHdyaXR0ZW4uIEknbGwgdHJ5IHRvIGRpZyB1cCBzb21lICBoaXN0b3J5IGZvciB0aGF0IGFuZCBh c2sgYXJvdW5kIGludGVybmFsbHkgYXMgd2VsbC4gDQoNCg0KDQoNCkZyb206IEFuZHJlcyBSb2Ry aWd1ZXogPGFuZHJlc3g3QGdtYWlsLmNvbT4NClNlbnQ6IERlY2VtYmVyIDIzLCAyMDE2IDExOjMw IEFNDQpUbzogQnJpZGdtYW4sIEpvaG4NCkNjOiBLb2VuaWcsIENocmlzdGlhbjsgWmhvdSwgRGF2 aWQoQ2h1bk1pbmcpOyBIdWFuLCBBbHZpbjsgTWFvLCBEYXZpZDsgU2FnYWxvdml0Y2gsIFNlcmd1 ZWk7IGFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnOyBBbmRyZXMgUm9kcmlndWV6OyBQaWVy cmUtTG91cCBBLiBHcmlmZmFpczsgWmhhbmcsIEhhd2tpbmcNClN1YmplY3Q6IFJlOiBbUkZDXSBN ZWNoYW5pc20gZm9yIGhpZ2ggcHJpb3JpdHkgc2NoZWR1bGluZyBpbiBhbWRncHUNCsKgIA0KDQoN Cg0KSSdtIGFjdHVhbGx5IHRlc3RpbmcgdGhhdCBvdXQgdGhhdCB0b2RheS4NCg0KRXhhbXBsZSBw cm90b3R5cGUgcGF0Y2g6DQpodHRwczovL2dpdGh1Yi5jb20vbG9zdGdvYXQvbGludXgvY29tbWl0 L2M5ZDg4ZDQwOWQ4NjU1ZDYzYWE4Mzg2ZWRjNjY2ODdhMmJhNjRhMTINCg0KDQoNCmRybS9hbWRn cHU6IGFkZCBmbGFnIGZvciBoaWdoIHByaW9yaXR5IGNvbnRleHRzIMK3IGxvc3Rnb2F0L2xpbnV4 QGM5ZDg4ZDQNCmdpdGh1Yi5jb20NCkFkZCBhIG5ldyBjb250ZXh0IGNyZWF0aW9uIGZsYWcsIEFN REdQVV9DVFhfRkxBR19ISUdIUFJJT1JJVFkuIFRoaXMgZmxhZyByZXN1bHRzIGluIHRoZSBhbGxv Y2F0ZWQgY29udGV4dCByZWNlaXZpbmcgYSBoaWdoZXIgc2NoZWR1bGVyIHByaW9yaXR5IHRoYXQg b3RoZXIgY29udGV4dHMgc3lzdGVtLXdpZGUuDQoNCg0KDQpNeSBnb2FsIGlzIHRvIGZpcnN0IGlt cGxlbWVudCB0aGlzIGFwcHJvYWNoLCB0aGVuIHNsb3dseSB3b3JrIG15IHdheSB0b3dhcmRzIHRo ZSBIVyBsZXZlbCBvcHRpbWl6YXRpb25zLg0KDQoNClRoZSBwcm9ibGVtIEkgZXhwZWN0IHRvIHNl ZSB3aXRoIHRoaXMgYXBwcm9hY2ggaXMgdGhhdCB0aGVyZSB3aWxsIHN0aWxsIGJlIHVucHJlZGlj dGFibHkgbG9uZyBsYXRlbmNpZXMgZGVwZW5kaW5nIG9uIHdoYXQgaGFzIGJlZW4gY29tbWl0dGVk IHRvIHRoZSBIVyByaW5ncy4NCg0KDQpCdXQgaXQgaXMgZGVmaW5pdGVseSBhIGdvb2Qgc3RhcnQu DQoNCg0KIFJlZ2FyZHMsDQogQW5kcmVzDQoNCg0KDQpPbiBGcmksIERlYyAyMywgMjAxNiBhdCAx MToyMCBBTSwgQnJpZGdtYW4sIEpvaG4gIDxKb2huLkJyaWRnbWFuQGFtZC5jb20+IHdyb3RlOg0K DQoNCk9uZSBxdWVzdGlvbiBJIGp1c3QgcmVtZW1iZXJlZCAtIHRoZSBhbWRncHUgZHJpdmVyIGlu Y2x1ZGVzIHNvbWUgc2NoZWR1bGVyIGxvZ2ljIHdoaWNoIG1haW50YWlucyBwZXItcHJvY2VzcyBx dWV1ZXMgYW5kIHRoZXJlZm9yZSBhdm9pZHMgbG9hZGluZyB1cCB0aGUgcHJpbWFyeSByaW5nIHdp dGggYSB0b24gb2Ygd29yay4NCg0KDQoNCkhhcyB0aGVyZSBiZWVuIGFueSBleHBlcmltZW50YXRp b24gd2l0aCBpbmplY3RpbmcgcHJpb3JpdGllcyBhdCB0aGF0IGxldmVsIHJhdGhlciB0aGFuIGp1 bXBpbmcgc3RyYWlnaHQgdG8gSFctbGV2ZWwgY2hhbmdlcyA/DQoNCg0KDQpGcm9tOiBhbWQtZ2Z4 IDxhbWQtZ2Z4LWJvdW5jZXNAbGlzdHMuZnJlZWRlc2t0b3Aub3JnPiAgb24gYmVoYWxmIG9mIEFu ZHJlcyBSb2RyaWd1ZXogPGFuZHJlc3g3QGdtYWlsLmNvbT4NClNlbnQ6IERlY2VtYmVyIDIzLCAy MDE2IDExOjEzIEFNDQpUbzogS29lbmlnLCBDaHJpc3RpYW4NCkNjOiBaaG91LCBEYXZpZChDaHVu TWluZyk7IEh1YW4sIEFsdmluOyBNYW8sIERhdmlkOyBTYWdhbG92aXRjaCwgU2VyZ3VlaTsgIGFt ZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnOyBBbmRyZXMgUm9kcmlndWV6OyBQaWVycmUtTG91 cCBBLiBHcmlmZmFpczsgWmhhbmcsIEhhd2tpbmcNCg0KDQpTdWJqZWN0OiBSZTogW1JGQ10gTWVj aGFuaXNtIGZvciBoaWdoIHByaW9yaXR5IHNjaGVkdWxpbmcgaW4gYW1kZ3B1ICANCsKgIA0KDQoN Cg0KDQpIZXkgQ2hyaXN0aWFuLA0KDQogICBCdXQgeWVzLCBpbiBnZW5lcmFsIHlvdSBkb24ndCB3 YW50IGFub3RoZXIgY29tcG9zaXRvciBpbiB0aGUgd2F5LCBzbyB3ZSdsbCBiZSBhY3F1aXJpbmcg dGhlIEhNRCBkaXNwbGF5IGRpcmVjdGx5LCBzZXBhcmF0ZSBmcm9tIGFueSBkZXNrdG9wIG9yIGRp c3BsYXkgc2VydmVyLiANCiAgIEFzc3VtaW5nIHRoYXQgdGhlIHRoZSBITUQgaXMgYXR0YWNoZWQg dG8gdGhlIHJlbmRlcmluZyBkZXZpY2UgaW4gc29tZSB3YXkgeW91IGhhdmUgdGhlIFggc2VydmVy IGFuZCB0aGUgQ29tcG9zaXRvciB3aGljaCBib3RoIHRyeSB0byBiZSBEUk0gbWFzdGVyIGF0IHRo ZSBzYW1lIHRpbWUuDQoNClBsZWFzZSBjb3JyZWN0IG1lIGlmIHRoYXQgd2FzIGZpeGVkIGluIHRo ZSBtZWFudGltZSwgYnV0IHRoYXQgc291bmRzIGxpa2UgaXQgd2lsbCBzaW1wbHkgbm90IHdvcmsu IE9yIGlzIHRoaXMgd2hhdCBBbmRyZXMgbWVudGlvbiBiZWxvdyBEYXZlIGlzIHdvcmtpbmcgb24g Py4NCg0KIFlvdSBhcmUgY29ycmVjdCBvbiBib3RoIHN0YXRlbWVudHMuIFdlIGNhbid0IGhhdmUg dHdvIERSTV9NQVNURVJzLCBzbyB0aGUgY3VycmVudCBEUk0rWCBkb2VzIG5vdCBzdXBwb3J0IHRo aXMgdXNlIGNhc2UuIEFuZCB0aGlzIHdoYXQgRGF2ZSBhbmQgUGllcnJlLUxvdXAgYXJlIGN1cnJl bnRseSB3b3JraW5nIG9uLg0KDQogQWRkaXRpb25hbCB0byB0aGF0IGEgY29tcG9zaXRvciBpbiBj b21iaW5hdGlvbiB3aXRoIFggaXMgYSBiaXQgY291bnRlciBwcm9kdWN0aXZlIHdoZW4geW91IHdh bnQgdG8ga2VlcCB0aGUgbGF0ZW5jeSBsb3cuDQoNCg0KDQpPbmUgdGhpbmcgSSdkIGxpa2UgdG8g Y29ycmVjdCBpcyB0aGF0IG91ciBtYWluIGdvYWwgaXMgdG8gZ2V0IGxhdGVuY3kgX3ByZWRpY3Rh YmxlXywgc2Vjb25kYXJ5IGdvYWwgaXMgdG8gbWFrZSBpdCBsb3cuDQoNCg0KVGhlIGhpZ2ggcHJp b3JpdHkgcXVldWUgZmVhdHVyZSBhZGRyZXNzZXMgb3VyIG1haW4gc291cmNlIG9mIHVucHJlZGlj dGFiaWxpdHk6IHRoZSBzY2hlZHVsaW5nIGxhdGVuY3kgd2hlbiB0aGUgaGFyZHdhcmUgaXMgYWxy ZWFkeSBmdWxsIG9mIHdvcmsgZnJvbSB0aGUgZ2FtZSBlbmdpbmUuDQoNCg0KVGhlIERpcmVjdE1v ZGUgZmVhdHVyZSBhZGRyZXNzZXMgb25lIG9mIHRoZSBsYXRlbmN5IHNvdXJjZXM6IG11bHRpcGxl ICh1bm5lY2Vzc2FyeSkgY29udGV4dCBzd2l0Y2hlcyB0byBzdWJtaXQgYSBzdXJmYWNlIHRvIHRo ZSBEUk0gZHJpdmVyLg0KDQogVGFyZ2V0aW5nIHNvbWV0aGluZyBsaWtlIFdheWxhbmQgYW5kIHdo ZW4geW91IG5lZWQgWCBjb21wYXRpYmlsaXR5IFhXYXlsYW5kIHNvdW5kcyBsaWtlIHRoZSBtdWNo IGJldHRlciBpZGVhLg0KDQoNCg0KV2UgYXJlIHByZXR0eSBlbnRodXNpYXN0aWMgYWJvdXQgV2F5 bGFuZCAoYW5kIHJlYWxseSBnbGFkIHRvIHNlZSBGZWRvcmEgMjUgdXNlIFdheWxhbmQgYnkgZGVm YXVsdCkuIE9uY2Ugd2UgaGF2ZSBldmVyeXRoaW5nIHdvcmtpbmcgbmljZWx5IHVuZGVyIFggKHdo ZXJlIG1vc3Qgb2YgdGhlIHVzZXJzIGFyZSBjdXJyZW50bHkpLCBJJ20gc3VyZSBQaWVycmUtTG91 cCB3aWxsIGJlIHB1c2hpbmcgdXMgdG8gZ2V0IGV2ZXJ5dGhpbmcgb3B0aW1pemVkICB1bmRlciBX YXlsYW5kIGFzIHdlbGwgKHdoaWNoIHNob3VsZCBiZSBhIGxvdCBzaW1wbGVyISkuDQoNCg0KRXZl ciBzaW5jZSB3b3JraW5nIHdpdGggU3VyZmFjZUZsaW5nZXIgb24gQW5kcm9pZCB3aXRoIGV4cGxp Y2l0IGZlbmNpbmcgSSd2ZSBiZWVuIHdhaXRpbmcgZm9yIHRoZSBkYXkgSSBjYW4gZmluYWxseSBk aXRjaCBYIGFsdG9nZXRoZXIgOikNCg0KDQpSZWdhcmRzLA0KDQpBbmRyZXMgDQoNCiANCg0KDQpP biBGcmksIERlYyAyMywgMjAxNiBhdCA1OjU0IEFNLCBDaHJpc3RpYW4gS8O2bmlnICA8Y2hyaXN0 aWFuLmtvZW5pZ0BhbWQuY29tPiB3cm90ZToNCiAgIEJ1dCB5ZXMsIGluIGdlbmVyYWwgeW91IGRv bid0IHdhbnQgYW5vdGhlciBjb21wb3NpdG9yIGluIHRoZSB3YXksIHNvIHdlJ2xsIGJlIGFjcXVp cmluZyB0aGUgSE1EIGRpc3BsYXkgZGlyZWN0bHksIHNlcGFyYXRlIGZyb20gYW55IGRlc2t0b3Ag b3IgZGlzcGxheSBzZXJ2ZXIuDQogQXNzdW1pbmcgdGhhdCB0aGUgdGhlIEhNRCBpcyBhdHRhY2hl ZCB0byB0aGUgcmVuZGVyaW5nIGRldmljZSBpbiBzb21lIHdheSB5b3UgaGF2ZSB0aGUgWCBzZXJ2 ZXIgYW5kIHRoZSBDb21wb3NpdG9yIHdoaWNoIGJvdGggdHJ5IHRvIGJlIERSTSBtYXN0ZXIgYXQg dGhlIHNhbWUgdGltZS4NCg0KUGxlYXNlIGNvcnJlY3QgbWUgaWYgdGhhdCB3YXMgZml4ZWQgaW4g dGhlIG1lYW50aW1lLCBidXQgdGhhdCBzb3VuZHMgbGlrZSBpdCB3aWxsIHNpbXBseSBub3Qgd29y ay4gT3IgaXMgdGhpcyB3aGF0IEFuZHJlcyBtZW50aW9uIGJlbG93IERhdmUgaXMgd29ya2luZyBv biA/Lg0KDQpBZGRpdGlvbmFsIHRvIHRoYXQgYSBjb21wb3NpdG9yIGluIGNvbWJpbmF0aW9uIHdp dGggWCBpcyBhIGJpdCBjb3VudGVyIHByb2R1Y3RpdmUgd2hlbiB5b3Ugd2FudCB0byBrZWVwIHRo ZSBsYXRlbmN5IGxvdy4NCg0KRS5nLiB0aGUgIm5vcm1hbCIgZmxvdyBvZiBhIEdMIG9yIFZ1bGth biBzdXJmYWNlIGZpbGxlZCB3aXRoIHJlbmRlcmVkIGRhdGEgdG8gYmUgZGlzcGxheWVkIGlzIGZy b20gdGhlIEFwcGxpY2F0aW9uIC0+IFggc2VydmVyIC0+IGNvbXBvc2l0b3IgLT4gWCBzZXJ2ZXIu DQoNClRoZSBleHRyYSBzdGVwIGJldHdlZW4gWCBzZXJ2ZXIgYW5kIGNvbXBvc2l0b3IganVzdCBt ZWFucyBleHRyYSBsYXRlbmN5IGFuZCBmb3IgdGhpcyB1c2UgY2FzZSB5b3UgcHJvYmFibHkgZG9u J3Qgd2FudCB0aGF0Lg0KDQpUYXJnZXRpbmcgc29tZXRoaW5nIGxpa2UgV2F5bGFuZCBhbmQgd2hl biB5b3UgbmVlZCBYIGNvbXBhdGliaWxpdHkgWFdheWxhbmQgc291bmRzIGxpa2UgdGhlIG11Y2gg YmV0dGVyIGlkZWEuDQoNClJlZ2FyZHMsDQpDaHJpc3RpYW4uDQoNCg0KDQpBbSAyMi4xMi4yMDE2 IHVtIDIwOjU0IHNjaHJpZWIgUGllcnJlLUxvdXAgQS4gR3JpZmZhaXM6DQogRGlzcGxheSBjb25j ZXJucyBhcmUgYSBzZXBhcmF0ZSBpc3N1ZSwgYW5kIGFzIEFuZHJlcyBzYWlkIHdlIGhhdmUgb3Ro ZXIgcGxhbnMgdG8gYWRkcmVzcy4gQnV0IHllcywgaW4gZ2VuZXJhbCB5b3UgZG9uJ3Qgd2FudCBh bm90aGVyIGNvbXBvc2l0b3IgaW4gdGhlIHdheSwgc28gd2UnbGwgYmUgYWNxdWlyaW5nIHRoZSBI TUQgZGlzcGxheSBkaXJlY3RseSwgc2VwYXJhdGUgZnJvbSBhbnkgZGVza3RvcCBvciBkaXNwbGF5 IHNlcnZlci4gU2FtZSB3aXRoICBzZWN1cml0eSwgd2UgY2FuIGhhdmUgYSBzZXBhcmF0ZSBjb252 ZXJzYXRpb24gYWJvdXQgdGhhdCB3aGVuIHRoZSB0aW1lIGNvbWVzLg0KDQpPbiAxMi8yMi8yMDE2 IDA4OjQxIEFNLCBTZXJndWVpIFNhZ2Fsb3ZpdGNoIHdyb3RlOg0KIEFuZHJlcywNCg0KRGlkIHlv dSBtZWFzdXJlwqAgbGF0ZW5jeSwgZXRjLiBpbXBhY3Qgb2YgX19hbnlfXyBjb21wb3NpdG9yPw0K DQpNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgVlIgaGFzIHByZXR0eSBzdHJpY3QgcmVxdWlyZW1l bnRzIHJlbGF0ZWQgdG8gUW9TLg0KDQpTaW5jZXJlbHkgeW91cnMsDQpTZXJndWVpIFNhZ2Fsb3Zp dGNoDQoNCg0KT24gMjAxNi0xMi0yMiAxMTozNSBBTSwgQW5kcmVzIFJvZHJpZ3VleiB3cm90ZToN CiBIZXkgQ2hyaXN0aWFuLA0KDQpXZSBhcmUgY3VycmVudGx5IGludGVyZXN0ZWQgaW4gWCwgYnV0 IHdpdGggc29tZSBkaXN0cm9zIHN3aXRjaGluZyB0bw0Kb3RoZXIgY29tcG9zaXRvcnMgYnkgZGVm YXVsdCwgd2UgYWxzbyBuZWVkIHRvIGNvbnNpZGVyIHRob3NlLg0KDQpXZSBhZ3JlZSwgcnVubmlu ZyB0aGUgZnVsbCB2cmNvbXBvc2l0b3IgaW4gcm9vdCBpc24ndCBzb21ldGhpbmcgdGhhdA0Kd2Ug d2FudCB0byBkby4gVG9vIG1hbnkgc2VjdXJpdHkgY29uY2VybnMuIEhhdmluZyBhIHNtYWxsIHJv b3QgaGVscGVyDQp0aGF0IGRvZXMgdGhlIHByaXZpbGVnZSBlc2NhbGF0aW9uIGZvciB1cyBpcyB0 aGUgaW5pdGlhbCBpZGVhLg0KDQpGb3IgYSBsb25nIHRlcm0gYXBwcm9hY2gsIFBpZXJyZS1Mb3Vw IGFuZCBEYXZlIGFyZSB3b3JraW5nIG9uIGRlYWxpbmcNCndpdGggdGhlICJ0d28gY29tcG9zaXRv cnMiIHNjZW5hcmlvIGEgbGl0dGxlIGJldHRlciBpbiBEUk0rWC4NCkZ1bGxzY3JlZW4gaXNuJ3Qg cmVhbGx5IGEgc3VmZmljaWVudCBhcHByb2FjaCwgc2luY2Ugd2UgZG9uJ3Qgd2FudCB0aGUNCkhN RCB0byBiZSB1c2VkIGFzIHBhcnQgb2YgdGhlIERlc2t0b3AgZW52aXJvbm1lbnQgd2hlbiBhIFZS IGFwcCBpcyBub3QNCmluIHVzZSAodGhpcyBpcyBleHRyZW1lbHkgYW5ub3lpbmcpLg0KDQpXaGVu IHRoZSBhYm92ZSBpcyBzZXR0bGVkLCB3ZSBzaG91bGQgaGF2ZSBhbiBhdXRoIG1lY2hhbmlzbSBi ZXNpZGVzDQpEUk1fTUFTVEVSIG9yIERSTV9BVVRIIHRoYXQgYWxsb3dzIHRoZSB2cmNvbXBvc2l0 b3IgdG8gdGFrZSBvdmVyIHRoZQ0KSE1EIHBlcm1hbmVudGx5IGF3YXkgZnJvbSBYLiBSZS11c2lu ZyB0aGF0IGF1dGggbWV0aG9kIHRvIGdhdGUgdGhpcw0KSU9DVEwgaXMgcHJvYmFibHkgZ29pbmcg dG8gYmUgdGhlIGZpbmFsIHNvbHV0aW9uLg0KDQpJIHByb3Bvc2UgdG8gc3RhcnQgd2l0aCBST09U X09OTFkgc2luY2UgaXQgc2hvdWxkIGFsbG93IHVzIHRvIHJlc3BlY3QNCmtlcm5lbCBJT0NUTCBj b21wYXRpYmlsaXR5IGd1aWRlbGluZXMgd2l0aCB0aGUgbW9zdCBmbGV4aWJpbGl0eS4gR29pbmcN CmZyb20gYSByZXN0cmljdGl2ZSB0byBhIG1vcmUgZmxleGlibGUgcGVybWlzc2lvbiBtb2RlbCB3 b3VsZCBiZQ0KaW5jbHVzaXZlLCBidXQgZ29pbmcgZnJvbSBhIGdlbmVyYWwgdG8gYSByZXN0cmlj dGl2ZSBtb2RlbCBtYXkgZXhjbHVkZQ0Kc29tZSBhcHBzIHRoYXQgdXNlZCB0byB3b3JrLg0KDQpS ZWdhcmRzLA0KQW5kcmVzDQoNCk9uIDEyLzIyLzIwMTYgNjo0MiBBTSwgQ2hyaXN0aWFuIEvDtm5p ZyB3cm90ZToNCiBIaSBBbmRyZXMsDQoNCndlbGwgdXNpbmcgcm9vdCBtaWdodCBjYXVzZSBzdGFi aWxpdHkgYW5kIHNlY3VyaXR5IHByb2JsZW1zIGFzIHdlbGwuDQpXZSB3b3JrZWQgcXVpdGUgaGFy ZCB0byBhdm9pZCBleGFjdGx5IHRoaXMgZm9yIFguDQoNCldlIGNvdWxkIG1ha2UgdGhpcyBmZWF0 dXJlIGRlcGVuZCBvbiB0aGUgY29tcG9zaXRvciBiZWluZyBEUk0gbWFzdGVyLA0KYnV0IGZvciBl eGFtcGxlIHdpdGggWCB0aGUgWCBzZXJ2ZXIgaXMgbWFzdGVyIChhbmQgZS5nLiBjYW4gY2hhbmdl DQpyZXNvbHV0aW9ucyBldGMuLikgYW5kIG5vdCB0aGUgY29tcG9zaXRvci4NCg0KU28gYW5vdGhl ciBxdWVzdGlvbiBpcyBhbHNvIHdoYXQgd2luZG93aW5nIHN5c3RlbSAoaWYgYW55KSBhcmUgeW91 DQpwbGFubmluZyB0byB1c2U/IFgsIFdheWxhbmQsIEZsaW5nZXIgb3Igc29tZXRoaW5nIGNvbXBs ZXRlbHkgZGlmZmVyZW50ID8NCg0KUmVnYXJkcywNCkNocmlzdGlhbi4NCg0KQW0gMjAuMTIuMjAx NiB1bSAxNjo1MSBzY2hyaWViIEFuZHJlcyBSb2RyaWd1ZXo6DQogSGkgQ2hyaXN0aWFuLA0KDQpU aGF0IGlzIGRlZmluaXRlbHkgYSBjb25jZXJuLiBXaGF0IHdlIGFyZSBjdXJyZW50bHkgdGhpbmtp bmcgaXMgdG8NCm1ha2UgdGhlIGhpZ2ggcHJpb3JpdHkgcXVldWVzIGFjY2Vzc2libGUgdG8gcm9v dCBvbmx5Lg0KDQpUaGVyZWZvcmUgaXMgYSBub24tcm9vdCB1c2VyIGF0dGVtcHRzIHRvIHNldCB0 aGUgaGlnaCBwcmlvcml0eSBmbGFnDQpvbiBjb250ZXh0IGFsbG9jYXRpb24sIHdlIHdvdWxkIGZh aWwgdGhlIGNhbGwgYW5kIHJldHVybiBFTk9QRVJNLg0KDQpSZWdhcmRzLA0KQW5kcmVzDQoNCg0K T24gMTIvMjAvMjAxNiA3OjU2IEFNLCBDaHJpc3RpYW4gS8O2bmlnIHdyb3RlOg0KICBCVFc6IElm IHRoZXJlIGlzwqAgbm9uLVZSIGFwcGxpY2F0aW9uIHdoaWNoIHdpbGwgdXNlIGhpZ2gtcHJpb3Jp dHkNCmgvdyBxdWV1ZSB0aGVuIFZSIGFwcGxpY2F0aW9uIHdpbGwgc3VmZmVyLsKgIEFueSBpZGVh cyBob3cNCnRvIHNvbHZlIGl0Pw0KIFllYWgsIHRoYXQgcHJvYmxlbSBjYW1lIHRvIG15IG1pbmQg YXMgd2VsbC4NCg0KQmFzaWNhbGx5IHdlIG5lZWQgdG8gcmVzdHJpY3QgdGhvc2UgaGlnaCBwcmlv cml0eSBzdWJtaXNzaW9ucyB0bw0KdGhlIFZSIGNvbXBvc2l0b3Igb3Igb3RoZXJ3aXNlIGFueSBt YWxmdW5jdGlvbmluZyBhcHBsaWNhdGlvbiBjb3VsZA0KdXNlIGl0Lg0KDQpKdXN0IHRoaW5rIGFi b3V0IHNvbWUgV2ViR0wgc3VkZGVubHkgdGFraW5nIGFsbCBvdXIgcmVuZGVyaW5nIGF3YXkNCmFu ZCB3ZSB3b24ndCBnZXQgYW55dGhpbmcgZHJhd24gYW55IG1vcmUuDQoNCkFsZXggb3IgTWljaGVs IGFueSBpZGVhcyBvbiB0aGF0Pw0KDQpSZWdhcmRzLA0KQ2hyaXN0aWFuLg0KDQpBbSAxOS4xMi4y MDE2IHVtIDE1OjQ4IHNjaHJpZWIgU2VyZ3VlaSBTYWdhbG92aXRjaDoNCiA+IElmIGNvbXB1dGUg cXVldWUgaXMgb2NjdXBpZWQgb25seSBieSB5b3UsIHRoZSBlZmZpY2llbmN5DQo+IGlzIGVxdWFs IHdpdGggc2V0dGluZyBqb2IgcXVldWUgdG8gaGlnaCBwcmlvcml0eSBJIHRoaW5rLg0KVGhlIG9u bHkgcmlzayBpcyB0aGUgc2l0dWF0aW9uIHdoZW4gZ3JhcGhpY3Mgd2lsbCB0YWtlIGFsbA0KbmVl ZGVkIENVcy4gQnV0IGluIGFueSBjYXNlIGl0IHNob3VsZCBiZSB2ZXJ5IGdvb2QgdGVzdC4NCg0K QW5kcmVzL1BpZXJyZS1Mb3VwLA0KDQpEaWQgeW91IHRyeSB0byBkbyBpdCBvciBpdCBpcyBhIGxv dCBvZiB3b3JrIGZvciB5b3U/DQoNCg0KQlRXOiBJZiB0aGVyZSBpc8KgIG5vbi1WUiBhcHBsaWNh dGlvbiB3aGljaCB3aWxsIHVzZSBoaWdoLXByaW9yaXR5DQpoL3cgcXVldWUgdGhlbiBWUiBhcHBs aWNhdGlvbiB3aWxsIHN1ZmZlci7CoCBBbnkgaWRlYXMgaG93DQp0byBzb2x2ZSBpdD8NCg0KU2lu Y2VyZWx5IHlvdXJzLA0KU2VyZ3VlaSBTYWdhbG92aXRjaA0KDQpPbiAyMDE2LTEyLTE5IDEyOjUw IEFNLCB6aG91Y20xIHdyb3RlOg0KIERvIHlvdSBlbmNvdW50ZXIgdGhlIHByaW9yaXR5IGlzc3Vl IGZvciBjb21wdXRlIHF1ZXVlIHdpdGgNCmN1cnJlbnQgZHJpdmVyPw0KDQpJZiBjb21wdXRlIHF1 ZXVlIGlzIG9jY3VwaWVkIG9ubHkgYnkgeW91LCB0aGUgZWZmaWNpZW5jeSBpcyBlcXVhbA0Kd2l0 aCBzZXR0aW5nIGpvYiBxdWV1ZSB0byBoaWdoIHByaW9yaXR5IEkgdGhpbmsuDQoNClJlZ2FyZHMs DQpEYXZpZCBaaG91DQoNCk9uIDIwMTblubQxMuaciDE55pelIDEzOjI5LCBBbmRyZXMgUm9kcmln dWV6IHdyb3RlOg0KIFllcywgdnVsa2FuIGlzIGF2YWlsYWJsZSBvbiBhbGwtb3BlbiB0aHJvdWdo IHRoZSBtZXNhIHJhZHYgVU1ELg0KDQpJJ20gbm90IHN1cmUgaWYgSSdtIGFza2luZyBmb3IgdG9v IG11Y2gsIGJ1dCBpZiB3ZSBjYW4NCmNvb3JkaW5hdGUgYSBzaW1pbGFyIGludGVyZmFjZSBpbiBy YWR2IGFuZCBhbWRncHUtcHJvIGF0IHRoZQ0KdnVsa2FuIGxldmVsIHRoYXQgd291bGQgYmUgZ3Jl YXQuDQoNCkknbSBub3Qgc3VyZSB3aGF0IHRoYXQncyBnb2luZyB0byBiZSB5ZXQuDQoNCi0gQW5k cmVzDQoNCk9uIDEyLzE5LzIwMTYgMTI6MTEgQU0sIHpob3VjbTEgd3JvdGU6DQoNCg0KT24gMjAx NuW5tDEy5pyIMTnml6UgMTE6MzMsIFBpZXJyZS1Mb3VwIEEuIEdyaWZmYWlzIHdyb3RlOg0KIFdl J3JlIGN1cnJlbnRseSB3b3JraW5nIHdpdGggdGhlIG9wZW4gc3RhY2s7IEkgYXNzdW1lIHRoYXQg YQ0KbWVjaGFuaXNtIGNvdWxkIGJlIGV4cG9zZWQgYnkgYm90aCBvcGVuIGFuZCBQcm8gVnVsa2Fu DQp1c2Vyc3BhY2UgZHJpdmVycyBhbmQgdGhhdCB0aGUgYW1kZ3B1IGtlcm5lbCBpbnRlcmZhY2UN CmltcHJvdmVtZW50cyB3ZSB3b3VsZCBwdXJzdWUgZm9sbG93aW5nIHRoaXMgZGlzY3Vzc2lvbiB3 b3VsZA0KbGV0IGJvdGggZHJpdmVycyB0YWtlIGFkdmFudGFnZSBvZiB0aGUgZmVhdHVyZSwgY29y cmVjdD8NCiBPZiBjb3Vyc2UuDQpEb2VzIG9wZW4gc3RhY2sgaGF2ZSBWdWxrYW4gc3VwcG9ydD8N Cg0KUmVnYXJkcywNCkRhdmlkIFpob3UNCg0KT24gMTIvMTgvMjAxNiAwNzoyNiBQTSwgemhvdWNt MSB3cm90ZToNCiBCeSB0aGUgd2F5LCBhcmUgeW91IHVzaW5nIGFsbC1vcGVuIGRyaXZlciBvciBh bWRncHUtcHJvIGRyaXZlcj8NCg0KK0RhdmlkIE1hbywgd2hvIGlzIHdvcmtpbmcgb24gb3VyIFZ1 bGthbiBkcml2ZXIuDQoNClJlZ2FyZHMsDQpEYXZpZCBaaG91DQoNCk9uIDIwMTblubQxMuaciDE4 5pelIDA2OjA1LCBQaWVycmUtTG91cCBBLiBHcmlmZmFpcyB3cm90ZToNCiBIaSBTZXJndWVpLA0K DQpJJ20gYWxzbyB3b3JraW5nIG9uIHRoZSBicmluZ2luZyB1cCBvdXIgVlIgcnVudGltZSBvbiB0 b3Agb2YNCmFtZ3B1Ow0Kc2VlIHJlcGxpZXMgaW5saW5lLg0KDQpPbiAxMi8xNi8yMDE2IDA5OjA1 IFBNLCBTYWdhbG92aXRjaCwgU2VyZ3VlaSB3cm90ZToNCiBBbmRyZXMsDQoNCiDCoEZvciBjdXJy ZW50IFZSIHdvcmtsb2FkcyB3ZSBoYXZlIDMgc2VwYXJhdGUgcHJvY2Vzc2VzDQpydW5uaW5nDQph Y3R1YWxseToNCiBTbyB3ZSBjb3VsZCBoYXZlIHBvdGVudGlhbCBtZW1vcnkgb3ZlcmNvbW1pdCBj YXNlIG9yIGRvIHlvdSBkbw0KcGFydGl0aW9uaW5nDQpvbiB5b3VyIG93bj/CoCBJIHdvdWxkIHRo aW5rIHRoYXQgdGhlcmUgaXMgbmVlZCB0byBhdm9pZA0Kb3ZlcmNvbWl0IGluDQpWUiBjYXNlIHRv DQpwcmV2ZW50IGFueSBCTyBtaWdyYXRpb24uDQoNCllvdSdyZSBlbnRpcmVseSBjb3JyZWN0OyBj dXJyZW50bHkgdGhlIFZSIHJ1bnRpbWUgaXMgc2V0dGluZyB1cA0KcHJpb3JpdGl6ZWQgQ1BVIHNj aGVkdWxpbmcgZm9yIGl0cyBWUiBjb21wb3NpdG9yLCB3ZSdyZQ0Kd29ya2luZyBvbg0KcHJpb3Jp dGl6ZWQgR1BVIHNjaGVkdWxpbmcgYW5kIHByZS1lbXB0aW9uIChlZy4gdGhpcw0KdGhyZWFkKSwg YW5kIGluDQp0aGUgZnV0dXJlIGl0IHdpbGwgbWFrZSBzZW5zZSB0byBkbyB3b3JrIGluIG9yZGVy IHRvIG1ha2UNCnN1cmUgdGhhdA0KaXRzIG1lbW9yeSBhbGxvY2F0aW9ucyBkbyBub3QgZ2V0IGV2 aWN0ZWQsIHRvIHByZXZlbnQgYW55DQp1bndlbGNvbWUNCmFkZGl0aW9uYWwgbGF0ZW5jeSBpbiB0 aGUgZXZlbnQgb2YgbmVlZGluZyB0byBwZXJmb3JtDQpqdXN0LWluLXRpbWUNCnJlcHJvamVjdGlv bi4NCg0KIEJUVzogRG8geW91IG1lYW4gX19yZWFsX18gcHJvY2Vzc2VzIG9yIHRocmVhZHM/DQpC YXNlZCBvbiBteSB1bmRlcnN0YW5kaW5nIHNoYXJpbmcgQk9zIGJldHdlZW4gZGlmZmVyZW50DQpw cm9jZXNzZXMNCmNvdWxkIGludHJvZHVjZSBhZGRpdGlvbmFsIHN5bmNocm9uaXphdGlvbiBjb25z dHJhaW5zLiBidHc6DQpJIGFtIG5vdA0Kc3VyZQ0KaWYgd2UgYXJlIGFibGUgdG8gc2hhcmUgVnVs a2FuIHN5bmMuIG9iamVjdCBjcm9zcy1wcm9jZXNzDQpib3VuZGFyeS4NCg0KVGhleSBhcmUgZGlm ZmVyZW50IHByb2Nlc3NlczsgaXQgaXMgaW1wb3J0YW50IGZvciB0aGUNCmNvbXBvc2l0b3IgdGhh dA0KaXMgcmVzcG9uc2libGUgZm9yIHF1YWxpdHktb2Ytc2VydmljZSBmZWF0dXJlcyBzdWNoIGFz DQpjb25zaXN0ZW50bHkNCnByZXNlbnRpbmcgZGlzdG9ydGVkIGZyYW1lcyB3aXRoIHRoZSByaWdo dCBsYXRlbmN5LA0KcmVwcm9qZWN0aW9uLCBldGMsDQp0byBiZSBzZXBhcmF0ZSBmcm9tIHRoZSBt YWluIGFwcGxpY2F0aW9uLg0KDQpDdXJyZW50bHkgd2UgYXJlIHVzaW5nIHVucmVsZWFzZWQgY3Jv c3MtcHJvY2VzcyBtZW1vcnkgYW5kDQpzZW1hcGhvcmUNCmV4dGVuc2lvbnMgdG8gZmV0Y2ggdXBk YXRlZCBleWUgaW1hZ2VzIGZyb20gdGhlIGNsaWVudA0KYXBwbGljYXRpb24sDQpidXQgdGhlIGp1 c3QtaW4tdGltZSByZXByb2plY3Rpb24gZGlzY3Vzc2VkIGhlcmUgZG9lcyBub3QNCmFjdHVhbGx5 DQpoYXZlIGFueSBkaXJlY3QgaW50ZXJhY3Rpb25zIHdpdGggY3Jvc3MtcHJvY2VzcyByZXNvdXJj ZQ0Kc2hhcmluZywNCnNpbmNlIGl0J3MgYWNoaWV2ZWQgYnkgdXNpbmcgd2hhdGV2ZXIgaXMgdGhl IGxhdGVzdCwgbW9zdA0KdXAtdG8tZGF0ZQ0KZXllIGltYWdlcyB0aGF0IGhhdmUgYWxyZWFkeSBi ZWVuIHNlbnQgYnkgdGhlIGNsaWVudA0KYXBwbGljYXRpb24sDQp3aGljaCBhcmUgYWxyZWFkeSBh dmFpbGFibGUgdG8gdXNlIHdpdGhvdXQgYWRkaXRpb25hbA0Kc3luY2hyb25pemF0aW9uLg0KDQoN CiDCoCDCoDMpIFN5c3RlbSBjb21wb3NpdG9yICh3ZSBhcmUgbG9va2luZyBhdCBhcHByb2FjaGVz IHRvDQpyZW1vdmUgdGhpcw0Kb3ZlcmhlYWQpDQogWWVzLMKgIElNSE8gdGhlIGJlc3QgaXMgdG8g cnVuIGluwqAgImZ1bGwgc2NyZWVuIG1vZGUiLg0KDQpZZXMsIHdlIGFyZSB3b3JraW5nIG9uIG1l Y2hhbmlzbXMgdG8gcHJlc2VudCBkaXJlY3RseSB0byB0aGUNCmhlYWRzZXQNCmRpc3BsYXkgd2l0 aG91dCBhbnkgaW50ZXJtZWRpYXJpZXMgYXMgYSBzZXBhcmF0ZSBlZmZvcnQuDQoNCg0KIMKgVGhl IGxhdGVuY3kgaXMgb3VyIG1haW4gY29uY2VybiwNCiBJIHdvdWxkIGFzc3VtZSB0aGF0IHRoaXMg aXMgdGhlIGtub3duIHByb2JsZW0gKGF0IGxlYXN0IGZvcg0KY29tcHV0ZQ0KdXNhZ2UpLg0KSXQg bG9va3MgbGlrZSB0aGF0IGFtZGdwdSAvIGtlcm5lbCBzdWJtaXNzaW9uIGlzIHJhdGhlciBDUFUN CmludGVuc2l2ZQ0KKGF0IGxlYXN0DQppbiB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uKS4NCg0K QXMgbG9uZyBhcyBpdCdzIGEgY29uc2lzdGVudCBjb3N0LCBpdCBzaG91bGRuJ3QgYW4gaXNzdWUu DQpIb3dldmVyLCBpZg0KdGhlcmUncyBoaWdoIGRlZ3JlZXMgb2YgdmFyaWFuY2UgdGhlbiB0aGF0 IHdvdWxkIGJlDQp0cm91Ymxlc29tZSBhbmQgd2UNCndvdWxkIG5lZWQgdG8gYWNjb3VudCBmb3Ig dGhlIHdvcnN0IGNhc2UuDQoNCkhvcGVmdWxseSB0aGUgcmVxdWlyZW1lbnRzIGFuZCBhcHByb2Fj aCB3ZSBkZXNjcmliZWQgbWFrZQ0Kc2Vuc2UsIHdlJ3JlDQpsb29raW5nIGZvcndhcmQgdG8geW91 ciBmZWVkYmFjayBhbmQgc3VnZ2VzdGlvbnMuDQoNClRoYW5rcyENCsKgLSBQaWVycmUtTG91cA0K DQoNClNpbmNlcmVseSB5b3VycywNClNlcmd1ZWkgU2FnYWxvdml0Y2gNCg0KDQpGcm9tOiBBbmRy ZXMgUm9kcmlndWV6IDxhbmRyZXNyQHZhbHZlc29mdHdhcmUuY29tPg0KU2VudDogRGVjZW1iZXIg MTYsIDIwMTYgMTA6MDAgUE0NClRvOiBTYWdhbG92aXRjaCwgU2VyZ3VlaTsgIGFtZC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnDQpTdWJqZWN0OiBSRTogW1JGQ10gTWVjaGFuaXNtIGZvciBoaWdo IHByaW9yaXR5IHNjaGVkdWxpbmcNCmluIGFtZGdwdQ0KDQpIZXkgU2VyZ3VlaSwNCg0KIFtTZXJn dWVpXSBOby4gSSBtZWFuIHBpcGUgOi0pIGFzIE1FQyBkZWZpbmUgaXQuwqAgQXMgZmFyIGFzIEkN CnVuZGVyc3RhbmQgKGJ5IHNpbXBsaWZ5aW5nKQ0Kc29tZSBzY2hlZHVsaW5nIGlzIHBlciBwaXBl LsKgIEkga25vdyBhYm91dCB0aGUgY3VycmVudA0KYWxsb2NhdGlvbg0Kc2NoZW1lIGJ1dCBJIGRv IG5vdCB0aGluaw0KdGhhdCBpdCBpc8KgIGlkZWFsLsKgIEkgd291bGQgYXNzdW1lIHRoYXQgd2Ug bmVlZCB0byBzd2l0Y2ggdG8NCmR5bmFtaWNhbCBwYXJ0aXRpb24NCm9mIHJlc291cmNlc8KgIGJh c2VkIG9uIHRoZSB3b3JrbG9hZCBvdGhlcndpc2Ugd2Ugd2lsbCBoYXZlDQpyZXNvdXJjZQ0KY29u ZmxpY3QNCmJldHdlZW4gVnVsa2FuIGNvbXB1dGUgYW5kwqAgT3BlbkNMLg0KDQpJIGFncmVlIHRo ZSBwYXJ0aXRpb25pbmcgaXNuJ3QgaWRlYWwuIEknbSBob3Bpbmcgd2UgY2FuDQpzdGFydCB3aXRo IGENCnNvbHV0aW9uIHRoYXQgYXNzdW1lcyB0aGF0DQpvbmx5IHBpcGUwIGhhcyBhbnkgd29yayBh bmQgdGhlIG90aGVyIHBpcGVzIGFyZSBpZGxlIChubw0KSFNBL1JPQ20NCnJ1bm5pbmcgb24gdGhl IHN5c3RlbSkuDQoNClRoaXMgc2hvdWxkIGJlIG1vcmUgb3IgbGVzcyB0aGUgdXNlIGNhc2Ugd2Ug ZXhwZWN0IGZyb20gVlINCnVzZXJzLg0KDQpJIGFncmVlIHRoZSBzcGxpdCBpcyBjdXJyZW50bHkg bm90IGlkZWFsLCBidXQgSSdkIGxpa2UgdG8NCmNvbnNpZGVyDQp0aGF0IGEgc2VwYXJhdGUgdGFz aywgYmVjYXVzZQ0KbWFraW5nIGl0IGR5bmFtaWMgaXMgbm90IHN0cmFpZ2h0IGZvcndhcmQgOlAN Cg0KIFtTZXJndWVpXSBWdWxrYW4gd29ya3MgdmlhIGFtZGdwdSAoa2VybmVsIHN1Ym1pc3Npb25z KSBzbw0KYW1ka2ZkDQp3aWxsIGJlIG5vdA0KaW52b2x2ZWQuwqAgSSB3b3VsZCBhc3N1bWUgdGhh dCBpbiB0aGUgY2FzZSBvZiBWUiB3ZSB3aWxsDQpoYXZlIG9uZSBtYWluDQphcHBsaWNhdGlvbiAo ImNvbnNvbGUiIG1vZGUoPykpIHNvIHdlIGNvdWxkIHRlbXBvcmFsbHkNCiJpZ25vcmUiDQpPcGVu Q0wvUk9DbSBuZWVkcyB3aGVuIFZSIGlzIHJ1bm5pbmcuDQoNCkNvcnJlY3QsIHRoaXMgaXMgd2h5 IHdlIHdhbnQgdG8gZW5hYmxlIHRoZSBoaWdoIHByaW9yaXR5DQpjb21wdXRlDQpxdWV1ZSB0aHJv dWdoDQpsaWJkcm0tYW1kZ3B1LCBzbyB0aGF0IHdlIGNhbiBleHBvc2UgaXQgdGhyb3VnaCBWdWxr YW4gbGF0ZXIuDQoNCkZvciBjdXJyZW50IFZSIHdvcmtsb2FkcyB3ZSBoYXZlIDMgc2VwYXJhdGUg cHJvY2Vzc2VzDQpydW5uaW5nIGFjdHVhbGx5Og0KwqAgwqAgMSkgR2FtZSBwcm9jZXNzDQrCoCDC oCAyKSBWUiBDb21wb3NpdG9yICh0aGlzIGlzIHRoZSBwcm9jZXNzIHRoYXQgd2lsbCByZXF1aXJl DQpoaWdoDQpwcmlvcml0eSBxdWV1ZSkNCsKgIMKgIDMpIFN5c3RlbSBjb21wb3NpdG9yICh3ZSBh cmUgbG9va2luZyBhdCBhcHByb2FjaGVzIHRvDQpyZW1vdmUgdGhpcw0Kb3ZlcmhlYWQpDQoNCkZv ciBub3cgSSB0aGluayBpdCBpcyBva2F5IHRvIGFzc3VtZSBubyBPcGVuQ0wvUk9DbSBydW5uaW5n DQpzaW11bHRhbmVvdXNseSwgYnV0DQpJIHdvdWxkIGFsc28gbGlrZSB0byBiZSBhYmxlIHRvIGFk ZHJlc3MgdGhpcyBjYXNlIGluIHRoZQ0KZnV0dXJlDQooY3Jvc3MtcGlwZSBwcmlvcml0aWVzKS4N Cg0KIFtTZXJndWVpXcKgIFRoZSBwcm9ibGVtIHdpdGggcHJlLWVtcHRpb24gb2YgZ3JhcGhpY3Mg dGFzazoNCihhKSBpdA0KbWF5IHRha2UgdGltZSBzbw0KbGF0ZW5jeSBtYXkgc3VmZmVyDQoNClRo ZSBsYXRlbmN5IGlzIG91ciBtYWluIGNvbmNlcm4sIHdlIHdhbnQgc29tZXRoaW5nIHRoYXQgaXMN CnByZWRpY3RhYmxlLiBBIGdvb2QNCmlsbHVzdHJhdGlvbiBvZiB3aGF0IHRoZSByZXByb2plY3Rp b24gc2NoZWR1bGluZyBsb29rcyBsaWtlDQpjYW4gYmUNCmZvdW5kIGhlcmU6DQpodHRwczovL2Nv bW11bml0eS5hbWQuY29tL3NlcnZsZXQvSml2ZVNlcnZsZXQvc2hvd0ltYWdlLzM4LTEzMTAtMTA0 NzU0L3Bhc3RlZEltYWdlXzMucG5nDQoNCg0KDQogKGIpIHRvIHByZWVtcHQgd2UgbmVlZCB0byBo YXZlIGRpZmZlcmVudCAiY29udGV4dCIgLSB3ZSB3YW50DQp0byBndWFyYW50ZWUgdGhhdCBzdWJt aXNzaW9ucyBmcm9tIHRoZSBzYW1lIGNvbnRleHQgd2lsbA0KYmUgZXhlY3V0ZWQNCmluIG9yZGVy Lg0KDQpUaGlzIGlzIG9rYXksIGFzIHRoZSByZXByb2plY3Rpb24gd29yayBkb2Vzbid0IGhhdmUN CmRlcGVuZGVuY2llcyBvbg0KdGhlIGdhbWUgY29udGV4dCwgYW5kIGl0DQpldmVuIGhhcHBlbnMg aW4gYSBzZXBhcmF0ZSBwcm9jZXNzLg0KDQogQlRXOiAoYSkgRG8geW91IHdhbnQgInByZWVtcHQi IGFuZCBsYXRlciByZXN1bWUgb3IgZG8geW91DQp3YW50DQoicHJlZW1wdCIgYW5kDQoiY2FuY2Vs L2Fib3J0Ig0KDQpQcmVlbXB0IHRoZSBnYW1lIHdpdGggdGhlIGNvbXBvc2l0b3IgdGFzayBhbmQg dGhlbiByZXN1bWUgaXQuDQoNCiAoYikgVnVsa2FuIGlzIGdlbmVyaWMgQVBJIGFuZCBjb3VsZCBi ZSB1c2VkIGZvciBncmFwaGljcw0KYXMgd2VsbCBhcw0KZm9yIHBsYWluIGNvbXB1dGUgdGFza3Mg KFZLX1FVRVVFX0NPTVBVVEVfQklUKS4NCg0KWWVhaCwgdGhlIHBsYW4gaXMgdG8gdXNlIHZ1bGth biBjb21wdXRlLiBCdXQgaWYgeW91IGZpZ3VyZQ0Kb3V0IGEgd2F5DQpmb3IgdXMgdG8gZ2V0DQph IGd1YXJhbnRlZWQgZXhlY3V0aW9uIHRpbWUgdXNpbmcgdnVsa2FuIGdyYXBoaWNzLCB0aGVuDQpJ J2xsIHRha2UgeW91DQpvdXQgZm9yIGEgYmVlciA6KQ0KDQpSZWdhcmRzLA0KQW5kcmVzDQpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQpGcm9tOiBTYWdhbG92aXRjaCwg U2VyZ3VlaSBbU2VyZ3VlaS5TYWdhbG92aXRjaEBhbWQuY29tXQ0KU2VudDogRnJpZGF5LCBEZWNl bWJlciAxNiwgMjAxNiA5OjEzIFBNDQpUbzogQW5kcmVzIFJvZHJpZ3VlejsgIGFtZC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnDQpTdWJqZWN0OiBSZTogW1JGQ10gTWVjaGFuaXNtIGZvciBoaWdo IHByaW9yaXR5IHNjaGVkdWxpbmcNCmluIGFtZGdwdQ0KDQpIaSBBbmRyZXMsDQoNClBsZWFzZSBz ZWUgaW5saW5lIChhcyBbU2VyZ3VlaV0pDQoNClNpbmNlcmVseSB5b3VycywNClNlcmd1ZWkgU2Fn YWxvdml0Y2gNCg0KDQpGcm9tOiBBbmRyZXMgUm9kcmlndWV6IDxhbmRyZXNyQHZhbHZlc29mdHdh cmUuY29tPg0KU2VudDogRGVjZW1iZXIgMTYsIDIwMTYgODoyOSBQTQ0KVG86IFNhZ2Fsb3ZpdGNo LCBTZXJndWVpOyAgYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcNClN1YmplY3Q6IFJFOiBb UkZDXSBNZWNoYW5pc20gZm9yIGhpZ2ggcHJpb3JpdHkgc2NoZWR1bGluZw0KaW4gYW1kZ3B1DQoN CkhpIFNlcmd1ZWksDQoNClRoYW5rcyBmb3IgdGhlIGZlZWRiYWNrLiBBbnN3ZXJzIGlubGluZSBh cyBbQVJdLg0KDQpSZWdhcmRzLA0KQW5kcmVzDQoNCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18NCkZyb206IFNhZ2Fsb3ZpdGNoLCBTZXJndWVpIFtTZXJndWVpLlNhZ2Fs b3ZpdGNoQGFtZC5jb21dDQpTZW50OiBGcmlkYXksIERlY2VtYmVyIDE2LCAyMDE2IDg6MTUgUE0N ClRvOiBBbmRyZXMgUm9kcmlndWV6OyAgYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcNClN1 YmplY3Q6IFJlOiBbUkZDXSBNZWNoYW5pc20gZm9yIGhpZ2ggcHJpb3JpdHkgc2NoZWR1bGluZw0K aW4gYW1kZ3B1DQoNCkFuZHJlcywNCg0KDQpRdWljayBjb21tZW50czoNCg0KMSkgVG8gbWluaW1p emUgImJ1YmJsZXMiLCBldGMuIHdlIG5lZWQgdG8gImZvcmNlIiBDVQ0KYXNzaWdubWVudHMvYmlu ZGluZw0KdG8gaGlnaC1wcmlvcml0eSBxdWV1ZcKgIHdoZW4gaXQgd2lsbCBiZSBpbiB1c2UgYW5k ICJmcmVlIg0KdGhlbSBsYXRlcg0KKHdlwqAgZG8gbm90IHdhbnQgZm9yZXZlciB0YWtlIENVcyBm cm9tIGUuZy4gZ3JhcGhpYyB0YXNrIHRvDQpkZWdyYWRlDQpncmFwaGljcw0KcGVyZm9ybWFuY2Up Lg0KDQpPdGhlcndpc2Ugd2UgY291bGQgaGF2ZSBzY2VuYXJpbyB3aGVuIGxvbmcgZ3JhcGhpY3Mg dGFzayAob3INCmxvdy1wcmlvcml0eQ0KY29tcHV0ZSkgd2lsbCB0b29rIGFsbCAoZXh0cmEpIENV cyBhbmQgaGlnaC0tcHJpb3JpdHkgd2lsbA0Kd2FpdCBmb3INCm5lZWRlZCByZXNvdXJjZXMuDQpJ dCB3aWxsIG5vdCBiZSB2aXNpYmxlIG9uICJOT1AgIiBidXQgb25seSB3aGVuIHlvdSBzdWJtaXQN CiJyZWFsIg0KY29tcHV0ZSB0YXNrDQpzbyBJIHdvdWxkIHJlY29tbWVuZMKgIG5vdCB0byB1c2Ug Ik5PUCIgcGFja2V0cyBhdCBhbGwgZm9yDQp0ZXN0aW5nLg0KDQpJdCAoQ1UgYXNzaWdubWVudCkg Y291bGQgYmUgcmVsYXRpdmVseSBlYXN5IGRvbmUgd2hlbg0KZXZlcnl0aGluZyBpcw0KZ29pbmcg dmlhIGtlcm5lbA0KKGUuZy4gYXMgcGFydCBvZiBmcmFtZSBzdWJtaXNzaW9uKSBidXQgSSBtdXN0 IGFkbWl0IHRoYXQgSQ0KYW0gbm90IHN1cmUNCmFib3V0IHRoZSBiZXN0IHdheSBmb3IgdXNlciBs ZXZlbCBzdWJtaXNzaW9ucyAoYW1ka2ZkKS4NCg0KW0FSXSBJIHdhc24ndCBhd2FyZSBvZiB0aGlz IHBhcnQgb2YgdGhlIHByb2dyYW1taW5nDQpzZXF1ZW5jZS4gVGhhbmtzDQpmb3IgdGhlIGhlYWRz IHVwIQ0KSXMgdGhpcyBzaW1pbGFyIHRvIHRoZSBDVSBtYXNraW5nIHByb2dyYW1taW5nPw0KW1Nl cmd1ZWldIFllcy4gVG8gc2ltcGxpZnk6IHRoZSBwcm9ibGVtIGlzIHRoYXQgInNjaGVkdWxlciIN CndoZW4NCmRlY2lkaW5nIHdoaWNoDQpxdWV1ZSB0b8KgIHJ1biB3aWxsIGNoZWNrIGlmIHRoZXJl IGlzIGVub3VnaCByZXNvdXJjZXMgYW5kDQppZiBub3QgdGhlbg0KaXQgd2lsbCBiZWdpbg0KdG8g Y2hlY2sgb3RoZXIgcXVldWVzIHdpdGggbG93ZXIgcHJpb3JpdHkuDQoNCjIpIEkgd291bGQgcmVj b21tZW5kIHRvIGRlZGljYXRlIHRoZSB3aG9sZSBwaXBlIHRvDQpoaWdoLXByaW9yaXR5DQpxdWV1 ZSBhbmQgaGF2ZQ0Kbm90aGluZyB0aGVpciBleGNlcHQgaXQuDQoNCltBUl0gSSdtIGd1ZXNzaW5n IGluIHRoaXMgY29udGV4dCB5b3UgbWVhbiBwaXBlID0gcXVldWU/DQooYXMgb3Bwb3NlZA0KdG8g dGhlIE1FQyBkZWZpbml0aW9uDQpvZiBwaXBlLCB3aGljaCBpcyBhIGdyb3VwaW5nIG9mIHF1ZXVl cykuIEkgc2F5IHRoaXMgYmVjYXVzZQ0KYW1kZ3B1DQpvbmx5IGhhcyBhY2Nlc3MgdG8gMSBwaXBl LA0KYW5kIHRoZSByZXN0IGFyZSBzdGF0aWNhbGx5IHBhcnRpdGlvbmVkIGZvciBhbWRrZmQgdXNh Z2UuDQoNCltTZXJndWVpXSBOby4gSSBtZWFuIHBpcGUgOi0pwqAgYXMgTUVDIGRlZmluZSBpdC4g QXMgZmFyIGFzIEkNCnVuZGVyc3RhbmQgKGJ5IHNpbXBsaWZ5aW5nKQ0Kc29tZSBzY2hlZHVsaW5n IGlzIHBlciBwaXBlLsKgIEkga25vdyBhYm91dCB0aGUgY3VycmVudA0KYWxsb2NhdGlvbg0Kc2No ZW1lIGJ1dCBJIGRvIG5vdCB0aGluaw0KdGhhdCBpdCBpc8KgIGlkZWFsLsKgIEkgd291bGQgYXNz dW1lIHRoYXQgd2UgbmVlZCB0byBzd2l0Y2ggdG8NCmR5bmFtaWNhbCBwYXJ0aXRpb24NCm9mIHJl c291cmNlc8KgIGJhc2VkIG9uIHRoZSB3b3JrbG9hZCBvdGhlcndpc2Ugd2Ugd2lsbCBoYXZlDQpy ZXNvdXJjZQ0KY29uZmxpY3QNCmJldHdlZW4gVnVsa2FuIGNvbXB1dGUgYW5kwqAgT3BlbkNMLg0K DQoNCkJUVzogV2hpY2ggdXNlciBsZXZlbCBBUEkgZG8geW91IHdhbnQgdG8gdXNlIGZvciBjb21w dXRlOg0KVnVsa2FuIG9yDQpPcGVuQ0w/DQoNCltBUl0gVnVsa2FuDQoNCltTZXJndWVpXSBWdWxr YW4gd29ya3MgdmlhIGFtZGdwdSAoa2VybmVsIHN1Ym1pc3Npb25zKSBzbw0KYW1ka2ZkIHdpbGwN CmJlIG5vdA0KaW52b2x2ZWQuwqAgSSB3b3VsZCBhc3N1bWUgdGhhdCBpbiB0aGUgY2FzZSBvZiBW UiB3ZSB3aWxsDQpoYXZlIG9uZSBtYWluDQphcHBsaWNhdGlvbiAoImNvbnNvbGUiIG1vZGUoPykp IHNvIHdlIGNvdWxkIHRlbXBvcmFsbHkNCiJpZ25vcmUiDQpPcGVuQ0wvUk9DbSBuZWVkcyB3aGVu IFZSIGlzIHJ1bm5pbmcuDQoNCiDCoHdlIHdpbGwgbm90IGJlIGFibGUgdG8gcHJvdmlkZSBhIHNv bHV0aW9uIGNvbXBhdGlibGUgd2l0aA0KR0ZYDQp3b3Jsb2Fkcy4NCiBJIGFzc3VtZSB0aGF0IHlv dSBhcmUgdGFsa2luZyBhYm91dCBncmFwaGljcz8gQW0gSSByaWdodD8NCg0KW0FSXSBZZWFoLCBt eSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgcHJlLWVtcHRpbmcgdGhlDQpjdXJyZW50bHkgcnVubmlu Zw0KZ3JhcGhpY3Mgam9iIGFuZCBzY2hlZHVsaW5nIGluDQpzb21ldGhpbmcgZWxzZSB1c2luZyBt aWQtYnVmZmVyIHByZS1lbXB0aW9uIGhhcyBzb21lIGNhc2VzDQp3aGVyZSBpdA0KZG9lc24ndCB3 b3JrIHdlbGwuIEJ1dCBpZiB3aXRoDQpwb2xhcmlzMTAgaXQgc3RhcnRzIHdvcmtpbmcgd2VsbCwg aXQgbWlnaHQgYmUgYSBiZXR0ZXINCnNvbHV0aW9uIGZvcg0KdXMgKGJlY2F1c2UgdGhlIHdob2xl IHJlcHJvamVjdGlvbg0Kd29yayB1c2VzIHRoZSB2dWxrYW4gZ3JhcGhpY3Mgc3RhY2sgYXQgdGhl IG1vbWVudCwgYW5kDQpwb3J0aW5nIGl0IHRvDQpjb21wdXRlIGlzIG5vdCB0cml2aWFsKS4NCg0K W1Nlcmd1ZWldwqAgVGhlIHByb2JsZW0gd2l0aCBwcmUtZW1wdGlvbiBvZiBncmFwaGljcyB0YXNr Og0KKGEpIGl0IG1heQ0KdGFrZSB0aW1lIHNvDQpsYXRlbmN5IG1heSBzdWZmZXIgKGIpIHRvIHBy ZWVtcHQgd2UgbmVlZCB0byBoYXZlIGRpZmZlcmVudA0KImNvbnRleHQiDQotIHdlIHdhbnQNCnRv IGd1YXJhbnRlZSB0aGF0IHN1Ym1pc3Npb25zIGZyb20gdGhlIHNhbWUgY29udGV4dCB3aWxsIGJl DQpleGVjdXRlZA0KaW4gb3JkZXIuDQpCVFc6IChhKSBEbyB5b3Ugd2FudMKgICJwcmVlbXB0IiBh bmQgbGF0ZXIgcmVzdW1lIG9yIGRvIHlvdQ0Kd2FudA0KInByZWVtcHQiIGFuZA0KImNhbmNlbC9h Ym9ydCI/wqAgKGIpIFZ1bGthbiBpcyBnZW5lcmljIEFQSSBhbmQgY291bGQgYmUgdXNlZA0KZm9y IGdyYXBoaWNzIGFzIHdlbGwgYXMgZm9yIHBsYWluIGNvbXB1dGUgdGFza3MNCihWS19RVUVVRV9D T01QVVRFX0JJVCkuDQoNCg0KU2luY2VyZWx5IHlvdXJzLA0KU2VyZ3VlaSBTYWdhbG92aXRjaA0K DQoNCg0KRnJvbTogYW1kLWdmeCA8YW1kLWdmeC1ib3VuY2VzQGxpc3RzLmZyZWVkZXNrdG9wLm9y Zz4gb24NCmJlaGFsZiBvZg0KQW5kcmVzIFJvZHJpZ3VleiA8YW5kcmVzckB2YWx2ZXNvZnR3YXJl LmNvbT4NClNlbnQ6IERlY2VtYmVyIDE2LCAyMDE2IDY6MTUgUE0NClRvOiBhbWQtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZw0KU3ViamVjdDogW1JGQ10gTWVjaGFuaXNtIGZvciBoaWdoIHByaW9y aXR5IHNjaGVkdWxpbmcgaW4NCmFtZGdwdQ0KDQpIaSBFdmVyeW9uZSwNCg0KVGhpcyBSRkMgaXMg YWxzbyBhdmFpbGFibGUgYXMgYSBnaXN0IGhlcmU6DQpodHRwczovL2dpc3QuZ2l0aHViLmNvbS9s b3N0Z29hdC83MDAwNDMyY2Q2ODY0MjY1ZGJjMmMzYWI5MzIwNDI0OQ0KDQoNCg0KDQpbUkZDXSBN ZWNoYW5pc20gZm9yIGhpZ2ggcHJpb3JpdHkgc2NoZWR1bGluZyBpbiBhbWRncHUNCmdpc3QuZ2l0 aHViLmNvbQ0KW1JGQ10gTWVjaGFuaXNtIGZvciBoaWdoIHByaW9yaXR5IHNjaGVkdWxpbmcgaW4g YW1kZ3B1DQoNCg0KDQpbUkZDXSBNZWNoYW5pc20gZm9yIGhpZ2ggcHJpb3JpdHkgc2NoZWR1bGlu ZyBpbiBhbWRncHUNCmdpc3QuZ2l0aHViLmNvbQ0KW1JGQ10gTWVjaGFuaXNtIGZvciBoaWdoIHBy aW9yaXR5IHNjaGVkdWxpbmcgaW4gYW1kZ3B1DQoNCg0KDQoNCltSRkNdIE1lY2hhbmlzbSBmb3Ig aGlnaCBwcmlvcml0eSBzY2hlZHVsaW5nIGluIGFtZGdwdQ0KZ2lzdC5naXRodWIuY29tDQpbUkZD XSBNZWNoYW5pc20gZm9yIGhpZ2ggcHJpb3JpdHkgc2NoZWR1bGluZyBpbiBhbWRncHUNCg0KDQpX ZSBhcmUgaW50ZXJlc3RlZCBpbiBmZWVkYmFjayBmb3IgYSBtZWNoYW5pc20gdG8NCmVmZmVjdGl2 ZWx5IHNjaGVkdWxlDQpoaWdoDQpwcmlvcml0eSBWUiByZXByb2plY3Rpb24gdGFza3MgKGFsc28g cmVmZXJyZWQgdG8gYXMNCnRpbWUtd2FycGluZykgZm9yDQpQb2xhcmlzMTANCnJ1bm5pbmcgb24g dGhlIGFtZGdwdSBrZXJuZWwgZHJpdmVyLg0KDQpCcmllZiBjb250ZXh0Og0KLS0tLS0tLS0tLS0t LS0NCg0KVGhlIG1haW4gb2JqZWN0aXZlIG9mIHJlcHJvamVjdGlvbiBpcyB0byBhdm9pZCBtb3Rp b24NCnNpY2tuZXNzIGZvciBWUg0KdXNlcnMgaW4NCnNjZW5hcmlvcyB3aGVyZSB0aGUgZ2FtZSBv ciBhcHBsaWNhdGlvbiB3b3VsZCBmYWlsIHRvIGZpbmlzaA0KcmVuZGVyaW5nIGEgbmV3DQpmcmFt ZSBpbiB0aW1lIGZvciB0aGUgbmV4dCBWQkxBTksuIFdoZW4gdGhpcyBoYXBwZW5zLCB0aGUNCnVz ZXIncyBoZWFkDQptb3ZlbWVudHMNCmFyZSBub3QgcmVmbGVjdGVkIG9uIHRoZSBIZWFkIE1vdW50 ZWQgRGlzcGxheSAoSE1EKSBmb3IgdGhlDQpkdXJhdGlvbg0Kb2YgYW4NCmV4dHJhIGZyYW1lLiBU aGlzIGV4dGVuZGVkIG1pc21hdGNoIGJldHdlZW4gdGhlIGlubmVyIGVhcg0KYW5kIHRoZQ0KZXll cyBtYXkNCmNhdXNlIHRoZSB1c2VyIHRvIGV4cGVyaWVuY2UgbW90aW9uIHNpY2tuZXNzLg0KDQpU aGUgVlIgY29tcG9zaXRvciBkZWFscyB3aXRoIHRoaXMgcHJvYmxlbSBieSBmYWJyaWNhdGluZyBh DQpuZXcgZnJhbWUNCnVzaW5nIHRoZQ0KdXNlcidzIHVwZGF0ZWQgaGVhZCBwb3NpdGlvbiBpbiBj b21iaW5hdGlvbiB3aXRoIHRoZQ0KcHJldmlvdXMgZnJhbWVzLg0KVGhpcw0KYXZvaWRzIGEgcHJv bG9uZ2VkIG1pc21hdGNoIGJldHdlZW4gdGhlIEhNRCBvdXRwdXQgYW5kIHRoZQ0KaW5uZXIgZWFy Lg0KDQpCZWNhdXNlIG9mIHRoZSBhZHZlcnNlIGVmZmVjdHMgb24gdGhlIHVzZXIsIHdlIHJlcXVp cmUgaGlnaA0KY29uZmlkZW5jZSB0aGF0IHRoZQ0KcmVwcm9qZWN0aW9uIHRhc2sgd2lsbCBjb21w bGV0ZSBiZWZvcmUgdGhlIFZCTEFOSyBpbnRlcnZhbC4NCkV2ZW4gaWYNCnRoZSBHRlggcGlwZQ0K aXMgY3VycmVudGx5IGZ1bGwgb2Ygd29yayBmcm9tIHRoZSBnYW1lL2FwcGxpY2F0aW9uICh3aGlj aA0KaXMgbW9zdA0KbGlrZWx5IHRoZSBjYXNlKS4NCg0KRm9yIG1vcmUgZGV0YWlscyBhbmQgaWxs dXN0cmF0aW9ucywgcGxlYXNlIHJlZmVyIHRvIHRoZQ0KZm9sbG93aW5nDQpkb2N1bWVudDoNCmh0 dHBzOi8vY29tbXVuaXR5LmFtZC5jb20vY29tbXVuaXR5L2dhbWluZy9ibG9nLzIwMTYvMDMvMjgv YXN5bmNocm9ub3VzLXNoYWRlcnMtZXZvbHZlZA0KDQoNCg0KDQpHYW1pbmc6IEFzeW5jaHJvbm91 cyBTaGFkZXJzIEV2b2x2ZWQgfCBDb21tdW5pdHkNCmNvbW11bml0eS5hbWQuY29tDQpPbmUgb2Yg dGhlIG1vc3QgZXhjaXRpbmcgbmV3IGRldmVsb3BtZW50cyBpbiBHUFUgdGVjaG5vbG9neQ0Kb3Zl ciB0aGUNCnBhc3QgeWVhciBoYXMgYmVlbiB0aGUgYWRvcHRpb24gb2YgYXN5bmNocm9ub3VzIHNo YWRlcnMsDQp3aGljaCBjYW4NCm1ha2UgbW9yZSBlZmZpY2llbnQgdXNlIG9mIC4uLg0KDQoNCg0K R2FtaW5nOiBBc3luY2hyb25vdXMgU2hhZGVycyBFdm9sdmVkIHwgQ29tbXVuaXR5DQpjb21tdW5p dHkuYW1kLmNvbQ0KT25lIG9mIHRoZSBtb3N0IGV4Y2l0aW5nIG5ldyBkZXZlbG9wbWVudHMgaW4g R1BVIHRlY2hub2xvZ3kNCm92ZXIgdGhlDQpwYXN0IHllYXIgaGFzIGJlZW4gdGhlIGFkb3B0aW9u IG9mIGFzeW5jaHJvbm91cyBzaGFkZXJzLA0Kd2hpY2ggY2FuDQptYWtlIG1vcmUgZWZmaWNpZW50 IHVzZSBvZiAuLi4NCg0KDQoNCkdhbWluZzogQXN5bmNocm9ub3VzIFNoYWRlcnMgRXZvbHZlZCB8 IENvbW11bml0eQ0KY29tbXVuaXR5LmFtZC5jb20NCk9uZSBvZiB0aGUgbW9zdCBleGNpdGluZyBu ZXcgZGV2ZWxvcG1lbnRzIGluIEdQVSB0ZWNobm9sb2d5DQpvdmVyIHRoZQ0KcGFzdCB5ZWFyIGhh cyBiZWVuIHRoZSBhZG9wdGlvbiBvZiBhc3luY2hyb25vdXMgc2hhZGVycywNCndoaWNoIGNhbg0K bWFrZSBtb3JlIGVmZmljaWVudCB1c2Ugb2YgLi4uDQoNCg0KUmVxdWlyZW1lbnRzOg0KLS0tLS0t LS0tLS0tLQ0KDQpUaGUgbWVjaGFuaXNtIG11c3QgZXhwb3NlIHRoZSBmb2xsb3dpbmcgZnVuY3Rp b25haWxpdHk6DQoNCsKgIMKgICogSm9iIHJvdW5kIHRyaXAgdGltZSBtdXN0IGJlIHByZWRpY3Rh YmxlLCBmcm9tDQpzdWJtaXNzaW9uIHRvDQpmZW5jZSBzaWduYWwNCg0KwqAgwqAgKiBUaGUgbWVj aGFuaXNtIG11c3Qgc3VwcG9ydCBjb21wdXRlIHdvcmtsb2Fkcy4NCg0KR29hbHM6DQotLS0tLS0N Cg0KwqAgwqAgKiBUaGUgbWVjaGFuaXNtIHNob3VsZCBwcm92aWRlIGxvdyBzdWJtaXNzaW9uIGxh dGVuY2llcw0KDQpUZXN0OiBzdWJtaXR0aW5nIGEgTk9QIHBhY2tldCB0aHJvdWdoIHRoZSBtZWNo YW5pc20gb24gYnVzeQ0KaGFyZHdhcmUNCnNob3VsZA0KYmUgZXF1aXZhbGVudCB0byBzdWJtaXR0 aW5nIGEgTk9QIG9uIGlkbGUgaGFyZHdhcmUuDQoNCk5pY2UgdG8gaGF2ZToNCi0tLS0tLS0tLS0t LS0NCg0KwqAgwqAgKiBUaGUgbWVjaGFuaXNtIHNob3VsZCBhbHNvIHN1cHBvcnQgR0ZYIHdvcmts b2Fkcy4NCg0KTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHdpdGggdGhlIGN1cnJlbnQgaGFyZHdh cmUNCmNhcGFiaWxpdGllcyBpbg0KUG9sYXJpczEwIHdlDQp3aWxsIG5vdCBiZSBhYmxlIHRvIHBy b3ZpZGUgYSBzb2x1dGlvbiBjb21wYXRpYmxlIHdpdGggR0ZYDQp3b3Jsb2Fkcy4NCg0KQnV0IEkg d291bGQgbG92ZSB0byBoZWFyIG90aGVyd2lzZS4gU28gaWYgYW55b25lIGhhcyBhbiBpZGVhLA0K YXBwcm9hY2ggb3INCnN1Z2dlc3Rpb24gdGhhdCB3aWxsIGFsc28gYmUgY29tcGF0aWJsZSB3aXRo IHRoZSBHRlggcmluZywNCnBsZWFzZSBsZXQNCnVzIGtub3cNCmFib3V0IGl0Lg0KDQrCoCDCoCAq IFRoZSBhYm92ZSBndWFyYW50ZWVzIHNob3VsZCBhbHNvIGJlIHJlc3BlY3RlZCBieQ0KYW1ka2Zk IHdvcmtsb2Fkcw0KDQpXb3VsZCBiZSBnb29kIHRvIGhhdmUgZm9yIGNvbnNpc3RlbmN5LCBidXQg bm90IHN0cmljdGx5DQpuZWNlc3NhcnkgYXMNCnVzZXJzIHJ1bm5pbmcNCmdhbWVzIGFyZSBub3Qg dHJhZGl0aW9uYWxseSBydW5uaW5nIEhQQyB3b3JrbG9hZHMgaW4gdGhlDQpiYWNrZ3JvdW5kLg0K DQpQcm9wb3NlZCBhcHByb2FjaDoNCi0tLS0tLS0tLS0tLS0tLS0tLQ0KDQpTaW1pbGFyIHRvIHRo ZSB3aW5kb3dzIGRyaXZlciwgd2UgY291bGQgZXhwb3NlIGEgaGlnaCBwcmlvcml0eQ0KY29tcHV0 ZSBxdWV1ZSB0bw0KdXNlcnNwYWNlLg0KDQpTdWJtaXNzaW9ucyB0byB0aGlzIGNvbXB1dGUgcXVl dWUgd2lsbCBiZSBzY2hlZHVsZWQgd2l0aCBoaWdoDQpwcmlvcml0eSwgYW5kIG1heQ0KYWNxdWly ZSBoYXJkd2FyZSByZXNvdXJjZXMgcHJldmlvdXNseSBpbiB1c2UgYnkgb3RoZXIgcXVldWVzLg0K DQpUaGlzIGNhbiBiZSBhY2hpZXZlZCBieSB0YWtpbmcgYWR2YW50YWdlIG9mIHRoZSAncHJpb3Jp dHknDQpmaWVsZCBpbg0KdGhlIEhRRHMNCmFuZCBjb3VsZCBiZSBwcm9ncmFtbWVkIGJ5IGFtZGdw dSBvciB0aGUgYW1kZ3B1IHNjaGVkdWxlci4NClRoZSByZWxldmFudA0KcmVnaXN0ZXIgZmllbGRz IGFyZToNCsKgIMKgIMKgIMKgICogbW1DUF9IUURfUElQRV9QUklPUklUWQ0KwqAgwqAgwqAgwqAg KiBtbUNQX0hRRF9RVUVVRV9QUklPUklUWQ0KDQpJbXBsZW1lbnRhdGlvbiBhcHByb2FjaCAxIC0g c3RhdGljIHBhcnRpdGlvbmluZzoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQ0KDQpUaGUgYW1kZ3B1IGRyaXZlciBjdXJyZW50bHkgY29udHJvbHMgOCBj b21wdXRlIHF1ZXVlcyBmcm9tDQpwaXBlMC4gV2UgY2FuDQpzdGF0aWNhbGx5IHBhcnRpdGlvbiB0 aGVzZSBhcyBmb2xsb3dzOg0KwqAgwqAgwqAgwqAgKiA3eCByZWd1bGFyDQrCoCDCoCDCoCDCoCAq IDF4IGhpZ2ggcHJpb3JpdHkNCg0KVGhlIHJlbGV2YW50IHByaW9yaXRpZXMgY2FuIGJlIHNldCBz byB0aGF0IHN1Ym1pc3Npb25zIHRvDQp0aGUgaGlnaA0KcHJpb3JpdHkNCnJpbmcgd2lsbCBzdGFy dmUgdGhlIG90aGVyIGNvbXB1dGUgcmluZ3MgYW5kIHRoZSBHRlggcmluZy4NCg0KVGhlIGFtZGdw dSBzY2hlZHVsZXIgd2lsbCBvbmx5IHBsYWNlIGpvYnMgaW50byB0aGUgaGlnaA0KcHJpb3JpdHkN CnJpbmdzIGlmIHRoZQ0KY29udGV4dCBpcyBtYXJrZWQgYXMgaGlnaCBwcmlvcml0eS4gQW5kIGEg Y29ycmVzcG9uZGluZw0KcHJpb3JpdHkNCnNob3VsZCBiZQ0KYWRkZWQgdG8ga2VlcCB0cmFjayBv ZiB0aGlzIGluZm9ybWF0aW9uOg0KwqAgwqAgwqAqIEFNRF9TQ0hFRF9QUklPUklUWV9LRVJORUwN CsKgIMKgIMKgKiAtPiBBTURfU0NIRURfUFJJT1JJVFlfSElHSA0KwqAgwqAgwqAqIEFNRF9TQ0hF RF9QUklPUklUWV9OT1JNQUwNCg0KVGhlIHVzZXIgd2lsbCByZXF1ZXN0IGEgaGlnaCBwcmlvcml0 eSBjb250ZXh0IGJ5IHNldHRpbmcgYW4NCmFwcHJvcHJpYXRlIGZsYWcNCmluIGRybV9hbWRncHVf Y3R4X2luIChBTURHUFVfQ1RYX0hJR0hfUFJJT1JJVFkgb3Igc2ltaWxhcik6DQpodHRwczovL2dp dGh1Yi5jb20vdG9ydmFsZHMvbGludXgvYmxvYi9tYXN0ZXIvaW5jbHVkZS91YXBpL2RybS9hbWRn cHVfZHJtLmgjTDE2Mw0KDQoNCg0KVGhlIHNldHRpbmcgaXMgaW4gYSBwZXIgY29udGV4dCBsZXZl bCBzbyB0aGF0IHdlIGNhbjoNCsKgIMKgICogTWFpbnRhaW4gYSBjb25zaXN0ZW50IEZJRk8gb3Jk ZXJpbmcgb2YgYWxsDQpzdWJtaXNzaW9ucyB0byBhDQpjb250ZXh0DQrCoCDCoCAqIENyZWF0ZSBo aWdoIHByaW9yaXR5IGFuZCBub24taGlnaCBwcmlvcml0eSBjb250ZXh0cw0KaW4gdGhlIHNhbWUN CnByb2Nlc3MNCg0KSW1wbGVtZW50YXRpb24gYXBwcm9hY2ggMiAtIGR5bmFtaWMgcHJpb3JpdHkg cHJvZ3JhbW1pbmc6DQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0NCg0KU2ltaWxhciB0byB0aGUgYWJvdmUsIGJ1dCBpbnN0ZWFkIG9mIHBy b2dyYW1taW5nIHRoZQ0KcHJpb3JpdGllcyBhbmQNCmFtZGdwdV9pbml0KCkgdGltZSwgdGhlIFNX IHNjaGVkdWxlciB3aWxsIHJlcHJvZ3JhbSB0aGUNCnF1ZXVlIHByaW9yaXRpZXMNCmR5bmFtaWNh bGx5IHdoZW4gc2NoZWR1bGluZyBhIHRhc2suDQoNClRoaXMgd291bGQgaW52b2x2ZSBoYXZpbmcg YSBoYXJkd2FyZSBzcGVjaWZpYyBjYWxsYmFjayBmcm9tDQp0aGUNCnNjaGVkdWxlciB0bw0Kc2V0 IHRoZSBhcHByb3ByaWF0ZSBxdWV1ZSBwcmlvcml0eTogc2V0X3ByaW9yaXR5KGludCByaW5nLA0K aW50IGluZGV4LA0KaW50IHByaW9yaXR5KQ0KDQpEdXJpbmcgdGhpcyBjYWxsYmFjayB3ZSB3b3Vs ZCBoYXZlIHRvIGdyYWIgdGhlIFNSQk0gbXV0ZXgNCnRvIHBlcmZvcm0NCnRoZSBhcHByb3ByaWF0 ZQ0KSFcgcHJvZ3JhbW1pbmcsIGFuZCBJJ20gbm90IHJlYWxseSBzdXJlIGlmIHRoYXQgaXMNCnNv bWV0aGluZyB3ZQ0Kc2hvdWxkIGJlIGRvaW5nIGZyb20NCnRoZSBzY2hlZHVsZXIuDQoNCk9uIHRo ZSBwb3NpdGl2ZSBzaWRlLCB0aGlzIGFwcHJvYWNoIHdvdWxkIGFsbG93IHVzIHRvDQpwcm9ncmFt IGEgcmFuZ2Ugb2YNCnByaW9yaXRpZXMgZm9yIGpvYnMgaW5zdGVhZCBvZiBhIHNpbmdsZSAiaGln aCBwcmlvcml0eSINCnZhbHVlIiwNCmFjaGlldmluZw0Kc29tZXRoaW5nIHNpbWlsYXIgdG8gdGhl IG5pY2VuZXNzIEFQSSBhdmFpbGFibGUgZm9yIENQVQ0Kc2NoZWR1bGluZy4NCg0KSSdtIG5vdCBz dXJlIGlmIHRoaXMgZmxleGliaWxpdHkgaXMgc29tZXRoaW5nIHRoYXQgd2Ugd291bGQNCm5lZWQg Zm9yDQpvdXIgdXNlDQpjYXNlLCBidXQgaXQgbWlnaHQgYmUgdXNlZnVsIGluIG90aGVyIHNjZW5h cmlvcyAobXVsdGlwbGUNCnVzZXJzDQpzaGFyaW5nIGNvbXB1dGUNCnRpbWUgb24gYSBzZXJ2ZXIp Lg0KDQpUaGlzIGFwcHJvYWNoIHdvdWxkIHJlcXVpcmUgYSBuZXcgaW50IGZpZWxkIGluDQpkcm1f YW1kZ3B1X2N0eF9pbiwgb3INCnJlcHVycG9zaW5nDQpvZiB0aGUgZmxhZ3MgZmllbGQuDQoNCktu b3duIGN1cnJlbnQgb2JzdGFjbGVzOg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNClRoZSBT USBpcyBjdXJyZW50bHkgcHJvZ3JhbW1lZCB0byBkaXNyZWdhcmQgdGhlIEhRRA0KcHJpb3JpdGll cywgYW5kDQppbnN0ZWFkIGl0IHBpY2tzDQpqb2JzIGF0IHJhbmRvbS4gU2V0dGluZ3MgZnJvbSB0 aGUgc2hhZGVyIGl0c2VsZiBhcmUgYWxzbw0KZGlzcmVnYXJkZWQNCmFzIHRoaXMgaXMNCmNvbnNp ZGVyZWQgYSBwcml2aWxlZ2VkIGZpZWxkLg0KDQpFZmZlY3RpdmVseSB3ZSBjYW4gZ2V0IG91ciBj b21wdXRlIHdhdmVmcm9udCBsYXVuY2hlZCBBU0FQLA0KYnV0IHdlDQptaWdodCBub3QgZ2V0IHRo ZQ0KdGltZSB3ZSBuZWVkIG9uIHRoZSBTUS4NCg0KVGhlIGN1cnJlbnQgcHJvZ3JhbW1pbmcgd291 bGQgaGF2ZSB0byBiZSBjaGFuZ2VkIHRvIGFsbG93DQpwcmlvcml0eQ0KcHJvcGFnYXRpb24NCmZy b20gdGhlIEhRRCBpbnRvIHRoZSBTUS4NCg0KR2VuZXJpYyBhcHByb2FjaCBmb3IgYWxsIEhXIElQ czoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCkZvciBjb25zaXN0ZW5jeSBw dXJwb3NlcywgdGhlIGhpZ2ggcHJpb3JpdHkgY29udGV4dCBjYW4gYmUNCmVuYWJsZWQNCmZvciBh bGwgSFcgSVBzDQp3aXRoIHN1cHBvcnQgb2YgdGhlIFNXIHNjaGVkdWxlci4gVGhpcyB3aWxsIGZ1 bmN0aW9uDQpzaW1pbGFybHkgdG8gdGhlDQpjdXJyZW50DQpBTURfU0NIRURfUFJJT1JJVFlfS0VS TkVMIHByaW9yaXR5LCB3aGVyZSB0aGUgam9iIGNhbiBqdW1wDQphaGVhZCBvZg0KYW55dGhpbmcg bm90DQpjb21taXRlZCB0byB0aGUgSFcgcXVldWUuDQoNClRoZSBiZW5lZml0cyBvZiByZXF1ZXN0 aW5nIGEgaGlnaCBwcmlvcml0eSBjb250ZXh0IGZvciBhDQpub24tY29tcHV0ZQ0KcXVldWUgd2ls bA0KYmUgbGVzc2VyIChlLmcuIHVwIHRvIDEwcyBvZiB3YWl0IHRpbWUgaWYgYSBHRlggY29tbWFu ZCBpcw0Kc3R1Y2sgaW4NCmZyb250IG9mDQp5b3UpLCBidXQgaGF2aW5nIHRoZSBBUEkgaW4gcGxh Y2Ugd2lsbCBhbGxvdyB1cyB0byBlYXNpbHkNCmltcHJvdmUgdGhlDQppbXBsZW1lbnRhdGlvbg0K aW4gdGhlIGZ1dHVyZSBhcyBuZXcgZmVhdHVyZXMgYmVjb21lIGF2YWlsYWJsZSBpbiBuZXcNCmhh cmR3YXJlLg0KDQpGdXR1cmUgc3RlcHM6DQotLS0tLS0tLS0tLS0tDQoNCk9uY2Ugd2UgaGF2ZSBh biBhcHByb2FjaCBzZXR0bGVkLCBJIGNhbiB0YWtlIGNhcmUgb2YgdGhlDQppbXBsZW1lbnRhdGlv bi4NCg0KQWxzbywgb25jZSB0aGUgaW50ZXJmYWNlIGlzIG1vc3RseSBkZWNpZGVkLCB3ZSBjYW4g c3RhcnQNCnRoaW5raW5nIGFib3V0DQpleHBvc2luZyB0aGUgaGlnaCBwcmlvcml0eSBxdWV1ZSB0 aHJvdWdoIHJhZHYuDQoNClJlcXVlc3QgZm9yIGZlZWRiYWNrOg0KLS0tLS0tLS0tLS0tLS0tLS0t LS0tDQoNCldlIGFyZW4ndCBtYXJyaWVkIHRvIGFueSBvZiB0aGUgYXBwcm9hY2hlcyBvdXRsaW5l ZCBhYm92ZS4NCk91ciBnb2FsDQppcyB0bw0Kb2J0YWluIGEgbWVjaGFuaXNtIHRoYXQgd2lsbCBh bGxvdyB1cyB0byBjb21wbGV0ZSB0aGUNCnJlcHJvamVjdGlvbg0Kam9iIHdpdGhpbiBhDQpwcmVk aWN0YWJsZSBhbW91bnQgb2YgdGltZS4gU28gaWYgYW55b25lIGFueW9uZSBoYXMgYW55DQpzdWdn ZXN0aW9ucyBmb3INCmltcHJvdmVtZW50cyBvciBhbHRlcm5hdGl2ZSBzdHJhdGVnaWVzIHdlIGFy ZSBtb3JlIHRoYW4NCmhhcHB5IHRvIGhlYXINCnRoZW0uDQoNCklmIGFueSBvZiB0aGUgdGVjaG5p Y2FsIGluZm9ybWF0aW9uIGFib3ZlIGlzIGFsc28NCmluY29ycmVjdCwgZmVlbA0KZnJlZSB0byBw b2ludA0Kb3V0IG15IG1pc3VuZGVyc3RhbmRpbmdzLg0KDQpMb29raW5nIGZvcndhcmQgdG8gaGVh cmluZyBmcm9tIHlvdS4NCg0KUmVnYXJkcywNCkFuZHJlcw0KDQpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KYW1kLWdmeCBtYWlsaW5nIGxpc3QNCmFtZC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnDQpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2FtZC1nZngNCg0KDQphbWQtZ2Z4IEluZm8gUGFnZSAtICBsaXN0cy5m cmVlZGVza3RvcC5vcmcNCmxpc3RzLmZyZWVkZXNrdG9wLm9yZw0KVG8gc2VlIHRoZSBjb2xsZWN0 aW9uIG9mIHByaW9yIHBvc3RpbmdzIHRvIHRoZSBsaXN0LCB2aXNpdCB0aGUNCmFtZC1nZnggQXJj aGl2ZXMuIFVzaW5nIGFtZC1nZng6IFRvIHBvc3QgYSBtZXNzYWdlIHRvIGFsbA0KdGhlIGxpc3QN Cm1lbWJlcnMsIHNlbmQgZW1haWwgLi4uDQoNCg0KDQphbWQtZ2Z4IEluZm8gUGFnZSAtICBsaXN0 cy5mcmVlZGVza3RvcC5vcmcNCmxpc3RzLmZyZWVkZXNrdG9wLm9yZw0KVG8gc2VlIHRoZSBjb2xs ZWN0aW9uIG9mIHByaW9yIHBvc3RpbmdzIHRvIHRoZSBsaXN0LCB2aXNpdCB0aGUNCmFtZC1nZngg QXJjaGl2ZXMuIFVzaW5nIGFtZC1nZng6IFRvIHBvc3QgYSBtZXNzYWdlIHRvIGFsbA0KdGhlIGxp c3QNCm1lbWJlcnMsIHNlbmQgZW1haWwgLi4uDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCmFtZC1nZnggbWFpbGlu ZyBsaXN0DQphbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZw0KaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4DQoNCg0KX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCmFtZC1nZnggbWFpbGluZyBsaXN0DQph bWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZw0KaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4DQoNCg0KDQpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXw0KYW1kLWdmeCBtYWlsaW5nIGxpc3QNCmFtZC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnDQpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2FtZC1nZngNCg0KDQoNClNpbmNlcmVseSB5b3VycywNClNlcmd1ZWkgU2Fn YWxvdml0Y2gNCg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18NCmFtZC1nZnggbWFpbGluZyBsaXN0DQphbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZw0K aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4DQoN Cg0KDQoNCg0KDQpTaW5jZXJlbHkgeW91cnMsDQpTZXJndWVpIFNhZ2Fsb3ZpdGNoDQoNCg0KDQog ICANCiAgICAgICAgDQogICAgICAgCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1k LWdmeAo=