IyBsdWNpZC1tY3AgUGx1Z2luCgpDb25uZWN0IENvV29yayB0byB0aGUgTHVjaWQgTUNQIHNlcnZl ciDigJQgc2VhcmNoIGRvY3VtZW50cywgZ2VuZXJhdGUgZGlhZ3JhbXMsIGJ1aWxkIG9yZyBjaGFy dHMsIGFuZCBzaGFyZSBMdWNpZGNoYXJ0L0x1Y2lkc3BhcmsgY29udGVudCB3aXRob3V0IGxlYXZp bmcgQ2xhdWRlLgoKIyMgT3ZlcnZpZXcKClRoaXMgcGx1Z2luIHdpcmVzIHRoZSBvZmZpY2lhbCBb THVjaWQgTUNQIFNlcnZlcl0oaHR0cHM6Ly9tY3AubHVjaWQuYXBwL21jcCkgaW50byBDb1dvcmss IGdpdmluZyBDbGF1ZGUgZGlyZWN0IGFjY2VzcyB0byB5b3VyIEx1Y2lkIGFjY291bnQuIFlvdSBj YW4gZGVzY3JpYmUgd2hhdCB5b3Ugd2FudCBpbiBwbGFpbiBsYW5ndWFnZSBhbmQgQ2xhdWRlIHdp bGwgc2VhcmNoLCBjcmVhdGUsIG9yIHNoYXJlIEx1Y2lkIGNvbnRlbnQgb24geW91ciBiZWhhbGYu CgojIyBDb21wb25lbnRzCgp8IENvbXBvbmVudCB8IFR5cGUgfCBQdXJwb3NlIHwKfC0tLS0tLS0t LS0tfC0tLS0tLXwtLS0tLS0tLS18CnwgYGx1Y2lkYCBza2lsbCB8IFNraWxsIHwgR3VpZGVzIENs YXVkZSBvbiB3aGVuIGFuZCBob3cgdG8gdXNlIGVhY2ggTHVjaWQgdG9vbCB8CnwgTHVjaWQgTUNQ IFNlcnZlciB8IE1DUCAoSFRUUC9PQXV0aCkgfCBMaXZlIGNvbm5lY3Rpb24gdG8gYGh0dHBzOi8v bWNwLmx1Y2lkLmFwcC9tY3BgIHwKCiMjIFNldHVwCgojIyMgUHJlcmVxdWlzaXRlcwotIEEgTHVj aWQgYWNjb3VudCAoVGVhbSBvciBFbnRlcnByaXNlIHBsYW4pCi0gQWRtaW4gUGFuZWwgYWNjZXNz CgojIyMgU3RlcHMKCjEuICoqRW5hYmxlIE1DUCBhY2Nlc3MgaW4gTHVjaWQgQWRtaW4gUGFuZWwq KgogICAtIExvZyBpbiB0byBMdWNpZCDihpIgQWRtaW4g4oaSIFNlY3VyaXR5IOKGkiBGZWF0dXJl IENvbnRyb2xzCiAgIC0gVW5kZXIgIk1DUCBBY2Nlc3MiLCB0b2dnbGUgb24gKipBbGxvdyB1c2Vy cyB0byBjb25uZWN0KioKCjIuICoqQ29ubmVjdCBpbiBDb1dvcmsqKgogICAtIEluc3RhbGwgdGhp cyBwbHVnaW4KICAgLSBHbyB0byBwbHVnaW4gc2V0dGluZ3Mg4oaSIGx1Y2lkLW1jcCDihpIgQ29u bmVjdG9ycyDihpIgY29ubmVjdCBMdWNpZAogICAtIENvbXBsZXRlIHRoZSBPQXV0aCBmbG93IGlu IHlvdXIgYnJvd3NlcgogICAtIElmIHRoZSBicm93c2VyIHNob3dzIGEgbG9jYWxob3N0IGVycm9y IHBhZ2UsIGNvcHkgdGhlIGZ1bGwgVVJMIGZyb20gdGhlIGFkZHJlc3MgYmFyIGFuZCBwYXN0ZSBp dCBiYWNrIGludG8gQ29Xb3JrCgozLiAqKlZlcmlmeSoqCiAgIC0gVHJ5OiAiRmluZCBteSBtb3N0 IHJlY2VudCBMdWNpZGNoYXJ0IGRpYWdyYW0iCiAgIC0gQ2xhdWRlIHNob3VsZCByZXR1cm4gbWF0 Y2hpbmcgZG9jdW1lbnRzIHdpdGggbGlua3MKCiMjIFVzYWdlCgojIyMgU2VhcmNoICYgU3VtbWFy aXplCi0gIkZpbmQgbXkgQmlybWluZ2hhbSBkZXBsb3ltZW50IGFyY2hpdGVjdHVyZSBkaWFncmFt IgotICJTdW1tYXJpemUgdGhlIHByb2Nlc3MgZmxvdyBJIGhhdmUgZm9yIGRpc3BsYXkgaW5zdGFs bGF0aW9uIgotICJXaGF0J3MgaW4gdGhlIFJETUMgaW50ZWdyYXRpb24gZGlhZ3JhbT8iCgojIyMg Q3JlYXRlIERpYWdyYW1zCi0gIkJ1aWxkIGEgZmxvd2NoYXJ0IGluIEx1Y2lkIGZvciBvdXIgZGlz cGxheSBwcm92aXNpb25pbmcgcHJvY2VzcyIKLSAiQ3JlYXRlIGEgc2VxdWVuY2UgZGlhZ3JhbSBz aG93aW5nIFJETUMgcG9sbGluZyBlYWNoIGRpc3BsYXkgZXZlcnkgNjAgc2Vjb25kcyIKLSAiTWFr ZSBhIHN3aW0gbGFuZSBkaWFncmFtIGZvciBvdXIgaGVscGRlc2sgZXNjYWxhdGlvbiDigJQgbGFu ZXMgZm9yIEN1c3RvbWVyLCBMMSwgYW5kIEVuZ2luZWVyaW5nIgotICJHZW5lcmF0ZSBhbiBFUiBk aWFncmFtIGZvciBvdXIgaW52ZW50b3J5IHNjaGVtYTogRGlzcGxheSwgTG9jYXRpb24sIEFnZW5j eSwgU2VydmljZVJlY29yZCIKCiMjIyBDcmVhdGUgT3JnIENoYXJ0cwotICJCdWlsZCBhbiBvcmcg Y2hhcnQgd2hlcmUgQnJ5YW4gaXMgQ0VPLCB3aXRoIFNhcmFoLCBNaWtlLCBhbmQgSmVzcyByZXBv cnRpbmcgdG8gaGltIgotICJDcmVhdGUgYW4gb3JnIGNoYXJ0IGZyb20gdGhpcyBDU1YgZmlsZSDi gJQgTmFtZSBpcyBjb2x1bW4gQSwgTWFuYWdlciBpcyBjb2x1bW4gQyIKCiMjIyBTaGFyZQotICJT aGFyZSB0aGUgUHJvamVjdCBQcm9wb3NhbCBkaWFncmFtIHdpdGggc2FyYWhAbWVzc2FnZXBvaW50 Lm1lZGlhIHdpdGggZWRpdCBwZXJtaXNzaW9ucyIKLSAiQ3JlYXRlIGEgdmlldy1vbmx5IHNoYXJl IGxpbmsgZm9yIHRoZSBCaXJtaW5naGFtIGFyY2hpdGVjdHVyZSBkaWFncmFtIgotICJHaXZlIGNv bW1lbnQgYWNjZXNzIHRvIHRoaXMgYm9hcmQgZm9yIG91ciB0cmFuc2l0IGFnZW5jeSBjbGllbnQi CgojIyBQbGFuIFJlcXVpcmVtZW50cwoKfCBGZWF0dXJlIHwgVGVhbSB8IEVudGVycHJpc2UgfAp8 LS0tLS0tLS0tfC0tLS0tLXwtLS0tLS0tLS0tLS18CnwgU2VhcmNoLCByZWFkLCBzdW1tYXJpemUg fCDinIUgfCDinIUgfAp8IENyZWF0ZSBhbGwgZGlhZ3JhbSB0eXBlcyB8IOKchSB8IOKchSB8Cnwg RXhwb3J0IGFzIFBORyB8IOKchSB8IOKchSB8CnwgQWRkIC8gZWRpdCAvIGRlbGV0ZSBzaGFwZXMg fCDinIUgfCDinIUgfAp8IFNoYXJlIGxpbmtzICYgZW1haWwgc2hhcmluZyB8IOKdjCB8IOKchSB8 CgojIyBLbm93biBMaW1pdGF0aW9ucyAoTWF5IDIwMjYpCgotIFNlYXJjaCBtYXkgbWlzcyBjb250 ZW50IG9uIHBhZ2UgMisgb2YgbXVsdGktcGFnZSBkb2N1bWVudHMKLSBNQ1AgY2Fubm90IGVkaXQg ZXhpc3RpbmcgZGlhZ3JhbXMg4oCUIG9ubHkgcmVhZCBhbmQgY3JlYXRlIG5ldyBvbmVzCi0gQVdT LCBHQ1AsIGFuZCBBenVyZSBzaGFwZSBsaWJyYXJpZXMgQVJFIGF2YWlsYWJsZSB2aWEgdGhlIE1D UCAodXNlIGBnZXRfbWNwX3Jlc291cmNlYCB0byBhY2Nlc3MgdGhlbSkKCiMjIFN1cHBvcnQKCi0g W0x1Y2lkIE1DUCBTZXJ2ZXIgSGVscCBBcnRpY2xlXShodHRwczovL2hlbHAubHVjaWQuY28vaGMv ZW4tdXMvYXJ0aWNsZXMvNDI1Nzg4MDE4MDc1MDgtSW50ZWdyYXRlLUx1Y2lkLXdpdGgtQUktdG9v bHMtdXNpbmctdGhlLUx1Y2lkLU1DUC1zZXJ2ZXIpCi0gW0x1Y2lkIENvbW11bml0eV0oaHR0cHM6 Ly9jb21tdW5pdHkubHVjaWQuY28pCg==