ZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3F1b3Rlcy50eHQgYi9ydW50aW1lL2RvYy9xdW90ZXMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjNWMzYTMKLS0tIC9kZXYvbnVsbAorKysgYi9ydW50aW1lL2RvYy9xdW90ZXMudHh0CkBAIC0wLDAgKzEsMjc0IEBACisqcXVvdGVzLnR4dCogICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDQgTWF5IDA2CisKKworCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCisKKworCQkJCQkJCSpxdW90ZXMqCitIZXJlIGFyZSBzb21lIG5pY2UgcXVvdGVzIGFib3V0IFZpbSB0aGF0IEkgY29sbGVjdGVkIGZyb20gbmV3cyBhbmQgbWFpbC4KKworCit2aW0gKHZpbSkgbm91biAtIEVidWxsaWVudCB2aXRhbGl0eSBhbmQgZW5lcmd5LiAgW0xhdGluLCBhY2N1c2F0aXZlIG9mIHZpcywKK3N0cmVuZ3RoXSAgKERpY3Rpb25hcnkpCisKK1ZpbSBpcyBzbyBtdWNoIGJldHRlciB0aGFuIHZpIHRoYXQgYSBncmVhdCBtYW55IG9mIG15IG9sZCB2aSA6bWFwJ3MgYmVjYW1lCitpbW1lZGlhdGVseSBvYnNvbGV0ZSEgKFRvbnkgTnVnZW50LCBBdXN0cmFsaWEpCisKK0NvbWluZyB3aXRoIGEgdmVyeSBHVUkgbWluZHNldCBmcm9tIFdpbmRvd3MsIEkgYWx3YXlzIHRob3VnaHQgb2YgcGVvcGxlIHVzaW5nCitWaSBhcyBzb21lIGtpbmQgb2Ygb3V0ZXIgc3BhY2UgYWxpZW4gaW4gaHVtYW4gY2xvdGhlcy4gIE9uY2UgSSB0cmllZCBJIHJlYWxseQorZ290IGFkZGljdGVkIGJ5IGl0cyBwb3dlciBhbmQgbm93IEkgZm91bmQgbXlzZWxmIHR5cGluZyBWaW0ga2V5cHJlc3NlcyBpbiB0aGUKK29kZGVzdCBwbGFjZXMhIFRoYXQncyB3aHkgSSB3b3VsZCBsaWtlIHRvIHNlZSBWaW0gZW1iZWRkZWQgaW4gZXZlcnkKK2FwcGxpY2F0aW9uIHdoaWNoIGRlYWxzIHdpdGggdGV4dCBlZGl0aW5nLiAoSm9z6SBGb25zZWNhKQorCitJIHdhcyBhIDEyLXllYXIgZW1hY3MgdXNlciB3aG8gc3dpdGNoZWQgdG8gVmltIGFib3V0IGEgeWVhciBhZ28gYWZ0ZXIgZmluYWxseQorZ2l2aW5nIHVwIG9uIHRoZSBtdWx0aXBsZSBpbmNvbXBhdGlibGUgdmVyc2lvbnMsIGZsYWt5IGNvbnRyaWJ1dGVkIHBhY2thZ2VzLAorZGlzb3JnYW5pemVkIGtleXN0cm9rZXMsIGV0Yy4gIEFuZCBpdCB3YXMgb25lIG9mIHRoZSBiZXN0IG1vdmVzIEkgZXZlciBtYWRlLgorKEpvZWwgQnVydG9uKQorCitBbHRob3VnaCBhbGwgb2YgdGhlIHByb2dyYW1zIHdlcmUgdXNlZCBkdXJpbmcgdGhlIHByZXBhcmF0aW9uIG9mIHRoZSBuZXcgYW5kCityZXZpc2VkIG1hdGVyaWFsLCBtb3N0IG9mIHRoZSBlZGl0aW5nIHdhcyBkb25lIHdpdGggVmltIHZlcnNpb25zIDQuNSBhbmQgNS4wCit1bmRlciBHTlUtTGludXggKFJlZGhhdCA0LjIpLiAgKEFybm9sZCBSb2JiaW5zLCBJc3JhZWwsIGF1dGhvciBvZiAiTGVhcm5pbmcKK3RoZSBWaSBlZGl0b3IiKQorCitPdXQgb2YgYWxsIHRoZSBvcGVuIHNvZnR3YXJlIGkndmUgZXZlciBzZWVuIGFuZCB1c2VkLCBhbmQgaSd2ZSBzZWVuIGEgbG90LCBWaW0KK2lzIHRoZSBiZXN0LCBtb3N0IHVzZWZ1bCBhbmQgaGlnaGVzdCBxdWFsaXR5IHRvIHdvcmsgd2l0aCwgc2Vjb25kIG9ubHkgdG8gdGhlCitsaW51eCBrZXJuZWwgaXRzZWxmLiAoUGV0ZXIgSmF5IFNhbHptYW4pCisKK0l0J3Mgd2VsbCB3b3J0aCBub3RpbmcgdGhhdCB0aGUgX2VudGlyZXR5XyBvZiBTb3VyY2VGb3JnZSB3YXMgd3JpdHRlbiB1c2luZworVmltIGFuZCBpdHMgbmlmdHkgUEhQIHN5bnRheCBoaWdobGlnaHRpbmcuIEkgdGhpbmsgdGhlIGVudGlyZSBTRi5uZXQgdGVjaAorc3RhZmYgdXNlcyBWaW0gYW5kIHdlJ3JlIGFsbCBleGNpdGVkIHRvIGhhdmUgeW91IGFib2FyZCEgKFRpbSBQZXJkdWUpCisKK1ZpbSBpcyBvbmUgb2YgYSBzZWxlY3QgYnVuY2ggb2YgdG9vbHMgZm9yIHdoaWNoIEkgaGF2ZSBubyBzdWJzdGl0dXRlLiAgSXQgaXMKK2EgYnJpbGxpYW50IHBpZWNlIG9mIHdvcmshIChCaWp1IENoYWNrbykKKworQSBwcmV2aW91cyBnaXJsZnJpZW5kIG9mIG1pbmUgc3dpdGNoZWQgdG8gZW1hY3MuICBOZWVkbGVzcyB0byBzYXksIHRoZQorcmVsYXRpb25zaGlwIHdlbnQgbm93aGVyZS4gKEdlb2ZmcmV5IE1hbm4pCisKK0kgcmFyZWx5IHRoaW5rIGFib3V0IFZpbSwgaW4gdGhlIHNhbWUgd2F5IHRoYXQgSSBndWVzcyBhIGZpc2ggcmFyZWx5IHRoaW5rcworYWJvdXQgd2F0ZXIuICBJdCdzIHRoZSBlbnZpcm9ubWVudCBpbiB3aGljaCBldmVyeXRoaW5nIGVsc2UgaGFwcGVucy4gIEknbSBhCitmYWlybHkgYnVzeSBzeXN0ZW0gYWRtaW5pc3RyYXRvciB3b3JraW5nIG9uIGEgbG90IG9mIGRpZmZlcmVudCBwbGF0Zm9ybXMuICBWaW0KK2lzIHRoZSBvbmx5IHRoaW5nIHRoYXQncyBjb25zaXN0ZW50IGFjcm9zcyBhbGwgbXkgc3lzdGVtcywgYW5kIGl0J3MganVzdCBhYm91dAordGhlIG9ubHkgdGhpbmcgdGhhdCBkb2Vzbid0IGJyZWFrIGZyb20gdGltZSB0byB0aW1lLiAgV2hlbiBhIG5ldyBzeXN0ZW0gY29tZXMKK2luIHRoZSBkb29yIHdpdGhvdXQgVmltLCBJIGluc3RhbGwgaXQgcmlnaHQgYXdheS4gIEdyZWF0IHRvIGhhdmUgYSB0b29sIHRoYXQncwordGhlIHNhbWUgZXZlcnl3aGVyZSwgdGhhdCdzIGNvbXBsZXRlbHkgcmVsaWFibGUsIHNvIEkgY2FuIGlnbm9yZSBpdCBhbmQgdGhpbmsKK2Fib3V0IG90aGVyIHRoaW5ncy4gKFBldGUgU2NoYWVmZmVyKQorCitIYXZpbmcgcmVjZW50bHkgc3VjY2VlZGVkIGluIHJ1bm5pbmcgVmltIHZpYSB0ZWxuZXQgdGhyb3VnaCBhIE5va2lhCitDb21tdW5pY2F0b3IsIEkgY2FuIG5vdyByZXBvcnQgdGhhdCBpdCB3b3JrcyBuaWNlbHkgb24gYSBQYWxtIFBpbG90IHRvby4KKyhBbGxhbiBLZWxseSwgU2NvdGxhbmQpCisKK1lvdSd2ZSBkb25lIGEgdHJlbWVuZG91cyBqb2Igd2l0aCAnVklNJywgQnJhbSEgIFRoZSBtb3JlIEkgdXNlIGl0LCB0aGUgbW9yZQoraW1wcmVzc2VkIEkgZ2V0IChJIGFtIGFuIG9sZCAndmknIGRpZSBoYXJkIHdobyBvbmNlIHN0YXJ0ZWQgb3V0IHdpdGggZWFybHkKK3ZlcnNpb25zIG9mICdlbWFjcycgaW4gdGhlIGxhdGUgMTk3MCdzIGFuZCB3YXMgcmVsaWV2ZWQgYnkgZmluZGluZyAndmknIGluIHRoZQorZmlyc3QgVU5JWCBJIGNhbWUgYWNyb3NzIGluIDE5ODMpLiAgSW4gbXkgb3BpbmlvbiwgaXQncyBhYm91dCB0aW1lICdWSU0nCityZXBsYWNlICdlbWFjcycgYXMgdGhlIHN0YW5kYXJkIGZvciB0b3AgZWRpdG9ycy4gIChCbyBUaGlkZScsIFN3ZWRlbikKKworSSBsb3ZlIGFuZCB1c2UgVklNIGhlYXZpbHkgdG9vLiAoTGFycnkgV2FsbCkKKworVmkgaXMgbGlrZSBhIEZlcnJhcmksIGlmIHlvdSdyZSBhIGJlZ2lubmVyLCBpdCBoYW5kbGVzIGxpa2UgYSBiaXRjaCwgYnV0IG9uY2UKK3lvdSBnZXQgdGhlIGhhbmcgb2YgaXQsIGl0cyBzbWFsbCwgcG93ZXJmdWwgYW5kIEZBU1QhIChVbmtub3duKQorVklNIGlzIGxpa2UgYSBuZXcgbW9kZWwgRmVycmFyaSwgYW5kIHNvdW5kcyBsaWtlIG9uZSB0b28gLSAiVklJSUlJSU1NTSEiCisoU3RlcGhlbiBSaWVobSwgR2VybWFueSkKKworU2Nob24gYmVpIE51dHp1bmcgZWluZXMgQnJ1Y2h0ZWlscyBkZXIgVklNLUZ1bmt0aW9uZW4gd2lyZCBkZXIgQmVudXR6ZXIgcmVjaHQKK3NjaG5lbGwgZGllIFZvcnp1ZWdlIGRpZXNlcyBFZGl0b3JzIGtlbm5lbi0gdW5kIHNjaGFldHplbmxlcm5lbi4KK1RyYW5zbGF0ZWQ6IEV2ZW4gd2hlbiBvbmx5IHVzaW5nIGEgZnJhY3Rpb24gb2YgVklNLWZ1bmN0aW9ucywgdGhlIHVzZXIgd2lsbAorcXVpY2tseSBnZXQgdXNlZCB0byBhbmQgYXBwcmVjaWF0ZSB0aGUgYWR2YW50YWdlcyBvZiB0aGlzIGVkaXRvci4gIChHYXJyeQorR2xlbmRvd24sIGNvbmNsdXNpb24gb2YgYW4gYXJ0aWNsZSBvbiBWSU0gaW4gaVggbWFnYXppbmUgOS8xOTk4KQorCitJJ3ZlIHJlY2VudGx5IGFjcXVpcmVkIHRoZSBPJ1JlaWxseSBib29rIG9uIFZJIChpdCBhbHNvIGRpc2N1c3NlcyBWSU0KK2luLWRlcHRoKSwgYW5kIEknbSBhbWF6ZWQgYXQganVzdCBob3cgcG93ZXJmdWwgdGhpcyBhcHBsaWNhdGlvbiBpcy4gKEplZmZyZXkKK1JhbmtpbikKKworVGhpcyBndWlkZSB3YXMgd3JpdHRlbiB1c2luZyB0aGUgV2luZG93cyA5LnggZGlzdHJpYnV0aW9uIG9mIEdWSU0sIHdoaWNoIGlzCitxdWl0ZSBwb3NzaWJseSB0aGUgZ3JlYXRlc3QgdGhpbmcgdG8gY29tZSBhbG9uZyBzaW5jZSBHb2QgY3JlYXRlZCB0aGUgbmFrZWQKK2dpcmwuIChNaWNoYWVsIERpQmVybmFyZG8pCisKK0JveSwgSSB0aG91Z2h0IEkga25ldyBhbG1vc3QgZXZlcnl0aGluZyBhYm91dCBWSU0sIGJ1dCBldmVyeSB0aW1lIEkgYnJvd3NlIHRoZQorb25saW5lIGRvY3VtZW50YXRpb24sIEkgaGl0IHVwb24gYSBtaW5vciBidXQgY29vbCBhc3BlY3Qgb2YgYSBWSU0gZmVhdHVyZSB0aGF0CitJIGRpZG4ndCBrbm93IGJlZm9yZSEgIEkgbXVzdCBzYXkgdGhlIGRvY3VtZW50YXRpb24gaXMgb25lIHRoZSBmaW5lc3QgSSd2ZQorZXZlciBzZWVuIGluIGEgcHJvZHVjdCAtLSBldmVuIGJldHRlciB0aGFuIG1vc3QgY29tbWVyY2lhbCBwcm9kdWN0cy4KKyhHYXV0YW0gTXVkdW51cmkpCisKK1ZJTSA0LjUgaXMgcmVhbGx5IGEgZmFudGFzdGljIGVkaXRvci4gIEl0IGhhcyBzb29vb28gbWFueSBmZWF0dXJlcyBhbmQgbW9yZQoraW1wb3J0YW50bHksIHRoZSBkZWZhdWx0cyBhcmUgc28gd2VsbCB0aG91Z2h0IG91dCB0aGF0IHlvdSByZWFsbHkgZG9uJ3QgaGF2ZQordG8gY2hhbmdlIGFueXRoaW5nISEgIFdvcmRzIGNhbm5vdCBleHByZXNzIG15IGFtYXplbWVudCBhbmQgZ3JhdGl0dWRlIHRvIHRoZQorY3JlYXRvcnMgb2YgVklNLiAgS2VlcCBpdCB1cC4gIChWaWthcywgVVNBKQorCitJIHdvbmRlciBob3cgbG9uZyBpdCB3aWxsIGJlIGJlZm9yZSBwZW9wbGUgd2lsbCByZWZlciB0byBvdGhlciBWaSBlZGl0b3JzIGFzCitWSU0gY2xvbmVzPyAgKERhcnJlbiBIaWViZXJ0KQorCitJIHJlYWQgYWJvdXQgW2F1dG8tcG9zaXRpb25pbmctaW4tZmlsZS1iYXNlZC1vbi10aGUtZXJyb3JzLWZyb20tbWFrZV0gaW4gb25lCitvZiB0aG9zZSAiUGVyZmVjdCBQcm9ncmFtbWVyJ3MgRWRpdG9yIiB0aHJlYWRzIGFuZCB3YXMgZGVsaWdodGVkIHRvIGRpc2NvdmVyCit0aGF0IFZJTSBhbHJlYWR5IHN1cHBvcnRzIGl0LiAgKEJyZW5kYW4gTWFjbWlsbGFuLCBBdXN0cmFsaWEpCisKK0kganVzdCBkaXNjb3ZlcmVkIFZJTSAoNS4wKSBhbmQgSSdtIHRlbGxpbmcgZXZlcnlvbmUgSSBrbm93IGFib3V0IGl0IQorSSB0ZWxsIHRoZW0gVklNIHN0YW5kcyBmb3IgVkkgZm9yIHRoZSBuZXcgKE0paWxsZW5pdW0uIFRoYW5rcyBzbyBtdWNoIQorKE1hdHQgRi4gVmFsZW50aW5lKQorCitJIHRoaW5rIGZyb20gbm93IG9uICJ2aSIgc2hvdWxkIGJlIGNhbGxlZCAiVmltIEltaXRhdGlvbiIsIG5vdCB0aGUgb3RoZXIgd2F5Cithcm91bmQuICAoUnVuZ3VuIFJhbWFuYXRoYW4pCisKK1RoZSBMYXcgb2YgVklNOgorRm9yIGVhY2ggbWVtYmVyIGIgb2YgdGhlIHBvc3NpYmxlIGJlaGF2aW91ciBzcGFjZSBCIG9mIHByb2dyYW0gUCwgdGhlcmUgZXhpc3RzCithIGZpbml0ZSB0aW1lIHQgYmVmb3JlIHdoaWNoIGF0IGxlYXN0IG9uZSB1c2VyIHUgaW4gdGhlIHRvdGFsIHVzZXIgc3BhY2UgVSBvZgorcHJvZ3JhbSBQIHdpbGwgcmVxdWVzdCBiIGJlY29tZXMgYSBtZW1iZXIgb2YgdGhlIGFsbG93ZWQgYmVoYXZpb3VyIHNwYWNlIEInCisoQicgPD0gQikuCitJbiBvdGhlciB3b3JkczogU29vbmVyIG9yIGxhdGVyIGV2ZXJ5b25lIHdhbnRzIGV2ZXJ5dGhpbmcgYXMgYW4gb3B0aW9uLgorKE5lZ3JpKQorCitXaGVuZXZlciBJIG1vdmUgdG8gYSBuZXcgY29tcHV0aW5nIHBsYXRmb3JtLCB0aGUgZmlyc3QgdGhpbmcgSSBkbyBpcyB0byBwb3J0CitWSU0uICBMYXRlbHksIEkgYW0gc2ltcGx5IHN0dW5uZWQgYnkgaXRzIGVhc2Ugb2YgY29tcGlsYXRpb24gdXNpbmcgdGhlCitjb25maWd1cmUgZmFjaWxpdHkuICAoQS5NLiBTYWJ1bmN1LCBUdXJrZXkpCisKK1RoZSBvcHRpb25zIGFyZSByZWFsbHkgZXhjZWxsZW50IGFuZCB2ZXJ5IHBvd2VyZnVsLiAoQW5pc2ggTWFoYXJhaikKKworVGhlIFNwcmluZyB1c2VyLWludGVyZmFjZSBkZXNpZ25zIGFyZSBpbiwgYW5kIHdvcmQgZnJvbSB0aGUgYm91dGlxdWVzIGlzIHRoYXQKKzgweDI0IHRleHQtb25seSBtb2RlIGlzIGJhY2sgd2l0aCBhICp2ZW5nZWFuY2UhIFZpIGVkaXRvciBjbG9uZSBWSU0gYnVyc3Qgb250bworTWFyY2ggZGVzay10b3BzIHdpdGggYSBkYXp6bGluZyBzaG93IG9mIHBhc3RlbCBzeW50YXggaGlnaGxpZ2h0cyBmb3IgaXRzIDUuMAorbG9vay4gU3RyaWRlbnQgYW5kIGN1c3RvbWl6YWJsZSwgVklNIHJhaXNlcyBleWVicm93cyB3aXRoIGl0cyBpbnRlcnByZXRhdGlvbgorb2YgdGhlIGNsYXNzaWMgVmkgc2luZ2xlLWtleSBtYWNybyBjb2xsZWN0aW9uLgoraHR0cDovL3d3dy5udGsubmV0L2luZGV4LmNnaT9iYWNrPWFyY2hpdmU5OC9ub3cwMzI3LnR4dCZsaW5lPTE3OSNsCisKK0kganVzdCB3YW50ZWQgdG8gdGFrZSB0aGlzIG9wcG9ydHVuaXR5IHRvIGxldCB5b3Uga25vdyB0aGF0IFZJTSA1IFJPQ0tTIQorU3ludGF4IGhpZ2hsaWdodGluZzogaG93IGRpZCBJIHN1cnZpdmUgd2l0aG91dCBpdD8hICBUaGFuayB5b3UgZm9yIGNyZWF0aW5nCittYW5raW5kJ3MgYmVzdCBlZGl0b3IhICAoTXVuIEpvaGwsIFVTQSkKKworVGhhbmtzIGFnYWluIGZvciBWSU0uICBJIHVzZSBpdCBldmVyeSBkYXkgb24gTGludXguIChFcmljIEZvc3Rlci1Kb2huc29uLAorYXV0aG9yIG9mIHRoZSBib29rICJVTklYIFByb2dyYW1taW5nIFRvb2xzIikKKworVGhlIEJFU1QgRURJVE9SIEVWRVIgKFN0dWFydCBXb29sZm9yZCkKKworSSBoYXZlIHVzZWQgbW9zdCBvZiBWSU0ncyBmYW5jeSBmZWF0dXJlcyBhdCBsZWFzdCBvbmNlLCBtYW55IGZyZXF1ZW50bHksIGFuZCBJCitjYW4gaG9uZXN0bHkgc2F5IHRoYXQgSSBjb3VsZG4ndCBsaXZlIHdpdGggYW55dGhpbmcgbGVzcyBhbnltb3JlLiAgTXkKK3Byb2R1Y3Rpdml0eSBoYXMgZWFzaWx5IGRvdWJsZWQgY29tcGFyZWQgdG8gd2hhdCBpdCB3YXMgd2hlbiBJIHVzZWQgdmkuCisoU2l0YXJhbSBDaGFtYXJ0eSkKKworSSBsdXYgVklNLiAgSXQgaXMgaW5jcmVkaWJsZS4gIEknbSBuYW1pbmcgbXkgZmlyc3QtYm9ybiBWaW1iZXJseS4gIChKb3NlCitVbnBpbmdjbywgVVNBKQorCitIaW50OiAgIlZJTSIgaXMgInZpIGltcHJvdmVkIiAtIG11Y2ggYmV0dGVyISAoU3ZlbiBHdWNrZXMsIEdlcm1hbnkpCisKK0kgdXNlIFZJTSBldmVyeSBkYXkuICBJIHNwZW5kIG1vcmUgdGltZSBpbiBWSU0gdGhhbiBpbiBhbnkgb3RoZXIgcHJvZ3JhbS4uLgorSXQncyB0aGUgYmVzdCB2aSBjbG9uZSB0aGVyZSBpcy4gIEkgdGhpbmsgaXQncyBncmVhdC4gIChDcmFpZyBTYW5kZXJzLAorQXVzdHJhbGlhKQorCitJIHN0cm9uZ2x5IGFkdmlzZSB1c2luZyBWSU0tLWl0cyBpbmZpbml0ZSB1bmRvL3JlZG8gc2F2ZWQgbWUgbXVjaCBncmllZi4KKyhUZXJyeSBCcm93bikKKworVGhhbmtzIHZlcnkgbXVjaCBmb3Igd3JpdGluZyB3aGF0IGluIG15IG9waW5pb24gaXMgdGhlIGZpbmVzdCB0ZXh0IGVkaXRvciBvbgordGhlIHBsYW5ldC4gIElmIEkgd2VyZSB0byBnZXQgYW5vdGhlciBjYXQsIEkgd291bGQgbmFtZSBpdCAiVmltIi4KKyhCb2IgU2hlZWhhbiwgVVNBKQorCitJIHR5cGVkIDpzZXQgYWxsIGFuZCB0aGUgc2NyZWVuIEZJTExFRCB1cCB3aXRoIG9wdGlvbnMuICBBIHdob2xlIHNjcmVlbiBvZgordGhpbmdzIHRvIGJlIHNldCBhbmQgdW5zZXQuICBJIHNhdyBzb21lIG9mIG15IG9sZCBmcmllbmRzIGxpa2Ugd3JhcG1hcmdpbiwKK21vZGVsaW5lcyBhbmQgc2hvd21vZGUsIGJ1dCB0aGUgc2NyZWVuIHdhcyBGSUxMRUQgd2l0aCBuZXcgZnJpZW5kcyEgICBJIGxvdmUKK3RoZW0gYWxsISAgIEkgbG92ZSBWSU0hICAgSSdtIHNvIGhhcHB5IHRoYXQgSSd2ZSBmb3VuZCB0aGlzIGVkaXRvciEgIEkgZmVlbAorbGlrZSBob3cgSSBvbmNlIGZlbHQgd2hlbiBJIHN0YXJ0ZWQgdXNpbmcgdmkgYWZ0ZXIgYSBjb3VwbGUgb2YgeWVhcnMgb2YgdXNpbmcKK2VkLiAgSSBuZXZlciB0aG91Z2h0IEknZCBmb3JzYWtlIG15IGJlbG92ZWQgZWQsIGJ1dCB2aSAuLi4gb2ggZ29kLCB2aSB3YXMKK2dyZWF0LiAgQW5kIG5vdywgVklNLiAgKFBldGVyIEpheSBTYWx6bWFuLCBVU0EpCisKK0kgYW0gcmVhbGx5IGhhcHB5IHdpdGggc3VjaCBhIHdvbmRlcmZ1bCBzb2Z0d2FyZSBwYWNrYWdlLiAgTXVjaCBiZXR0ZXIgdGhhbgorYWxtb3N0IGFueSBleHBlbnNpdmUsIG9mZiB0aGUgc2hlbGYgcHJvZ3JhbS4gIChKZWZmIFdhbGtlcikKKworV2hlbmV2ZXIgSSByZXJlYWQgdGhlIFZJTSBkb2N1bWVudGF0aW9uIEknbSBvdmVyY29tZSB3aXRoIGV4Y2l0ZW1lbnQgYXQgdGhlCitwb3dlciBvZiB0aGUgZWRpdG9yLiAoV2lsbGlhbSBFZHdhcmQgV2ViYmVyLCBBdXN0cmFsaWEpCisKK0h1cnJhaCBmb3IgVklNISEgSXQgaXMgImF0IHlvdXIgZmluZ2VydGlwcyIgbGlrZSB2aSwgYW5kIGhhcyB0aGUgZXh0ZW5zaW9ucwordGhhdCB2aSBzb3JlbHkgbmVlZHM6IGhpZ2hsaWdodGluZyBmb3IgZXhlY3V0aW5nIGNvbW1hbmRzIG9uIGJsb2NrcywgYW4gZWFzaWx5CituYXZpZ2FibGUgYW5kIGRpZ2VzdGlibGUgaGVscCBzY3JlZW4sIGFuZCBtb3JlLiAoUGF1bCBQYXgpCisKK1RoZSByZWFzb24gV0hZIEkgZG9uJ3QgaGF2ZSB0aGlzIGFtYXppbmdseSB1c2VmdWwgbWFjcm8gYW55IG1vcmUsIGlzIHRoYXQgSQorbm93IHVzZSBWSU0gLSBhbmQgdGhpcyBpcyBidWlsdCBpbiEhIChTdGVwaGVuIFJpZWhtLCBHZXJtYW55KQorCitJIGFtIGEgdXNlciBvZiBWSU0gYW5kIEkgbG92ZSBpdC4gSSB1c2UgaXQgdG8gZG8gYWxsIG15IHByb2dyYW1taW5nLCBDLAorQysrLCBIVE1MIHdoYXQgZXZlci4gKFRpbSBBbGx3aW5lKQorCitJIGRpc2NvdmVyZWQgVklNIGFmdGVyIHllYXJzIG9mIHN0cnVnZ2xpbmcgd2l0aCB0aGUgb3JpZ2luYWwgdmksIGFuZCBJIGp1c3QKK2Nhbid0IGxpdmUgd2l0aG91dCBpdCBhbnkgbW9yZS4gIChFbW1hbnVlbCBNb2dlbmV0LCBVU0EpCisKK0VtYWNzIGhhcyBub3QgYSBiaXQgb2YgY2hhbmNlIHRvIHN1cnZpdmUgc28gbG9uZyBhcyBWSU0gaXMgYXJvdW5kLiAgQmVzaWRlcywKK2l0IGFsc28gaGFzIHRoZSBtb3N0IGRldGFpbGVkIHNvZnR3YXJlIGRvY3VtZW50YXRpb24gSSBoYXZlIGV2ZXIgc2Vlbi0tLW11Y2gKK2JldHRlciB0aGFuIG1vc3QgY29tbWVyY2lhbCBzb2Z0d2FyZSEgIChMZWltaW5nIFFpYW4pCisKK1RoaXMgdmVyc2lvbiBvZiBWSU0gd2lsbCBqdXN0IGJsb3cgcGVvcGxlIGFwYXJ0IHdoZW4gdGhleSBkaXNjb3ZlciBqdXN0IGhvdworZmFudGFzdGljIGl0IGlzISAoVG9ueSBOdWdlbnQsIEF1c3RyYWxpYSkKKworSSB0b29rIHlvdXIgYWR2aWNlICYgZmluYWxseSBnb3QgVklNICYgSSdtIHJlYWxseSBpbXByZXNzZWQuIEluc3RhbnQgY29udmVydC4KKyhQYXRyaWNrIEtpbGxlbGVhLCBVU0EpCisKK1ZJTSBpcyBieSBmYXIgbXkgZmF2b3JpdGUgcGllY2Ugb2Ygc2hhcmV3YXJlIGFuZCBJIGhhdmUgYmVlbiBwYXJ0aWN1bGFybHkKK3BsZWFzZWQgd2l0aCB2ZXJzaW9uIDMuMC4gIFRoaXMgaXMgcmVhbGx5IGEgc29saWQgcGllY2Ugb2Ygd29yay4gKFJvYmVydAorQ29sb24sIFVTQSkKKworVklNIGlzIGEgam95IHRvIHVzZSwgaXQgaXMgc28gd2VsbCB0aG91Z2h0IGFuZCBwcmFjdGljYWwgdGhhdCBJIHdvbmRlciB3aHkKK2FueWJvZHkgd291bGQgdXNlIHZpc3VhbCBkZXZlbG9wbWVudCB0b29scy4gIFZJTSBpcyBwb3dlcmZ1bCBhbmQgZWxlZ2FudCwgaXQKK2xvb2tzIGRlY2VwdGl2ZWx5IHNpbXBsZSBidXQgaXMgYWxtb3N0IGFzIGNvbXBsZXggYXMgYSA3NDcgKGVzcGVjaWFsbHkgd2hlbiBJCitsb29rIGF0IG15IGdyb3dpbmcgLnZpbXJjKSwga2VlcCB1cCB0aGF0IHdvbmRlcmZ1bCBqb2IsIFZJTSBpcyBhIGNlbnRlcnBpZWNlCitvZiB0aGUgZnJlZSBzb2Z0d2FyZSB3b3JsZC4gIChMb3Vpcy1EYXZpZCBNaXR0ZXJhbmQsIFVTQSkKKworSSBjYW5ub3QgYmVsaWV2ZSBob3cgZ3JlYXQgaXQgaXMgdG8gdXNlIFZJTS4gIEkgdGhpbmsgdGhlIGd1eXMgYXQgd29yayBhcmUKK2dldHRpbmcgdGlyZWQgb2YgaGVhcmluZyBtZSBicmFnZ2luZyBhYm91dCBpdC4gIE90aGVycyBleWVzIGFyZSBsaWdodGluZyB1cC4KKyhSaWNrIENyb290ZSkKKworRW1hY3MgdGFrZXMgd2F5IHRvIG11Y2ggdGltZSB0byBzdGFydCB1cCBhbmQgcnVuLCBpdCBpcyB0byBiaWcgYW5kIGJ1bGt5IGZvcgorZWZmZWN0aXZlIHVzZSBhbmQgdGhlIGludGVyZmFjZSBpcyBtb3JlIGNvbmZ1c2luZyB0aGFuIGl0IGlzIG9mIGFueSBoZWxwLiAgVklNCitob3dldmVyIGlzIHNob3J0LCBpdCBpcyBmYXN0LCBpdCBpcyBwb3dlcmZ1bCwgaXQgaGFzIGEgZ29vZCBpbnRlcmZhY2UgYW5kIGl0CitpcyBhbGwgcHVycG9zZS4gIChQYWFsIERpdGxlZnNlbiBFa3JhbikKKworRnJvbSB0aGUgZmlyc3QgdGltZSBJIGdvdCBWSU0zLjAsIEkgd2FzIHZlcnkgZW50aHVzaWFzdGljLiAgSXQgaGFzIGFsbW9zdCBubworcHJvYmxlbXMuICBUaGUgc3dhcGZpbGUgaGFuZGxpbmcgYW5kIHRoZSBiYWNrdXAgcG9zc2liaWxpdGllcyBhcmUgcm9idXN0LCBhbHNvCit0aGUgcHJvdGVjdGlvbiBhZ2FpbnN0IGVkaXRpbmcgb25lIGZpbGUgdHdpY2UuICBJdCBpcyB2ZXJ5IGNvbXBhdGlibGUgdG8gdGhlCityZWFsIFZJIChhbmQgdGhhdCBpcyBhIE1VU1QsIGJlY2F1c2UgbXkgYnJhaW4gaXMgdHJhaW5lZCBvdmVyIHllYXJzIGluIHVzaW5nCitpdCkuICAoR2VydCB2YW4gQW50d2VycGVuLCBIb2xsYW5kKQorCitWaXN1YWwgbW9kZSBpbiBWSU0gaXMgYSB2ZXJ5IHBvd2VyZnVsIHRoaW5nISAoVG9ueSBOdWdlbnQsIEF1c3RyYWxpYSkKKworSSBoYXZlIHRvIHNheSB0aGF0IFZJTSBpcyA9VEhFPSBzaW5nbGUgZ3JlYXRlc3QgcGllY2Ugb2Ygc291cmNlIGNvZGUgdG8gZXZlcgorY29tZSBhY3Jvc3MgdGhlIG5ldCAoSmltIEJhdHRsZSwgVVNBKS4KKworSW4gZmFjdCwgaWYgeW91IGRvIHdhbnQgdG8gZ2V0IGEgbmV3IHZpIEknZCBzdWdnZXN0IFZJTS0zLjAuICBUaGlzIGlzLCBieQorZmFyLCB0aGUgYmVzdCB2ZXJzaW9uIG9mIHZpIEkndmUgZXZlciBzZWVuIChBbGJlcnQgVy4gU2NodWVsbGVyKS4KKworSSBzaG91bGQgbWVudGlvbiB0aGF0IFZJTSBpcyBhIHZlcnkgZ29vZCBlZGl0b3IgYW5kIGNhbiBjb21wZXRlIHdpdGggYW55dGhpbmcKKyhJbHlhIEJlbG9vemVyb3YpLgorCitUbyB0ZWxsIHRoZSB0cnV0aCBzb21ldGltZXMgSSB1c2VkIGVsdmlzLCB2aWxlLCB4dmksIGNhbHZpbiwgZXRjLiAgQW5kIHRoaXMgaXMKK3RoZSByZWFzb24gdGhhdCBJIGNhbiBzdGF0ZSB0aGF0IFZJTSBpcyB0aGUgYmVzdCEgKEZlcmVuYyBEZWFrLCBIdW5nYXJ5KQorCitWSU0gaXMgYnkgZmFyIHRoZSBiZXN0IGVkaXRvciB0aGF0IEkgaGF2ZSB1c2VkIGluIGEgbG9uZyB0aW1lLCBhbmQgSSBoYXZlCitsb29rZWQgYXQganVzdCBhYm91dCBldmVyeSB0aGluZyB0aGF0IGlzIGF2YWlsYWJsZSBmb3IgZXZlcnkgcGxhdGZvcm0gdGhhdCBJCit1c2UuICBWSU0gaXMgdGhlIGJlc3Qgb24gYWxsIG9mIHRoZW0uICAoR3V5IEwuIE9saXZlcikKKworVklNIGlzIHRoZSBncmVhdGVzdCBlZGl0b3Igc2luY2UgdGhlIHN0b25lIGNoaXNlbC4gIChKb3NlIFVucGluZ2NvLCBVU0EpCisKK0kgd291bGQgbGlrZSB0byBzYXkgdGhhdCB3aXRoIFZJTSBJIGFtIGZpbmFsbHkgbWFraW5nIHRoZSAnZW1hY3MgdG8gdmknCit0cmFuc2l0aW9uIC0gYXMgYW4gRWRpdG9yIGl0IGlzIHNvIG11Y2ggYmV0dGVyIGluIG1hbnkgd2F5czoga2V5Ym9hcmQgbGF5b3V0LAorbWVtb3J5IHVzYWdlLCB0ZXh0IGFsdGVyYXRpb24gdG8gbmFtZSAzLiAoTWFyayBBZGFtKQorCitJbiBmYWN0LCBub3cgaWYgSSB3YW50IHRvIGtub3cgd2hhdCBhIHBhcnRpY3VsYXIgc2V0dGluZyBkb2VzIGluIHZpLCBJIGZpcmUgdXAKK1ZJTSBhbmQgY2hlY2sgb3V0IGl0J3MgaGVscCEgIChOaWtoaWwgUGF0ZWwsIFVTQSkKKworQXMgYSB2aSB1c2VyLCBWSU0gaGFzIG1hZGUgd29ya2luZyB3aXRoIHRleHQgYSBmYXIgbW9yZSBwbGVhc2FudCB0YXNrIHRoYW4KK2JlZm9yZSBJIGVuY291bnRlcmVkIHRoaXMgcHJvZ3JhbS4gIChTdGVpbmFyIEtudXRzZW4sIE5vcndheSkKKworSSB1c2UgVklNIHNpbmNlIHZlcnNpb24gMy4wLiAgU2luY2UgdGhhdCB0aW1lLCBpdCBpcyB0aGUgT05MWSBlZGl0b3IgSSB1c2UsCit3aXRoIFNvbGFyaXMsIExpbnV4IGFuZCBPUy8yIFdhcnAuICBJIHN1Z2dlc3QgYWxsIG15IGZyaWVuZHMgdG8gdXNlIFZJTSwgdGhleQordHJ5LCBhbmQgdGhleSBjb250aW51ZSB1c2luZyBpdC4gIFZJTSBpcyByZWFsbHkgdGhlIGJlc3Qgc29mdHdhcmUgSSBoYXZlIGV2ZXIKK2Rvd25sb2FkZWQgZnJvbSB0aGUgSW50ZXJuZXQsIGFuZCB0aGUgYmVzdCBlZGl0b3IgSSBrbm93IG9mLiAoTWFyY28KK0VjY2V0dHVhdG8sIEl0YWx5KQorCisKK0luIHN1bW1hcnk6CisgICAgIF9fICAgICBfX18JCSAgICBfCSAgICBfCV8gIF9fXyBfX19fXworICAgICBcIFwgICAvIChfKV8gX18gX19fICAgKF8pX19fICB8IHwgfCB8LyBfIFxfICAgX3wKKyAgICAgIFwgXCAvIC98IHwgJ18gYCBfIFwgIHwgLyBfX3wgfCB8X3wgfCB8IHwgfHwgfAorICAgICAgIFwgViAvIHwgfCB8IHwgfCB8IHwgfCBcX18gXCB8ICBfICB8IHxffCB8fCB8CisJXF8vICB8X3xffCB8X3wgfF98IHxffF9fXy8gfF98IHxffFxfX18vIHxffAorCSAgICAgX19fXyBfX19fXyBfICAgXyBfX19fXyBfX19fXyBfIF8KKwkgICAgLyBfX198XyAgIF98IHwgfCB8CV9fX3wgIF9fX3wgfCB8CisJICAgIFxfX18gXCB8IHwgfCB8IHwgfCB8XyAgfCB8XyAgfCB8IHwKKwkgICAgIF9fXykgfHwgfCB8IHxffCB8CV98IHwgIF98IHxffF98CisJICAgIHxfX19fLyB8X3wJXF9fXy98X3wgICB8X3wJIChffF8pCSAgICAgIChUb255IE51Z2VudCwgQXVzdHJhbGlhKQorCisgdmltOnR3PTc4OnRzPTg6ZnQ9aGVscDpub3JsOgo=