VFJBTlNMQVRJTkcgVklNIE1FU1NBR0VTCgpUaGlzIGZpbGUgZXhwbGFpbnMgaG93IHRvIGNyZWF0ZSBhbmQgbWFpbnRhaW4gcG8gZmlsZXMgdXNpbmcKZ251LWdldHRleHQud2luMzIsIGEgTUlOR1czMiBXaW5kb3dzIHBvcnQgb2YgZ2V0dGV4dCBieSBGcmFuY28gQmV6CjxmcmFuY28uYmV6QGdteC5kZT4uICBZb3UgY2FuIGZpbmQgaXQgYXQ6CgoJaHR0cDovL2hvbWUuYS1jaXR5LmRlL2ZyYW5jby5iZXovZ2V0dGV4dC9nZXR0ZXh0X3dpbjMyX2VuLmh0bWwKCkZpcnN0IHJlYWQgdGhlIFJFQURNRS50eHQgZmlsZSBmb3IgdGhlIGdlbmVyYWwgcmVtYXJrcwoKClRoZSBmaWxlIHRoYXQgZG9lcyB0aGUgd29yayBpcyBNYWtlX21pbmcubWFrIGluIHRoZSBwbyBkaXJlY3RvcnkuIEl0IGlzIGFuCmFkYXB0YXRpb24gb2YgdGhlIFVuaXggTWFrZWZpbGUsIGJ1dCBpdCBkb2VzIE5PVCB0ZXN0IHRoZSBwcmVzZW5jZSBvZiBhbnkgcG8sCnBvdCwgb3IgbW8gZmlsZXMsIHNvIHVzZSBpdCBhdCB5b3VyIG93biByaXNrIGJ1dCB3aXRoIGNhcmU6IGl0IGNvdWxkIGV2ZW4ga2lsbAp5b3VyIGNhbmFyeS4gSXQgaGFzIGJlZW4gdGVzdGVkIGJ5IG1lIHNldmVyYWwgdGltZXMgKGFuZCB3aXRoIGRpZmZlcmVudApsYW5ndWFnZXMpIHdpdGggc3VjY2Vzcy4KClRoZSBtYWtlIHV0aWxpdHkgbXVzdCBiZSBydW4gZnJvbSB0aGUgcG8gZGlyZWN0b3J5LgoKRmlyc3Qgb2YgYWxsIHlvdSBtdXN0IHNldCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgTEFOR1VBR0UgdG8geHgsIHdoZXJlIHh4IGlzCnRoZSBuYW1lIG9mIHlvdXIgbGFuZ3VhZ2UuIFlvdSBjYW4gZG8gaXQgZnJvbSB0aGUgY29tbWFuZCBsaW5lIG9yIGFkZGluZyBhCmxpbmUgdG8geW91ciBhdXRvZXhlYy5iYXQgZmlsZTogc2V0IExBTkdVQUdFPXh4LiBZb3UgbXVzdCBhbHNvIGFkZCB5b3VyCmxhbmd1YWdlIHRvIHRoZSBNYWtlX21pbmcubWFrIGZpbGUgaW4gdGhlIGxpbmVzIExBTkdVQUdFUywgTU9GSUxFUywgQU5EClBPRklMRVMuCgpJZiB5b3UgZG9uJ3QgaGF2ZSBhIHh4LnBvIGZpbGUsIHlvdSBtdXN0IGNyZWF0ZSBpdCB3aXRoIHRoZSBjb21tYW5kOgoKCW1ha2UgLWYgTWFrZV9taW5nLm1hayBmaXJzdF90aW1lCgpUaGlzIHdpbGwgcHJvZHVjZSBhIG5ldyBicmFuZCB4eC5wbyBmaWxlIHdpdGggYWxsIHRoZSBtZXNzYWdlcyBpbiBWaW0gcmVhZHkKZm9yIHRyYW5zbGF0aW9uLiBUaGVuIHlvdSBtdXN0IHNvdXJjZSB0aGUgY2xlYW51cC52aW0gc2NyaXB0IGZyb20gaW5zaWRlIFZpbTsKaXQgd2lsbCBjb21tZW50IHRoZSB1bnRyYW5zbGF0ZWQgbWVzc2FnZXMgKG5vdywgYWxsKS4gSSByZWNvbW1lbmQgdG8gdXNlCnN5bnRheCBoaWdobGlnaHRpbmcgc28geW91IGNhbiBpZGVudGlmeSB0aGUgdW50cmFuc2xhdGVkIG1lc3NhZ2VzIGVhc2lseS4KWW91IGFsc28gbXVzdCByZW1vdmUgdGhlICcuLlwnIHRoYXQgcHJlcGVuZHMgdGhlIG5hbWUgb2YgdGhlIHNvdXJjZSBmaWxlcy4KKEkgZG9uJ3Qgbm8gd2h5LCBidXQgbWFrZSBpcyB1bmFibGUgdG8gY2hhbmdlIHRoZSBkaXJlY3RvcnkgZnJvbSBwbyB0byBzcmMgYW5kCmJhY2sgdG8gcG8sIHNvIGFsbCB0aGUgd29yayBtdXN0IGJlIGRvbmUgZnJvbSB0aGUgcG8gZGlyLCBoZW5jZSB0aGUgJy4uXCcpCgpUaGVuIHlvdSBtdXN0IGdvIHN0ZXAgKDIpIGJlbG93LgoKSWYgeW91IGFyZSB1cGRhdGluZyBhIHBvIGZpbGUgeW91IG11c3QgZm9sbG93IHRoZSBuZXh0IHN0ZXBzICh0aGV5IGFyZSBuZWFybHkKdGhlIHNhbWUgYXMgaW4gdGhlIFVuaXggY2FzZSwgb25seSB0aGUgY29tbWFuZHMgY2hhbmdlKToKCigxKSBBZGQgbmV3IGFuZCBjaGFuZ2VkIG1lc3NhZ2VzIGZyb20gdGhlIFZpbSBzb3VyY2VzOgoKCW1ha2UgLWYgTWFrZV9taW5nLm1hayB4eAoKICAgIFRoaXMgd2lsbCBleHRyYWN0IGFsbCB0aGUgc3RyaW5ncyBmcm9tIFZpbSBhbmQgbWVyZ2UgdGhlbSBpbiB3aXRoIHRoZQogICAgZXhpc3RpbmcgdHJhbnNsYXRpb25zLiAgUmVxdWlyZXMgdGhlIEdOVSBnZXR0ZXh0IHV0aWxpdGllcy4gIEFsc28gcmVxdWlyZXMKICAgIHVucGFja2luZyB0aGUgZXh0cmEgYXJjaGl2ZS4KICAgIFlvdXIgb3JpZ2luYWwgeHgucG8gZmlsZSB3aWxsIGJlIGNvcGllZCB0byB4eC5wby5vcmlnCgogICAgLS0gQWZ0ZXIgeW91IGRvIHRoaXMsIHlvdSBNVVNUIGRvIHRoZSBuZXh0IHRocmVlIHN0ZXBzISAtLQoKKDIpIFRyYW5zbGF0ZQogICAgU2VlIHRoZSBnZXR0ZXh0IGRvY3VtZW50YXRpb24gb24gaG93IHRvIGRvIHRoaXMuICBZb3UgY2FuIGFsc28gZmluZAogICAgZXhhbXBsZXMgaW4gdGhlIG90aGVyIHBvIGZpbGVzLgogICAgU2VhcmNoIHRoZSBwbyBmaWxlIGZvciBpdGVtcyB0aGF0IHJlcXVpcmUgdHJhbnNsYXRpb246CgkvXCNcfiAgIGFuZCBhbHNvIHRoZSBmdXp6eSB0cmFuc2xhdGlvbnMsIC9cIywgZnV6enkKICAgIFJlbW92ZSAiI34iIGFuZCAiIywgZnV6enkiIGFmdGVyIGFkZGluZyB0aGUgdHJhbnNsYXRpb24uCgogICAgVGhlcmUgaXMgb25lIHNwZWNpYWwgbWVzc2FnZToKCW1zZ2lkICJNZXNzYWdlcyBtYWludGFpbmVyOiBCcmFtIE1vb2xlbmFhciA8QnJhbUB2aW0ub3JnPiIKICAgIFlvdSBzaG91bGQgaW5jbHVkZSB5b3VyIG5hbWUgYW5kIEUtbWFpbCBhZGRyZXNzIGluc3RlYWQsIGZvciBleGFtcGxlOgoJbXNnc3RyICJCZXJpY2h0ZW4g/GJlcnNldHp0IGJlaTogSm9obiBEb2UgPGpvaG5AZG9lLm9yZz4iCgooMykgQ2xlYW4gdXAKICAgIFRoaXMgaXMgdmVyeSBpbXBvcnRhbnQgdG8gbWFrZSBzdXJlIHRoZSB0cmFuc2xhdGlvbiB3b3JrcyBvbiBhbGwgc3lzdGVtcy4KICAgIENvbW1lbnQtb3V0IGFsbCBub24tdHJhbnNsYXRlZCBzdHJpbmdzLiAgVGhlcmUgYXJlIHR3byB0eXBlczoKICAgIC0gaXRlbXMgbWFya2VkIHdpdGggIiMsIGZ1enp5IgogICAgLSBpdGVtcyB3aXRoIGFuIGVtcHR5IG1zZ3N0cgogICAgWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNsZWFudXAudmltIHNjcmlwdDoKCgk6c291cmNlIGNsZWFudXAudmltCgooNCkgQ2hlY2s6CgoJdmltIC1TIGNoZWNrLnZpbSB4eC5wbwoJbWFrZSAtZiBNYWtlX21pbmcubWFrIHh4Lm1vCgogICAgTG9vayBvdXQgZm9yIHN5bnRheCBlcnJvcnMgYW5kIGZpeCB0aGVtLgoKKDUpIFRoaXMgaXMgYW4gZXh0cmEgc3RlcCwgOy0pLiBJZiB5b3Ugd2FudCB0aGUgdmltLm1vIGZpbGUgaW5zdGFsbGVkIGluIHlvdXIKICAgIHN5c3RlbSB5b3UgbXVzdCBydW46CgoJbWFrZSAtZiBNYWtlX21pbmcubWFrIGluc3RhbGwKCiAgICBUaGlzIHdpbGwgY3JlYXRlIHRoZSB4eFxMQ19NRVNTQUdFUyBkaXJlY3RvcnkgKGlmIGl0IGRvZXMgbm90IGV4aXN0KSBhbmQKICAgIHdpbGwgY29weSB2aW0ucG8gdG8gaXQuCgooNikgQW5vdGhlciBleHRyYSBzdGVwIDstKSkuIFRoZSBjb21tYW5kOgoKCW1ha2UgLWYgTWFrZV9taW5nLm1hayBjbGVhbgoKICAgIHdpbGwgZGVsZXRlIHRoZSB0ZW1wIGZpbGVzIGNyZWF0ZWQgZHVyaW5nIHRoZSBwcm9jZXNzLgoKU3VnZ2VzdGlvbnMgd2lsbCBiZSB3ZWxjb21lZC4KCkVkdWFyZG8gRi4gQW1hdHJpYSA8ZWZlcm5hMUBwbGF0ZWEucG50aWMubWVjLmVzPgoKSGFwcHkgVmltbWluZyB3aXRoIE5MUyEhCgp2aW06dHc9Nzg6Cg==