Draft for discussion: Project Tick General Public License v2.0 (only)
"M.samet Duman via License-discuss" <[email protected]> Wed, 21 Jan 2026 20:56:29 +0300
| Newsgroups | gmane.comp.licenses.open-source.general |
|---|---|
| Message-ID | <[email protected]> |
SGVsbG8gYWxsLAoKRm9sbG93aW5nIHRoZSByZWNlbnQgZ3VpZGFuY2UsIEkgYW0gc2hhcmluZyB0 aGlzIHRleHQgaGVyZSBvbiBsaWNlbnNlLWRpc2N1c3MgcmF0aGVyIHRoYW4gbGljZW5zZS1yZXZp ZXcuCgpCZWxvdyBpcyB0aGUgZHJhZnQgb2YgdGhlIFByb2plY3QgVGljayBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlLCBWZXJzaW9uIDIuMCAob25seSkuIFRoaXMgdmVyc2lvbiBpcyBpbnRlbmRlZCB0 byBiZSBhIHN0YWJsZSByZWxlYXNlIGNhbmRpZGF0ZSwgYnV0IGl0IGlzIHN0aWxsIG9wZW4gdG8g cmVmaW5lbWVudCBiYXNlZCBvbiBjb21tdW5pdHkgZmVlZGJhY2sgYmVmb3JlIGFueSBmb3JtYWwg c3VibWlzc2lvbi4KClRoZSBkZXNpZ24gZ29hbHMgZm9yIHYyLjAgYXJlOgoKLSBUbyByZW1haW4g Y2xlYXJseSB3aXRoaW4gdGhlIEdQTHYzIC8gQUdQTHYzIGZhbWlseSBvZiBzdHJvbmcgY29weWxl ZnQgbGljZW5zZXMgIAotIFRvIGFkZHJlc3MgbmV0d29yay1iYXNlZCB1c2UgZXhwbGljaXRseSwg d2hpbGUgYXZvaWRpbmcgdGVjaG5vbG9neS0gb3IgaW50ZXJmYWNlLXNwZWNpZmljIG1hbmRhdGVz ICAKLSBUbyBmb2N1cyBvbiBwcmFjdGljYWwgZXhlcmNpc2FiaWxpdHkgb2YgcmlnaHRzIHJhdGhl ciB0aGFuIGFic29sdXRlIG9yIHJpZ2lkIHByb2hpYml0aW9ucyAgCi0gVG8gYXZvaWQgdW5uZWNl c3NhcnkgY29uc3RyYWludHMgb24gbGVnaXRpbWF0ZSBkaXN0cmlidXRpb24gbW9kZWxzLCBzdGFn ZWQgcmVsZWFzZXMsIG9yIHdvcmtmbG93cywgcHJvdmlkZWQgdGhhdCByZWNpcGllbnQgZnJlZWRv bXMgYXJlIG5vdCBtYXRlcmlhbGx5IGltcGFpcmVkCgpJIHdvdWxkIGFwcHJlY2lhdGUgZmVlZGJh Y2sgc3BlY2lmaWNhbGx5IG9uOgotIEFueSByZW1haW5pbmcgT3BlbiBTb3VyY2UgRGVmaW5pdGlv biBjb25jZXJucyAgCi0gTGFuZ3VhZ2UgdGhhdCBtYXkgYmUgb3Zlcmx5IHJlc3RyaWN0aXZlIG9y IGFtYmlndW91cyBpbiBwcmFjdGljZSAgCi0gQXJlYXMgd2hlcmUgdGhlIGludGVudCBtYXkgYmUg Y2xlYXIgdG8gdGhlIGF1dGhvciBidXQgdW5jbGVhciB0byBkb3duc3RyZWFtIHVzZXJzCgpUaGlz IGlzIGEgZHJhZnQgZm9yIGRpc2N1c3Npb24gb25seTsgbm8gYXBwcm92YWwgaXMgYmVpbmcgcmVx dWVzdGVkIGF0IHRoaXMgc3RhZ2UuCgpUaGFuayB5b3UgZm9yIHlvdXIgdGltZSBhbmQgZXhwZXJ0 aXNlLgoKLS0tLS0tLS0tCkxpY2Vuc2UgdGV4dDoKCiAgICAgICAgICAgICBQUk9KRUNUIFRJQ0sg R0VORVJBTCBQVUJMSUMgTElDRU5TRQogICAgICAgICAgICAgICAgICBWZXJzaW9uIDIsIDIgRmVi cnVhcnkgMjAyNgoKIENvcHlyaWdodCAoQykgMjAyNiBQcm9qZWN0IFRpY2sgPGh0dHBzOi8vcHJv amVjdHRpY2sub3JnLz4KIEV2ZXJ5b25lIGlzIHBlcm1pdHRlZCB0byBjb3B5IGFuZCBkaXN0cmli dXRlIHZlcmJhdGltIGNvcGllcwogb2YgdGhpcyBsaWNlbnNlIGRvY3VtZW50LCBidXQgY2hhbmdp bmcgaXQgaXMgbm90IGFsbG93ZWQuCiBUaGlzIGlzIHRoZSBjYW5vbmljYWwgdGV4dCBvZiB0aGUg UHJvamVjdCBUaWNrIEdlbmVyYWwgUHVibGljCiBMaWNlbnNlLCBWZXJzaW9uIDIuIFdvcmtzIGxp Y2Vuc2VkIHVuZGVyIHRoaXMgdGV4dCBhcmUgZ292ZXJuZWQKIGV4Y2x1c2l2ZWx5IGJ5IFZlcnNp b24gMiBvZiB0aGUgTGljZW5zZSwgdW5sZXNzIHRoZSBhcHBsaWNhYmxlCiBjb3B5cmlnaHQgaG9s ZGVyIGV4cGxpY2l0bHkgYXV0aG9yaXplcyB0aGUgdXNlIG9mIGFub3RoZXIgdmVyc2lvbi4KCiAg ICAgICAgICAgICAgICAgICAgICAgICBQcmVhbWJsZQoKICBUaGUgUHJvamVjdCBUaWNrIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgaXMgYSBjb3B5cmlnaHQtYmFzZWQKY29weWxlZnQgbGljZW5zZSBk ZXNpZ25lZCBmb3IgdXNlIHdpdGggc29mdHdhcmUgcHJvZ3JhbXMsIHdoZXJlCmV4cGxpY2l0bHkg ZGVzaWduYXRlZCBieSB0aGUgYXBwbGljYWJsZSBjb3B5cmlnaHQgaG9sZGVyLgpVbmxlc3MgZXhw bGljaXRseSBzdGF0ZWQgb3RoZXJ3aXNlIGJ5IHRoZSBjb3B5cmlnaHQgaG9sZGVyLCB0aGlzCkxp Y2Vuc2UgYXBwbGllcyB0byB0aGUgV29yayBhcyBhIHNvZnR3YXJlIHByb2dyYW0uCgogIE1hbnkg V29ya3MgYXJlIGRpc3RyaWJ1dGVkIHVuZGVyIGxpY2Vuc2VzIHRoYXQgcmVzdHJpY3QgdGhlCmFi aWxpdHkgb2YgcmVjaXBpZW50cyB0byB1c2UsIG1vZGlmeSwgYW5kIHJlZGlzdHJpYnV0ZSB0aGVt LgpJbiBjb250cmFzdCwgdGhpcyBMaWNlbnNlIGlzIGludGVuZGVkIHRvIGVuc3VyZSB0aGF0IGFs bApyZWNpcGllbnRzIG9mIGEgY292ZXJlZCBXb3JrIHJlY2VpdmUgZnVuZGFtZW50YWwgZnJlZWRv bXMgdG8KYWNjZXNzLCBzdHVkeSwgbW9kaWZ5LCBhbmQgc2hhcmUgdGhhdCBXb3JrLgoKICBBdXRo b3JzIG1heSBhcHBseSB0aGlzIExpY2Vuc2UgdG8gdGhlaXIgV29ya3MgdG8gZ3VhcmFudGVlCnRo YXQgdGhlc2UgZnJlZWRvbXMgYXJlIHByZXNlcnZlZCB3aGVuIHRoZSBXb3JrIGlzIGNvbnZleWVk CnRvIG90aGVycywgd2hldGhlciBpbiBvcmlnaW5hbCBvciBtb2RpZmllZCBmb3JtLiBBbnkgcmVj aXBpZW50CndobyBjb252ZXlzIGEgY292ZXJlZCBXb3JrIGlzIHJlcXVpcmVkIHRvIHBhc3Mgb24g dGhlIHNhbWUKcmlnaHRzIGFuZCBvYmxpZ2F0aW9ucyB1bmRlciB0aGlzIExpY2Vuc2UsIHRoZXJl YnkgcHJlc2VydmluZwp0aG9zZSBmcmVlZG9tcyBmb3IgZG93bnN0cmVhbSByZWNpcGllbnRzLgoK ICBUaGlzIExpY2Vuc2UgcHJpb3JpdGl6ZXMgdGhlIGF2YWlsYWJpbGl0eSBvZiBXb3JrcyBpbiBm b3JtcwpzdWl0YWJsZSBmb3IgbW9kaWZpY2F0aW9uIGFuZCByZXVzZS4gV2hlcmUgYSBjb3ZlcmVk IFdvcmsgaXMKY29udmV5ZWQgdG9nZXRoZXIgd2l0aCBpdHMgcHJlZmVycmVkIGZvcm0gZm9yIG1v ZGlmaWNhdGlvbiwKYWNjZXNzIHRvIHRoYXQgZm9ybSBtdXN0IG5vdCBiZSByZXN0cmljdGVkLCBk ZWxheWVkLCBvcgpjb25kaXRpb25lZCBpbiBhIG1hbm5lciBpbmNvbnNpc3RlbnQgd2l0aCB0aGUg dGVybXMgb2YgdGhpcwpMaWNlbnNlLiBBIGNvcHkgb2YgdGhpcyBMaWNlbnNlIG11c3QgYWNjb21w YW55IGFsbCBjb252ZXlhbmNlcwpvZiBhIGNvdmVyZWQgV29yay4KCiAgVGhpcyBMaWNlbnNlIGFs c28gcHJvdGVjdHMgYXV0aG9ycyBhbmQgY29udHJpYnV0b3JzIGJ5IGNsZWFybHkKZGVmaW5pbmcg dGhlIHNjb3BlIG9mIHBlcm1pdHRlZCB1c2UsIG1vZGlmaWNhdGlvbiwgYW5kCmRpc3RyaWJ1dGlv biwgYW5kIGJ5IHByb3ZpZGluZyB0aGUgV29yayB3aXRob3V0IHdhcnJhbnR5LgpOb3RoaW5nIGlu IHRoaXMgTGljZW5zZSByZXF1aXJlcyBmdXR1cmUgdmVyc2lvbnMgb2YgYSBXb3JrIHRvCmJlIGRp c3RyaWJ1dGVkIHVuZGVyIHRoZSBzYW1lIHRlcm1zLCB1bmxlc3MgdGhlIGNvcHlyaWdodApob2xk ZXIgZXhwbGljaXRseSBzdGF0ZXMgb3RoZXJ3aXNlLgoKICBDZXJ0YWluIGRldmljZXMgb3Igc3lz dGVtcyBtYXkgYmUgZGVzaWduZWQgaW4gd2F5cyB0aGF0IGxpbWl0CmEgdXNlcuKAmXMgYWJpbGl0 eSB0byBpbnN0YWxsIG9yIHJ1biBtb2RpZmllZCB2ZXJzaW9ucyBvZiBhCldvcmsuIFRoZSBvYmxp Z2F0aW9ucyBpbXBvc2VkIGJ5IHRoaXMgTGljZW5zZSBhcmUgZGVmaW5lZApzb2xlbHkgYnkgaXRz IG9wZXJhdGl2ZSBwcm92aXNpb25zIGFuZCBhcmUgaW5kZXBlbmRlbnQgb2YKZXh0ZXJuYWwgZGVz aWduIG9yIGRlcGxveW1lbnQgY29uc3RyYWludHMuCgogIEVhY2ggY29udHJpYnV0b3IgdG8gYSBj b3ZlcmVkIFdvcmsgZ3JhbnRzIGEgbm9uLWV4Y2x1c2l2ZSwKd29ybGR3aWRlLCByb3lhbHR5LWZy ZWUgcGF0ZW50IGxpY2Vuc2UgdG8gdGhlIGV4dGVudCBuZWNlc3NhcnkKdG8gZXhlcmNpc2UgdGhl IHJpZ2h0cyBncmFudGVkIHVuZGVyIHRoaXMgTGljZW5zZSB3aXRoIHJlc3BlY3QKdG8gdGhhdCBj b250cmlidXRvcuKAmXMgY29udHJpYnV0aW9ucy4KCiAgVGhpcyBMaWNlbnNlIGlzIHBhcnQgb2Yg YSBmYW1pbHkgb2YgbGljZW5zZXMgZGV2ZWxvcGVkIHdpdGhpbiB0aGUKUHJvamVjdCBUaWNrIGVj b3N5c3RlbS4gUHJvamVjdCBUaWNrIG1heSBwdWJsaXNoIGRvY3VtZW50YXRpb24KZGVzY3JpYmlu ZyBsaWNlbnNlcyB0aGF0IGFyZSBjb21tb25seSB1c2VkIG9yIGNvbnNpZGVyZWQgY29tcGF0aWJs ZQp3aXRoaW4gdGhlIFByb2plY3QgVGljayBlY29zeXN0ZW0uIFN1Y2ggZG9jdW1lbnRhdGlvbiBp cyBwcm92aWRlZApzb2xlbHkgZm9yIGluZm9ybWF0aW9uYWwgYW5kIGNvbW11bml0eSBndWlkYW5j ZSBwdXJwb3NlcyBhbmQgZG9lcwpub3QgYWx0ZXIgdGhlIHJpZ2h0cyBvciBvYmxpZ2F0aW9ucyBk ZWZpbmVkIGJ5IHRoaXMgTGljZW5zZS4KCiAgVGhlIHByZWNpc2UgdGVybXMgYW5kIGNvbmRpdGlv bnMgZ292ZXJuaW5nIHRoZSB1c2UsIG1vZGlmaWNhdGlvbiwKYW5kIGNvbnZleWFuY2Ugb2YgY292 ZXJlZCBXb3JrcyBhcmUgc2V0IGZvcnRoIGJlbG93LgoKICAgICAgICAgICAgICAgICAgICAgICAg IFRFUk1TIEFORCBDT05ESVRJT05TCgogIDAuIERlZmluaXRpb25zLgoKICAiVGhpcyBMaWNlbnNl IiByZWZlcnMgdG8gdGhlIFByb2plY3QgVGljayBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLApWZXJz aW9uIDIuCgogICJQcm9qZWN0IFRpY2sgQ29tcGF0aWJsZSBMaWNlbnNlIiByZWZlcnMsIGZvciBp bmZvcm1hdGlvbmFsIHB1cnBvc2VzCm9ubHksIHRvIGxpY2Vuc2VzIHRoYXQgUHJvamVjdCBUaWNr IG1heSBwdWJsaWNseSBpZGVudGlmeSBhcyBjb21tb25seQp1c2VkIG9yIGNvbnNpZGVyZWQgY29t cGF0aWJsZSB3aXRoaW4gdGhlIFByb2plY3QgVGljayBlY29zeXN0ZW0uClN1Y2ggaWRlbnRpZmlj YXRpb24gaXMgbm9uLW5vcm1hdGl2ZSwgZG9lcyBub3QgbW9kaWZ5IG9yIGV4dGVuZCB0aGUKdGVy bXMgb2YgdGhpcyBMaWNlbnNlLCBkb2VzIG5vdCBncmFudCBhbnkgYWRkaXRpb25hbCBwZXJtaXNz aW9ucywgYW5kCmRvZXMgbm90IGNvbnN0aXR1dGUgYW4gYXV0aG9yaXRhdGl2ZSBvciBsZWdhbGx5 IGJpbmRpbmcgZGV0ZXJtaW5hdGlvbgpvZiBsaWNlbnNlIGNvbXBhdGliaWxpdHkuIEFjdHVhbCBj b21wYXRpYmlsaXR5IGJldHdlZW4gbGljZW5zZXMgaXMKZGV0ZXJtaW5lZCBzb2xlbHkgYnkgdGhl IHRlcm1zIG9mIHRoZSByZXNwZWN0aXZlIGxpY2Vuc2VzIGFuZAphcHBsaWNhYmxlIGxhdy4KCiAg IkNvcHlyaWdodCIgcmVmZXJzIHRvIGxhd3Mgc2ltaWxhciB0byBjb3B5cmlnaHQgdGhhdCBhcHBs eSB0byBvdGhlcgp0eXBlcyBvZiBXb3Jrcywgc3VjaCBhcyBzZW1pY29uZHVjdG9yIGNoaXBzLgoK ICAiV29yayIgbWVhbnMgYSBzb2Z0d2FyZSBwcm9ncmFtIGxpY2Vuc2VkIHVuZGVyIHRoaXMgTGlj ZW5zZS4KRWFjaCBsaWNlbnNlZSBpcyByZWZlcnJlZCB0byBhcyAieW91Ii4gIlJlY2lwaWVudHMi IG1heSBiZQppbmRpdmlkdWFscyBvciBvcmdhbml6YXRpb25zLgoKICAiRWNvc3lzdGVtIFdvcmsi IG1lYW5zIGFueSBXb3JrIHRoYXQgaXMgZXhwbGljaXRseSBkZXNpZ25hdGVkCmJ5IHRoZSBjb3B5 cmlnaHQgaG9sZGVyIGFzIGZvcm1pbmcgcGFydCBvZiB0aGUgUHJvamVjdCBUaWNrCmVjb3N5c3Rl bSwgaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0byBjb3JlIGFwcGxpY2F0aW9ucywKcmVmZXJl bmNlIGltcGxlbWVudGF0aW9ucywgcHJvdG9jb2wgZGVmaW5pdGlvbnMsIG1ldGFkYXRhCmZvcm1h dHMsIHJlZ2lzdHJpZXMsIHNlcnZpY2UgY29tcG9uZW50cywgYW5kIGluZnJhc3RydWN0dXJlCnNv ZnR3YXJlLiBTdWNoIGRlc2lnbmF0aW9uIGRvZXMgbm90LCBieSBpdHNlbGYsIGltcG9zZSBhbnkK YWRkaXRpb25hbCByZXN0cmljdGlvbnMgb3Igb2JsaWdhdGlvbnMgYmV5b25kIHRob3NlIGV4cHJl c3NseQpzZXQgZm9ydGggaW4gdGhpcyBMaWNlbnNlLiBTdWNoIGRlc2lnbmF0aW9uIG11c3QgYmUg bWFkZSBpbiBhCmNsZWFyIGFuZCBwdWJsaWNseSBhY2Nlc3NpYmxlIG1hbm5lciwgaW5jbHVkaW5n IGJ1dCBub3QgbGltaXRlZAp0byBzb3VyY2UgZmlsZSBoZWFkZXJzLCBkb2N1bWVudGF0aW9uLCBv ciBvZmZpY2lhbCBwcm9qZWN0IG1ldGFkYXRhLgoKICBUbyAibW9kaWZ5IiBhIFdvcmsgbWVhbnMg dG8gY29weSBmcm9tIG9yIGFkYXB0IGFsbCBvciBwYXJ0IG9mIHRoZQpXb3JrIGluIGEgZmFzaGlv biByZXF1aXJpbmcgY29weXJpZ2h0IHBlcm1pc3Npb24sIG90aGVyIHRoYW4gdGhlCm1ha2luZyBv ZiBhbiBleGFjdCBjb3B5LiAgVGhlIHJlc3VsdGluZyBXb3JrIGlzIGNhbGxlZCBhICJtb2RpZmll ZAp2ZXJzaW9uIiBvZiB0aGUgZWFybGllciBXb3JrIG9yIGEgV29yayAiYmFzZWQgb24iIHRoZSBl YXJsaWVyIFdvcmsuCgogIFRvICJwcm9wYWdhdGUiIGEgV29yayBtZWFucyB0byBkbyBhbnl0aGlu ZyB3aXRoIGl0IHRoYXQsIHdpdGhvdXQKcGVybWlzc2lvbiwgd291bGQgbWFrZSB5b3UgZGlyZWN0 bHkgb3Igc2Vjb25kYXJpbHkgbGlhYmxlIGZvcgppbmZyaW5nZW1lbnQgdW5kZXIgYXBwbGljYWJs ZSBjb3B5cmlnaHQgbGF3LCBleGNlcHQgZXhlY3V0aW5nIGl0IG9uCmEgY29tcHV0ZXIgb3IgbW9k aWZ5aW5nIGEgcHJpdmF0ZSBjb3B5LiAgUHJvcGFnYXRpb24gaW5jbHVkZXMgY29weWluZywKZGlz dHJpYnV0aW9uICh3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uKSwgbWFraW5nIGF2YWlsYWJs ZSB0byB0aGUKcHVibGljLCBhbmQgaW4gc29tZSBjb3VudHJpZXMgb3RoZXIgYWN0aXZpdGllcyBh cyB3ZWxsLgoKICBUbyAiY29udmV5IiBhIFdvcmsgbWVhbnMgYW55IGtpbmQgb2YgcHJvcGFnYXRp b24gdGhhdCBlbmFibGVzIG90aGVyCnBhcnRpZXMgdG8gbWFrZSBvciByZWNlaXZlIGNvcGllcyBv ZiB0aGUgV29yay4gTWVyZSBpbnRlcmFjdGlvbiB3aXRoCmEgdXNlciB0aHJvdWdoIGEgY29tcHV0 ZXIgbmV0d29yaywgd2l0aG91dCB0aGUgdHJhbnNmZXIgb2YgYSBjb3B5LApkb2VzIG5vdCBieSBp dHNlbGYgY29uc3RpdHV0ZSBjb252ZXlpbmc7IGhvd2V2ZXIsIHN1Y2ggaW50ZXJhY3Rpb24KbWF5 IGdpdmUgcmlzZSB0byBhZGRpdGlvbmFsIG9ibGlnYXRpb25zIHVuZGVyIHRoaXMgTGljZW5zZSBh cyBleHByZXNzbHkKcHJvdmlkZWQgZWxzZXdoZXJlLgoKICBUbyAib3BlcmF0ZSIgYSBXb3JrIG1l YW5zIHRvIHJ1biwgZGVwbG95LCBvciBtYWtlIGZ1bmN0aW9uYWwgdXNlCm9mIHRoZSBXb3JrIGZv ciB0aGUgcHJpbWFyeSBwdXJwb3NlIG9mIHByb3ZpZGluZyBpdHMgZnVuY3Rpb25hbGl0eQpvciBv dXRwdXQgdG8gdGhpcmQgcGFydGllcyBhcyBhIHNlcnZpY2Ugb3Igc3lzdGVtLCB3aGV0aGVyIGRp cmVjdGx5Cm9yIGluZGlyZWN0bHksIGluY2x1ZGluZyB0aHJvdWdoIGEgY29tcHV0ZXIgbmV0d29y aywgd2hlcmUgc3VjaCBwYXJ0aWVzCmFyZSBub3QgdW5kZXIgdGhlIGRpcmVjdCBjb250cm9sIG9m IHRoZSBvcGVyYXRvci4KCiAgQSAiTGlicmFyeSBXb3JrIiBpcyBhIFdvcmsgdGhhdCBpcyBkZXNp Z25lZCB0byBwcm92aWRlIHJldXNhYmxlCmZ1bmN0aW9uYWxpdHkgaW50ZW5kZWQgdG8gYmUgbGlu a2VkLCBpbXBvcnRlZCwgb3Igb3RoZXJ3aXNlIGNvbWJpbmVkCndpdGggb3RoZXIgaW5kZXBlbmRl bnQgV29ya3MsIHdpdGhvdXQsIGJ5IGl0cyBuYXR1cmUsIGZvcm1pbmcgYSBzaW5nbGUKQ29tYmlu ZWQgV29yayBtZXJlbHkgYnkgYmVpbmcgcHJlc2VudC4KCiAgIlVzZXIgUHJvZHVjdCIgbWVhbnMg KDEpIGFueSB0YW5naWJsZSBwZXJzb25hbCBwcm9wZXJ0eSB3aGljaCBpcwpub3JtYWxseSB1c2Vk IGZvciBwZXJzb25hbCwgZmFtaWx5LCBvciBkb21lc3RpYyBwdXJwb3NlcywgYW5kICgyKQphbnl0 aGluZyBkZXNpZ25lZCBvciBzb2xkIGZvciBpbmNvcnBvcmF0aW9uIGludG8gYSBkd2VsbGluZy4g SW4KZGV0ZXJtaW5pbmcgd2hldGhlciBhIHByb2R1Y3QgaXMgYSBVc2VyIFByb2R1Y3QsIGRvdWJ0 ZnVsIGNhc2VzIHNoYWxsCmJlIHJlc29sdmVkIGluIGZhdm9yIG9mIGNvdmVyYWdlLiBGb3IgYSBw YXJ0aWN1bGFyIHByb2R1Y3QgcmVjZWl2ZWQKYnkgYSBwYXJ0aWN1bGFyIHVzZXIsICJub3JtYWxs eSB1c2VkIiByZWZlcnMgdG8gdGhlIHR5cGljYWwgb3IgY29tbW9uCnVzZSBvZiB0aGF0IGNsYXNz IG9mIHByb2R1Y3QsIHJlZ2FyZGxlc3Mgb2YgdGhlIHN0YXR1cyBvZiB0aGUgcGFydGljdWxhcgp1 c2VyIG9yIHRoZSB3YXkgaW4gd2hpY2ggdGhlIHBhcnRpY3VsYXIgdXNlciBhY3R1YWxseSB1c2Vz LCBleHBlY3RzCnRvIHVzZSwgb3IgaXMgZXhwZWN0ZWQgdG8gdXNlIHRoZSBwcm9kdWN0LgoKICAi SW5zdGFsbGF0aW9uIEluZm9ybWF0aW9uIiBmb3IgYSBVc2VyIFByb2R1Y3QgbWVhbnMgYW55IG1l dGhvZHMsCnByb2NlZHVyZXMsIGF1dGhvcml6YXRpb24ga2V5cywgb3Igb3RoZXIgaW5mb3JtYXRp b24gcmVxdWlyZWQgdG8KaW5zdGFsbCBhbmQgcnVuIG1vZGlmaWVkIHZlcnNpb25zIG9mIGEgY292 ZXJlZCBXb3JrIGluIHRoYXQgVXNlcgpQcm9kdWN0IGZyb20gYSBtb2RpZmllZCB2ZXJzaW9uIG9m IGl0cyBDb3JyZXNwb25kaW5nIFJlc291cmNlLiBUaGUKaW5mb3JtYXRpb24gbXVzdCBiZSBzdWZm aWNpZW50IHRvIGVuc3VyZSB0aGF0IHRoZSBjb250aW51ZWQgb3BlcmF0aW9uCm9mIHRoZSBtb2Rp ZmllZCBvYmplY3QgY29kZSBpcyBub3QgcHJldmVudGVkIG9yIGludGVyZmVyZWQgd2l0aCBzb2xl bHkKYmVjYXVzZSB0aGUgV29yayBoYXMgYmVlbiBtb2RpZmllZC4KCiAgIk5ldHdvcmsgSW50ZXJh Y3Rpb24iIG1lYW5zIG9wZXJhdGlvbiBvZiBhIFdvcmsgdGhyb3VnaCBhIGNvbXB1dGVyCm5ldHdv cmsgcHJpbWFyaWx5IGZvciB0aGUgcHVycG9zZSBvZiBwcm92aWRpbmcgaXRzIGZ1bmN0aW9uYWxp dHkKb3Igb3V0cHV0IHRvIHRoaXJkIHBhcnRpZXMsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBhIGNv cHkgb2YgdGhlCldvcmsgaXMgdHJhbnNmZXJyZWQuCgogIEEgIkNvbWJpbmVkIFdvcmsiIGlzIGEg V29yayBwcm9kdWNlZCBieSBsaW5raW5nLCBpbXBvcnRpbmcsIG9yCm90aGVyd2lzZSBjb21iaW5p bmcgYSBMaWJyYXJ5IFdvcmsgd2l0aCBhbm90aGVyIGluZGVwZW5kZW50IFdvcmssCndoZXRoZXIg c3RhdGljYWxseSBvciBkeW5hbWljYWxseS4KCiAgQW4gaW50ZXJhY3RpdmUgdXNlciBpbnRlcmZh Y2UgZGlzcGxheXMgIkFwcHJvcHJpYXRlIExlZ2FsIE5vdGljZXMiCnRvIHRoZSBleHRlbnQgdGhh dCBpdCBpbmNsdWRlcyBhIGNvbnZlbmllbnQgYW5kIHByb21pbmVudGx5IHZpc2libGUKZmVhdHVy ZSB0aGF0ICgxKSBkaXNwbGF5cyBhbiBhcHByb3ByaWF0ZSBjb3B5cmlnaHQgbm90aWNlLCBhbmQg KDIpCnRlbGxzIHRoZSB1c2VyIHRoYXQgdGhlcmUgaXMgbm8gd2FycmFudHkgZm9yIHRoZSBXb3Jr IChleGNlcHQgdG8gdGhlCmV4dGVudCB0aGF0IHdhcnJhbnRpZXMgYXJlIHByb3ZpZGVkKSwgdGhh dCBsaWNlbnNlZXMgbWF5IGNvbnZleSB0aGUKV29yayB1bmRlciB0aGlzIExpY2Vuc2UsIGFuZCBo b3cgdG8gdmlldyBhIGNvcHkgb2YgdGhpcyBMaWNlbnNlLiAgSWYKdGhlIGludGVyZmFjZSBwcmVz ZW50cyBhIGxpc3Qgb2YgdXNlciBjb21tYW5kcyBvciBvcHRpb25zLCBzdWNoIGFzIGEKbWVudSwg YSBwcm9taW5lbnQgaXRlbSBpbiB0aGUgbGlzdCBtZWV0cyB0aGlzIGNyaXRlcmlvbi4KCiAgMS4g QXV0aG9yaXR5IG9mIEludGVycHJldGF0aW9uLgoKICBUaGUgdGVybXMgb2YgdGhpcyBMaWNlbnNl IHNoYWxsIGJlIGludGVycHJldGVkIGFjY29yZGluZyB0byB0aGVpcgpwbGFpbiBtZWFuaW5nIGFu ZCBpbnRlbnQsIGFzIGV4cHJlc3NlZCBpbiB0aGUgdGV4dCBvZiB0aGlzIExpY2Vuc2UsCmFuZCBp biBhY2NvcmRhbmNlIHdpdGggYXBwbGljYWJsZSBsYXcuIE5vIHBlcnNvbiBvciBvcmdhbml6YXRp b24gbWF5CmdyYW50IHBlcm1pc3Npb25zLCBleGNlcHRpb25zLCBvciBpbnRlcnByZXRhdGlvbnMg dGhhdCBwdXJwb3J0IHRvCm1vZGlmeSB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlIG9yIGltcG9z ZSBhZGRpdGlvbmFsIG9ibGlnYXRpb25zCmJleW9uZCB0aG9zZSBleHByZXNzbHkgc3RhdGVkIGhl cmVpbiwgZXhjZXB0IGJ5IHRoZSBhcHBsaWNhYmxlCmNvcHlyaWdodCBob2xkZXIgd2l0aCByZXNw ZWN0IHRvIHRoZWlyIG93biBjb250cmlidXRpb25zLgpBbnkgc3RhdGVtZW50cywgcG9saWNpZXMs IGd1aWRhbmNlIGRvY3VtZW50cywgY29udHJhY3R1YWwgdGVybXMsCm9yIHJlcHJlc2VudGF0aW9u cyBub3QgZXhwcmVzc2x5IGluY29ycG9yYXRlZCBpbnRvIHRoaXMgTGljZW5zZQpzaGFsbCBoYXZl IG5vIGVmZmVjdCBvbiB0aGUgc2NvcGUsIGludGVycHJldGF0aW9uLCBvciBlbmZvcmNlbWVudApv ZiB0aGUgcmlnaHRzIGFuZCBvYmxpZ2F0aW9ucyBncmFudGVkIHVuZGVyIHRoaXMgTGljZW5zZS4g Tm90aGluZwppbiB0aGlzIHNlY3Rpb24gbGltaXRzIGp1ZGljaWFsIGludGVycHJldGF0aW9uLCBj b21tdW5pdHkgYW5hbHlzaXMsCmFjYWRlbWljIGNvbW1lbnRhcnksIG9yIG5vbi1iaW5kaW5nIGV4 cGxhbmF0b3J5IG1hdGVyaWFscywgcHJvdmlkZWQKdGhhdCBzdWNoIG1hdGVyaWFscyBkbyBub3Qg Y2xhaW0gdG8gYWx0ZXIgb3Igc3VwZXJzZWRlIHRoZSB0ZXJtcyBvZgp0aGlzIExpY2Vuc2UuCgoy LiBTb3VyY2UgQ29kZSBhbmQgQ29ycmVzcG9uZGluZyBSZXNvdXJjZS4KCiAgIlNvdXJjZSBDb2Rl IiBtZWFucyB0aGUgcHJlZmVycmVkIGZvcm0gb2YgdGhlIFdvcmsgZm9yIG1ha2luZwptb2RpZmlj YXRpb25zIHRvIGl0LiBJdCBpbmNsdWRlcyBhbGwgZmlsZXMsIGRlZmluaXRpb25zLCBzY3JpcHRz LApidWlsZCBpbnN0cnVjdGlvbnMsIGFuZCBtYXRlcmlhbHMgbmVjZXNzYXJ5IHRvIHVuZGVyc3Rh bmQsIG1vZGlmeSwKYnVpbGQsIGluc3RhbGwsIGFuZCBydW4gdGhlIFdvcmsgaW4gcHJhY3RpY2Us IGluIGEgZm9ybSB0aGF0IGlzCnJlYXNvbmFibHkgc3VpdGFibGUgZm9yIGVkaXRpbmcuICJPYmpl Y3QgQ29kZSIgbWVhbnMgYW55IGZvcm0gb2YKdGhlIFdvcmsgdGhhdCBpcyBub3QgU291cmNlIENv ZGUuIERlbGliZXJhdGUgb2JmdXNjYXRpb24sIG1pbmlmaWNhdGlvbiwKY29kZSBnZW5lcmF0aW9u IG91dHB1dCB3aXRob3V0IHRoZSBjb3JyZXNwb25kaW5nIGh1bWFuLXJlYWRhYmxlIGlucHV0LApv ciBhbnkgb3RoZXIgdHJhbnNmb3JtYXRpb24gdGhhdCBtYXRlcmlhbGx5IGltcGFpcnMgdGhlIHJl YWRhYmlsaXR5LAphdWRpdGFiaWxpdHksIG9yIG1vZGlmaWFiaWxpdHkgb2YgdGhlIFdvcmsgc2hh bGwgbm90IGJlIGNvbnNpZGVyZWQKU291cmNlIENvZGUuICJTdGFuZGFyZCBJbnRlcmZhY2UiIHJl ZmVycyB0byBlaXRoZXIgYSBmb3JtYWwgc3RhbmRhcmQKZGVmaW5lZCBieSBhIHJlY29nbml6ZWQg c3RhbmRhcmRzIG9yZ2FuaXphdGlvbiwgb3IsIHdoZXJlIGFwcGxpY2FibGUsCmFuIGludGVyZmFj ZSB0aGF0IGlzIHdpZGVseSB1c2VkIGFuZCBwdWJsaWNseSBkb2N1bWVudGVkIGFtb25nCnByYWN0 aXRpb25lcnMgd29ya2luZyBpbiB0aGUgcmVsZXZhbnQgbGFuZ3VhZ2UsIHBsYXRmb3JtLCBvcgpl Y29zeXN0ZW0uIFRoZSAiU3lzdGVtIExpYnJhcmllcyIgb2YgYW4gZXhlY3V0YWJsZSBXb3JrIGlu Y2x1ZGUKY29tcG9uZW50cyB0aGF0ICgxKSBhcmUgaW5jbHVkZWQgYXMgcGFydCBvZiB0aGUgbm9y bWFsIHBhY2thZ2luZwpvZiBhIE1haW4gQ29tcG9uZW50LCBidXQgYXJlIG5vdCBwYXJ0IG9mIHRo ZSBXb3JrIGl0c2VsZiwgYW5kICgyKQpzZXJ2ZSBvbmx5IHRvIGVuYWJsZSB1c2Ugb2YgdGhlIFdv cmsgd2l0aCB0aGF0IE1haW4gQ29tcG9uZW50IG9yCndpdGggYW4gaW1wbGVtZW50YXRpb24gb2Yg YSBTdGFuZGFyZCBJbnRlcmZhY2UuIEluIHRoaXMgY29udGV4dCwKYSAiTWFpbiBDb21wb25lbnQi IHJlZmVycyB0byBhIGtlcm5lbCwgb3BlcmF0aW5nIHN5c3RlbSwgd2luZG93CnN5c3RlbSwgY29t cGlsZXIsIHJ1bnRpbWUsIG9yIG9iamVjdCBjb2RlIGludGVycHJldGVyIHVzZWQgdG8gcnVuCnRo ZSBXb3JrLiBGb3IgYSBXb3JrIGNvbnZleWVkIGluIG9iamVjdCBjb2RlIG9yIG90aGVyIG5vbi1z b3VyY2UgZm9ybSwKIkNvcnJlc3BvbmRpbmcgUmVzb3VyY2UiIG1lYW5zIGFsbCBTb3VyY2UgQ29k ZSByZXF1aXJlZCB0byBnZW5lcmF0ZSwKaW5zdGFsbCwgcnVuLCBhbmQgbW9kaWZ5IHRoZSBXb3Jr LCBpbmNsdWRpbmcgYnVpbGQgc2NyaXB0cywgaW50ZXJmYWNlCmRlZmluaXRpb25zLCBhbmQgc3Vw cG9ydGluZyBjb2RlIHNwZWNpZmljYWxseSBkZXNpZ25lZCBmb3Igb3IgdGlnaHRseQpjb3VwbGVk IHRvIHRoZSBXb3JrLiBUaGUgQ29ycmVzcG9uZGluZyBSZXNvdXJjZSBkb2VzIG5vdCBpbmNsdWRl IFN5c3RlbQpMaWJyYXJpZXMsIGdlbmVyYWwtcHVycG9zZSBkZXZlbG9wbWVudCB0b29scywgb3Ig dGhpcmQtcGFydHkgY29tcG9uZW50cwp0aGF0IGFyZSBub3QgZGVyaXZlZCBmcm9tIHRoZSBXb3Jr IGFuZCBhcmUgbm90IHJlcXVpcmVkIGZvciBpdHMgbW9kaWZpY2F0aW9uCm9yIHRoZSBleGVyY2lz ZSBvZiByaWdodHMgZ3JhbnRlZCB1bmRlciB0aGlzIExpY2Vuc2UuIEFueSBwb3J0aW9uIG9mIHRo ZSBXb3JrCnRoYXQgaXMgbGljZW5zZWQgdW5kZXIgdGhpcyBMaWNlbnNlIG11c3QgcmVtYWluIGxp Y2Vuc2VkIHVuZGVyIHRoaXMgTGljZW5zZS4KVGhpcyBMaWNlbnNlIGRvZXMgbm90IHJlcXVpcmUg cmVsaWNlbnNpbmcgb2YgaW5kZXBlbmRlbnQgdGhpcmQtcGFydHkgY29tcG9uZW50cy4KRm9yIGEg V29yayBjb252ZXllZCBpbiBTb3VyY2UgQ29kZSBmb3JtLCB0aGUgU291cmNlIENvZGUgaXRzZWxm IGNvbnN0aXR1dGVzIHRoZQpDb3JyZXNwb25kaW5nIFJlc291cmNlLgoKICAzLiBFc3NlbnRpYWwg UGVybWlzc2lvbnMuCgogIEFsbCByaWdodHMgZ3JhbnRlZCB1bmRlciB0aGlzIExpY2Vuc2UgYXJl IGdyYW50ZWQgZm9yIHRoZSBmdWxsIHRlcm0gb2YKY29weXJpZ2h0IGFwcGxpY2FibGUgdG8gdGhl IFdvcmsgYW5kIGFyZSBpcnJldm9jYWJsZSwgcHJvdmlkZWQgdGhhdAp0aGUgY29uZGl0aW9ucyBv ZiB0aGlzIExpY2Vuc2UgYXJlIHNhdGlzZmllZC4gU3ViamVjdCB0byB0aGUgdGVybXMgYW5kCmNv bmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLCB5b3UgYXJlIHBlcm1pdHRlZCB0byB1c2UsIG9wZXJh dGUsIHN0dWR5LAptb2RpZnksIGFuZCBjb252ZXkgdGhlIFdvcmsuIE9wZXJhdGlvbiBvZiBhbiB1 bm1vZGlmaWVkIFdvcmsgZm9yIHByaXZhdGUsCmludGVybmFsLCB0ZXN0aW5nLCBkZXZlbG9wbWVu dCwgb3IgZXZhbHVhdGlvbiBwdXJwb3NlcyBkb2VzIG5vdCwgYnkgaXRzZWxmLAppbXBvc2UgYW55 IG9ibGlnYXRpb24gdG8gY29udmV5IHRoZSBXb3JrIG9yIG1ha2UgaXRzIENvcnJlc3BvbmRpbmcg UmVzb3VyY2UKYXZhaWxhYmxlLCBleGNlcHQgd2hlcmUgZXhwcmVzc2x5IHN0YXRlZCBpbiB0aGlz IExpY2Vuc2UuCgogIFlvdSBtYXkgY29udmV5IHRoZSBXb3JrLCBpbiBvcmlnaW5hbCBvciBtb2Rp ZmllZCBmb3JtLCBwcm92aWRlZCB0aGF0CmVhY2ggcmVjaXBpZW50IHJlY2VpdmVzIHRoZSBzYW1l IHJpZ2h0cyBhbmQgb2JsaWdhdGlvbnMgdW5kZXIgdGhpcwpMaWNlbnNlLCBhbmQgdGhhdCBubyBh ZGRpdGlvbmFsIHJlc3RyaWN0aW9ucyBhcmUgaW1wb3NlZCBvbiB0aGUKZXhlcmNpc2Ugb2YgdGhv c2UgcmlnaHRzLgoKICBZb3UgbWF5IGVuZ2FnZSB0aGlyZCBwYXJ0aWVzIHRvIHBlcmZvcm0gYWN0 aXZpdGllcyBvbiB5b3VyIGJlaGFsZgpyZWxhdGluZyB0byB0aGUgY3JlYXRpb24sIG1vZGlmaWNh dGlvbiwgb3BlcmF0aW9uLCBvciBkaXNwbGF5IG9mIHRoZQpXb3JrLCBwcm92aWRlZCB0aGF0IHN1 Y2ggYWN0aXZpdGllcyBhcmUgY2FycmllZCBvdXQgdW5kZXIgeW91cgphdXRob3JpemF0aW9uIGFu ZCB0aGF0IG5vIGNvcGllcyBvZiB0aGUgV29yayBhcmUgcmV0YWluZWQsIGNvbnZleWVkLApvciBt YWRlIGF2YWlsYWJsZSBiZXlvbmQgdGhlIHNjb3BlIG9mIHRoYXQgZW5nYWdlbWVudCwgZXhjZXB0 IGFzCnBlcm1pdHRlZCB1bmRlciB0aGlzIExpY2Vuc2UuCgogIElmIHRoZSBXb3JrLCBvciBhIG1v ZGlmaWVkIHZlcnNpb24gb2YgdGhlIFdvcmssIGlzIG9wZXJhdGVkIHByaW1hcmlseQpmb3IgdGhl IHB1cnBvc2Ugb2YgcHJvdmlkaW5nIGl0cyBmdW5jdGlvbmFsaXR5IG9yIG91dHB1dCB0byB0aGly ZApwYXJ0aWVzIHRocm91Z2ggYSBjb21wdXRlciBuZXR3b3JrLCBpbmNsdWRpbmcgdmlhIGhvc3Rl ZCwgcmVtb3RlLCBvcgppbnRlcm5ldC1hY2Nlc3NpYmxlIHNlcnZpY2VzLCBzdWNoIG9wZXJhdGlv biBzaGFsbCBiZSBkZWVtZWQKY29udmV5YW5jZSBzb2xlbHkgZm9yIHRoZSBwdXJwb3NlIG9mIHRy aWdnZXJpbmcgdGhlIHNvdXJjZSBhdmFpbGFiaWxpdHkKb2JsaWdhdGlvbnMgZXhwcmVzc2x5IHNl dCBmb3J0aCBpbiB0aGlzIExpY2Vuc2UuIEluIHN1Y2ggY2FzZXMsIHRoZQpDb3JyZXNwb25kaW5n IFJlc291cmNlIG9mIHRoZSBXb3JrIG11c3QgYmUgbWFkZSBwdWJsaWNseSBhdmFpbGFibGUKdW5k ZXIgdGhpcyBMaWNlbnNlIGluIGEgcmVhc29uYWJsZSwgdGltZWx5LCBhbmQgYWNjZXNzaWJsZSBt YW5uZXIsCmF0IG5vIGFkZGl0aW9uYWwgY2hhcmdlLgoKICBBbnkgb3V0cHV0IHJlc3VsdGluZyBm cm9tIHRoZSBvcGVyYXRpb24gb2YgdGhlIFdvcmsgaXMgY292ZXJlZCB1bmRlcgp0aGlzIExpY2Vu c2Ugb25seSB0byB0aGUgZXh0ZW50IHRoYXQgc3VjaCBvdXRwdXQgaXRzZWxmIGNvbnN0aXR1dGVz LAppbiB3aG9sZSBvciBpbiBwYXJ0LCBhIGNvdmVyZWQgV29yayBvciBhIGRlcml2YXRpdmUgdGhl cmVvZi4KCiAgU3VibGljZW5zaW5nIG9mIHRoZSBXb3JrIGFzIGEgc2VwYXJhdGUgbGljZW5zZSBn cmFudCBpcyBub3QgcGVybWl0dGVkLgpBbGwgcmlnaHRzIGdyYW50ZWQgdG8gcmVjaXBpZW50cyBh cmlzZSBzb2xlbHkgZnJvbSB0aGlzIExpY2Vuc2UgYW5kIG5vdApmcm9tIGFueSBzZXBhcmF0ZSBs aWNlbnNlIGdyYW50IGJ5IGFuIGludGVybWVkaWFyeS4gVGhpcyBMaWNlbnNlIG1heQpub3QgYmUg YXBwbGllZCB0byBhIFdvcmsgaW4gYSBtYW5uZXIgdGhhdCBzdWJqZWN0cyB0aGUgc2FtZSBXb3Jr LCBpbgp3aG9sZSBvciBpbiBwYXJ0LCB0byBhZGRpdGlvbmFsIG9yIGNvbmZsaWN0aW5nIGxpY2Vu c2UgdGVybXMuIFJlbGljZW5zaW5nCm9mIHRoZSBXb3JrIGlzIHBlcm1pdHRlZCBvbmx5IHdoZXJl IGV4cGxpY2l0bHkgYXV0aG9yaXplZCB1bmRlciB0aGUgdGVybXMKb2YgdGhpcyBMaWNlbnNlLgoK ICA0LiBQcm90ZWN0aW9uIG9mIFVzZXJz4oCZIExlZ2FsIFJpZ2h0cyBBZ2FpbnN0IFRlY2hub2xv Z2ljYWwgTWVhc3VyZXMuCgogIE5vIGNvdmVyZWQgV29yayBzaGFsbCBiZSBjb25zaWRlcmVkIHBh cnQgb2YgYW4gZWZmZWN0aXZlIHRlY2hub2xvZ2ljYWwKbWVhc3VyZSB1bmRlciBBcnRpY2xlIDEx IG9mIHRoZSBXSVBPIENvcHlyaWdodCBUcmVhdHkgb2YgMjAgRGVjZW1iZXIgMTk5NiwKb3IgYW55 IHNpbWlsYXIgbGF3LCB0byB0aGUgZXh0ZW50IHRoYXQgc3VjaCBhIG1lYXN1cmUgaXMgdXNlZCBw cmltYXJpbHkKdG8gcmVzdHJpY3Qgb3IgcHJvaGliaXQgdGhlIGV4ZXJjaXNlIG9mIHJpZ2h0cyBn cmFudGVkIHVuZGVyIHRoaXMgTGljZW5zZS4KCiAgQnkgbGljZW5zaW5nLCBjb252ZXlpbmcsIG9y IG90aGVyd2lzZSBhcHBseWluZyB0aGlzIExpY2Vuc2UgdG8gYSBXb3JrLAp5b3Ugd2FpdmUgYW55 IGxlZ2FsIHJpZ2h0IHRvIHByb2hpYml0IG9yIHJlc3RyaWN0IHRoZSBjaXJjdW12ZW50aW9uIG9m CnRlY2hub2xvZ2ljYWwgbWVhc3VyZXMgd2hlcmUgc3VjaCBjaXJjdW12ZW50aW9uIGlzIG5lY2Vz c2FyeSB0byBleGVyY2lzZQp0aGUgcmlnaHRzIGdyYW50ZWQgdW5kZXIgdGhpcyBMaWNlbnNlLgoK ICBUaGlzIFNlY3Rpb24gZG9lcyBub3QgcHJvaGliaXQgdGhlIHVzZSBvZiB0ZWNobmljYWwgbWVj aGFuaXNtcyB0aGF0IGFyZQpkZXNpZ25lZCBzb2xlbHkgdG8gZW5zdXJlIHN5c3RlbSBpbnRlZ3Jp dHksIHNlY3VyaXR5LCBhdXRoZW50aWNpdHksIG9yCnJlbGlhYmxlIGRpc3RyaWJ1dGlvbiwgaW5j bHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0byBzZWN1cmUgYm9vdAptZWNoYW5pc21zLCBjcnlwdG9n cmFwaGljIHNpZ25hdHVyZSB2ZXJpZmljYXRpb24sIG9yIHBsYXRmb3JtLWxldmVsCmRpc3RyaWJ1 dGlvbiByZXF1aXJlbWVudHMsIHByb3ZpZGVkIHRoYXQgc3VjaCBtZWNoYW5pc21zIGRvIG5vdCBw cmV2ZW50CnJlY2lwaWVudHMgZnJvbSBhY2Nlc3NpbmcsIG1vZGlmeWluZywgb3IgY29udmV5aW5n IHRoZSBDb3JyZXNwb25kaW5nClJlc291cmNlIG9mIHRoZSBjb3ZlcmVkIFdvcmsgdW5kZXIgdGhl IHRlcm1zIG9mIHRoaXMgTGljZW5zZS4KCiAgQW55IHRlY2hub2xvZ2ljYWwsIGNvbnRyYWN0dWFs LCBsZWdhbCwgb3IgcG9saWN5LWJhc2VkIG1lY2hhbmlzbSB0aGF0LAppbiBwcmFjdGljZSwgY29u ZGl0aW9ucyBhY2Nlc3MgdG8gdGhlIENvcnJlc3BvbmRpbmcgUmVzb3VyY2Ugb24gcGF5bWVudCwK ZXhjbHVzaXZlIGFncmVlbWVudHMsIHN1YnNjcmlwdGlvbiBzdGF0dXMsIGN1c3RvbWVyIGNsYXNz aWZpY2F0aW9uLCBvcgphY2NlcHRhbmNlIG9mIHRlcm1zIGluY29uc2lzdGVudCB3aXRoIHRoaXMg TGljZW5zZSBzaGFsbCBiZSBkZWVtZWQgYQp0ZWNobm9sb2dpY2FsIG1lYXN1cmUgZm9yIHRoZSBw dXJwb3NlcyBvZiB0aGlzIFNlY3Rpb24uCgogIFBsYXRmb3JtIHBvbGljaWVzIG9yIGRpc3RyaWJ1 dGlvbiByZXF1aXJlbWVudHMgdGhhdCBhcHBseSB1bmlmb3JtbHksCndpdGhvdXQgZGlzY3JpbWlu YXRpb24sIGFuZCB0aGF0IGRvIG5vdCByZXN0cmljdCB0aGUgYXZhaWxhYmlsaXR5IG9yCmV4ZXJj aXNlIG9mIHJpZ2h0cyBncmFudGVkIHVuZGVyIHRoaXMgTGljZW5zZSBzaGFsbCBub3QsIGJ5IHRo ZW1zZWx2ZXMsCmNvbnN0aXR1dGUgYSB2aW9sYXRpb24gb2YgdGhpcyBTZWN0aW9uLgoKICA1LiBU cmFuc21pc3Npb24gb2YgSWRlbnRpY2FsIENvcGllcy4KCiAgWW91IG1heSBjb252ZXkgZXhhY3Qs IHVubW9kaWZpZWQgY29waWVzIG9mIHRoZSBXb3JrLCBhcyByZWNlaXZlZCwgaW4gYW55Cm1lZGl1 bSwgcHJvdmlkZWQgdGhhdCB5b3UgY29uc3BpY3VvdXNseSBhbmQgYXBwcm9wcmlhdGVseSBwdWJs aXNoIG9uCmVhY2ggY29weSBhbiBhcHByb3ByaWF0ZSBjb3B5cmlnaHQgbm90aWNlOyBrZWVwIGlu dGFjdCBhbGwgbm90aWNlcwpzdGF0aW5nIHRoYXQgdGhpcyBMaWNlbnNlIGFwcGxpZXMgdG8gdGhl IFdvcmsgYW5kIHRoYXQgbm8gd2FycmFudHkgaXMKcHJvdmlkZWQ7IGFuZCBwcm92aWRlIGFsbCBy ZWNpcGllbnRzIHdpdGggYSBjb3B5IG9mIHRoaXMgTGljZW5zZS4KCiAgVGhlIGNvbnZleWFuY2Ug b2YgaWRlbnRpY2FsIGNvcGllcyB1bmRlciB0aGlzIFNlY3Rpb24gc2hhbGwgbm90IGltcG9zZQph bnkgdGVjaG5pY2FsLCBjb250cmFjdHVhbCwgcHJvY2VkdXJhbCwgb3IgcHJhY3RpY2FsIHJlc3Ry aWN0aW9ucyB0aGF0CndvdWxkIGxpbWl0IG9yIGludGVyZmVyZSB3aXRoIHRoZSByZWNpcGllbnRz 4oCZIGFiaWxpdHkgdG8gYWNjZXNzLCBjb3B5LAptb2RpZnksIG9yIHJlZGlzdHJpYnV0ZSB0aGUg V29yayBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIHRlcm1zIG9mIHRoaXMKTGljZW5zZS4KCiAgV2hl cmUgaWRlbnRpY2FsIGNvcGllcyBvZiB0aGUgV29yayBhcmUgbWFkZSBhdmFpbGFibGUgdG8gYW55 IHJlY2lwaWVudAp0aHJvdWdoIG9ubGluZSBzZXJ2aWNlcywgc3Vic2NyaXB0aW9uLWJhc2VkIHN5 c3RlbXMsIG9yIGNvbnRyb2xsZWQKYWNjZXNzIHBsYXRmb3JtcywgdGhlIENvcnJlc3BvbmRpbmcg UmVzb3VyY2UgZm9yIHRoYXQgV29yayBtdXN0IGJlIG1hZGUKcHVibGljbHkgYXZhaWxhYmxlIHVu ZGVyIHRoaXMgTGljZW5zZSBubyBsYXRlciB0aGFuIHRoZSB0aW1lIHN1Y2ggY29waWVzCmFyZSBm aXJzdCBtYWRlIGF2YWlsYWJsZSB0byBhbnkgcmVjaXBpZW50LiBTdWNoIGF2YWlsYWJpbGl0eSBz aGFsbCBub3QKYmUgY29uZGl0aW9uZWQgb24gZXhjbHVzaXZlIGFncmVlbWVudHMsIG5vbi1kaXNj bG9zdXJlIG9ibGlnYXRpb25zLAphY2NvdW50IHJlZ2lzdHJhdGlvbiwgcGF5bWVudCwgb3IgYWNj ZXB0YW5jZSBvZiB0ZXJtcyBpbmNvbnNpc3RlbnQgd2l0aAp0aGlzIExpY2Vuc2UuCgogIE5vdGhp bmcgaW4gdGhpcyBMaWNlbnNlIHByb2hpYml0cyBjaGFyZ2luZyBhIGZlZSBmb3IgdGhlIHBoeXNp Y2FsIGFjdCBvZgp0cmFuc2ZlcnJpbmcgYSBjb3B5LCBvciBmb3IgcHJvdmlkaW5nIHNlcnZpY2Vz IHN1Y2ggYXMgc3VwcG9ydCwKbWFpbnRlbmFuY2UsIG9yIHdhcnJhbnR5IHByb3RlY3Rpb24uIEhv d2V2ZXIsIHN1Y2ggZmVlcyBvciBzZXJ2aWNlcwpzaGFsbCBub3QgYmUgdXNlZCB0byByZXN0cmlj dCwgZGVsYXksIGNvbmRpdGlvbiwgb3IgZGlzY291cmFnZSBhY2Nlc3MKdG8gdGhlIFdvcmsgb3Ig aXRzIENvcnJlc3BvbmRpbmcgUmVzb3VyY2UuCgogIERpc3RyaWJ1dGlvbiBvZiB0aGUgV29yayB0 aHJvdWdoIGFwcGxpY2F0aW9uIHN0b3JlcywgcmVwb3NpdG9yaWVzLCBvcgpvdGhlciBjb250cm9s bGVkIHBsYXRmb3JtcyBpcyBwZXJtaXR0ZWQgb25seSB0byB0aGUgZXh0ZW50IHRoYXQgc3VjaApk aXN0cmlidXRpb24gZG9lcyBub3QgaW1wb3NlIGFkZGl0aW9uYWwgcmVzdHJpY3Rpb25zIGJleW9u ZCB0aG9zZQpwZXJtaXR0ZWQgYnkgdGhpcyBMaWNlbnNlLgoKICBDbGVhciwgcHJvbWluZW50LCBh bmQgcGVyc2lzdGVudCBpbnN0cnVjdGlvbnMgZm9yIG9idGFpbmluZyB0aGUKQ29ycmVzcG9uZGlu ZyBSZXNvdXJjZSBtdXN0IGJlIHByb3ZpZGVkIGFsb25nc2lkZSB0aGUgV29yaywgYW5kIHN1Y2gK cmVzb3VyY2UgbXVzdCBiZSBhY2Nlc3NpYmxlIHRvIHRoZSBnZW5lcmFsIHB1YmxpYyB0aHJvdWdo IGFueSByZWFzb25hYmxlCmFuZCBwdWJsaWNseSBhY2Nlc3NpYmxlIG1lYW5zIHdpdGhvdXQgdW5k dWUgYmFycmllcnMuCgogIDYuIFRyYW5zbWlzc2lvbiBvZiBNb2RpZmllZCBTb3VyY2UgVmVyc2lv bnMuCgogIFlvdSBtYXkgY29udmV5IGEgV29yayBiYXNlZCBvbiB0aGUgV29yaywgb3IgbW9kaWZp Y2F0aW9ucyBkZXJpdmVkIGZyb20KdGhlIFdvcmssIGluIFNvdXJjZSBDb2RlIGZvcm0gdW5kZXIg dGhlIHRlcm1zIG9mIFNlY3Rpb24gNSwgcHJvdmlkZWQKdGhhdCB5b3UgYWxzbyBjb21wbHkgd2l0 aCBhbGwgb2YgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgoKICBhKSBUaGUgbW9kaWZpZWQgV29y ayBtdXN0IGNvbnRhaW4gcHJvbWluZW50IG5vdGljZXMgc3RhdGluZyB0aGF0IHlvdQogICAgIGhh dmUgbW9kaWZpZWQgaXQsIHRvZ2V0aGVyIHdpdGggdGhlIGRhdGUgb2YgZWFjaCBzdWNoIG1vZGlm aWNhdGlvbi4KCiAgYikgVGhlIG1vZGlmaWVkIFdvcmsgbXVzdCBjb250YWluIGNsZWFyIG5vdGlj ZXMgc3RhdGluZyB0aGF0IGl0IGlzCiAgICAgbGljZW5zZWQgdW5kZXIgdGhpcyBMaWNlbnNlLCB0 b2dldGhlciB3aXRoIGFueSBhcHBsaWNhYmxlIGFkZGl0aW9uYWwKICAgICBwZXJtaXNzaW9ucyBl eHByZXNzbHkgcGVybWl0dGVkIHVuZGVyIHRoaXMgTGljZW5zZS4gU3VjaCBub3RpY2VzIG1heQog ICAgIHJlcGxhY2Ugb3IgdXBkYXRlIGV4aXN0aW5nIG5vdGljZXMgdG8gYWNjdXJhdGVseSByZWZs ZWN0IHRoZSBtb2RpZmllZAogICAgIHN0YXR1cyBvZiB0aGUgV29yay4KCiAgYykgWW91IG11c3Qg bGljZW5zZSB0aGUgbW9kaWZpZWQgV29yaywgYXMgYSB3aG9sZSwgdW5kZXIgdGhpcyBMaWNlbnNl CiAgICAgdG8gYW55IHJlY2lwaWVudCB3aG8gcmVjZWl2ZXMgYSBjb3B5IG9mIGl0LiBUaGlzIExp Y2Vuc2UsIGFuZCBhbnkKICAgICBhcHBsaWNhYmxlIGFkZGl0aW9uYWwgcGVybWlzc2lvbnMgcGVy bWl0dGVkIGJ5IGl0LCBzaGFsbCB0aGVyZWZvcmUKICAgICBhcHBseSB0byB0aGUgbW9kaWZpZWQg V29yayBhbmQgYWxsIG9mIGl0cyBwYXJ0cywgcmVnYXJkbGVzcyBvZiBob3cgdGhleQogICAgIGFy ZSBwYWNrYWdlZCBvciBkaXN0cmlidXRlZC4KCiAgVGhpcyBMaWNlbnNlIGRvZXMgbm90IHBlcm1p dCByZWxpY2Vuc2luZyBvZiB0aGUgbW9kaWZpZWQgV29yayB1bmRlcgpkaWZmZXJlbnQgdGVybXMu IEhvd2V2ZXIsIHRoaXMgcHJvdmlzaW9uIGRvZXMgbm90IGludmFsaWRhdGUgcGVybWlzc2lvbnMK dGhhdCB5b3UgbWF5IGhhdmUgb2J0YWluZWQgc2VwYXJhdGVseSBhbmQgaW5kZXBlbmRlbnRseSBm cm9tIHRoZQpjb3B5cmlnaHQgaG9sZGVycyBvZiBwb3J0aW9ucyBvZiB0aGUgV29yay4KCiAgZCkg SWYgdGhlIG1vZGlmaWVkIFdvcmsgaW5jbHVkZXMgaW50ZXJhY3RpdmUgdXNlciBpbnRlcmZhY2Vz LCBzdWNoCiAgICAgaW50ZXJmYWNlcyBtdXN0IGRpc3BsYXkgQXBwcm9wcmlhdGUgTGVnYWwgTm90 aWNlcywgdW5sZXNzIHRoZSBvcmlnaW5hbAogICAgIFdvcmsgZGlkIG5vdCBpbmNsdWRlIHN1Y2gg bm90aWNlcyBhbmQgdGhlIG5hdHVyZSBvZiB0aGUgaW50ZXJmYWNlIG1ha2VzCiAgICAgdGhlaXIg ZGlzcGxheSBpbXByYWN0aWNhbCBvciB1bnJlYXNvbmFibGUuCgogIGUpIElmIHRoZSBtb2RpZmll ZCBXb3JrIGlzIGEgTGlicmFyeSBXb3JrLCB0aGUgTGlicmFyeSBXb3JrIGl0c2VsZiBtdXN0CiAg ICAgcmVtYWluIGxpY2Vuc2VkIHVuZGVyIHRoaXMgTGljZW5zZS4gTGlua2luZywgaW1wb3J0aW5n LCBvciBvdGhlcndpc2UKICAgICB1c2luZyBhIExpYnJhcnkgV29yayBpbiBjb21iaW5hdGlvbiB3 aXRoIG90aGVyIGluZGVwZW5kZW50IFdvcmtzIGRvZXMKICAgICBub3QgcmVtb3ZlIG9yIGFsdGVy IHRoZSBvYmxpZ2F0aW9ucyBpbXBvc2VkIGJ5IHRoaXMgTGljZW5zZSBvbiB0aGUKICAgICBMaWJy YXJ5IFdvcmsgaXRzZWxmLCBub3IgZG9lcyBpdCBncmFudCBwZXJtaXNzaW9uIHRvIHJlbGljZW5z ZSB0aGUKICAgICBMaWJyYXJ5IFdvcmsgdW5kZXIgZGlmZmVyZW50IHRlcm1zLgoKICBBIGNvbXBp bGF0aW9uIG9mIGEgY292ZXJlZCBXb3JrIHdpdGggb3RoZXIgc2VwYXJhdGUgYW5kIGluZGVwZW5k ZW50CldvcmtzIHRoYXQgYXJlIG5vdCwgYnkgdGhlaXIgbmF0dXJlLCBleHRlbnNpb25zIG9mIHRo ZSBjb3ZlcmVkIFdvcmsgYW5kCnRoYXQgYXJlIG5vdCBjb21iaW5lZCB3aXRoIGl0IHRvIGZvcm0g YSBzaW5nbGUgdW5pZmllZCBXb3JrIGlzIHJlZmVycmVkCnRvIGFzIGFuICJhZ2dyZWdhdGUiLiBU aGUgaW5jbHVzaW9uIG9mIGEgY292ZXJlZCBXb3JrIGluIGFuIGFnZ3JlZ2F0ZQpkb2VzIG5vdCBj YXVzZSB0aGlzIExpY2Vuc2UgdG8gYXBwbHkgdG8gdGhlIG90aGVyIFdvcmtzIGluIHRoZSBhZ2dy ZWdhdGUsCnByb3ZpZGVkIHRoYXQgdGhlIGNvbXBpbGF0aW9uIGFuZCBpdHMgY29udmV5YW5jZSBk byBub3QgaW1wb3NlCmFkZGl0aW9uYWwgcmVzdHJpY3Rpb25zIG9uIHRoZSByaWdodHMgZ3JhbnRl ZCB1bmRlciB0aGlzIExpY2Vuc2Ugd2l0aApyZXNwZWN0IHRvIHRoZSBjb3ZlcmVkIFdvcmsuCgog IDcuIFRyYW5zbWlzc2lvbiBvZiBOb24tU291cmNlIEZvcm1hdHMuCgogIE9wZXJhdGluZyBhIGNv dmVyZWQgV29yayB0aHJvdWdoIE5ldHdvcmsgSW50ZXJhY3Rpb24gcHJpbWFyaWx5IGZvciB0aGUK cHVycG9zZSBvZiBwcm92aWRpbmcgaXRzIGZ1bmN0aW9uYWxpdHkgb3Igb3V0cHV0IHRvIHRoZSBw dWJsaWMgc2hhbGwKY29uc3RpdHV0ZSBjb252ZXlpbmcgdGhlIFdvcmsgc29sZWx5IGZvciB0aGUg cHVycG9zZXMgb2YgdHJpZ2dlcmluZyB0aGUKc291cmNlIGF2YWlsYWJpbGl0eSBvYmxpZ2F0aW9u cyBzZXQgZm9ydGggaW4gdGhpcyBMaWNlbnNlLiBUaGlzIGRvZXMKbm90IGluY2x1ZGUgaW50ZXJu YWwsIHByaXZhdGUsIHRlc3RpbmcsIGRldmVsb3BtZW50LCBvciBpbmNpZGVudGFsIHVzZXMKdGhh dCBkbyBub3QgcHJpbWFyaWx5IHByb3ZpZGUgdGhlIFdvcmvigJlzIGZ1bmN0aW9uYWxpdHkgdG8g dGhlIHB1YmxpYy4KSW4gYWNjb3JkYW5jZSB3aXRoIFNlY3Rpb25zIDQgYW5kIDUsIHlvdSBtYXkg Y29udmV5IGEgY292ZXJlZCBXb3JrIGluCm9iamVjdCBjb2RlIG9yIG90aGVyIG5vbi1zb3VyY2Ug Zm9ybSwgcHJvdmlkZWQgdGhhdCB0aGUgQ29ycmVzcG9uZGluZwpSZXNvdXJjZSBvZiB0aGUgV29y ayBpcyBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlCmluIGEg bWFjaGluZS1yZWFkYWJsZSBmb3JtLiBUaGUgQ29ycmVzcG9uZGluZyBSZXNvdXJjZSBtdXN0IGJl IG1hZGUKYXZhaWxhYmxlIGluIGEgbWFubmVyIHRoYXQgaXMgbm8gbGVzcyBhY2Nlc3NpYmxlLCB0 aW1lbHksIGFuZCB1c2FibGUKdGhhbiB0aGUgb2JqZWN0IGNvZGUgaXRzZWxmLgoKICBhKSBZb3Ug bWF5IGNvbnZleSB0aGUgb2JqZWN0IGNvZGUgaW4sIG9yIGVtYm9kaWVkIGluLCBhIHBoeXNpY2Fs CiAgICAgcHJvZHVjdCAoaW5jbHVkaW5nIGEgcGh5c2ljYWwgZGlzdHJpYnV0aW9uIG1lZGl1bSks IGFjY29tcGFuaWVkIGJ5CiAgICAgdGhlIENvcnJlc3BvbmRpbmcgUmVzb3VyY2UgZml4ZWQgb24g YSBkdXJhYmxlIHBoeXNpY2FsIG1lZGl1bQogICAgIGN1c3RvbWFyaWx5IHVzZWQgZm9yIHNvZnR3 YXJlIGV4Y2hhbmdlLgoKICBiKSBZb3UgbWF5IGNvbnZleSB0aGUgb2JqZWN0IGNvZGUgaW4sIG9y IGVtYm9kaWVkIGluLCBhIHBoeXNpY2FsCiAgICAgcHJvZHVjdCAoaW5jbHVkaW5nIGEgcGh5c2lj YWwgZGlzdHJpYnV0aW9uIG1lZGl1bSksIGFjY29tcGFuaWVkIGJ5IGEKICAgICB3cml0dGVuIG9m ZmVyLCB2YWxpZCBmb3IgYXQgbGVhc3QgdGhyZWUgeWVhcnMgYW5kIGZvciBhcyBsb25nIGFzIHlv dQogICAgIG9mZmVyIHNwYXJlIHBhcnRzLCB1cGRhdGVzLCBvciBjdXN0b21lciBzdXBwb3J0IGZv ciB0aGF0IHByb2R1Y3QKICAgICBtb2RlbCwgdG8gcHJvdmlkZSBhbnkgcmVjaXBpZW50IHdpdGgg ZWl0aGVyOgoKICAgICAgICgxKSBhIGNvcHkgb2YgdGhlIENvcnJlc3BvbmRpbmcgUmVzb3VyY2Ug Zm9yIGFsbCBjb3ZlcmVkIFdvcmtzIGluCiAgICAgICAgICAgdGhlIHByb2R1Y3QsIG9uIGEgZHVy YWJsZSBwaHlzaWNhbCBtZWRpdW0gY3VzdG9tYXJpbHkgdXNlZCBmb3IKICAgICAgICAgICBzb2Z0 d2FyZSBleGNoYW5nZSwgZm9yIGEgcHJpY2Ugbm8gaGlnaGVyIHRoYW4gdGhlIHJlYXNvbmFibGUK ICAgICAgICAgICBjb3N0IG9mIHBoeXNpY2FsbHkgcGVyZm9ybWluZyB0aGlzIHRyYW5zbWlzc2lv bjsgb3IKCiAgICAgICAoMikgaW1tZWRpYXRlIGFuZCB1bnJlc3RyaWN0ZWQgYWNjZXNzIHRvIGNv cHkgdGhlIENvcnJlc3BvbmRpbmcKICAgICAgICAgICBSZXNvdXJjZSB0aHJvdWdoIGFueSByZWFz b25hYmxlIGFuZCBwdWJsaWNseSBhY2Nlc3NpYmxlIG1lYW5zLgoKICBUaGUgcmVmdXNhbCBvciBu b24tYWNjZXB0YW5jZSBvZiBzdWNoIGEgd3JpdHRlbiBvZmZlciBieSBhbnkgcmVjaXBpZW50CmRv ZXMgbm90IHJlbGlldmUgeW91IG9mIHRoZSBvYmxpZ2F0aW9uIHRvIGVuc3VyZSB0aGF0IHRoZQpD b3JyZXNwb25kaW5nIFJlc291cmNlIHJlbWFpbnMgcHVibGljbHkgYXZhaWxhYmxlIHVuZGVyIHRo aXMgTGljZW5zZQpmb3IgdGhlIGR1cmF0aW9uIHJlcXVpcmVkIGJ5IHRoaXMgU2VjdGlvbi4KCiAg YykgWW91IG1heSBjb252ZXkgaW5kaXZpZHVhbCBjb3BpZXMgb2YgdGhlIG9iamVjdCBjb2RlIHRv Z2V0aGVyIHdpdGggYQogICAgIGNvcHkgb2YgdGhlIHdyaXR0ZW4gb2ZmZXIgZGVzY3JpYmVkIGlu IHN1YnNlY3Rpb24gKGIpLCBidXQgb25seQogICAgIG9jY2FzaW9uYWxseSwgZm9yIG5vbi1jb21t ZXJjaWFsIHB1cnBvc2VzLCBhbmQgb25seSBpZiB5b3UgcmVjZWl2ZWQKICAgICB0aGUgb2JqZWN0 IGNvZGUgYWNjb21wYW5pZWQgYnkgc3VjaCBhbiBvZmZlci4KCiAgZCkgWW91IG1heSBjb252ZXkg dGhlIG9iamVjdCBjb2RlIGJ5IG9mZmVyaW5nIGFjY2VzcyBmcm9tIGEgZGVzaWduYXRlZAogICAg IGxvY2F0aW9uLCBmcmVlIG9mIGNoYXJnZSBvciBmb3IgYSBmZWUsIHByb3ZpZGVkIHRoYXQgZXF1 aXZhbGVudCBhY2Nlc3MKICAgICB0byB0aGUgQ29ycmVzcG9uZGluZyBSZXNvdXJjZSBpcyBvZmZl cmVkIGluIHRoZSBzYW1lIG1hbm5lciwgd2l0aG91dAogICAgIGRlbGF5LCBhZGRpdGlvbmFsIGNv bmRpdGlvbnMsIG9yIHByYWN0aWNhbCBiYXJyaWVycy4gSWYgdGhlIG9iamVjdAogICAgIGNvZGUg aXMgb2ZmZXJlZCBmcm9tIGEgbmV0d29yayBzZXJ2ZXIsIHRoZSBDb3JyZXNwb25kaW5nIFJlc291 cmNlIG1heQogICAgIGJlIGhvc3RlZCBvbiBhIGRpZmZlcmVudCBzZXJ2ZXIgb3BlcmF0ZWQgYnkg eW91IG9yIGJ5IGEgdGhpcmQgcGFydHksCiAgICAgcHJvdmlkZWQgdGhhdCBjbGVhciwgcHJvbWlu ZW50LCBhbmQgcGVyc2lzdGVudCBpbnN0cnVjdGlvbnMgYXJlIGdpdmVuCiAgICAgYWxvbmdzaWRl IHRoZSBvYmplY3QgY29kZSBpbmRpY2F0aW5nIHdoZXJlIGFuZCBob3cgdGhlIENvcnJlc3BvbmRp bmcKICAgICBSZXNvdXJjZSBtYXkgYmUgb2J0YWluZWQuCgogIEFueSB0ZWNobmljYWwsIGNvbnRy YWN0dWFsLCBwcm9jZWR1cmFsLCBvciBwb2xpY3ktYmFzZWQgbWVhc3VyZSB0aGF0CmhhcyB0aGUg ZWZmZWN0IG9mIGRpc2NvdXJhZ2luZywgZGVsYXlpbmcsIGNvbmRpdGlvbmluZywgb3IgcHJldmVu dGluZwphY2Nlc3MgdG8gdGhlIENvcnJlc3BvbmRpbmcgUmVzb3VyY2Ugc2hhbGwgYmUgZGVlbWVk IGEgdmlvbGF0aW9uIG9mCnRoaXMgTGljZW5zZS4KCiAgZSkgWW91IG1heSBjb252ZXkgdGhlIG9i amVjdCBjb2RlIHVzaW5nIHBlZXItdG8tcGVlciB0cmFuc21pc3Npb24sCiAgICAgcHJvdmlkZWQg dGhhdCB5b3UgY2xlYXJseSBpbmZvcm0gYWxsIHBlZXJzIHdoZXJlIHRoZSBvYmplY3QgY29kZSBh bmQKICAgICB0aGUgQ29ycmVzcG9uZGluZyBSZXNvdXJjZSBhcmUgYmVpbmcgb2ZmZXJlZCB0byB0 aGUgZ2VuZXJhbCBwdWJsaWMsCiAgICAgZnJlZSBvZiBjaGFyZ2UsIHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGlzIExpY2Vuc2UuCgogIEEgc2VwYXJhYmxlIHBvcnRpb24gb2YgdGhlIG9iamVjdCBjb2Rl IHdob3NlIHNvdXJjZSBpcyBleGNsdWRlZCBmcm9tCnRoZSBDb3JyZXNwb25kaW5nIFJlc291cmNl IGFzIGEgU3lzdGVtIExpYnJhcnkgbmVlZCBub3QgYmUgaW5jbHVkZWQgaW4KdGhlIHRyYW5zbWlz c2lvbiBvZiB0aGUgb2JqZWN0IGNvZGUuIElmIHlvdSBjb252ZXkgYW4gb2JqZWN0IGNvZGUgV29y awp1bmRlciB0aGlzIFNlY3Rpb24gaW4sIHdpdGgsIG9yIHNwZWNpZmljYWxseSBmb3IgdXNlIGlu IGEgVXNlciBQcm9kdWN0LAphbmQgdGhlIGNvbnZleWFuY2Ugb2NjdXJzIGFzIHBhcnQgb2YgYSB0 cmFuc2FjdGlvbiB0cmFuc2ZlcnJpbmcgdGhlIHJpZ2h0Cm9mIHBvc3Nlc3Npb24gb3IgdXNlIG9m IHRoZSBVc2VyIFByb2R1Y3QgdG8gdGhlIHJlY2lwaWVudCwgdGhlIENvcnJlc3BvbmRpbmcKUmVz b3VyY2UgbXVzdCBiZSBhY2NvbXBhbmllZCBieSB0aGUgSW5zdGFsbGF0aW9uIEluZm9ybWF0aW9u LiBUaGlzIHJlcXVpcmVtZW50CmRvZXMgbm90IGFwcGx5IGlmIG5laXRoZXIgeW91IG5vciBhbnkg dGhpcmQgcGFydHkgcmV0YWlucyB0aGUgYWJpbGl0eSB0bwppbnN0YWxsIG1vZGlmaWVkIG9iamVj dCBjb2RlIG9uIHRoZSBVc2VyIFByb2R1Y3QuIFRoZSBDb3JyZXNwb25kaW5nIFJlc291cmNlCmFu ZCBhbnkgSW5zdGFsbGF0aW9uIEluZm9ybWF0aW9uIHByb3ZpZGVkIHVuZGVyIHRoaXMgU2VjdGlv biBtdXN0IGJlIGluIGEKcHVibGljbHkgZG9jdW1lbnRlZCBmb3JtYXQsIG11c3Qgbm90IGltcG9z ZSBhZGRpdGlvbmFsIHJlc3RyaWN0aW9ucyB0aGF0Cm1hdGVyaWFsbHkgbGltaXQgdGhlIHByYWN0 aWNhbCBhYmlsaXR5IG9mIHJlY2lwaWVudHMgdG8gZXhlcmNpc2UgdGhlIHJpZ2h0cwpncmFudGVk IHVuZGVyIHRoaXMgTGljZW5zZSB0byBhY2Nlc3MsIGFuZCBtdXN0IHJlbWFpbiBhdmFpbGFibGUg Zm9yIGFzIGxvbmcKYXMgbmVjZXNzYXJ5IHRvIHNhdGlzZnkgdGhlIHJlcXVpcmVtZW50cyBvZiB0 aGlzIExpY2Vuc2UuCgogIEZvciB0aGUgYXZvaWRhbmNlIG9mIGRvdWJ0LCBDb3JyZXNwb25kaW5n IFJlc291cmNlIGluY2x1ZGVzIGFueQpjb25maWd1cmF0aW9uLCBvcmNoZXN0cmF0aW9uLCBpbnRl cmZhY2UgYWRhcHRhdGlvbiwgcHJvdG9jb2wgYmluZGluZywKb3Igc2VydmljZSBpbnRlZ3JhdGlv biBjb2RlIHRoYXQgaXMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIHRvIGVuYWJsZQp0aGUgb3BlcmF0 aW9uIG9mIHRoZSBjb3ZlcmVkIFdvcmsgYXMgcGFydCBvZiBhIG5ldHdvcmstYWNjZXNzaWJsZQpz ZXJ2aWNlLiBUaGlzIG9ibGlnYXRpb24gYXBwbGllcyByZWdhcmRsZXNzIG9mIHdoZXRoZXIgc3Vj aCBjb2RlIGlzCmNoYXJhY3Rlcml6ZWQgYXMg4oCcZ2x1ZSBjb2Rl4oCdLCDigJxpbmZyYXN0cnVj dHVyZSBjb2Rl4oCdLCBvciDigJxkZXBsb3ltZW50CmNvbmZpZ3VyYXRpb27igJ0uCgogIDguIEFk ZGl0aW9uYWwgVGVybXMuCgogIE5vdGhpbmcgaW4gdGhpcyBMaWNlbnNlIGdyYW50cyBwZXJtaXNz aW9uIHRvIHJlbGljZW5zZSBhIFdvcmsgaW4gYQptYW5uZXIgbm90IHBlcm1pdHRlZCBieSB0aGUg dGVybXMgdW5kZXIgd2hpY2ggdGhhdCBXb3JrIHdhcyBvcmlnaW5hbGx5CmxpY2Vuc2VkLgoKICAi QWRkaXRpb25hbCBwZXJtaXNzaW9ucyIgYXJlIHRlcm1zIHRoYXQgc3VwcGxlbWVudCB0aGlzIExp Y2Vuc2UgYnkKZ3JhbnRpbmcgbGltaXRlZCBleGNlcHRpb25zIHRvIG9uZSBvciBtb3JlIG9mIGl0 cyBjb25kaXRpb25zLCB3aXRob3V0CnJlbW92aW5nLCB3ZWFrZW5pbmcsIG9yIGNvbnRyYWRpY3Rp bmcgdGhlIGNvcmUgcmVxdWlyZW1lbnRzIG9mIHRoaXMKTGljZW5zZS4KCiAgQWRkaXRpb25hbCBw ZXJtaXNzaW9ucyB0aGF0IGFwcGx5IHRvIGFuIGVudGlyZSBXb3JrIHNoYWxsIGJlIHRyZWF0ZWQK YXMgaW5jb3Jwb3JhdGVkIGludG8gdGhpcyBMaWNlbnNlIHdpdGggcmVzcGVjdCB0byB0aGF0IFdv cmssIHRvIHRoZQpleHRlbnQgdGhhdCB0aGV5IGFyZSB2YWxpZCB1bmRlciBhcHBsaWNhYmxlIGxh dy4gV2hlcmUgYWRkaXRpb25hbApwZXJtaXNzaW9ucyBhcHBseSBvbmx5IHRvIGEgc3BlY2lmaWMg cG9ydGlvbiBvZiBhIFdvcmssIHRoYXQgcG9ydGlvbgptYXkgYmUgdXNlZCB1bmRlciB0aG9zZSBw ZXJtaXNzaW9ucywgcHJvdmlkZWQgdGhhdCB0aGUgV29yayBhcyBhIHdob2xlCnJlbWFpbnMgZ292 ZXJuZWQgYnkgdGhpcyBMaWNlbnNlLgoKICBXaGVuIGNvbnZleWluZyBhIFdvcmsgY292ZXJlZCBi eSB0aGlzIExpY2Vuc2UsIHlvdSBtYXkgY2hvb3NlIG5vdCB0bwpwcm9wYWdhdGUgYWRkaXRpb25h bCBwZXJtaXNzaW9ucyBmcm9tIHRoYXQgY29weSBvciBmcm9tIGFueSBwb3J0aW9uCnRoZXJlb2Yu IEFkZGl0aW9uYWwgcGVybWlzc2lvbnMgbWF5IGFsc28gYmUgcmVtb3ZlZCB3aGVuIG1vZGlmeWlu ZyB0aGUKV29yaywgd2hlcmUgc3VjaCByZW1vdmFsIGlzIG5lY2Vzc2FyeSB0byBwcmVzZXJ2ZSB0 aGUgY29uc2lzdGVuY3kgb3IKaW50ZW50IG9mIHRoaXMgTGljZW5zZS4KCiAgWW91IG1heSBwbGFj ZSBhZGRpdGlvbmFsIHBlcm1pc3Npb25zIG9uIG1hdGVyaWFsIGFkZGVkIGJ5IHlvdSB0byBhCmNv dmVyZWQgV29yaywgcHJvdmlkZWQgdGhhdCB5b3UgaGF2ZSB0aGUgYXV0aG9yaXR5IHRvIGdyYW50 IHN1Y2gKcGVybWlzc2lvbnMgZm9yIHRoYXQgbWF0ZXJpYWwuCgogIE5vdHdpdGhzdGFuZGluZyB0 aGUgb3RoZXIgcHJvdmlzaW9ucyBvZiB0aGlzIExpY2Vuc2UsIGFkZGl0aW9uYWwKcGVybWlzc2lv bnMgYXBwbGljYWJsZSB0byBtYXRlcmlhbCBhZGRlZCBieSB5b3UgbWF5IGluY2x1ZGUgdGVybXMK dGhhdDoKCiAgYSkgZGlzY2xhaW0gd2FycmFudHkgb3IgbGltaXQgbGlhYmlsaXR5IGZvciB0aGF0 IG1hdGVyaWFsOwoKICBiKSByZXF1aXJlIHRoYXQgcmVhc29uYWJsZSBsZWdhbCBub3RpY2VzIG9y IGF1dGhvciBhdHRyaWJ1dGlvbnMgYmUKICAgICBwcmVzZXJ2ZWQgaW4gQXBwcm9wcmlhdGUgTGVn YWwgTm90aWNlcyBhc3NvY2lhdGVkIHdpdGggdGhhdCBtYXRlcmlhbDsKCiAgYykgcHJvaGliaXQg bWlzcmVwcmVzZW50YXRpb24gb2YgdGhlIG9yaWdpbiBvZiB0aGF0IG1hdGVyaWFsIG9yIHJlcXVp cmUKICAgICB0aGF0IG1vZGlmaWVkIHZlcnNpb25zIGJlIGNsZWFybHkgbWFya2VkIGFzIHN1Y2g7 CgogIGQpIHJlc3RyaWN0IHRoZSBwcm9tb3Rpb25hbCB1c2Ugb2YgdGhlIG5hbWVzIG9mIGxpY2Vu c29ycyBvciBhdXRob3JzCiAgICAgb2YgdGhhdCBtYXRlcmlhbDsKCiAgZSkgZGlzY2xhaW0gYW55 IHJpZ2h0cyB1bmRlciB0cmFkZW1hcmsgbGF3IHRvIHVzZSBzcGVjaWZpYyB0cmFkZSBuYW1lcywK ICAgICB0cmFkZW1hcmtzLCBvciBzZXJ2aWNlIG1hcmtzIGFzc29jaWF0ZWQgd2l0aCB0aGF0IG1h dGVyaWFsLgoKICBObyBhZGRpdGlvbmFsIHBlcm1pc3Npb24gbWF5IGltcG9zZSBjb25kaXRpb25z IHRoYXQgcmVzdHJpY3QsIG5lZ2F0ZSwKb3IgY2lyY3VtdmVudCB0aGUgb2JsaWdhdGlvbnMgb2Yg dGhpcyBMaWNlbnNlIGNvbmNlcm5pbmcgc291cmNlCmF2YWlsYWJpbGl0eSwgY29weWxlZnQgcmVx dWlyZW1lbnRzLCBuZXR3b3JrLWJhc2VkIHVzZSwgb3IgdGhlIHJpZ2h0cwpvZiByZWNpcGllbnRz IHRvIHVzZSwgbW9kaWZ5LCBhbmQgcmVkaXN0cmlidXRlIHRoZSBXb3JrLgoKICBXaGVyZSBhZGRp dGlvbmFsIHBlcm1pc3Npb25zIGFwcGx5IHRvIGEgV29yaywgdGhlIGFwcGxpY2FibGUgc291cmNl CmZpbGVzIG11c3QgaW5jbHVkZSBhIGNsZWFyIG5vdGljZSBkZXNjcmliaW5nIHRob3NlIHBlcm1p c3Npb25zIG9yCmluZGljYXRpbmcgd2hlcmUgdGhlIGZ1bGwgdGV4dCBvZiBzdWNoIHBlcm1pc3Np b25zIG1heSBiZSBmb3VuZC4KCiAgTm90d2l0aHN0YW5kaW5nIHRoZSBjb3B5bGVmdCByZXF1aXJl bWVudHMgb2YgdGhpcyBMaWNlbnNlLCBhIGNvdmVyZWQKV29yayBtYXkgYmUgY29tYmluZWQsIGxp bmtlZCwgb3Igb3RoZXJ3aXNlIHVzZWQgdG9nZXRoZXIgd2l0aCBhIFdvcmsKbGljZW5zZWQgdW5k ZXIgYSBQcm9qZWN0IFRpY2sgQ29tcGF0aWJsZSBMaWNlbnNlLCBwcm92aWRlZCB0aGF0IHN1Y2gK Y29tYmluYXRpb24gZG9lcyBub3QgaW1wb3NlIGFkZGl0aW9uYWwgcmVzdHJpY3Rpb25zIG9uIHRo ZSBjb3ZlcmVkCldvcmsgYmV5b25kIHRob3NlIHBlcm1pdHRlZCBieSB0aGlzIExpY2Vuc2UuCgog IEEgV29yayBsaWNlbnNlZCB1bmRlciBhIFByb2plY3QgVGljayBDb21wYXRpYmxlIExpY2Vuc2Ug c2hhbGwgYmUKY29uc2lkZXJlZCwgZm9yIHRoZSBwdXJwb3NlcyBvZiB0aGlzIExpY2Vuc2UsIHRv IGJlIGxpY2Vuc2UtY29tcGF0aWJsZQp3aXRoIHRoaXMgTGljZW5zZS4gU3VjaCBjb21wYXRpYmls aXR5IGFwcGxpZXMgc29sZWx5IGZvciB0aGUgcHVycG9zZXMKb2YgY29tYmluYXRpb24sIGxpbmtp bmcsIGFuZCBpbnRlcm9wZXJhYmlsaXR5LCBhbmQgZG9lcyBub3QgYWx0ZXIgdGhlCmNvcHlsZWZ0 IHJlcXVpcmVtZW50cyBhcHBsaWNhYmxlIHRvIHRoZSBjb3ZlcmVkIFdvcmsgaXRzZWxmLgoKICBU aGUgZGVzaWduYXRpb24gb2YgYSBQcm9qZWN0IFRpY2sgQ29tcGF0aWJsZSBMaWNlbnNlIGRvZXMg bm90IGdyYW50CnBlcm1pc3Npb24gdG8gcmVsaWNlbnNlIGEgY292ZXJlZCBXb3JrIHVuZGVyIHRo YXQgbGljZW5zZSwgdW5sZXNzIHN1Y2gKcGVybWlzc2lvbiBpcyBleHByZXNzbHkgc3RhdGVkIGJ5 IHRoZSBhcHBsaWNhYmxlIGNvcHlyaWdodCBob2xkZXIuCgogIDkuIFRlcm1pbmF0aW9uLgoKICBZ b3UgbWF5IG5vdCBwcm9wYWdhdGUsIGNvbnZleSwgb3IgbW9kaWZ5IGEgY292ZXJlZCBXb3JrIGV4 Y2VwdCBhcwpleHByZXNzbHkgcGVybWl0dGVkIHVuZGVyIHRoaXMgTGljZW5zZS4gQW55IGF0dGVt cHQgdG8gZG8gc28gb3RoZXJ3aXNlCmlzIHZvaWQgYW5kIHNoYWxsIGF1dG9tYXRpY2FsbHkgdGVy bWluYXRlIHlvdXIgcmlnaHRzIHVuZGVyIHRoaXMKTGljZW5zZS4gSG93ZXZlciwgaWYgeW91IGNl YXNlIGFsbCB2aW9sYXRpb25zIG9mIHRoaXMgTGljZW5zZSwgeW91cgpyaWdodHMgdW5kZXIgdGhp cyBMaWNlbnNlIGZyb20gYSBwYXJ0aWN1bGFyIGNvcHlyaWdodCBob2xkZXIgYXJlCnJlaW5zdGF0 ZWQgcHJvdmlzaW9uYWxseSwgdW5sZXNzIGFuZCB1bnRpbCB0aGF0IGNvcHlyaWdodCBob2xkZXIK ZXhwbGljaXRseSBhbmQgZmluYWxseSB0ZXJtaW5hdGVzIHRob3NlIHJpZ2h0cy4KCiAgWW91ciBy aWdodHMgYXJlIHJlaW5zdGF0ZWQgcGVybWFuZW50bHkgaWYgdGhlIGNvcHlyaWdodCBob2xkZXIg ZmFpbHMgdG8Kbm90aWZ5IHlvdSBvZiB0aGUgdmlvbGF0aW9uIGJ5IHJlYXNvbmFibGUgbWVhbnMg d2l0aGluIHNpeHR5ICg2MCkgZGF5cwphZnRlciB0aGUgY2Vzc2F0aW9uIG9mIHRoZSB2aW9sYXRp b24uCgogIEFkZGl0aW9uYWxseSwgeW91ciByaWdodHMgYXJlIHJlaW5zdGF0ZWQgcGVybWFuZW50 bHkgaWYgdGhpcyBpcyB0aGUKZmlyc3QgdGltZSB5b3UgaGF2ZSByZWNlaXZlZCBub3RpY2Ugb2Yg YSB2aW9sYXRpb24gb2YgdGhpcyBMaWNlbnNlIGZyb20KdGhhdCBjb3B5cmlnaHQgaG9sZGVyLCBh bmQgeW91IGN1cmUgdGhlIHZpb2xhdGlvbiB3aXRoaW4gdGhpcnR5ICgzMCkKZGF5cyBhZnRlciBy ZWNlaXZpbmcgc3VjaCBub3RpY2UuCgogIFRlcm1pbmF0aW9uIG9mIHlvdXIgcmlnaHRzIHVuZGVy IHRoaXMgU2VjdGlvbiBkb2VzIG5vdCB0ZXJtaW5hdGUgdGhlCmxpY2Vuc2VzIG9mIGFueSBwYXJ0 aWVzIHdobyBoYXZlIHJlY2VpdmVkIGNvcGllcyBvZiB0aGUgV29yaywgb3IgcmlnaHRzCnVuZGVy IHRoaXMgTGljZW5zZSwgZnJvbSB5b3UgcHJpb3IgdG8gc3VjaCB0ZXJtaW5hdGlvbi4KCiAgMTAu IEFjY2VwdGFuY2UgTm90IFJlcXVpcmVkIGZvciBQb3NzZXNzaW9uIG9yIFVzZS4KCiAgWW91IGFy ZSBub3QgcmVxdWlyZWQgdG8gYWNjZXB0IHRoaXMgTGljZW5zZSBpbiBvcmRlciB0byByZWNlaXZl LApwb3NzZXNzLCBvciB1c2UgYSBjb3B5IG9mIGEgY292ZXJlZCBXb3JrLiBUaGUgbWVyZSBhY3Qg b2YgZG93bmxvYWRpbmcsCnJlY2VpdmluZywgc3RvcmluZywgb3IgZXhlY3V0aW5nIHRoZSBXb3Jr IGRvZXMgbm90IGNvbnN0aXR1dGUgYWNjZXB0YW5jZQpvZiB0aGlzIExpY2Vuc2UuCgogIFByb3Bh Z2F0aW9uIG9yIGNvbnZleWFuY2Ugb2YgYSBjb3ZlcmVkIFdvcmsgdGhhdCBvY2N1cnMgc29sZWx5 IGFzIGFuCmF1dG9tYXRpYywgaW5jaWRlbnRhbCwgb3IgcGFzc2l2ZSBjb25zZXF1ZW5jZSBvZiB1 c2luZyBhIG5ldHdvcmssCmRpc3RyaWJ1dGlvbiBzeXN0ZW0sIG9yIHBlZXItdG8tcGVlciB0cmFu c21pc3Npb24gdG8gcmVjZWl2ZSBhIGNvcHkKbGlrZXdpc2UgZG9lcyBub3QgcmVxdWlyZSBhY2Nl cHRhbmNlIG9mIHRoaXMgTGljZW5zZS4KCiAgSG93ZXZlciwgbm90aGluZyBvdGhlciB0aGFuIHRo aXMgTGljZW5zZSBncmFudHMgeW91IHBlcm1pc3Npb24gdG8KcHJvcGFnYXRlLCBjb252ZXksIG9y IG1vZGlmeSBhIGNvdmVyZWQgV29yay4gQW55IHN1Y2ggYWN0aW9ucyB3aXRob3V0CmF1dGhvcml6 YXRpb24gdW5kZXIgdGhpcyBMaWNlbnNlIGNvbnN0aXR1dGUgY29weXJpZ2h0IGluZnJpbmdlbWVu dC4KCiAgQnkgcHJvcGFnYXRpbmcsIGNvbnZleWluZywgb3IgbW9kaWZ5aW5nIGEgY292ZXJlZCBX b3JrLCB5b3UgaW5kaWNhdGUKeW91ciBhY2NlcHRhbmNlIG9mIHRoaXMgTGljZW5zZSBhbmQgYWxs IG9mIGl0cyB0ZXJtcyBhbmQgY29uZGl0aW9ucwp3aXRoIHJlc3BlY3QgdG8gdGhvc2UgYWN0aW9u cy4KCiAgMTEuIEF1dG9tYXRpYyBMaWNlbnNpbmcgb2YgRG93bnN0cmVhbSBSZWNpcGllbnRzLgoK ICBUaGUgbGljZW5zZSBncmFudGVkIHRvIHJlY2lwaWVudHMgb2YgYSBjb3ZlcmVkIFdvcmsgYXJp c2VzIHNvbGVseSBieQpvcGVyYXRpb24gb2YgdGhpcyBMaWNlbnNlIGFuZCBub3QgYnkgdmlydHVl IG9mIGFueSBzZXBhcmF0ZSBhZ3JlZW1lbnQsCmNvbnRyYWN0LCBvciBwb2xpY3kuCgogIEVhY2gg dGltZSB5b3UgY29udmV5IGEgY292ZXJlZCBXb3JrLCB0aGUgcmVjaXBpZW50IGF1dG9tYXRpY2Fs bHkKcmVjZWl2ZXMgYSBsaWNlbnNlIGRpcmVjdGx5IGZyb20gdGhlIG9yaWdpbmFsIGxpY2Vuc29y cyB0byB1c2UsCm9wZXJhdGUsIHN0dWR5LCBtb2RpZnksIGFuZCBjb252ZXkgdGhhdCBXb3JrLCBz dWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQKY29uZGl0aW9ucyBvZiB0aGlzIExpY2Vuc2UuCgogIFlv dSBhcmUgbm90IHJlc3BvbnNpYmxlIGZvciBlbmZvcmNpbmcgY29tcGxpYW5jZSB3aXRoIHRoaXMg TGljZW5zZSBieQp0aGlyZCBwYXJ0aWVzLgoKICBBbiAiZW50aXR5IHRyYW5zYWN0aW9uIiBtZWFu cyBhIHRyYW5zYWN0aW9uIHRoYXQgdHJhbnNmZXJzIGNvbnRyb2wgb2YKYW4gb3JnYW5pemF0aW9u LCB0cmFuc2ZlcnMgc3Vic3RhbnRpYWxseSBhbGwgb2YgaXRzIGFzc2V0cywgc3ViZGl2aWRlcwph biBvcmdhbml6YXRpb24sIG9yIG1lcmdlcyBvcmdhbml6YXRpb25zLiBJZiBjb252ZXlhbmNlIG9m IGEgY292ZXJlZApXb3JrIHJlc3VsdHMgZnJvbSBhbiBlbnRpdHkgdHJhbnNhY3Rpb24sIGVhY2gg cGFydHkgdG8gdGhhdCB0cmFuc2FjdGlvbgp3aG8gcmVjZWl2ZXMgYSBjb3B5IG9mIHRoZSBXb3Jr IGFsc28gcmVjZWl2ZXMgYW55IGxpY2Vuc2VzIHRvIHRoZSBXb3JrCnRoYXQgdGhlIHByZWRlY2Vz c29yIGluIGludGVyZXN0IGhhZCBvciBjb3VsZCBncmFudCB1bmRlciB0aGlzIExpY2Vuc2UsCnRv Z2V0aGVyIHdpdGggdGhlIHJpZ2h0IHRvIHJlY2VpdmUgdGhlIENvcnJlc3BvbmRpbmcgUmVzb3Vy Y2Ugb2YgdGhlCldvcmssIGlmIHRoZSBwcmVkZWNlc3NvciBwb3NzZXNzZXMgaXQgb3IgY2FuIG9i dGFpbiBpdCB3aXRoIHJlYXNvbmFibGUKZWZmb3J0LgoKICBZb3UgbWF5IG5vdCBpbXBvc2UgYW55 IGFkZGl0aW9uYWwgbGVnYWwsIGNvbnRyYWN0dWFsLCB0ZWNobmljYWwsIG9yCnBvbGljeS1iYXNl ZCByZXN0cmljdGlvbnMgb24gdGhlIGV4ZXJjaXNlIG9mIHRoZSByaWdodHMgZ3JhbnRlZCBvcgph ZmZpcm1lZCB1bmRlciB0aGlzIExpY2Vuc2UuIEFueSBhdHRlbXB0IHRvIGltcG9zZSBzdWNoIGZ1 cnRoZXIKcmVzdHJpY3Rpb25zIGlzIHZvaWQgYW5kIHNoYWxsIG5vdCBhZmZlY3QgdGhlIHJpZ2h0 cyBvZiByZWNpcGllbnRzCnVuZGVyIHRoaXMgTGljZW5zZS4KCiAgMTIuIFBhdGVudHMuCgogIEEg IkNvbnRyaWJ1dG9yIiBpcyBhIGNvcHlyaWdodCBob2xkZXIgd2hvIGF1dGhvcml6ZXMgdGhlIHVz ZSBvZiBhCmNvdmVyZWQgV29yayB1bmRlciB0aGlzIExpY2Vuc2UuIFRoZSBXb3JrIHNvIGxpY2Vu c2VkIGlzIHJlZmVycmVkIHRvCmFzIHRoZSBDb250cmlidXRvcuKAmXMgIkNvbnRyaWJ1dG9yIFZl cnNpb24iLgoKICBFYWNoIENvbnRyaWJ1dG9yIGdyYW50cyB0byBldmVyeSByZWNpcGllbnQgb2Yg dGhlIENvbnRyaWJ1dG9yIFZlcnNpb24KYSBub24tZXhjbHVzaXZlLCB3b3JsZHdpZGUsIHJveWFs dHktZnJlZSwgaXJyZXZvY2FibGUgcGF0ZW50IGxpY2Vuc2UKdW5kZXIgYW55IHBhdGVudCBjbGFp bXMgb3duZWQgb3IgY29udHJvbGxlZCBieSB0aGF0IENvbnRyaWJ1dG9yLCB0bwp0aGUgZXh0ZW50 IHRoYXQgc3VjaCBjbGFpbXMgYXJlIG5lY2Vzc2FyaWx5IGluZnJpbmdlZCBieSB0aGUgdXNlLApv cGVyYXRpb24sIG1vZGlmaWNhdGlvbiwgb3IgY29udmV5YW5jZSBvZiB0aGUgQ29udHJpYnV0b3Ig VmVyc2lvbiBpbgphIG1hbm5lciBwZXJtaXR0ZWQgYnkgdGhpcyBMaWNlbnNlLgoKICBUaGlzIHBh dGVudCBsaWNlbnNlIGFwcGxpZXMgb25seSB0byB0aG9zZSBwYXRlbnQgY2xhaW1zIHRoYXQgYXJl CnVuYXZvaWRhYmx5IGluZnJpbmdlZCBieSBleGVyY2lzaW5nIHRoZSByaWdodHMgZ3JhbnRlZCB1 bmRlciB0aGlzCkxpY2Vuc2Ugd2l0aCByZXNwZWN0IHRvIHRoZSBDb250cmlidXRvciBWZXJzaW9u LiBJdCBkb2VzIG5vdCBleHRlbmQKdG8gcGF0ZW50IGNsYWltcyB0aGF0IHdvdWxkIGJlIGluZnJp bmdlZCBzb2xlbHkgYXMgYSByZXN1bHQgb2YgZnVydGhlcgptb2RpZmljYXRpb24sIGNvbWJpbmF0 aW9uLCBvciB1c2UgYmV5b25kIHRoZSBzY29wZSBvZiB0aGUgQ29udHJpYnV0b3IKVmVyc2lvbi4K CiAgSWYgeW91IGNvbnZleSBhIGNvdmVyZWQgV29yaywgeW91IG1heSBub3QgcmVseSBvbiwgYXNz ZXJ0LCBvciBlbmZvcmNlCmFueSBwYXRlbnQgbGljZW5zZSwgYWdyZWVtZW50LCBjb3ZlbmFudCwg b3IgYXJyYW5nZW1lbnQgdGhhdCB3b3VsZApyZXN1bHQgaW4gYW55IHJlY2lwaWVudCBiZWluZyBk ZW5pZWQgdGhlIGZ1bGwgZXhlcmNpc2Ugb2YgdGhlIHJpZ2h0cwpncmFudGVkIHVuZGVyIHRoaXMg TGljZW5zZS4KCiAgQW55IHBhdGVudCBsaWNlbnNlIGdyYW50ZWQgaW4gY29ubmVjdGlvbiB3aXRo IGEgY292ZXJlZCBXb3JrIG11c3QgYmUKbm9uLWRpc2NyaW1pbmF0b3J5IGFuZCBtdXN0IGV4dGVu ZCBlcXVhbGx5IHRvIGFsbCByZWNpcGllbnRzIG9mIHRoYXQKV29yayB1bmRlciB0aGlzIExpY2Vu c2UuCgogIE5vdGhpbmcgaW4gdGhpcyBMaWNlbnNlIHNoYWxsIGJlIGNvbnN0cnVlZCBhcyBsaW1p dGluZywgZXhjbHVkaW5nLCBvcgp3YWl2aW5nIGFueSBpbXBsaWVkIHBhdGVudCBsaWNlbnNlLCBw YXRlbnQgZXhoYXVzdGlvbiBkb2N0cmluZSwgb3IKb3RoZXIgZGVmZW5zZXMgdG8gcGF0ZW50IGlu ZnJpbmdlbWVudCB0aGF0IG1heSBiZSBhdmFpbGFibGUgdW5kZXIKYXBwbGljYWJsZSBsYXcuCgog IDEzLiBMaW5raW5nIGFuZCBDb21iaW5lZCBXb3Jrcy4KCiAgQSBMaWJyYXJ5IFdvcmsgY292ZXJl ZCBieSB0aGlzIExpY2Vuc2UgbWF5IGJlIGxpbmtlZCwgY29tYmluZWQsIG9yCm90aGVyd2lzZSBp bnRlZ3JhdGVkIHdpdGggYW4gaW5kZXBlbmRlbnQgV29yaywgd2hldGhlciBzdGF0aWNhbGx5IG9y CmR5bmFtaWNhbGx5LCB3aXRob3V0IGNhdXNpbmcgdGhpcyBMaWNlbnNlIHRvIGFwcGx5IHRvIHRo ZSBpbmRlcGVuZGVudApXb3JrIGFzIGEgd2hvbGUsIHByb3ZpZGVkIHRoYXQgdGhlIHRlcm1zIG9m IHRoaXMgU2VjdGlvbiBhcmUgc2F0aXNmaWVkLgoKICBUaGUgTGlicmFyeSBXb3JrIGl0c2VsZiwg YW5kIGFueSBtb2RpZmljYXRpb25zIHRvIGl0LCBtdXN0IHJlbWFpbgpsaWNlbnNlZCB1bmRlciB0 aGlzIExpY2Vuc2UuIEFueSBwYXJ0eSBjb252ZXlpbmcgYSBtb2RpZmllZCB2ZXJzaW9uIG9mCnRo ZSBMaWJyYXJ5IFdvcmssIG9yIGEgQ29tYmluZWQgV29yayBjb250YWluaW5nIGEgbW9kaWZpZWQg TGlicmFyeSBXb3JrLAptdXN0IGNvbXBseSB3aXRoIHRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2Ug d2l0aCByZXNwZWN0IHRvIHRoZSBMaWJyYXJ5CldvcmsuCgogIFlvdSBtdXN0IG5vdCByZXN0cmlj dCB0aGUgYWJpbGl0eSBvZiByZWNpcGllbnRzIHRvIG1vZGlmeSB0aGUgTGlicmFyeQpXb3JrIGFu ZCB0byByZWxpbmsgb3Igb3RoZXJ3aXNlIHVzZSBhIG1vZGlmaWVkIHZlcnNpb24gb2YgdGhlIExp YnJhcnkKV29yayB3aXRoIHRoZSBDb21iaW5lZCBXb3JrLiBUaGlzIGluY2x1ZGVzIHByb3ZpZGlu ZyB0aGUgbmVjZXNzYXJ5CnNvdXJjZSBjb2RlLCBpbnRlcmZhY2UgaW5mb3JtYXRpb24sIGFuZCBi dWlsZCBtZWNoYW5pc21zIHJlcXVpcmVkIHRvCmVuYWJsZSBzdWNoIG1vZGlmaWNhdGlvbiBhbmQg cmVsaW5raW5nLgoKICBBIENvbWJpbmVkIFdvcmsgdGhhdCBtZXJlbHkgbGlua3MgdG8sIGltcG9y dHMsIG9yIHVzZXMgYSBMaWJyYXJ5IFdvcmsKdGhyb3VnaCBpdHMgZGVmaW5lZCBpbnRlcmZhY2Vz IHNoYWxsIG5vdCBiZSByZXF1aXJlZCB0byBiZSBsaWNlbnNlZAp1bmRlciB0aGlzIExpY2Vuc2Us IHByb3ZpZGVkIHRoYXQgdGhlIExpYnJhcnkgV29yayByZW1haW5zIHNlcGFyYWJsZQphbmQgcmVw bGFjZWFibGUuCgogIE1lcmUgYWdncmVnYXRpb24gb2YgaW5kZXBlbmRlbnQgV29ya3MsIG9yIGNv bW11bmljYXRpb24gYmV0d2VlbgppbmRlcGVuZGVudCBXb3JrcyB0aHJvdWdoIHN0YW5kYXJkIGlu dGVyZmFjZXMsIGludGVyLXByb2Nlc3MKY29tbXVuaWNhdGlvbiwgY29tbWFuZC1saW5lIGludm9j YXRpb24sIG9yIG5ldHdvcmsgcHJvdG9jb2xzLCBkb2VzIG5vdApieSBpdHNlbGYgY2F1c2UgdGhp cyBMaWNlbnNlIHRvIGFwcGx5IHRvIHN1Y2ggaW5kZXBlbmRlbnQgV29ya3MuCgogIDE0LiBFcXVh bCBBY2Nlc3MgdG8gQ29ycmVzcG9uZGluZyBSZXNvdXJjZS4KCiAgV2hlcmUgYWNjZXNzIHRvIGEg Y292ZXJlZCBXb3JrIG9yIGl0cyBDb3JyZXNwb25kaW5nIFJlc291cmNlIGlzIGdyYW50ZWQKdG8g YW55IHJlY2lwaWVudCwgc3VjaCBhY2Nlc3MgbXVzdCBiZSBwcm92aWRlZCBpbiBhIG1hbm5lciBj b25zaXN0ZW50CndpdGggdGhlIHJlcXVpcmVtZW50cyBvZiB0aGlzIExpY2Vuc2UgYW5kIG11c3Qg bm90IGltcG9zZSBhZGRpdGlvbmFsCnJlc3RyaWN0aW9ucyB0aGF0IG1hdGVyaWFsbHkgYW5kIGRl bW9uc3RyYWJseSBpbXBhaXIgdGhlIGFiaWxpdHkgb2YKcmVjaXBpZW50cyB0byBleGVyY2lzZSB0 aGUgcmlnaHRzIGdyYW50ZWQgaGVyZWluLgoKICBEaWZmZXJlbmNlcyBpbiB0aW1pbmcsIGZvcm1h dCwgbG9jYXRpb24sIG9yIG1ldGhvZCBvZiBhY2Nlc3Mgc2hhbGwgbm90CmNvbnN0aXR1dGUgYSB2 aW9sYXRpb24gb2YgdGhpcyBMaWNlbnNlIHVubGVzcyB0aGV5IGhhdmUgdGhlIHByYWN0aWNhbApl ZmZlY3Qgb2YgcHJldmVudGluZyBvciBzaWduaWZpY2FudGx5IGhpbmRlcmluZyByZWNpcGllbnRz IGZyb20KdW5kZXJzdGFuZGluZywgbW9kaWZ5aW5nLCBvciByZXVzaW5nIHRoZSBXb3JrLgoKICBU aGUgQ29ycmVzcG9uZGluZyBSZXNvdXJjZSBtdXN0IGJlIHByb3ZpZGVkIGluIGEgZm9ybSB0aGF0 IGlzIHJlYXNvbmFibHkKdXNhYmxlIGFuZCBtb2RpZmlhYmxlIGJ5IGEgY29tcGV0ZW50IGRldmVs b3BlciB1c2luZyBjb21tb25seSBhdmFpbGFibGUKdG9vbHMuCgogIDE1LiBQcm90ZWN0aW9uIG9m IENvbnRyaWJ1dG9yIFJpZ2h0cy4KCiAgTm8gYWdyZWVtZW50LCBwb2xpY3ksIGNvbnRyYWN0LCBv ciBvdGhlciBhcnJhbmdlbWVudCBtYXkgcmV0cm9hY3RpdmVseQpyZXN0cmljdCwgcmV2b2tlLCBv ciBudWxsaWZ5IHRoZSByaWdodHMgZ3JhbnRlZCB0byBhIENvbnRyaWJ1dG9yIHVuZGVyCnRoaXMg TGljZW5zZSB3aXRoIHJlc3BlY3QgdG8gdGhlaXIgY29udHJpYnV0aW9ucy4KCiAgQW55IGFkZGl0 aW9uYWwgYWdyZWVtZW50IGFmZmVjdGluZyBhIENvbnRyaWJ1dG9y4oCZcyBjb250cmlidXRpb25z IG11c3QKbm90IGRpbWluaXNoIHRoZSBwZXJtaXNzaW9ucywgZnJlZWRvbXMsIG9yIHByb3RlY3Rp b25zIGdyYW50ZWQgYnkgdGhpcwpMaWNlbnNlIHRvIHRoYXQgQ29udHJpYnV0b3Igb3IgdG8gcmVj aXBpZW50cyBvZiB0aGUgY292ZXJlZCBXb3JrLgoKICBJZiBjb25kaXRpb25zIGFyZSBpbXBvc2Vk IHVwb24geW91LCB3aGV0aGVyIGJ5IGNvdXJ0IG9yZGVyLCBhZ3JlZW1lbnQsCnBvbGljeSwgb3Ig b3RoZXJ3aXNlLCB0aGF0IGNvbnRyYWRpY3QgdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNl LApzdWNoIGNvbmRpdGlvbnMgZG8gbm90IGV4Y3VzZSB5b3UgZnJvbSBjb21wbHlpbmcgd2l0aCB0 aGlzIExpY2Vuc2UuIElmCnlvdSBjYW5ub3QgY29udmV5IGEgY292ZXJlZCBXb3JrIGluIGEgbWFu bmVyIHRoYXQgc2ltdWx0YW5lb3VzbHkKc2F0aXNmaWVzIHlvdXIgb2JsaWdhdGlvbnMgdW5kZXIg dGhpcyBMaWNlbnNlIGFuZCBhbnkgb3RoZXIgYXBwbGljYWJsZQpvYmxpZ2F0aW9ucywgdGhlbiB5 b3UgbWF5IG5vdCBjb252ZXkgdGhlIGNvdmVyZWQgV29yayBhdCBhbGwuCgogIFlvdSBtYXkgbm90 IGltcG9zZSwgYWNjZXB0LCBvciBwYXNzIHRocm91Z2ggYW55IG9ibGlnYXRpb24gdGhhdCBoYXMg dGhlCmVmZmVjdCBvZiByZXN0cmljdGluZywgY29uZGl0aW9uaW5nLCBvciBkaXNjb3VyYWdpbmcg dGhlIGV4ZXJjaXNlIG9mCnRoZSByaWdodHMgZ3JhbnRlZCB1bmRlciB0aGlzIExpY2Vuc2UgYnkg cmVjaXBpZW50cyBvZiB0aGUgY292ZXJlZCBXb3JrLgpGb3IgZXhhbXBsZSwgaWYgeW91IGFncmVl IHRvIHRlcm1zIHRoYXQgcmVxdWlyZSB0aGUgY29sbGVjdGlvbiBvZiBmZWVzLApyb3lhbHRpZXMs IG9yIG90aGVyIGNvbnNpZGVyYXRpb24gYXMgYSBjb25kaXRpb24gb2YgZnVydGhlciBjb252ZXlh bmNlLAphbmQgc3VjaCB0ZXJtcyBhcmUgaW5jb21wYXRpYmxlIHdpdGggdGhpcyBMaWNlbnNlLCB5 b3UgbXVzdCByZWZyYWluCmVudGlyZWx5IGZyb20gY29udmV5aW5nIHRoZSBjb3ZlcmVkIFdvcmsg dW5kZXIgdGhvc2UgdGVybXMuCgogIDE2LiBVbmlmb3JtIEV4ZXJjaXNlIG9mIFJpZ2h0cy4KCiAg V2hlcmUgYSBjb3ZlcmVkIFdvcmsgaXMgY29udmV5ZWQsIGRpc3RyaWJ1dGVkLCBvciBtYWRlIGF2 YWlsYWJsZSBpbgpvYmplY3QgY29kZSwgZXhlY3V0YWJsZSwgb3BlcmF0aW9uYWwsIG9yIHNlcnZp Y2UgZm9ybSwgdGhlCkNvcnJlc3BvbmRpbmcgUmVzb3VyY2UgZm9yIHRoYXQgV29yayBtdXN0IGJl IG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoaXMKTGljZW5zZSBubyBsYXRlciB0aGFuIHRoZSB0aW1l IGF0IHdoaWNoIHN1Y2ggZm9ybSBpcyBmaXJzdCBwcm92aWRlZCB0bwphbnkgcmVjaXBpZW50LgoK ICBBIGRpZmZlcmVuY2UgaW4gdGltaW5nLCBtYW5uZXIsIG9yIGNvbmRpdGlvbnMgdW5kZXIgd2hp Y2ggYWNjZXNzIHRvIHRoZQpXb3JrIG9yIGl0cyBDb3JyZXNwb25kaW5nIFJlc291cmNlIGlzIHBy b3ZpZGVkIHNoYWxsIGNvbnN0aXR1dGUgYQp2aW9sYXRpb24gb2YgdGhpcyBMaWNlbnNlIG9ubHkg d2hlcmUgc3VjaCBkaWZmZXJlbmNlIG1hdGVyaWFsbHkgYW5kCmRlbW9uc3RyYWJseSBwcmV2ZW50 cyByZWNpcGllbnRzIGZyb20gZXhlcmNpc2luZyB0aGUgcmlnaHRzIGdyYW50ZWQKdW5kZXIgdGhp cyBMaWNlbnNlLgoKICBOb3RoaW5nIGluIHRoaXMgU2VjdGlvbiBzaGFsbCBiZSBjb25zdHJ1ZWQg dG8gcHJvaGliaXQgc3RhZ2VkIHJlbGVhc2VzLApkaWZmZXJlbnRpYXRlZCBkaXN0cmlidXRpb24g bW9kZWxzLCBvciB2YXJpZWQgYWNjZXNzIGFycmFuZ2VtZW50cywKcHJvdmlkZWQgdGhhdCB0aGUg Q29ycmVzcG9uZGluZyBSZXNvdXJjZSBpcyBtYWRlIGF2YWlsYWJsZSBpbiBhIG1hbm5lcgpjb25z aXN0ZW50IHdpdGggdGhlIHJlcXVpcmVtZW50cyBvZiB0aGlzIExpY2Vuc2UgYW5kIHdpdGhvdXQg aW1wb3NpbmcKYWRkaXRpb25hbCByZXN0cmljdGlvbnMgb24gdGhlIGV4ZXJjaXNlIG9mIHRoZSBy aWdodHMgZ3JhbnRlZCBoZXJlaW4uCgogIFRoZSByaWdodHMgZ3JhbnRlZCB1bmRlciB0aGlzIExp Y2Vuc2UgYXBwbHkgZXF1YWxseSB0byBhbGwgcmVjaXBpZW50cwphbmQgYWxsIGZpZWxkcyBvZiBl bmRlYXZvci4gTm8gcmVzdHJpY3Rpb24gb3IgY29uZGl0aW9uIG1heSBiZSBpbXBvc2VkCnRoYXQg bGltaXRzIHRoZSBleGVyY2lzZSBvZiBzdWNoIHJpZ2h0cyBiYXNlZCBvbiB0aGUgbmF0dXJlLCBp ZGVudGl0eSwKb3IgcHVycG9zZSBvZiB0aGUgcmVjaXBpZW50LgoKICBUaGUgcmlnaHRzIGdyYW50 ZWQgdW5kZXIgdGhpcyBMaWNlbnNlIG1heSBub3QgYmUgbmVnYXRlZCBvciByZXN0cmljdGVkCmJ5 IHNlcGFyYXRlIGFncmVlbWVudHMsIHBvbGljaWVzLCBvciBjb250cmFjdHVhbCB0ZXJtcyB0byB0 aGUgZXh0ZW50CnRoYXQgc3VjaCB0ZXJtcyBjb25mbGljdCB3aXRoIHRoaXMgTGljZW5zZS4KCiAg V2hlcmUgYSBjb3ZlcmVkIFdvcmsgaXMgb3BlcmF0ZWQgYXMgcGFydCBvZiBhIGxhcmdlciBzeXN0 ZW0sIHNlcnZpY2UsCm9yIGRlcGxveW1lbnQsIHRoZSBDb3JyZXNwb25kaW5nIFJlc291cmNlIHNo YWxsIGluY2x1ZGUgb25seSB0aGUgc291cmNlCmNvZGUgb2YgdGhlIGNvdmVyZWQgV29yayBpdHNl bGYgYW5kIGFueSBtb2RpZmljYXRpb25zIHRoZXJldG8sIGFuZCBkb2VzCm5vdCByZXF1aXJlIHRo ZSBkaXNjbG9zdXJlIG9mIGluZGVwZW5kZW50IHdvcmtzIG9yIHN5c3RlbSBjb21wb25lbnRzCnRo YXQgYXJlIG5vdCBkZXJpdmVkIGZyb20gdGhlIGNvdmVyZWQgV29yay4KCiAgMTcuIERpc2NsYWlt ZXIgb2YgV2FycmFudHkuCgogIFRPIFRIRSBNQVhJTVVNIEVYVEVOVCBQRVJNSVRURUQgQlkgQVBQ TElDQUJMRSBMQVcsIFRIRSBXT1JLIElTIFBST1ZJREVECiJBUyBJUyIgQU5EIFdJVEhPVVQgV0FS UkFOVFkgT0YgQU5ZIEtJTkQuIEVYQ0VQVCBXSEVSRSBPVEhFUldJU0UKRVhQUkVTU0xZIFNUQVRF RCBJTiBXUklUSU5HLCBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EL09SIE9USEVSIFBBUlRJRVMK UFJPVklERSBUSEUgV09SSyBXSVRIT1VUIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF UywgSU5DTFVESU5HLApCVVQgTk9UIExJTUlURUQgVE8sIElNUExJRUQgV0FSUkFOVElFUyBPRiBN RVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SCkEgUEFSVElDVUxBUiBQVVJQT1NFLCBUSVRMRSwg T1IgTk9OLUlORlJJTkdFTUVOVC4gVEhFIEVOVElSRSBSSVNLIEFTIFRPClRIRSBRVUFMSVRZLCBQ RVJGT1JNQU5DRSwgQU5EIEZVTkNUSU9OQUxJVFkgT0YgVEhFIFdPUksgSVMgV0lUSCBZT1UuClNI T1VMRCBUSEUgV09SSyBQUk9WRSBERUZFQ1RJVkUgT1IgRkFJTCBUTyBPUEVSQVRFIEFTIEVYUEVD VEVELCBZT1UKQVNTVU1FIEFMTCBDT1NUUyBPRiBORUNFU1NBUlkgU0VSVklDSU5HLCBSRVBBSVIs IENPUlJFQ1RJT04sIE9SIFJFTUVESUFUSU9OLgoKICAxOC4gTGltaXRhdGlvbiBvZiBMaWFiaWxp dHkuCgogIFRPIFRIRSBNQVhJTVVNIEVYVEVOVCBQRVJNSVRURUQgQlkgQVBQTElDQUJMRSBMQVcs IElOIE5PIEVWRU5UIFNIQUxMCkFOWSBDT1BZUklHSFQgSE9MREVSLCBDT05UUklCVVRPUiwgT1Ig QU5ZIE9USEVSIFBBUlRZIFdITyBNT0RJRklFUywKQ09OVkVZUywgT1IgT1RIRVJXSVNFIE1BS0VT IFRIRSBXT1JLIEFWQUlMQUJMRSBCRSBMSUFCTEUgVE8gWU9VIEZPUgpBTlkgREFNQUdFUyBPRiBB TlkgS0lORCwgSU5DTFVESU5HLCBXSVRIT1VUIExJTUlUQVRJT04sIERJUkVDVCwKSU5ESVJFQ1Qs IEdFTkVSQUwsIFNQRUNJQUwsIElOQ0lERU5UQUwsIENPTlNFUVVFTlRJQUwsIEVYRU1QTEFSWSwg T1IKUFVOSVRJVkUgREFNQUdFUywgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRI IFRIRSBVU0UgT0YsIE9SCklOQUJJTElUWSBUTyBVU0UsIFRIRSBXT1JLLCBFVkVOIElGIFNVQ0gg UEFSVFkgSEFTIEJFRU4gQURWSVNFRCBPRiBUSEUKUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VT LgoKICAxOS4gSW50ZXJwcmV0YXRpb24gb2YgU2VjdGlvbnMgMTcgYW5kIDE4LgoKICBJZiB0aGUg ZGlzY2xhaW1lciBvZiB3YXJyYW50eSBvciBsaW1pdGF0aW9uIG9mIGxpYWJpbGl0eSBzZXQgZm9y dGggaW4KU2VjdGlvbnMgMTcgYW5kIDE4IG9mIHRoaXMgTGljZW5zZSBjYW5ub3QgYmUgZ2l2ZW4g ZnVsbCBsZWdhbCBlZmZlY3QKdW5kZXIgYXBwbGljYWJsZSBsb2NhbCBsYXcsIHN1Y2ggcHJvdmlz aW9ucyBzaGFsbCBiZSBlbmZvcmNlZCB0byB0aGUKbWF4aW11bSBleHRlbnQgcGVybWl0dGVkIGJ5 IHRoYXQgbGF3LgoKICBJbiBzdWNoIGNhc2VzLCBjb3VydHMgc2hhbGwgYXBwbHkgdGhlIGxvY2Fs IGxhdyBpbiBhIG1hbm5lciB0aGF0IG1vc3QKY2xvc2VseSBhcHByb3hpbWF0ZXMgYW4gYWJzb2x1 dGUgZXhjbHVzaW9uIG9yIGxpbWl0YXRpb24gb2YgY2l2aWwKbGlhYmlsaXR5IGluIGNvbm5lY3Rp b24gd2l0aCB0aGUgV29yaywgY29uc2lzdGVudCB3aXRoIHRoZSBpbnRlbnQgb2YKU2VjdGlvbnMg MTcgYW5kIDE4LCB1bmxlc3MgYSB3YXJyYW50eSBvciBhc3N1bXB0aW9uIG9mIGxpYWJpbGl0eQph Y2NvbXBhbmllcyBhIGNvcHkgb2YgdGhlIFdvcmsgaW4gcmV0dXJuIGZvciBhIGZlZS4KCiAgICAg ICAgICAgICAgICAgICAgRU5EIE9GIFRFUk1TIEFORCBDT05ESVRJT05TCgogICAgICAgICAgICBI b3cgdG8gQXBwbHkgVGhpcyBMaWNlbnNlIHRvIFlvdXIgUHJvZ3JhbXMKCiAgSWYgeW91IGRldmVs b3AgYSBuZXcgcHJvZ3JhbSBhbmQgd2lzaCB0byBncmFudCB0aGUgcHVibGljIHRoZQpmcmVlZG9t cyB0byB1c2UsIHN0dWR5LCBtb2RpZnksIGFuZCBjb252ZXkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m CnRoaXMgTGljZW5zZSwgeW91IG1heSBhcHBseSB0aGlzIExpY2Vuc2UgdG8gdGhlIHByb2dyYW0g YnkKYXR0YWNoaW5nIHRoZSBub3RpY2VzIGRlc2NyaWJlZCBiZWxvdy4KCiAgSXQgaXMgcmVjb21t ZW5kZWQgdG8gcGxhY2UgdGhlc2Ugbm90aWNlcyBhdCB0aGUgYmVnaW5uaW5nIG9mCmVhY2ggc291 cmNlIGZpbGUsIGluIG9yZGVyIHRvIGNsZWFybHkgaW5kaWNhdGUgdGhlIGFwcGxpY2FibGUKbGlj ZW5zZSB0ZXJtcyBhbmQgdGhlIGV4Y2x1c2lvbiBvZiB3YXJyYW50eS4gRWFjaCBmaWxlIHNob3Vs ZAppbmNsdWRlIGF0IGxlYXN0IGEgY29weXJpZ2h0IG5vdGljZSBhbmQgYSByZWZlcmVuY2UgdG8g d2hlcmUgdGhlCmZ1bGwgdGV4dCBvZiB0aGlzIExpY2Vuc2UgY2FuIGJlIGZvdW5kLgoKICAgIDxQ cm9ncmFtIG5hbWU+IOKAlCA8YnJpZWYgZGVzY3JpcHRpb24gb2Ygd2hhdCB0aGUgV29yayBkb2Vz PgogICAgQ29weXJpZ2h0IChDKSA8eWVhcj4gPGF1dGhvciBvciBvcmdhbml6YXRpb24+CgogICAg VGhpcyBXb3JrIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQcm9qZWN0IFRpY2sgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSwKICAgIFZlcnNpb24gMi4KCiAgICBUaGlzIExpY2Vuc2UgZ3JhbnRzIHlvdSB0 aGUgcmlnaHQgdG8gdXNlLCBvcGVyYXRlLCBzdHVkeSwgbW9kaWZ5LCBhbmQKICAgIGNvbnZleSB0 aGlzIFdvcmssIHByb3ZpZGVkIHRoYXQgYWxsIGNvbmRpdGlvbnMgb2YgdGhlIFBULUdQTC0yLjAt b25seQogICAgYXJlIGZ1bGx5IHJlc3BlY3RlZC4gQW55IGRpc3RyaWJ1dGlvbiBvciBvdGhlciBj b252ZXlhbmNlIG9mIHRoaXMgV29yaywKICAgIHdoZXRoZXIgaW4gb3JpZ2luYWwgb3IgbW9kaWZp ZWQgZm9ybSwgbXVzdCBwcmVzZXJ2ZSB0aGVzZSByaWdodHMgYW5kCiAgICB0aGUgY29ycmVzcG9u ZGluZyBvYmxpZ2F0aW9ucyBmb3IgYWxsIHJlY2lwaWVudHMuCgogICAgVGhpcyBXb3JrIGlzIHBy b3ZpZGVkIGZvciBwcmFjdGljYWwgdXNlIGFuZCBleHBlcmltZW50YXRpb24sIGJ1dCBpdCBpcwog ICAgZGlzdHJpYnV0ZWQgc3RyaWN0bHkgb24gYW4gIkFTIElTIiBiYXNpcy4gTm8gd2FycmFudHkg aXMgcHJvdmlkZWQsIGFuZAogICAgbm8gYXNzdXJhbmNlcyBhcmUgbWFkZSByZWdhcmRpbmcgcGVy Zm9ybWFuY2UsIGNvcnJlY3RuZXNzLCByZWxpYWJpbGl0eSwKICAgIGZpdG5lc3MgZm9yIGFueSBw dXJwb3NlLCBvciBub24taW5mcmluZ2VtZW50LiBBbGwgcmlza3MgYXJpc2luZyBmcm9tIHRoZQog ICAgdXNlLCBvcGVyYXRpb24sIG9yIG1vZGlmaWNhdGlvbiBvZiB0aGlzIFdvcmsgYXJlIGFzc3Vt ZWQgZW50aXJlbHkgYnkKICAgIHRoZSB1c2VyLgoKICAgIFdoZW5ldmVyIHRoaXMgV29yayBpcyBj b252ZXllZCBpbiBhbnkgZm9ybSwgYSBjb21wbGV0ZSBjb3B5IG9mIHRoZQogICAgUHJvamVjdCBU aWNrIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMiwgbXVzdCBiZSBpbmNsdWRlZC4K ICAgIElmIHRoZSBMaWNlbnNlIHRleHQgaXMgbm90IGRpc3RyaWJ1dGVkIGFsb25nc2lkZSB0aGUg V29yayBpdHNlbGYsIGl0CiAgICBtdXN0IGJlIG1hZGUgYXZhaWxhYmxlIHRocm91Z2ggYSBjbGVh ciwgcGVyc2lzdGVudCwgYW5kIHB1YmxpY2x5CiAgICBhY2Nlc3NpYmxlIGxvY2F0aW9uLCBpbiBh IG1hbm5lciBmdWxseSBjb25zaXN0ZW50IHdpdGggdGhlIHJlcXVpcmVtZW50cwogICAgb2YgdGhl IExpY2Vuc2UuCgogIFlvdSBhcmUgZW5jb3VyYWdlZCB0byBpbmNsdWRlIGluZm9ybWF0aW9uIG9u IGhvdyB0byBjb250YWN0IHRoZQphdXRob3Igb3IgbWFpbnRhaW5lciBvZiB0aGUgcHJvZ3JhbSBi eSBlbGVjdHJvbmljIG1lYW5zLgoKICBJZiB0aGUgcHJvZ3JhbSBwcm92aWRlcyBhbiBpbnRlcmFj dGl2ZSB1c2VyIGludGVyZmFjZSwgd2hldGhlcgp0aHJvdWdoIGEgdGVybWluYWwsIGdyYXBoaWNh bCBpbnRlcmZhY2UsIG9yIG5ldHdvcmstYmFzZWQgc3lzdGVtLAppdCBzaG91bGQgZGlzcGxheSBB cHByb3ByaWF0ZSBMZWdhbCBOb3RpY2VzIGluIGEgcmVhc29uYWJsZSBhbmQKcHJvbWluZW50IG1h bm5lci4gU3VjaCBub3RpY2VzIHNob3VsZCBpbmNsdWRlIGEgY29weXJpZ2h0IG5vdGljZSwKYSBz dGF0ZW1lbnQgdGhhdCB0aGUgcHJvZ3JhbSBpcyBwcm92aWRlZCB3aXRob3V0IHdhcnJhbnR5LCBh bmQKaW5mb3JtYXRpb24gb24gaG93IHRvIHZpZXcgYSBjb3B5IG9mIHRoaXMgTGljZW5zZS4KCiAg SWYgeW91IGRldmVsb3AgdGhlIHByb2dyYW0gYXMgcGFydCBvZiB5b3VyIGVtcGxveW1lbnQsIGVk dWNhdGlvbiwKb3IgdW5kZXIgY29udHJhY3QsIHlvdSBzaG91bGQgZW5zdXJlIHRoYXQgbm8gY29u ZmxpY3RpbmcgY2xhaW1zCmV4aXN0IHdpdGggcmVzcGVjdCB0byB0aGUgY29weXJpZ2h0IG9mIHRo ZSBwcm9ncmFtLCBvciB0aGF0IGFueQpyZXF1aXJlZCBwZXJtaXNzaW9ucyBvciBkaXNjbGFpbWVy cyBoYXZlIGJlZW4gb2J0YWluZWQuCgogIFRoaXMgTGljZW5zZSBpcyBhIGNvcHlsZWZ0IGxpY2Vu c2UuIFdvcmtzIGNvdmVyZWQgYnkgaXQgbWF5IG5vdApiZSBpbmNvcnBvcmF0ZWQgaW50byBwcm9w cmlldGFyeSB3b3JrcyBleGNlcHQgYXMgZXhwcmVzc2x5CnBlcm1pdHRlZCBieSB0aGUgdGVybXMg b2YgdGhpcyBMaWNlbnNlLiBJZiB5b3UgaW50ZW5kIHRvIHBlcm1pdAp1c2UsIGxpbmtpbmcsIG9y IGluY29ycG9yYXRpb24gdW5kZXIgZGlmZmVyZW50IGNvbmRpdGlvbnMsIHlvdQpzaG91bGQgY2Fy ZWZ1bGx5IGV2YWx1YXRlIHdoZXRoZXIgYSBkaWZmZXJlbnQgbGljZW5zZSBiZXR0ZXIKc3VpdHMg eW91ciBnb2Fscy4KCi0tLS0tLS0tLS0tCgpCZXN0IHJlZ2FyZHMsICAKTWVobWV0IFNhbWV0IER1 bWFuICAKQXV0aG9yIG9mIFByb2plY3QgVGljawpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpUaGUgb3BpbmlvbnMgZXhwcmVzc2VkIGluIHRoaXMgZW1haWwg YXJlIHRob3NlIG9mIHRoZSBzZW5kZXIgYW5kIG5vdCBuZWNlc3NhcmlseSB0aG9zZSBvZiB0aGUg T3BlbiBTb3VyY2UgSW5pdGlhdGl2ZS4gT2ZmaWNpYWwgc3RhdGVtZW50cyBieSB0aGUgT3BlbiBT b3VyY2UgSW5pdGlhdGl2ZSB3aWxsIGJlIHNlbnQgZnJvbSBhbiBvcGVuc291cmNlLm9yZyBlbWFp bCBhZGRyZXNzLgoKTGljZW5zZS1kaXNjdXNzIG1haWxpbmcgbGlzdApMaWNlbnNlLWRpc2N1c3NA bGlzdHMub3BlbnNvdXJjZS5vcmcKaHR0cDovL2xpc3RzLm9wZW5zb3VyY2Uub3JnL21haWxtYW4v bGlzdGluZm8vbGljZW5zZS1kaXNjdXNzX2xpc3RzLm9wZW5zb3VyY2Uub3JnCg==