RE: [RFC] Proposal for Centralized TPM 2.0 Userspace Management Layer: systemd-tpmd
<[email protected]> Mon, 11 May 2026 13:46:35 +0000
| Newsgroups | dev.linux.lists.tpm2 |
|---|---|
| Message-ID | <[email protected]> |
SGkgQWtzaGF5LA0KDQpmaXJzdCBvZiBhbGwsIGxldCBtZSBzYXkgdGhhdCBJIGFtIHZlcnkgaGFw cHkgdG8gc2VlIHN1Y2ggaW50ZXJlc3QgaW4gbWFraW5nIHRoZSBUUE0gdXNhYmxlIHRocm91Z2hv dXQgTGludXguDQpUaGlzIGhhcyBhbHNvIGJlZW4gdGhlIG1haW4gZHJpdmVyIGZvciBtZSB0byBn ZXQgdXMgZ29pbmcuDQpOb3cgb24gdG8gc29tZSBvZiB5b3VyIHBvaW50czoNCg0KTWFpbiBtb3Rp dmF0aW9uOg0KSSB3b3VsZCBsb3ZlIHRvIHNlZSBmaXhlcyBmb3Igc2hvcnQgY29taW5ncyB5b3Ug c2VlIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBleGlzdGluZyB0cG0yLXRzcyBtb2R1bGVzDQppbnN0 ZWFkIG9mIGludHJvZHVjaW5nIHlldCBhbm90aGVyIEFQSSB0byB0aGUgZWNvIHN5c3RlbSBhbmQg dWx0aW1hdGVseSBsZWFkaW5nIHRvIG1vcmUgZnJhZ21lbnRhdGlvbg0KYW5kIGNvbmZ1c2lvbiBm b3IgZW5kIHVzZXJzLg0KDQpGQVBJIGtleXN0b3JlOg0KSSBrbm93IHRoYXQgdGhlIGZpbGUtYmFz ZWQgc3RvcmFnZSBvZiBrZXkgKG1ldGEpIGRhdGEgY2FuIGJlIGEgYml0IHByb2JsZW1hdGljIGF0 IHRpbWVzLg0KSG9uZXN0bHksIGl0IHdhcyBhIHJlc3RyaWN0aW9uIGludHJvZHVjZWQgYnkgdGlt ZSBhIHJlc291cmNlIGF2YWlsYWJpbGl0eS4NCkknZCBsb3ZlIHRvIHNlZSBhbHRlcm5hdGl2ZSBp bXBsZW1lbnRhdGlvbnMgdGhhdCBjb3VsZCBiZSBiYXNlZCBvbiBhIHN5c3RlbSBzZXJ2aWNlIG9y IG90aGVyIG1lYW5zLg0KSSdkIGFsc28gbG92ZSB0byBzZWUgYW4gaW1wbGVtZW50YXRpb24gdGhh dCBydW5zIG9uIHdpbmRvd3MuDQpXZSBkbyBoYXZlIGFuIGludGVybmFsIGFic3RyYWN0aW9uIGZv ciB0aGUga2V5c3RvcmUgaW4gRkFQSSBhbmQgSSdkIGludml0ZSB5b3UgdG8gcGxlYXNlIGNvbnRy aWJ1dGUgd2l0aA0KYWx0ZXJuYXRpdmUgaW1wbGVtZW50YXRpb25zIGhlcmUuDQpUaGlzIGNvdWxk IHZlcnkgbXVjaCBhbHNvIGluY2x1ZGUgVkFSTElOSyBvciBEQnVzIGJhc2VkIGNvbW11bmljYXRp b24gdG8gYSBrZXlzdG9yZSBzZXJ2aWNlLg0KDQpMYW5ndWFnZSBhZ25vc3RpY2l0eToNCldlIGFs cmVhZHkgaGF2ZSBiaW5kaW5ncyBmb3IgUHl0aG9uIGFuZCBSdXN0IGJlc2lkZXMgdGhlIGV4aXN0 aW5nIEMgaW1wbGVtZW50YXRpb24uDQpXZSBhbHNvIGhhdmUgYSBkbG9wZW4tYmFzZWQgQVBJIGZv ciBwcml2YXRlIGluY2x1c2lvbi4NCklmIHRoZXJlIGFyZSBtYWpvciB1c2VycyBiZXlvbmQgdGhl c2UgbGFuZ3VhZ2VzLCBJJ2QgcHJvcG9zYWwgdG8gbGV0J3MgYWRkIG1vcmUgYmluZGluZ3MuDQoN Ck9wZW5TU0w6DQpUaGVyZSBhbHJlYWR5IGV4aXN0cyB0aGUgdHBtMi1vcGVuc3NsIHByb3ZpZGVy IHRoYXQgYmFzaWNhbGx5IGRvZXMgd2hhdCB5b3UgZW52aXNpb24uDQpJJ2QgbG92ZSB0byBzZWUg dGhpcyBiZWluZyBleHRlbmRlZCB0byB1c2luZyBGQVBJIGtleXN0b3JlIGFzIHdlbGwgYXMgdGhl IEZBUEkgcG9saWN5IGxhbmd1YWdlDQpjYXBhYmlsaXRpZXMuDQpTbyB0aGUgdXNlIGNhc2UgeW91 IG9mZmVyIHNlZW1zIHRvIGFscmVhZHkgYmUgaW1wbGVtZW50ZWQgaGVyZS4NCklmIG5vdCBwbGVh c2UgbGV0IHVzIGtub3cgdGhlIHNwZWNpZmljIHNob3J0Y29taW5ncyB5b3Ugc2VlIGhlcmUuDQoN CkFQSSAodHBtX3NpZ25fcGF5bG9hZCk6DQpUaGlzIGxvb2tzIHZlcnkgdmVyeSBzaW1pbGFyIHRv IHRoZSBGYXBpX1NpZ24oKSBmdW5jdGlvbmFsaXR5Lg0KQ29taW5nIGJhY2sgdG8gbXkgZmlyc3Qg cG9pbnQgaGVyZSwgSU1ITyB3ZSBhcmUgYWxyZWFkeSBjbG9zZSB0byB3aGF0IHlvdSB3YW50IGFu ZCBJJ2QNCmxvdmUgdG8gaGVhciBhYm91dCBzcGVjaWZpYyBzaG9ydGNvbWluZ3MgYW5kIHRoZW4g dG8gc2VlIHRoZW0gYmVpbmcgYWRkcmVzc2VkIGluIHRoZSB0cG0yLXRzcw0KRkFQSSBtb2R1bGUg aXRzZWxmLCBpbnN0ZWFkIG9mIGNyZWF0aW5nIGEgbmV3ICJjb21wZXRpbmciIHNlcnZpY2UgaW1w bGVtZW50YXRpb24uDQoNCkJvb3QtdGltZSBwcm92aXNpb25pbmc6DQpUaGlzIGlzIGEgdG91Z2gg b25lLiBXZSd2ZSB0aG91Z2ggaGFyZCBhYm91dCBhZGRpbmcgYXV0b21hdGVkIHByb3Zpc2lvbmlu ZyBidXQgZGVjaWRlZCB0bw0KcG9zdHBvbmUgaXQgdW50aWwgdGhlIHVzZXIgY2FsbHMgRmFwaV9Q cm92aXNpb24oKSBpLmUuIHRzczJfcHJvdmlzaW9uLg0KVGhpcyBhbGxvd3MgY29uZmlndXJhdGlv biBvZiBwcmVmZXJyZWQgY3J5cHRvIHByb2ZpbGUgYW5kIG90aGVyIHRoaW5ncy4NCkFsc28gc2lu Y2UgcHJvdmlzaW9uaW5nIHJlcXVpcmVzIHVzZXIgaW50ZXJhY3Rpb24gZm9yIHBhc3N3b3JkIHNl dHRpbmcsIHdlIGRpZCBub3Qga25vdyBob3cNCnRvIGRvIGl0IGRpZmZlcmVudGx5Lg0KVGhhdCBi ZWluZyBzYWlkLCBJIGNvdWxkIHRvdGFsbHkgc2VlIHRoaXMgYmVpbmcgaW50ZWdyYXRpb24gImJl dHRlciIgd2l0aCBhIEdVSSBvciBzaW1pbGFyIG9yIGluc2lkZSB0aGUNCmRpc3RybyBpbnN0YWxs ZXJzLg0KDQpBdHRlc3RhdGlvbiBhbmQgc3VjaDoNCkhlcmUgd2Ugc3RpbGwgaGF2ZSB0aGUgYmln Z2VzdCBzaG9ydGNvbWluZy4gVGhlcmUgYXJlIGF0dGVtcHRzIGhlcmUgYW5kIHRoZXJlIGJ1dCB0 aGUgYmlnIHByb2JsZW0NCmhhcyBhbHdheXMgYmVlbiB0aGUgZ2VuZXJhdGlvbiBvZiByZWZlcmVu Y2UgdmFsdWVzIGFuZCB0aGUgYXNzZXNzbWVudCBvZiBRdW90ZXMuDQpUaGUgRmFwaV9RdW90ZSBj b21tYW5kIGFscmVhZHkgZ2l2ZXMgeW91IHRoZSBzeXN0ZW0gc3RhdGUgd2l0aCBhbGwgaXRzIGxv Z3MsIGJ1dCB3ZSBuZWVkIG5ldHdvcmsNCnByb3RvY29scyBhbmQgdGhlbiBzcGVjaWZpY2FsbHkg YSBiYWNrZW5kIHNlcnZpY2UgZm9yIGFzc2Vzc2luZyB0aGUgRXZlbnQgbG9ncy4gVGhpcyBpcyB3 aGVyZSB0aGUNCmJpZyB3b3JrIGxpdmVzLg0KDQpBbGwgdGhhdCBiZWluZyBzYWlkLCBJIGFtIHZl cnkgb3BlbiB0byBnZXR0aW5nIHN0dWZmIGludG8gdHBtMi10c3MgaW4gb3JkZXIgdG8gZmFjaWxp dGF0ZSBtb3JlIHVzZSBjYXNlcy4NCg0KTWF5YmUgd2UgY2FuIGhhdmUgc2VwYXJhdGUgZGlzY3Vz c2lvbnMgZm9yIHNvbWUgb2YgeW91ciBzaG9ydCBjb21pbmdzIGFuZCBnZXQgYSBiaXQgbW9yZSBp bnRvDQpkZXB0aCBvbiBlYWNoIG9mIHRoZXNlLg0KDQpMb29raW5nIGZvcndhcmQgdG8gbW9yZSBk aXNjdXNzaW9ucyBvbiB0aGlzIHRvcGljLg0KDQpDaGVlcnMsDQpBbmRyZWFzDQoNCg0KLS0tLS1P cmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IEFrc2hheSBIZW5kcmUgPGFoZW5kcmUyMDEwQGdt YWlsLmNvbT4gDQpTZW50OiBTb25udGFnLCAxMC4gTWFpIDIwMjYgMTA6MTENClRvOiB0cG0yQGxp c3RzLmxpbnV4LmRldg0KU3ViamVjdDogRndkOiBbUkZDXSBQcm9wb3NhbCBmb3IgQ2VudHJhbGl6 ZWQgVFBNIDIuMCBVc2Vyc3BhY2UgTWFuYWdlbWVudCBMYXllcjogc3lzdGVtZC10cG1kDQoNCkNh dXRpb246IFRoaXMgZS1tYWlsIG9yaWdpbmF0ZWQgb3V0c2lkZSBJbmZpbmVvbiBUZWNobm9sb2dp ZXMuIFBsZWFzZSBiZSBjYXV0aW91cyB3aGVuIHNoYXJpbmcgaW5mb3JtYXRpb24gb3Igb3Blbmlu ZyBhdHRhY2htZW50cyBlc3BlY2lhbGx5IGZyb20gdW5rbm93biBzZW5kZXJzLiBSZWZlciB0byBv dXIgaW50cmFuZXQgZ3VpZGU8aHR0cHM6Ly9pbnRyYW5ldC1jb250ZW50LmluZmluZW9uLmNvbS9l eHBsb3JlL2Fib3V0aW5maW5lb24vcnVsZXMvaW5mb3JtYXRpb25zZWN1cml0eS91Zy9Tb2NpYWxF bmdpbmVlcmluZy9QYWdlcy9Tb2NpYWxFbmdpbmVlcmluZ0VsZW1lbnRzX2VuLmFzcHg+IHRvIGhl bHAgeW91IGlkZW50aWZ5IFBoaXNoaW5nIGVtYWlsLg0KDQoNCg0KSSBhbSBjcm9zcy1wb3N0aW5n IHByb3Bvc2FsIGZvciBbUkZDOiBzeXN0ZW1kLXRwbWRdIGZvciB0aGUgcmlnaHQgYXVkaWVuY2Uu DQoNCi0tLS0tLS0tLS0gRm9yd2FyZGVkIG1lc3NhZ2UgLS0tLS0tLS0tDQpGcm9tOiBBa3NoYXkg SGVuZHJlIDxhaGVuZHJlMjAxMEBnbWFpbC5jb20+DQpEYXRlOiBTdW4sIDEwIE1heSAyMDI2IGF0 IDEzOjMxDQpTdWJqZWN0OiBbUkZDXSBQcm9wb3NhbCBmb3IgQ2VudHJhbGl6ZWQgVFBNIDIuMCBV c2Vyc3BhY2UgTWFuYWdlbWVudA0KTGF5ZXI6IHN5c3RlbWQtdHBtZA0KVG86IDxzeXN0ZW1kLWRl dmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZz4NCg0KDQpIZWxsbyBhbGwsDQoNCkkgYW0gc3VibWl0 dGluZyBhIHByb3Bvc2FsIHRvIGludHJvZHVjZSBzeXN0ZW1kLXRwbWQsIGEgY2VudHJhbGl6ZWQg VFBNIDIuMCB1c2Vyc3BhY2UgbWFuYWdlbWVudCBsYXllciBkZXNpZ25lZCB0byBzZXJ2ZSBhcyB0 aGUgZm91bmRhdGlvbiBmb3IgVFBNIGludGVncmF0aW9uIG9uIExpbnV4LiBUaGlzIHByb3Bvc2Fs IGRlbGliZXJhdGVseSBmb2N1c2VzIG9uIGFyY2hpdGVjdHVyYWwgZGVzaWduIGluIG9yZGVyIHRv IHJlYWNoIGNvbnNlbnN1cyBiZWZvcmUgZGl2aW5nIGludG8gaW1wbGVtZW50YXRpb24gZGV0YWls cy4NCg0KVGFibGUgb2YgQ29udGVudHMNCj09PT09PT09PT09PT09PT09PT09PT09PQ0KMS4gUHJv YmxlbSBTdGF0ZW1lbnQNCjIuIFByb3Bvc2VkIFNvbHV0aW9uOiBzeXN0ZW1kLXRwbWQgQXJjaGl0 ZWN0dXJlDQogICAyLjEgQm9vdC1UaW1lIFByb3Zpc2lvbmluZyBhbmQgU3RhdGUgRXNjcm93DQog ICAyLjIgQXBwbGljYXRpb24gRWNvc3lzdGVtIGFuZCBBcmNoaXRlY3R1cmFsIExheWVycw0KICAg Mi4zIFN0YW5kYXJkIEludGVyYWN0aW9uIFNlcXVlbmNlDQozLiBTdXBwb3J0ZWQgSW50ZXJhY3Rp b24gUGF0aHM6IFZhcmxpbmsgYW5kIE9wZW5TU0wgMy4wDQogICAzLjEgUGF0aCBBOiBUaGUgT3Bl blNTTCAzLjAgUHJvdmlkZXINCiAgIDMuMiBQYXRoIEI6IE5hdGl2ZSBWYXJsaW5rIEFQSSAoaW8u c3lzdGVtZC5UcG0pIDQuIFN5c3RlbSBBZG1pbmlzdHJhdGlvbiBhbmQgTWFuYWdlZCBFbnZpcm9u bWVudHMNCiAgIDQuMSBTdGF0ZSBNYW5hZ2VtZW50IGFuZCBEYWVtb24gUmVjb3ZlcnkNCiAgIDQu MiBDb21tYW5kIExpbmUgSW50ZWdyYXRpb24gYW5kIEFjY2VzcyBDb250cm9sIDUuIFNlY3VyaXR5 LCBTYW5kYm94aW5nLCBhbmQgU2ltdWxhdGlvbg0KICAgNS4xIEhhcmRlbmVkIFNlcnZpY2UgQ29u ZmluZW1lbnQNCiAgIDUuMiBTaW11bGF0b3IgU3VwcG9ydCBhbmQgRmFsbGJhY2sgUHJldmVudGlv biA2LiBGdXR1cmUgQ2FwYWJpbGl0aWVzIGFuZCBTb2x2YWJsZSBQcm9ibGVtcw0KICAgNi4xIFNl YW1sZXNzIEZpcm13YXJlIFVwZGF0ZXMgKFNvbHZpbmcgdGhlIExVS1MgLyBmd3VwZCBMb2Nrb3V0 KQ0KICAgNi4yIFN0YW5kYXJkaXppbmcgVFBNLUJhY2tlZCBQYXNza2V5cyBmb3IgdGhlIExpbnV4 IERlc2t0b3ANCiAgIDYuMyBTdGFiaWxpemluZyBDb250aW51b3VzIFJlbW90ZSBBdHRlc3RhdGlv biBmb3IgRmxlZXQgTWFuYWdlbWVudA0KICAgNi40IFNlY3VyZSBTU0ggS2V5IFByb3RlY3Rpb24N CiAgIDYuNSBDb25maWRlbnRpYWwgQ29tcHV0aW5nIGFuZCB2VFBNIFN0YXRlIE1hbmFnZW1lbnQN Cg0KMS4gUHJvYmxlbSBTdGF0ZW1lbnQNCj09PT09PT09PT09PT09PT09PT09PT09PQ0KV2hpbGUg dGhlIExpbnV4IGtlcm5lbCBwcm92aWRlcyByb2J1c3QgbG93LWxldmVsIG11bHRpcGxleGluZyBm b3IgdGhlIFRydXN0ZWQgUGxhdGZvcm0gTW9kdWxlIHZpYSAvZGV2L3RwbXJtMCwgdGhlIHVzZXJz cGFjZSBlY29zeXN0ZW0gY3VycmVudGx5IGxhY2tzIGEgY2VudHJhbGl6ZWQsIHN0YXRlZnVsIGJy b2tlciB0byBtYW5hZ2UgaGFyZHdhcmUgY3J5cHRvZ3JhcGh5LiBUbyB1bmRlcnN0YW5kIHRoZXNl IGdhcHMsIGl0IGlzIHVzZWZ1bCB0byBjb21wYXJlIHRoZSBMaW51eCBsYW5kc2NhcGUgd2l0aCB0 aGUgZXN0YWJsaXNoZWQgV2luZG93cyBwYXJhZGlnbS4gT24gV2luZG93cywgaGFyZHdhcmUgY3J5 cHRvZ3JhcGh5IGlzIGhhbmRsZWQgc2VhbWxlc3NseSB2aWEgdGhlIENyeXB0b2dyYXBoeSBBUEk6 DQpOZXh0IEdlbmVyYXRpb24gKENORykgYW5kIHRoZSBQbGF0Zm9ybSBDcnlwdG8gUHJvdmlkZXIg KFBDUCkuIFRoZSBXaW5kb3dzIG9wZXJhdGluZyBzeXN0ZW0gYXV0b21hdGljYWxseSB0YWtlcyBv d25lcnNoaXAgb2YgdGhlIFRQTSBkdXJpbmcgYm9vdCwgc2VjdXJlbHkgZXNjcm93cyB0aGUgb3du ZXIgcGFzc3dvcmQsIGFuZCBwcm92aWRlcyBhIHVuaWZpZWQsIG11bHRpLXRlbmFudCBicm9rZXIg Zm9yIGFsbCBhcHBsaWNhdGlvbnMuIERldmVsb3BlcnMgc2ltcGx5IHJlcXVlc3QgYSBjcnlwdG9n cmFwaGljIG9wZXJhdGlvbiwgYW5kIHRoZSBPUyBoYW5kbGVzIHRoZSBoYXJkd2FyZSBzdGF0ZSwg Y29udGV4dCBzd2FwcGluZywgYW5kIHNlY3VyaXR5IGF1dGhvcml6YXRpb25zIGF1dG9tYXRpY2Fs bHkuDQoNCkluIHN0YXJrIGNvbnRyYXN0LCB0aGUgTGludXggZWNvc3lzdGVtIGRlbGVnYXRlcyBo YXJkd2FyZSBzdGF0ZSBtYW5hZ2VtZW50IGFuZCBjcnlwdG9ncmFwaGljIHNlc3Npb24gZXN0YWJs aXNobWVudCBkaXJlY3RseSB0byB0aGUgYXBwbGljYXRpb25zIHRoZW1zZWx2ZXMuIFRoaXMgZnJh Z21lbnRlZCBhcHByb2FjaCBjcmVhdGVzIHNldmVyZSBhcmNoaXRlY3R1cmFsIGdhcHMgdGhhdCBp bXBhY3QgbXVsdGlwbGUgZ3JvdXBzOg0KDQoqIEFwcGxpY2F0aW9uIERldmVsb3BlcnM6IEVuaGFu Y2VkIFN5c3RlbSBBUEkgKEVTQVBJKSBhbmQgdGhlIG9wZXJhdGlvbmFsIGZyYWdpbGl0eSBvZiB0 aGUgRmVhdHVyZSBBUEkgKEZBUEkpLiBXaGlsZSBFU0FQSSByZXF1aXJlcyBleHBlcnQtbGV2ZWwg aGFyZHdhcmUgbWFuYWdlbWVudOKAlHN1Y2ggYXMgbWFudWFsbHkgaW52b2tpbmcgVFBNMl9DcmVh dGVQcmltYXJ5IGZvciBTUksgcHJvdmlzaW9uaW5n4oCUaXQgcmlza3MgbG9ja2luZyBvdXQgYXBw bGljYXRpb25zIGlmIHRoZSBPd25lciBIaWVyYXJjaHkgaXMgcGFzc3dvcmQtcHJvdGVjdGVkLiBD b252ZXJzZWx5LCBGQVBJIHNpbXBsaWZpZXMgcHJvdmlzaW9uaW5nIGJ1dCBpbnRyb2R1Y2VzIGEg ZnJhZ2lsZSBmaWxlLWJhc2VkIGtleXN0b3JlICh0eXBpY2FsbHkgL3Zhci9saWIvdHBtMi10c3Mv c3lzdGVtL2tleXN0b3JlKSB0aGF0IGZyZXF1ZW50bHkgdHJpZ2dlcnMgZmF0YWwgMHgwMDA2MDAw YiAoUGVybWlzc2lvbiBEZW5pZWQpIGVycm9ycyBkdXJpbmcgY29uY3VycmVudCBhY2Nlc3MuDQoq IFN5c3RlbSBBZG1pbmlzdHJhdG9yczogQ3VycmVudGx5LCBiZWNhdXNlIHRoZXJlIGlzIG5vIGNl bnRyYWxpemVkIGRhZW1vbiB0byBhdXRvbWF0aWNhbGx5IHByb3Zpc2lvbiB0aGUgVFBNIGFuZCBl c3RhYmxpc2ggYSBzaGFyZWQgU3RvcmFnZSBSb290IEtleSAoU1JLKSwgYXBwbGljYXRpb25zIG9m dGVuIGF0dGVtcHQgdG8gY3JlYXRlIHRoZWlyIG93biBwcmltYXJ5IGtleXMgZGlyZWN0bHkgdW5k ZXIgdGhlIE93bmVyIGhpZXJhcmNoeS4gSWYgYW4gYWRtaW5pc3RyYXRvciBmb2xsb3dzIHNlY3Vy aXR5IGJlc3QgcHJhY3RpY2VzIGFuZCBwYXNzd29yZC1wcm90ZWN0cyB0aGUgT3duZXIgaGllcmFy Y2h5LCBjb3JlIE9TIHV0aWxpdGllcyBsaWtlIHN5c3RlbWQtY3J5cHRlbnJvbGwgaW1tZWRpYXRl bHkgZmFpbCB0byBiaW5kIExVS1MyIHZvbHVtZXMsIHRocm93aW5nIGFuIDB4MDAwMDA5YTIgYXV0 aG9yaXphdGlvbiBlcnJvci4NCkFkbWluaXN0cmF0b3JzIGFyZSBjYXVnaHQgaW4gYSBwYXJhZG94 OiBsZWF2ZSB0aGUgVFBNIE93bmVyIGhpZXJhcmNoeSBlbnRpcmVseSB1bnByb3RlY3RlZCwgb3Ig YnJlYWsgc3lzdGVtIGZ1bmN0aW9uYWxpdHkuDQoqIE1hbmFnZWQgRW50ZXJwcmlzZSBGbGVldHM6 IEluIGxhcmdlIGRlcGxveW1lbnRzLCB0aGUgbGFjayBvZiBhIGNlbnRyYWxpemVkIHBvbGljeSBi cm9rZXIgbWVhbnMgdGhhdCBzdGFuZGFyZCBzb2Z0d2FyZSBhbmQga2VybmVsIHVwZGF0ZXMgYWx0 ZXIgUGxhdGZvcm0gQ29uZmlndXJhdGlvbiBSZWdpc3RlcnMgKFBDUnMpLiBUaGlzIGFyYml0cmFy aWx5IGJyZWFrcyBmcmFnaWxlIGxvY2FsIHRydXN0IGNoYWlucywgbG9ja3MgdXNlcnMgb3V0IG9m IGVuY3J5cHRlZCBkaXNrcywgYW5kIGNhdXNlcyBkaXNydXB0aXZlIGZhbHNlIHBvc2l0aXZlcyBp biBjb250aW51b3VzIHJlbW90ZSBhdHRlc3RhdGlvbiBmcmFtZXdvcmtzLg0KDQoyLiBQcm9wb3Nl ZCBTb2x1dGlvbjogc3lzdGVtZC10cG1kIEFyY2hpdGVjdHVyZSA9PT09PT09PT09PT09PT09PT09 PT09PT0gc3lzdGVtZC10cG1kIGlzIHByb3Bvc2VkIGFzIGEgcGVyc2lzdGVudCwgc3RhdGVmdWwg dXNlcnNwYWNlIG1hbmFnZW1lbnQgbGF5ZXIgYWN0aW5nIGFzIHRoZSBhYnNvbHV0ZSBmb3VuZGF0 aW9uIGZvciBUUE0gaW50ZWdyYXRpb24gb24gTGludXguIEl0IG9wZXJhdGVzIGFzIGEgaGlnaGx5 IHByaXZpbGVnZWQgc3lzdGVtIGRhZW1vbiBzaXR0aW5nIGRpcmVjdGx5IGJldHdlZW4gdGhlIGlu LWtlcm5lbCByZXNvdXJjZSBtYW5hZ2VyIGFuZCB0aGUgdW5wcml2aWxlZ2VkIGFwcGxpY2F0aW9u IGxheWVyLCBwcm92aWRpbmcgdW5pZmllZCBhYnN0cmFjdGlvbiBhbmQgc3RhdGUgZXNjcm93Lg0K DQoyLjEgQm9vdC1UaW1lIFByb3Zpc2lvbmluZyBhbmQgU3RhdGUgRXNjcm93DQotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0NClVwb24gaW5pdGlhbGl6YXRpb24sIHN5c3RlbWQtdHBtZCBldmFsdWF0 ZXMgdGhlIGhhcmR3YXJlIHByb3Zpc2lvbmluZyBzdGF0ZS4gSWYgdW5wcm92aXNpb25lZCwgaXQg YWN0cyBiYXNlZCBvbiBhIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyIChlLmcuLCBQcm92aXNpb25p bmdNb2RlPSk6DQoqIEF1dG8gKERlZmF1bHQpOiBJdCBhdXRvbWF0aWNhbGx5IHRha2VzIG93bmVy c2hpcCwgZ2VuZXJhdGluZyBoaWdoLWVudHJvcHkgY3J5cHRvZ3JhcGhpYyBzZWNyZXRzIGZvciB0 aGUgT3duZXIsIEVuZG9yc2VtZW50LCBhbmQgTG9ja291dCBoaWVyYXJjaGllcy4gSXQgaW52b2tl cyBUUE0yX0NyZWF0ZVByaW1hcnkgdG8gZXN0YWJsaXNoIHRoZSBTdG9yYWdlIFJvb3QgS2V5IChT UkspIGFuZCB1dGlsaXplcyBUUE0yX0V2aWN0Q29udHJvbCB0byBsb2NrIHRoZSBTUksgaW50byB0 aGUgVFBNJ3MgcGVyc2lzdGVudCBOVlJBTSBhdCB0aGUgVENHLXN0YW5kYXJkaXplZCBoYW5kbGUg MHg4MTAwMDAwMS4gVGhlIFNSSyBpcyBpbnN0YW50aWF0ZWQgd2l0aCBhbiBlbXB0eSBhdXRob3Jp emF0aW9uIHZhbHVlLCBhbGxvd2luZyB0aGUgZGFlbW9uIHRvIHV0aWxpemUgaXQgYXMgYSB1bml2 ZXJzYWwgcGFyZW50IGZvciBlbmNyeXB0aW5nIGFuZCBkZWNyeXB0aW5nIGFwcGxpY2F0aW9uLXNw ZWNpZmljIGNoaWxkIGtleXMgd2l0aG91dCBuZWVkaW5nIHRvIHVubG9jayB0aGUgcHJvdGVjdGVk IE93bmVyIGhpZXJhcmNoeS4NCiogRGVmZXJyZWQ6IFRvIHByZXZlbnQgY29uZmxpY3RzIHdpdGgg ZW50ZXJwcmlzZSBpbmZyYXN0cnVjdHVyZS1hcy1jb2RlIG9yIENJL0NEIHBpcGVsaW5lcyB0aGF0 IHN0cmljdGx5IG1hbmFnZSBkZXBsb3ltZW50IHN0YXRlcywgcHJvdmlzaW9uaW5nIGNhbiBiZSBk ZWZlcnJlZC4gSW4gdGhpcyBtb2RlLCBzeXN0ZW1kLXRwbWQgd2lsbCB3YWl0IGZvciBleHRlcm5h bCB0b29saW5nIHRvIHRyaWdnZXIgdGhlIHByb3Zpc2lvbmluZyBwcm9jZXNzIHZpYSBhbiBleHBs aWNpdCBhZG1pbmlzdHJhdGl2ZSBjb21tYW5kLg0KDQoyLjIgQXBwbGljYXRpb24gRWNvc3lzdGVt IGFuZCBBcmNoaXRlY3R1cmFsIExheWVycw0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpUbyBl bnN1cmUgYnJvYWQgZWNvc3lzdGVtIGNvbXBhdGliaWxpdHksIHN5c3RlbWQtdHBtZCBzdXBwb3J0 cyB0d28gcHJpbWFyeSBpbnRlcmFjdGlvbiBwYXRocyBmb3IgYXBwbGljYXRpb25zOiBhIG5hdGl2 ZSBWYXJsaW5rIEFQSSBhbmQgYSBmdWxseSBzdXBwb3J0ZWQgT3BlblNTTCAzLjAgUHJvdmlkZXIu IFRoZSBhcmNoaXRlY3R1cmUgaXMgZGVmaW5lZCBhcw0KZm9sbG93czoNCg0KKiBMYXllciAxOiBB cHBsaWNhdGlvbnMgKERhZW1vbnMsIHdlYiBzZXJ2ZXJzLCBzeXN0ZW1kLWNyeXB0ZW5yb2xsKSAt IENvbnN1bWVycyBvZiBjcnlwdG9ncmFwaGljIG9wZXJhdGlvbnMuIEFwcGxpY2F0aW9ucyByZXF1 aXJlIHplcm8ga25vd2xlZGdlIG9mIFRQTSBieXRlLW1hcnNoYWxpbmcgYW5kIGRvIG5vdCByZXF1 aXJlIG1lbWJlcnNoaXAgaW4gdGhlIHRzcyBncm91cC4NCiogTGF5ZXIgMjogSW50ZXJhY3Rpb24g SW50ZXJmYWNlcyAoVmFybGluayAmIE9wZW5TU0wgMy4wKSAtIEFwcGxpY2F0aW9ucyBpbnRlcmZh Y2Ugd2l0aCB0aGUgYnJva2VyIGVpdGhlciB0cmFuc3BhcmVudGx5IHZpYSBzdGFuZGFyZCBPcGVu U1NMIEVWUCBBUElzICh1c2luZyB0aGUgc3lzdGVtZC10cG1kIE9wZW5TU0wgcHJvdmlkZXIpIG9y IGRpcmVjdGx5IHZpYSBwbGFpbi10ZXh0IEpTT04gb3ZlciBBRl9VTklYIHNvY2tldHMgKGlvLnN5 c3RlbWQuVHBtKS4NCkJvdGggcGF0aHMgcHJvdmlkZSBzdHJpY3QgcHJvY2VzcyBpc29sYXRpb24s IGVuc3VyaW5nIGFwcGxpY2F0aW9ucyBuZXZlciBwb3NzZXNzIGhhcmR3YXJlIGZpbGUgZGVzY3Jp cHRvcnMuDQoqIExheWVyIDM6IFRoZSBCcm9rZXIgKHN5c3RlbWQtdHBtZCkgLSBTdGF0ZWZ1bCBl bmdpbmUgdGhhdCBzZWN1cmVseSBlc2Nyb3dzIGhpZXJhcmNoeSBwYXNzd29yZHMsIHBhcnNlcyBp bmNvbWluZyByZXF1ZXN0cywgZW5mb3JjZXMgY2dyb3VwL3VzZXIgYWNjZXNzIGNvbnRyb2xzLCBh bmQgZXZhbHVhdGVzIFBDUiBwb2xpY2llcy4NCiogTGF5ZXIgNDogVENHIFN0YWNrICh0cG0yLXRz cyAvIEVTQVBJKSAtIEVtYmVkZGVkIHN0cmljdGx5IHdpdGhpbiB0aGUgZGFlbW9uLiBUcmFuc2xh dGVzIGhpZ2gtbGV2ZWwgcmVxdWVzdHMgaW50byBUQ0ctY29tcGxpYW50IGJ5dGUgc3RyZWFtcyBh bmQgZXN0YWJsaXNoZXMgZW5jcnlwdGVkIEhNQUMgYnVzIHNlc3Npb25zLg0KKiBMYXllciA1OiBL ZXJuZWwgJiBIVyAoL2Rldi90cG1ybTAgJiBQaHlzaWNhbCBUUE0pIC0gVGhlIExpbnV4IGtlcm5l bCByZXNvdXJjZSBtYW5hZ2VyIHRoYXQgbXVsdGlwbGV4ZXMgdGhlIHBoeXNpY2FsLCBkaXNjcmV0 ZSBUUE0gMi4wIGNoaXAuDQoNCjIuMyBTdGFuZGFyZCBJbnRlcmFjdGlvbiBTZXF1ZW5jZQ0KLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpTdGVwIDEuIFJlcXVlc3QgRm9ybXVsYXRpb246IEFuIHVu cHJpdmlsZWdlZCBhcHBsaWNhdGlvbiAoZS5nLiwgYSB3ZWINCnNlcnZlcikgbmVlZHMgdG8gc2ln biBhIFRMUyBoYW5kc2hha2UuIEl0IHJlYWRzIGl0cyBlbmNyeXB0ZWQgcHJpdmF0ZUJsb2IgYW5k IHB1YmxpY0Jsb2IgZnJvbSB0aGUgc3RhbmRhcmQgZmlsZXN5c3RlbS4NClN0ZXAgMi4gVHJhbnNt aXNzaW9uOiBUaGUgYXBwbGljYXRpb24gaXNzdWVzIGEgc2lnbmluZyByZXF1ZXN0IGVpdGhlciB0 aHJvdWdoIHRoZSBPcGVuU1NMIDMuMCBwcm92aWRlciBvciBuYXRpdmVseSB2aWEgYSBKU09OIFZh cmxpbmsgc29ja2V0Lg0KU3RlcCAzLiBCcm9rZXIgRXhlY3V0aW9uOiBzeXN0ZW1kLXRwbWQgcmVj ZWl2ZXMgdGhlIHJlcXVlc3QsIHV0aWxpemVzIHRoZSBwdWJsaWMsIGVtcHR5LXBhc3N3b3JkIFNS SyB0byBsb2FkIHRoZSBlbmNyeXB0ZWQgcHJpdmF0ZSBibG9iIGludG8gdGhlIFRQTSdzIHZvbGF0 aWxlIG1lbW9yeSwgYW5kIGluc3RydWN0cyB0aGUgaGFyZHdhcmUgdG8gc2lnbiB0aGUgZGlnZXN0 Lg0KU3RlcCA0LiBSZXNwb25zZSBEZWxpdmVyeTogVGhlIFRQTSBvdXRwdXRzIHRoZSBzaWduYXR1 cmUuIHN5c3RlbWQtdHBtZCBjbGVhcnMgdGhlIHRyYW5zaWVudCBjb250ZXh0IGFuZCByZXR1cm5z IHRoZSBzaWduYXR1cmUgdG8gdGhlIGFwcGxpY2F0aW9uIHZpYSB0aGUgY2hvc2VuIGludGVyZmFj ZS4gVGhlIGFwcGxpY2F0aW9uIHN1Y2Nlc3NmdWxseSB1dGlsaXplZCB0aGUgaGFyZHdhcmUgd2l0 aG91dCBldmVyIHBvc3Nlc3NpbmcgcGVybWlzc2lvbnMgdG8gdGhlIFRQTSBkZXZpY2Ugbm9kZS4N Cg0KMy4gU3VwcG9ydGVkIEludGVyYWN0aW9uIFBhdGhzOiBWYXJsaW5rIGFuZCBPcGVuU1NMIDMu MCA9PT09PT09PT09PT09PT09PT09PT09PT0gc3lzdGVtZC10cG1kIHByb3ZpZGVzIHR3byByb2J1 c3QgYXZlbnVlcyBmb3IgYXBwbGljYXRpb24gaW50ZWdyYXRpb24sIGVuc3VyaW5nIGJvdGggbGVn YWN5IGNvbXBhdGliaWxpdHkgYW5kIG1vZGVybiwgbGlnaHR3ZWlnaHQgSVBDLg0KDQozLjEgUGF0 aCBBOiBUaGUgT3BlblNTTCAzLjAgUHJvdmlkZXINCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K VG8gZ3VhcmFudGVlIGltbWVkaWF0ZSwgc2VhbWxlc3MgaW50ZWdyYXRpb24gZm9yIHRoZSB2YXN0 IG1ham9yaXR5IG9mIHRoZSBMaW51eCBlY29zeXN0ZW0gKGluY2x1ZGluZyB3ZWIgc2VydmVycywg VlBOIGRhZW1vbnMsIGFuZCBTU0ggYWdlbnRzKSwgc3lzdGVtZC10cG1kIHNoaXBzIHdpdGggYSBk ZWRpY2F0ZWQgT3BlblNTTCAzLjAgcHJvdmlkZXIgbW9kdWxlLg0KKiBUcmFuc3BhcmVudCBFeGVj dXRpb246IFdoZW4gY29uZmlndXJlZCBpbiBvcGVuc3NsLmNuZiwgYXBwbGljYXRpb25zIHV0aWxp emluZyBzdGFuZGFyZCBPcGVuU1NMIEVWUCBBUElzIHdpbGwgaGF2ZSB0aGVpciBjcnlwdG9ncmFw aGljIG9wZXJhdGlvbnMgdHJhbnNwYXJlbnRseSBpbnRlcmNlcHRlZCBieSB0aGUgcHJvdmlkZXIu DQoqIFN0YXRlbGVzcyBSb3V0aW5nOiBUaGUgT3BlblNTTCBwcm92aWRlciBhY3RzIGFzIGEgbGln aHR3ZWlnaHQgY2xpZW50LCBwYWNrYWdpbmcgdGhlIE9wZW5TU0wgbWVtb3J5IGJ1ZmZlcnMgaW50 byBWYXJsaW5rIHBheWxvYWRzIGFuZCByb3V0aW5nIHRoZW0gdG8gdGhlIHN5c3RlbWQtdHBtZCBk YWVtb24uDQoqIFplcm8tQ29kZSBDaGFuZ2VzOiBFeGlzdGluZyBDL0MrKywgUnVzdCwgYW5kIFB5 dGhvbiBhcHBsaWNhdGlvbnMgcmVseWluZyBvbiBPcGVuU1NMIGNhbiBsZXZlcmFnZSBUUE0gaGFy ZHdhcmUtYmFja2VkIGtleXMgd2l0aCBtaW5pbWFsIGNoYW5nZXMgdG8gYXBwbGljYXRpb24gY29k ZS4NCg0KMy4yIFBhdGggQjogTmF0aXZlIFZhcmxpbmsgQVBJIChpby5zeXN0ZW1kLlRwbSkNCi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KRm9yIGFwcGxpY2F0aW9ucyBkZXNpcmluZyB0byBjb21t dW5pY2F0ZSBkaXJlY3RseSB3aXRoIHRoZSBicm9rZXIgd2l0aG91dCBhbiBPcGVuU1NMIGRlcGVu ZGVuY3kgKHN1Y2ggYXMgZWFybHktYm9vdCB1dGlsaXRpZXMgYW5kIHN5c3RlbWQgbmF0aXZlIHRv b2xzKSwgc3lzdGVtZC10cG1kIGV4cG9zZXMgYSBWYXJsaW5rIGludGVyZmFjZSB1dGlsaXppbmcg SlNPTiBvdmVyIEFGX1VOSVggc29ja2V0cy4NCg0KVGhlIG1ldGhvZHMgZXhwb3NlZCB1bmRlciB0 aGUgaW8uc3lzdGVtZC5UcG0gaW50ZXJmYWNlIGluY2x1ZGU6DQoqIEdlbmVyYXRlS2V5OiBHZW5l cmF0ZXMgYSBuZXcgYXN5bW1ldHJpYyBrZXkgcGFpciBvciBzeW1tZXRyaWMgc2VjcmV0IGJvdW5k IHRvIHRoZSBUUE0uIE91dHB1dHMgdGhlIGVuY3J5cHRlZCBtYXJzaGFsZWQgc3RydWN0dXJlcyBm b3IgbG9jYWwgYXBwbGljYXRpb24gc3RvcmFnZS4NCiogU2lnbkRhdGE6IExvYWRzIHRoZSBwcm92 aWRlZCBrZXkgYmxvYnMgaW50byB0aGUgVFBNIHVzaW5nIHRoZSBTUksgYW5kIHNpZ25zIHRoZSBw cm92aWRlZCBkaWdlc3QuDQoqIFZlcmlmeVNpZ25hdHVyZTogVmVyaWZpZXMgYSBjcnlwdG9ncmFw aGljIHNpZ25hdHVyZSBhZ2FpbnN0IGEgZ2l2ZW4gZGlnZXN0IHV0aWxpemluZyB0aGUgcHVibGlj IGJsb2IuDQoqIFNlYWxTZWNyZXQ6IFNlYWxzIGEgcGxhaW50ZXh0IHNlY3JldCBpbnRvIHRoZSBU UE0sIG9wdGlvbmFsbHkgYmluZGluZyBpdCB0byB0aGUgY3VycmVudCBzdGF0ZSBvZiBzcGVjaWZp YyBQQ1JzLg0KKiBVbnNlYWxTZWNyZXQ6IFVuc2VhbHMgYSBwcmV2aW91c2x5IHNlYWxlZCBzZWNy ZXQgZnJvbSB0aGUgVFBNLCByZXR1cm5pbmcgdGhlIHBsYWludGV4dCBvbmx5IGlmIHRoZSBQQ1Ig c3RhdGVzIG1hdGNoLg0KDQpCZWNhdXNlIHRoZSBBUEkgcmVsaWVzIG9uIFZhcmxpbmssIG5hdGl2 ZSBkZXZlbG9wZXJzIGNhbiB1dGlsaXplIGxpYnN5c3RlbWQncyBzZC12YXJsaW5rLmggdG8gcmVx dWVzdCBjcnlwdG9ncmFwaGljIG9wZXJhdGlvbnMNCnN5bmNocm9ub3VzbHk6DQoNCiNpbmNsdWRl IDxzdGRpby5oPg0KI2luY2x1ZGUgPHN5c3RlbWQvc2QtdmFybGluay5oPg0KI2luY2x1ZGUgPHN5 c3RlbWQvc2QtanNvbi5oPg0KDQppbnQgdHBtX3NpZ25fcGF5bG9hZChjb25zdCBjaGFyICpwcml2 X2Jsb2IsIGNvbnN0IGNoYXIgKnB1Yl9ibG9iLCBjb25zdCBjaGFyICpkaWdlc3QpIHsNCiAgICBz ZF92YXJsaW5rICpsaW5rID0gTlVMTDsNCiAgICBzZF9qc29uX3ZhcmlhbnQgKmFyZ3MgPSBOVUxM Ow0KICAgIHNkX2pzb25fdmFyaWFudCAqcmVwbHkgPSBOVUxMOw0KICAgIC8qIDEuIENvbm5lY3Qg dG8gdGhlIHN5c3RlbWQtdHBtZCBWYXJsaW5rIHNvY2tldCAqLw0KICAgIHNkX3ZhcmxpbmtfY29u bmVjdF91cmwoJmxpbmssICJ1bml4Oi9ydW4vc3lzdGVtZC90cG1kL2lvLnN5c3RlbWQuVHBtIik7 DQogICAgLyogMi4gQnVpbGQgSlNPTiBhcmd1bWVudHMgKi8NCiAgICBzZF9qc29uX2J1aWxkbygm YXJncywNCiAgICAgICAgU0RfSlNPTl9CVUlMRF9QQUlSKCJwcml2YXRlQmxvYiIsIFNEX0pTT05f QlVJTERfU1RSSU5HKHByaXZfYmxvYikpLA0KICAgICAgICBTRF9KU09OX0JVSUxEX1BBSVIoInB1 YmxpY0Jsb2IiLCBTRF9KU09OX0JVSUxEX1NUUklORyhwdWJfYmxvYikpLA0KICAgICAgICBTRF9K U09OX0JVSUxEX1BBSVIoImRpZ2VzdCIsIFNEX0pTT05fQlVJTERfU1RSSU5HKGRpZ2VzdCkpDQog ICAgKTsNCiAgICAvKiAzLiBFeGVjdXRlIHRoZSBWYXJsaW5rIGNhbGwgc3luY2hyb25vdXNseSAq Lw0KICAgIHNkX3ZhcmxpbmtfY2FsbChsaW5rLCAiaW8uc3lzdGVtZC5UcG0uU2lnbkRhdGEiLCBh cmdzLCAmcmVwbHksIE5VTEwpOw0KICAgIC8qIENsZWFudXAgKi8NCiAgICByZXR1cm4gMDsNCn0N Cg0KNC4gU3lzdGVtIEFkbWluaXN0cmF0aW9uIGFuZCBNYW5hZ2VkIEVudmlyb25tZW50cyA9PT09 PT09PT09PT09PT09PT09PT09PT0NCjQuMSBTdGF0ZSBNYW5hZ2VtZW50IGFuZCBEYWVtb24gUmVj b3ZlcnkNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KQmVjYXVzZSBzeXN0ZW1kLXRwbWQgYWN0 cyBhcyBhIHN0YXRlZnVsIHVzZXJzcGFjZSBsYXllciBtYW5hZ2luZyBhY3RpdmUgRVNBUEkgZW5j cnlwdGVkIEhNQUMgc2Vzc2lvbnMgYW5kIGVzY3Jvd2VkIHBhc3N3b3JkcywgYSBkYWVtb24gY3Jh c2ggbXVzdCBub3QgZGlzcnVwdCBjb250aW51b3VzIHJlbW90ZSBhdHRlc3RhdGlvbiB3b3JrZmxv d3Mgb3IgdHJpZ2dlciBoYXJkd2FyZSBsb2Nrb3V0cy4gVG8gZGVmZW5kIGFnYWluc3Qgc3RhdGUg bG9zcywgc3lzdGVtZC10cG1kIHV0aWxpemVzIHRoZSBMaW51eCBLZXJuZWwgS2V5IFJldGVudGlv biBTZXJ2aWNlLiBVcG9uIHN1Y2Nlc3NmdWwgcHJvdmlzaW9uaW5nLCB0aGUgaGlnaGx5IHNlbnNp dGl2ZSBPd25lciwgRW5kb3JzZW1lbnQsIGFuZCBMb2Nrb3V0IHBhc3N3b3JkcyBhcmUgc2VjdXJl bHkgaW5qZWN0ZWQgaW50byB0aGUga2VybmVsIGtleXJpbmcgYW5kIGlzb2xhdGVkIHZpYSBLZXly aW5nTW9kZT1wcml2YXRlIHdpdGhpbiB0aGUgc3lzdGVtZCBzZXJ2aWNlIHVuaXQuIElmIHRoZSBk YWVtb24gcmVzdGFydHMsIGl0IHF1ZXJpZXMgdGhlIGtlcm5lbCBrZXlyaW5nIHRvIHNlYW1sZXNz bHkgdG8gcmUtZXN0YWJsaXNoIGl0cyBhdXRoZW50aWNhdGlvbiBjb250ZXh0cyBhbmQgc2Vzc2lv biBzdGF0ZXMgd2l0aG91dCByZXF1aXJpbmcgdXNlciBpbnRlcnZlbnRpb24gb3IgY2F1c2luZyBE QSBsb2Nrb3V0cy4NCg0KNC4yIENvbW1hbmQgTGluZSBJbnRlZ3JhdGlvbiBhbmQgQWNjZXNzIENv bnRyb2wNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KQWRtaW5pc3RyYXRpb24gaW50ZWdyYXRl cyBkaXJlY3RseSBpbnRvIHN5c3RlbWN0bCB2aWEgYSBuZXcgdG9wLWxldmVsIHRwbSB2ZXJiOg0K KiBzeXN0ZW1jdGwgdHBtIHN0YXR1czogUmVwb3J0cyBoYXJkd2FyZSBjYXBhYmlsaXRpZXMgYW5k IHRoZSBwcmVzZW5jZSBvZiB0aGUgU1JLLg0KKiBzeXN0ZW1jdGwgdHBtIGNsZWFyOiBTZWN1cmVs eSB3aXBlcyB0aGUgVFBNIGFuZCByb3RhdGVzIHRoZSBsb2NhbGx5IGVzY3Jvd2VkIGhpZXJhcmNo eSBwYXNzd29yZHMuDQoqIHN5c3RlbWN0bCB0cG0gcmVzZXQtbG9ja291dDogU3VibWl0cyB0aGUg ZXNjcm93ZWQgT3duZXIgcGFzc3dvcmQgdG8gY2xlYXIgdGhlIERBIGxvY2tvdXQgY291bnRlci4N Cg0KU3RhdGUtYWx0ZXJpbmcgb3BlcmF0aW9ucyBhcmUgc3RyaWN0bHkgZ292ZXJuZWQgYnkgcG9s a2l0IChQb2xpY3lLaXQpLg0Kc3lzdGVtZC10cG1kIHdpbGwgcXVlcnkgcG9sa2l0IHRvIGVuc3Vy ZSB0aGF0IG9ubHkgYXV0aGVudGljYXRlZCBhZG1pbmlzdHJhdG9ycyBvciBlbnRlcnByaXNlIG1h bmFnZW1lbnQgYWdlbnRzIGNhbiBtdXRhdGUgdGhlIHBoeXNpY2FsIGhhcmR3YXJlJ3Mgb3duZXJz aGlwIHN0YXRlLiBVbnByaXZpbGVnZWQgdXNlcnMgYXJlIHBoeXNpY2FsbHkgcHJldmVudGVkIGZy b20gY2xlYXJpbmcgdGhlIFRQTSBvciB0cmlnZ2VyaW5nIGFudGktaGFtbWVyaW5nIGxvY2tvdXRz Lg0KDQo1LiBTZWN1cml0eSwgU2FuZGJveGluZywgYW5kIFNpbXVsYXRpb24NCj09PT09PT09PT09 PT09PT09PT09PT09PQ0KNS4xIEhhcmRlbmVkIFNlcnZpY2UgQ29uZmluZW1lbnQNCi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQ0Kc3lzdGVtZC10cG1kIGxldmVyYWdlcyBzeXN0ZW1kJ3MgbmF0aXZl IHNhbmRib3hpbmcgZGlyZWN0aXZlcyB0byBlbmZvcmNlIHRoZSBwcmluY2lwbGUgb2YgbGVhc3Qg cHJpdmlsZWdlLiBUaGUgdW5pdCBmaWxlDQooc3lzdGVtZC10cG1kLnNlcnZpY2UpIGluY29ycG9y YXRlczoNCiogRHluYW1pY1VzZXI9eWVzOiBHZW5lcmF0ZXMgYSBkeW5hbWljLCB1bnByaXZpbGVn ZWQgdXNlciBmb3IgdGhlIGV4ZWN1dGlvbiBjb250ZXh0Lg0KKiBDYXBhYmlsaXR5Qm91bmRpbmdT ZXQ9OiBEcm9wcyBhbGwgTGludXggY2FwYWJpbGl0aWVzIGV4Y2VwdCB0aG9zZSBzdHJpY3RseSBy ZXF1aXJlZCBmb3IgaGFyZHdhcmUgY29tbXVuaWNhdGlvbi4NCiogRGV2aWNlQWxsb3c9L2Rldi90 cG1ybTAgcnc6IFN0cmljdGx5IGxpbWl0cyBoYXJkd2FyZSBhY2Nlc3MgdG8gdGhlIGtlcm5lbCBy ZXNvdXJjZSBtYW5hZ2VyLg0KKiBOb05ld1ByaXZpbGVnZXM9eWVzOiBQcmV2ZW50cyBwcml2aWxl Z2UgZXNjYWxhdGlvbiB2aWEgZXhlY3ZlLg0KDQo1LjIgU2ltdWxhdG9yIFN1cHBvcnQgYW5kIEZh bGxiYWNrIFByZXZlbnRpb24NCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KVG8gc3VwcG9ydCBy b2J1c3QgQ0kvQ0QgYW5kIGRldmVsb3BlciB0ZXN0aW5nIHdpdGhvdXQgd2VhcmluZyBvdXQgcGh5 c2ljYWwgTlZSQU0sIHN5c3RlbWQtdHBtZCBuYXRpdmVseSBzdXBwb3J0cyBzb2Z0d2FyZSBlbXVs YXRvcnMgbGlrZSBzd3RwbS4gVGhyb3VnaCBhIHN5c3RlbWQgZHJvcC1pbiBjb25maWd1cmF0aW9u IChlLmcuLCB1c2luZyBzeXN0ZW1jdGwgZWRpdCBzeXN0ZW1kLXRwbWQpLCBhIGRldmVsb3BlciBj YW4gZHluYW1pY2FsbHkgcm91dGUgdGhlIGRhZW1vbidzIHRyYW5zcG9ydCBsYXllciBhd2F5IGZy b20gL2Rldi90cG1ybTAgdG8gYSBsb2NhbCBzb2Z0d2FyZSBzaW11bGF0b3IuDQpIb3dldmVyLCBm YWxsaW5nIGJhY2sgdG8gYSBzb2Z0d2FyZSBlbXVsYXRvciBpbiBhIHByb2R1Y3Rpb24gZW52aXJv bm1lbnQgYnJlYWtzIHRoZSBoYXJkd2FyZSByb290IG9mIHRydXN0Lg0KDQpFbmZvcmNlbWVudCBv ZiB0aGlzIHN0cmljdCBib3VuZGFyeSByZWxpZXMgb24gc3lzdGVtIGFkbWluaXN0cmF0b3JzIHV0 aWxpemluZyBzeXN0ZW1kJ3MgbmF0aXZlIHVuaXQgZmlsZSBjb25maWd1cmF0aW9ucyBhbmQgdGhl IHVuZGVybHlpbmcgTGludXgga2VybmVsIHNlY3VyaXR5IG1vZHVsZXMgKGNncm91cHMsIG5hbWVz cGFjZXMsIGFuZCBNYW5kYXRvcnkgQWNjZXNzIENvbnRyb2xzIGxpa2UgQXBwQXJtb3Igb3IgU0VM aW51eCkuIEFkbWluaXN0cmF0b3JzIGVuZm9yY2UgdGhlc2UgcHJvdGVjdGlvbnMgYnkgZGVmaW5p bmcgc2FuZGJveCBkaXJlY3RpdmVzIHdpdGhpbiB0aGUgL2V0Yy9zeXN0ZW1kL3N5c3RlbS9zeXN0 ZW1kLXRwbWQuc2VydmljZSBmaWxlOg0KKiBEZXZpY2UgV2hpdGVsaXN0aW5nIChjZ3JvdXBzKTog VGhlIHVuaXQgZW5mb3JjZXMNCkRldmljZUFsbG93PS9kZXYvdHBtcm0wIHJ3LiBXaGVuIHN5c3Rl bWQgbG9hZHMgdGhlIHNlcnZpY2UsIGl0IGNvbmZpZ3VyZXMgdGhlIGtlcm5lbCdzIGNncm91cCBk ZXZpY2UgY29udHJvbGxlciB0byBleHBsaWNpdGx5IGJsb2NrIGFjY2VzcyB0byBhbnkgb3RoZXIg ZGV2aWNlLiBUaGlzIGd1YXJhbnRlZXMgdGhlIGRhZW1vbiBpcyBibG9ja2VkIGZyb20gaW50ZXJh Y3Rpbmcgd2l0aCB2aXJ0dWFsIGNoYXJhY3RlciBkZXZpY2VzIGxpa2UgL2Rldi92dHBteCB1c2Vk IGJ5IENVU0UtYmFzZWQgZW11bGF0b3JzLg0KKiBOZXR3b3JrIFNhbmRib3hpbmcgKG5hbWVzcGFj ZXMpOiBCeSBhcHBseWluZyBSZXN0cmljdEFkZHJlc3NGYW1pbGllcz1BRl9VTklYICh3aGljaCBw ZXJtaXRzIGxvY2FsIFZhcmxpbmsgc29ja2V0cyBidXQgZW50aXJlbHkgZGlzYWJsZXMgVENQL0lQ IG5ldHdvcmtpbmcgbmFtZXNwYWNlcyksIHN5c3RlbWQgaW5zdHJ1Y3RzIHRoZSBrZXJuZWwgdG8g cGh5c2ljYWxseSBibG9jayB0aGUgZGFlbW9uIGZyb20gb3BlbmluZyBvdXRib3VuZCBuZXR3b3Jr IGNvbm5lY3Rpb25zIHRvIGEgcmVtb3RlIG9yIGxvY2FsIHN3dHBtIFRDUCBwb3J0Lg0KDQpCZWNh dXNlIHRoZXNlIHJ1bGVzIGFyZSBlbmZvcmNlZCBieSBzeXN0ZW1kIChhY3RpbmcgYXMgUElEIDEp IGFuZCB0aGUgTGludXgga2VybmVsIGl0c2VsZiwgZXZlbiBhIGNvbXByb21pc2VkIHN5c3RlbWQt dHBtZCBwcm9jZXNzIGNhbm5vdCBieXBhc3MgdGhlbS4gVGhlc2UgcG9saWNpZXMgZ3VhcmFudGVl IHRoZSBkYWVtb24gd2lsbCBmYXRhbGx5IGVycm9yIG91dCByYXRoZXIgdGhhbiBzaWxlbnRseSBm YWxsaW5nIGJhY2sgdG8gYSBjb21wcm9taXNlZCBzaW11bGF0b3IgaW4gbGl2ZSBkZXBsb3ltZW50 cy4NCg0KNi4gRnV0dXJlIENhcGFiaWxpdGllcyBhbmQgU29sdmFibGUgUHJvYmxlbXMgPT09PT09 PT09PT09PT09PT09PT09PT09IEJ5IGVzdGFibGlzaGluZyBzeXN0ZW1kLXRwbWQgYXMgYSBwZXJz aXN0ZW50LCBjZW50cmFsaXplZCByb290IG9mIHRydXN0IGluIHVzZXJzcGFjZSwgc2V2ZXJhbCBs b25nLXN0YW5kaW5nIGVjb3N5c3RlbSBjaGFsbGVuZ2VzIGJleW9uZCBiYXNpYyBjcnlwdG9ncmFw aHkgY2FuIGJlIGVsZWdhbnRseSByZXNvbHZlZC4NCg0KNi4xIFNlYW1sZXNzIEZpcm13YXJlIFVw ZGF0ZXMgKFNvbHZpbmcgdGhlIExVS1MgLyBmd3VwZCBMb2Nrb3V0KQ0KLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tDQpDdXJyZW50bHksIGJpbmRpbmcgTFVLUyBkaXNrIGVuY3J5cHRpb24gdG8gUGxh dGZvcm0gQ29uZmlndXJhdGlvbiBSZWdpc3RlcnMgY3JlYXRlcyBzZXZlcmUgc3lzdGVtIGZyYWdp bGl0eS4gV2hlbiBhbiBhZG1pbmlzdHJhdG9yIHVwZGF0ZXMgdGhlIHN5c3RlbSBmaXJtd2FyZSB1 c2luZyBmd3VwZCwgdGhlIFBDUiA3IG1lYXN1cmVtZW50IGNoYW5nZXMsIHdoaWNoIHBlcm1hbmVu dGx5IGJyZWFrcyB0aGUgTFVLUyB1bmxvY2tpbmcgcG9saWN5IGFuZCBsb2NrcyB0aGUgdXNlciBv dXQuIHN5c3RlbWQtdHBtZCB3aWxsIHJlc29sdmUgdGhpcyBieSBsZXZlcmFnaW5nIFRQTTJfUG9s aWN5QXV0aG9yaXplLiBJbnN0ZWFkIG9mIGJpbmRpbmcgZGlzayBlbmNyeXB0aW9uIHRvIHN0YXRp YyBQQ1IgdmFsdWVzLCB0aGUgZGlzayBpcyBib3VuZCB0byBhIGNyeXB0b2dyYXBoaWMgdGlja2V0 IHNpZ25lZCBieSBzeXN0ZW1kLXRwbWQuIFdoZW4gZnd1cGQgc2NoZWR1bGVzIGFuIHVwZGF0ZSwg aXQgY2FuIGNvbW11bmljYXRlIGl0cyBpbnRlbnQgdmlhIFZhcmxpbmsuIHN5c3RlbWQtdHBtZCBj YW4gYXV0b21hdGljYWxseSBnZW5lcmF0ZSBhIG5ldyBhdXRob3JpemVkIHBvbGljeSBmb3IgdGhl IGluY29taW5nIGZpcm13YXJlIHN0YXRlLCBlbnN1cmluZyB0aGUgZGlzayB1bnNlYWxzIHNtb290 aGx5IGFmdGVyIHRoZSByZWJvb3QuDQoNCjYuMiBTdGFuZGFyZGl6aW5nIFRQTS1CYWNrZWQgUGFz c2tleXMgZm9yIHRoZSBMaW51eCBEZXNrdG9wDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NClRo ZSBMaW51eCBkZXNrdG9wIGN1cnJlbnRseSBsYWNrcyBhIHVuaWZpZWQsIGhhcmR3YXJlLWJhY2tl ZCBBUEkgZm9yIG1vZGVybiBXZWJBdXRobi9GSURPMiBwYXNza2V5cy4gc3lzdGVtZC10cG1kIGNv dWxkIHNlcnZlIGFzIHRoZSBmb3VuZGF0aW9uYWwgYmFja2VuZCBmb3IgcHJvamVjdHMgbGlrZSBj cmVkZW50aWFsc2QuIEJ5IGRlcml2aW5nIGtleXMgZnJvbSB0aGUgVFBNJ3MgcHJpbWFyeSBzZWVk IGFuZCBlbmNyeXB0aW5nIHRoZSBjcmVkZW50aWFsIGJsb2JzLCBzeXN0ZW1kLXRwbWQgd291bGQg YWxsb3cgYnJvd3NlcnMgdG8gc3RvcmUgaGlnaGx5IHNlY3VyZSwgcGhpc2hpbmctcmVzaXN0YW50 IHBhc3NrZXlzIHRoYXQgbmV2ZXIgbGVhdmUgdGhlIGhhcmR3YXJlIGluIHBsYWludGV4dC4NCg0K Ni4zIFN0YWJpbGl6aW5nIENvbnRpbnVvdXMgUmVtb3RlIEF0dGVzdGF0aW9uIGZvciBGbGVldCBN YW5hZ2VtZW50DQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCkluIGVudGVycHJpc2UgZGVwbG95 bWVudHMsIGNvbnRpbnVvdXMgcmVtb3RlIGF0dGVzdGF0aW9uIGFnZW50cyAoc3VjaCBhcyBLZXls aW1lKSBhcmUgdXNlZCB0byBjcnlwdG9ncmFwaGljYWxseSBwcm92ZSB0byBhIGNlbnRyYWwgc2Vy dmVyIHRoYXQgYSBtYWNoaW5lJ3MgTGludXggSW50ZWdyaXR5IE1lYXN1cmVtZW50IEFyY2hpdGVj dHVyZSAoSU1BKSBsb2cgaGFzIG5vdCBiZWVuIGNvbXByb21pc2VkLiBIb3dldmVyLCB0aGVzZSBh Z2VudHMgZnJlcXVlbnRseSBzdWZmZXIgZnJvbSBmYWxzZSBhbGVydHMgYW5kIGFjY2VzcyBjb25m bGljdHMgd2hlbiBxdWVyeWluZyB0aGUgVFBNIHNpbXVsdGFuZW91c2x5IHdpdGggb3RoZXIgc3lz dGVtIHVwZGF0ZXMuIEJ5IGFjdGluZyBhcyB0aGUgc29sZSBvcmNoZXN0cmF0b3IsIHN5c3RlbWQt dHBtZCBjb3VsZCBzYWZlbHkgYnJva2VyIGF0dGVzdGF0aW9uIHF1b3RlcyBhbmQgSU1BIG1lYXN1 cmVtZW50cywgZW5zdXJpbmcgdGhhdCBmbGVldCBtYW5hZ2VtZW50IHRvb2xzIG9wZXJhdGUgcmVs aWFibHkgd2l0aG91dCByZXNvdXJjZSBjb250ZW50aW9uIG9uIHRoZSAvZGV2L3RwbXJtMCBub2Rl Lg0KDQo2LjQgU2VjdXJlIFNTSCBLZXkgUHJvdGVjdGlvbg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tDQpTU0ggcHJpdmF0ZSBrZXlzIHN0b3JlZCBpbiBsb2NhbCBmaWxlcyBhcmUgaGlnaGx5IHZ1 bG5lcmFibGUgdG8gdGhlZnQgYnkgbWFsd2FyZS4gV2hpbGUgdGhlIFRQTSBjYW4gbWl0aWdhdGUg dGhpcyBieSBnZW5lcmF0aW5nIGFuZCBzZWN1cmluZyB0aGUga2V5cyBpbiBoYXJkd2FyZSwgY29u ZmlndXJpbmcgdGhpcyBjdXJyZW50bHkgcmVxdWlyZXMgZW5kLXVzZXJzIHRvIG1hbmFnZSBjb21w bGV4IFBLQ1MjMTEgbGlicmFyaWVzIChsaWtlIHRwbTItcGtjczExKSBhbmQgbWFuaXB1bGF0ZSBw YXRocy4gV2l0aCBzeXN0ZW1kLXRwbWQsIFNTSCBhZ2VudHMgY291bGQgYmUgcmV3cml0dGVuIHRv IHNpbXBseSBwYXNzIHNpZ25pbmcgcGF5bG9hZHMgdmlhIFZhcmxpbmssIG5hdGl2ZWx5IHByb3Rl Y3RpbmcgU1NIIGFjY2VzcyBhY3Jvc3MgdGhlIGVudGlyZSBMaW51eCBlY29zeXN0ZW0gd2l0aCB6 ZXJvIGNvbmZpZ3VyYXRpb24gcmVxdWlyZWQgZnJvbSB0aGUgdXNlci4gQWx0ZXJuYXRpdmVseSwg dGhleSBjYW4gbGV2ZXJhZ2UgdGhlIE9wZW5TU0wgMy4wIHByb3ZpZGVyIG5hdGl2ZWx5Lg0KDQo2 LjUgQ29uZmlkZW50aWFsIENvbXB1dGluZyBhbmQgdlRQTSBTdGF0ZSBNYW5hZ2VtZW50DQotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0NCkluIGNsb3VkIGVudmlyb25tZW50cyBsZXZlcmFnaW5nIEFN RCBTRVYtU05QIG9yIEludGVsIFREWCBmb3IgQ29uZmlkZW50aWFsIENvbXB1dGluZywgdmlydHVh bCBUUE1zICh2VFBNcykgYXJlIGluamVjdGVkIGludG8gdGhlIGd1ZXN0IHRvIHByb3ZpZGUgbWVh c3VyZWQgYm9vdCBndWFyYW50ZWVzLiBzeXN0ZW1kLXRwbWQgY2FuIGVhc2lseSBzdGFuZGFyZGl6 ZSB0aGUgbWFuYWdlbWVudCBvZiB0aGVzZSB2aXJ0dWFsIFRQTXMgZnJvbSBpbnNpZGUgdGhlIGd1 ZXN0IE9TLiBCZWNhdXNlIHRoZSBkYWVtb24gYWJzdHJhY3RzIHRoZSB1bmRlcmx5aW5nIGhhcmR3 YXJlLCBpdCBjYW4gaW50ZXJmYWNlIHdpdGggYSBjbG91ZCBwcm92aWRlcidzIHZUUE0gZXhhY3Rs eSBhcyBpdCB3b3VsZCBhIHBoeXNpY2FsIGNoaXAsIGF1dG9tYXRpY2FsbHkgcHJvdmlzaW9uaW5n IGl0IGFuZCBzaW1wbGlmeWluZyB0aGUgZGVwbG95bWVudCBvZiBDb25maWRlbnRpYWwgVmlydHVh bCBNYWNoaW5lcyAoQ1ZNcykgd2l0aG91dCByZXF1aXJpbmcgY2xvdWQtc3BlY2lmaWMgdXNlciBz cGFjZSB0b29saW5nLg0KDQpUaGFua3MgZm9yIHlvdXIgdGltZSBhbmQgZWZmb3J0cyByZWFkaW5n IGludG8gdGhpZSBwcm9wb3NhbC4gQW55IHRob3VnaHRzLCBjcml0aXF1ZXMsIG9yIGFyY2hpdGVj dHVyYWwgZmVlZGJhY2sgYXJlIGhpZ2hseSBhcHByZWNpYXRlZC4NCg0KQmVzdCBSZWdhcmRzLA0K QWtzaGF5IEhlbmRyZQ0KDQo=